J :
* Add a plasma effect on the cards back
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
OBJS = objs/ActionElement.o objs/ActionLayer.o objs/ActionStack.o objs/AIMomirPlayer.o objs/AIPlayer.o objs/AIStats.o objs/Blocker.o objs/CardGui.o objs/CardDescriptor.o objs/CardDisplay.o objs/ConstraintResolver.o objs/Counters.o objs/Credits.o objs/Damage.o objs/DamagerDamaged.o objs/DamageResolverLayer.o objs/DeckDataWrapper.o objs/DeckStats.o objs/DuelLayers.o objs/ExtraCost.o objs/GameApp.o objs/GameLauncher.o objs/GameObserver.o objs/GameOptions.o objs/GameStateDuel.o objs/GameStateMenu.o objs/GameStateOptions.o objs/GameStateShop.o objs/GuiCardsController.o objs/GuiLayers.o objs/Logger.o objs/ManaCost.o objs/ManaCostHybrid.o objs/MenuItem.o objs/MTGAbility.o objs/MTGCardInstance.o objs/MTGCard.o objs/MTGDeck.o objs/MTGDefinitions.o objs/MTGGamePhase.o objs/MTGGameZones.o objs/MTGGuiHand.o objs/MTGGuiPlay.o objs/MTGRules.o objs/OptionItem.o objs/PhaseRing.o objs/Player.o objs/PlayerData.o objs/PlayGuiObjectController.o objs/PlayGuiObject.o objs/PriceList.o objs/ShopItem.o objs/SimpleMenu.o objs/SimpleMenuItem.o objs/Subtypes.o objs/TargetChooser.o objs/TargetsList.o objs/TextScroller.o objs/TexturesCache.o objs/Token.o objs/Translate.o objs/utils.o objs/WEvent.o
|
OBJS = objs/ActionElement.o objs/ActionLayer.o objs/ActionStack.o objs/AIMomirPlayer.o objs/AIPlayer.o objs/AIStats.o objs/Blocker.o objs/CardGui.o objs/CardDescriptor.o objs/CardDisplay.o objs/CardEffect.o objs/ConstraintResolver.o objs/Counters.o objs/Credits.o objs/Damage.o objs/DamagerDamaged.o objs/DamageResolverLayer.o objs/DeckDataWrapper.o objs/DeckStats.o objs/DuelLayers.o objs/ExtraCost.o objs/GameApp.o objs/GameLauncher.o objs/GameObserver.o objs/GameOptions.o objs/GameStateDuel.o objs/GameStateMenu.o objs/GameStateOptions.o objs/GameStateShop.o objs/GuiCardsController.o objs/GuiLayers.o objs/Logger.o objs/ManaCost.o objs/ManaCostHybrid.o objs/MenuItem.o objs/MTGAbility.o objs/MTGCardInstance.o objs/MTGCard.o objs/MTGDeck.o objs/MTGDefinitions.o objs/MTGGamePhase.o objs/MTGGameZones.o objs/MTGGuiHand.o objs/MTGGuiPlay.o objs/MTGRules.o objs/OptionItem.o objs/PhaseRing.o objs/Player.o objs/PlayerData.o objs/PlayGuiObjectController.o objs/PlayGuiObject.o objs/PriceList.o objs/ShopItem.o objs/SimpleMenu.o objs/SimpleMenuItem.o objs/Subtypes.o objs/TargetChooser.o objs/TargetsList.o objs/TextScroller.o objs/TexturesCache.o objs/Token.o objs/Translate.o objs/utils.o objs/WEvent.o
|
||||||
DEPS = $(patsubst objs/%.o, deps/%.d, $(OBJS))
|
DEPS = $(patsubst objs/%.o, deps/%.d, $(OBJS))
|
||||||
|
|
||||||
RESULT = $(shell psp-config --psp-prefix 2> Makefile.cache)
|
RESULT = $(shell psp-config --psp-prefix 2> Makefile.cache)
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
#ifndef _CARDEFFECT_H_
|
||||||
|
#define _CARDEFFECT_H_
|
||||||
|
|
||||||
|
#include <JGE.h>
|
||||||
|
#include "Effects.h"
|
||||||
|
|
||||||
|
class CardEffect : public Effect
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CardEffect();
|
||||||
|
~CardEffect();
|
||||||
|
private:
|
||||||
|
static PIXEL_TYPE surface[MTG_IMAGE_WIDTH*MTG_IMAGE_HEIGHT];
|
||||||
|
unsigned char sineTable1[256];
|
||||||
|
unsigned char sineTable2[256];
|
||||||
|
PIXEL_TYPE palette[256];
|
||||||
|
JTexture * backTexture;
|
||||||
|
JTexture * backThumbTexture;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void UpdateSmall(float dt);
|
||||||
|
void UpdateBig(float dt);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _CARDEFFECT_H_
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
#ifndef _EFFECTS_H_
|
||||||
|
#define _EFFECTS_H_
|
||||||
|
|
||||||
|
class Effect
|
||||||
|
{
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _EFFECTS_H_
|
||||||
@@ -33,6 +33,8 @@
|
|||||||
|
|
||||||
#include "../include/TexturesCache.h"
|
#include "../include/TexturesCache.h"
|
||||||
|
|
||||||
|
#include "../include/CardEffect.h"
|
||||||
|
|
||||||
#define MAX_STATE 6
|
#define MAX_STATE 6
|
||||||
|
|
||||||
|
|
||||||
@@ -62,12 +64,13 @@ class GameApp: public JApp
|
|||||||
GameState* mNextState;
|
GameState* mNextState;
|
||||||
GameState* mGameStates[MAX_STATE];
|
GameState* mGameStates[MAX_STATE];
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
int players[2];
|
int players[2];
|
||||||
MTGAllCards * collection;
|
MTGAllCards * collection;
|
||||||
int gameType;
|
int gameType;
|
||||||
TexturesCache * cache;
|
TexturesCache * cache;
|
||||||
|
CardEffect *effect;
|
||||||
|
|
||||||
|
|
||||||
GameApp();
|
GameApp();
|
||||||
virtual ~GameApp();
|
virtual ~GameApp();
|
||||||
|
|||||||
@@ -56,7 +56,6 @@ class GameStateDeckViewer: public GameState, public JGuiListener
|
|||||||
|
|
||||||
int colorFilter;
|
int colorFilter;
|
||||||
JMusic * bgMusic;
|
JMusic * bgMusic;
|
||||||
JTexture * backTex;
|
|
||||||
JQuad * backQuad;
|
JQuad * backQuad;
|
||||||
SimpleMenu * welcome_menu;
|
SimpleMenu * welcome_menu;
|
||||||
JLBFont * mFont;
|
JLBFont * mFont;
|
||||||
@@ -182,9 +181,7 @@ class GameStateDeckViewer: public GameState, public JGuiListener
|
|||||||
pspIcons[i]->SetHotSpot(16,16);
|
pspIcons[i]->SetHotSpot(16,16);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
backQuad = GameApp::CommonRes->GetQuad("back");
|
||||||
backTex = JRenderer::GetInstance()->LoadTexture("sets/back.jpg", TEX_TYPE_USE_VRAM);
|
|
||||||
backQuad = NEW JQuad(backTex, 0, 0, 200, 285); // Create quad for rendering.
|
|
||||||
|
|
||||||
//menuFont = NEW JLBFont("graphics/f3",16);
|
//menuFont = NEW JLBFont("graphics/f3",16);
|
||||||
menuFont = GameApp::CommonRes->GetJLBFont("graphics/f3");
|
menuFont = GameApp::CommonRes->GetJLBFont("graphics/f3");
|
||||||
@@ -238,8 +235,6 @@ class GameStateDeckViewer: public GameState, public JGuiListener
|
|||||||
JSoundSystem::GetInstance()->StopMusic(GameApp::music);
|
JSoundSystem::GetInstance()->StopMusic(GameApp::music);
|
||||||
SAFE_DELETE(GameApp::music);
|
SAFE_DELETE(GameApp::music);
|
||||||
}
|
}
|
||||||
SAFE_DELETE(backTex);
|
|
||||||
SAFE_DELETE(backQuad);
|
|
||||||
SAFE_DELETE(welcome_menu);
|
SAFE_DELETE(welcome_menu);
|
||||||
SAFE_DELETE(menu);
|
SAFE_DELETE(menu);
|
||||||
SAFE_DELETE(pspIconsTexture);
|
SAFE_DELETE(pspIconsTexture);
|
||||||
@@ -275,6 +270,7 @@ class GameStateDeckViewer: public GameState, public JGuiListener
|
|||||||
|
|
||||||
virtual void Update(float dt)
|
virtual void Update(float dt)
|
||||||
{
|
{
|
||||||
|
mParent->effect->UpdateBig(dt);
|
||||||
hudAlpha = 255-(last_user_activity * 500);
|
hudAlpha = 255-(last_user_activity * 500);
|
||||||
if (hudAlpha < 0) hudAlpha = 0;
|
if (hudAlpha < 0) hudAlpha = 0;
|
||||||
if (sellMenu){
|
if (sellMenu){
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ class GameStateShop: public GameState, public JGuiListener
|
|||||||
JQuad * mBg;
|
JQuad * mBg;
|
||||||
JTexture * bgTexture;
|
JTexture * bgTexture;
|
||||||
JQuad * mBack;
|
JQuad * mBack;
|
||||||
JTexture * backTexture;
|
|
||||||
SimpleMenu * menu;
|
SimpleMenu * menu;
|
||||||
int mStage;
|
int mStage;
|
||||||
char starterBuffer[128], boosterBuffer[128];
|
char starterBuffer[128], boosterBuffer[128];
|
||||||
|
|||||||
@@ -7,6 +7,9 @@
|
|||||||
#define MTG_IMAGE_WIDTH 200
|
#define MTG_IMAGE_WIDTH 200
|
||||||
#define MTG_IMAGE_HEIGHT 285
|
#define MTG_IMAGE_HEIGHT 285
|
||||||
|
|
||||||
|
#define MTG_MINIIMAGE_WIDTH 45
|
||||||
|
#define MTG_MINIIMAGE_HEIGHT 64
|
||||||
|
|
||||||
|
|
||||||
#define MAX_TYPES_PER_CARD 10
|
#define MAX_TYPES_PER_CARD 10
|
||||||
|
|
||||||
|
|||||||
@@ -84,7 +84,6 @@ GameObserver * g = GameObserver::GetInstance();
|
|||||||
//No mana, try to get some
|
//No mana, try to get some
|
||||||
getPotentialMana();
|
getPotentialMana();
|
||||||
|
|
||||||
|
|
||||||
switch(currentGamePhase){
|
switch(currentGamePhase){
|
||||||
case Constants::MTG_PHASE_FIRSTMAIN:
|
case Constants::MTG_PHASE_FIRSTMAIN:
|
||||||
if (canPutLandsIntoPlay && (potentialMana->getConvertedCost() <8 || game->hand->nb_cards > 1) ){
|
if (canPutLandsIntoPlay && (potentialMana->getConvertedCost() <8 || game->hand->nb_cards > 1) ){
|
||||||
@@ -110,9 +109,8 @@ GameObserver * g = GameObserver::GetInstance();
|
|||||||
return AIPlayerBaka::computeActions();
|
return AIPlayerBaka::computeActions();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}else{
|
|
||||||
return AIPlayerBaka::computeActions();
|
|
||||||
}
|
}
|
||||||
|
return AIPlayerBaka::computeActions();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
#include "../include/GameApp.h"
|
||||||
|
#include "../include/MTGCard.h"
|
||||||
|
#include "../include/CardEffect.h"
|
||||||
|
|
||||||
|
PIXEL_TYPE CardEffect::surface[] = {};
|
||||||
|
|
||||||
|
CardEffect::CardEffect()
|
||||||
|
{
|
||||||
|
backTexture = GameApp::CommonRes->GetQuad("back")->mTex;
|
||||||
|
backThumbTexture = GameApp::CommonRes->GetQuad("back_thumb")->mTex;
|
||||||
|
|
||||||
|
for (int i = sizeof(palette)/sizeof(palette[0]) - 1; i >= 0; --i)
|
||||||
|
{
|
||||||
|
sineTable1[i] = 127 + 127 * sinf(2*M_PI*((float)i)/256.0) * sinf(2*M_PI*((float)i)/256.0);
|
||||||
|
sineTable2[i] = 127 + 127 * sinf(M_PI * sinf(2*M_PI*((float)i)/256.0));
|
||||||
|
|
||||||
|
palette[i] = ARGB(((unsigned char)(191 + 64 * (sinf(M_PI*sinf(2*M_PI*((float)i)/256.0)/2)))),
|
||||||
|
0,
|
||||||
|
((unsigned char)(64 + 64 * (cosf(M_PI*sinf(2*M_PI*((float)i)/256.0)/2)))),
|
||||||
|
(unsigned char)(255 * (0.5 + sinf(2*M_PI*((float)i)/256.0)/2) * (0.5 + sinf(2*M_PI*((float)i)/256.0)/2))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CardEffect::~CardEffect()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardEffect::UpdateSmall(float dt)
|
||||||
|
{
|
||||||
|
static float t = 0;
|
||||||
|
t += 3*dt;
|
||||||
|
unsigned char c = (unsigned char)(5*t);
|
||||||
|
for (int j = MTG_MINIIMAGE_HEIGHT - 1; j >= 0; --j)
|
||||||
|
for (int i = MTG_MINIIMAGE_WIDTH - 1; i >= 0; --i)
|
||||||
|
{
|
||||||
|
unsigned int r = c + sineTable1[0xFF & (c + i*2)] + sineTable1[0xFF & ((j+i)*sineTable1[c]/128)];
|
||||||
|
r %= 255;
|
||||||
|
surface[MTG_MINIIMAGE_WIDTH*j+i] = palette[r];
|
||||||
|
}
|
||||||
|
backThumbTexture->UpdateBits(0, 0, MTG_MINIIMAGE_WIDTH, MTG_MINIIMAGE_HEIGHT, surface);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardEffect::UpdateBig(float dt)
|
||||||
|
{
|
||||||
|
static float t = 0;
|
||||||
|
t += 3*dt;
|
||||||
|
unsigned char c = (unsigned char)(9*t);
|
||||||
|
for (int j = MTG_IMAGE_HEIGHT - 1; j >= 0; --j)
|
||||||
|
for (int i = MTG_IMAGE_WIDTH - 1; i >= 0; --i)
|
||||||
|
{
|
||||||
|
unsigned int r = 2*c + sineTable2[0xFF & (i/2+j/2)] + sineTable1[0xFF & (j/2*(j/3+sineTable2[c])/256)];
|
||||||
|
r %= 255;
|
||||||
|
surface[MTG_IMAGE_WIDTH*j+i] = palette[r];
|
||||||
|
}
|
||||||
|
backTexture->UpdateBits(0, 0, MTG_IMAGE_WIDTH, MTG_IMAGE_HEIGHT, surface);
|
||||||
|
}
|
||||||
@@ -92,7 +92,7 @@ void GameApp::Create()
|
|||||||
CommonRes->CreateTexture("sets/back.jpg");
|
CommonRes->CreateTexture("sets/back.jpg");
|
||||||
CommonRes->CreateQuad("back", "sets/back.jpg", 0, 0, 200, 285);
|
CommonRes->CreateQuad("back", "sets/back.jpg", 0, 0, 200, 285);
|
||||||
CommonRes->CreateTexture("sets/back_thumb.jpg");
|
CommonRes->CreateTexture("sets/back_thumb.jpg");
|
||||||
CommonRes->CreateQuad("back_thumb", "sets/back_thumb.jpg", 0, 0, 45, 64);
|
CommonRes->CreateQuad("back_thumb", "sets/back_thumb.jpg", 0, 0, MTG_MINIIMAGE_WIDTH, MTG_MINIIMAGE_HEIGHT);
|
||||||
|
|
||||||
CommonRes->CreateTexture("graphics/particles.png");
|
CommonRes->CreateTexture("graphics/particles.png");
|
||||||
CommonRes->CreateQuad("particles", "graphics/particles.png", 0, 0, 32, 32);
|
CommonRes->CreateQuad("particles", "graphics/particles.png", 0, 0, 32, 32);
|
||||||
@@ -145,6 +145,8 @@ void GameApp::Create()
|
|||||||
mCurrentState = NULL;
|
mCurrentState = NULL;
|
||||||
mNextState = mGameStates[GAME_STATE_MENU];
|
mNextState = mGameStates[GAME_STATE_MENU];
|
||||||
|
|
||||||
|
effect = new CardEffect();
|
||||||
|
|
||||||
char buf[512];
|
char buf[512];
|
||||||
sprintf(buf, "size of MTGCardInstance : %i\n" , sizeof(MTGCardInstance));
|
sprintf(buf, "size of MTGCardInstance : %i\n" , sizeof(MTGCardInstance));
|
||||||
OutputDebugString(buf);
|
OutputDebugString(buf);
|
||||||
@@ -219,8 +221,6 @@ void GameApp::Update()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
float dt = mEngine->GetDelta();
|
float dt = mEngine->GetDelta();
|
||||||
if (dt > 35.0f) // min 30 FPS ;)
|
if (dt > 35.0f) // min 30 FPS ;)
|
||||||
dt = 35.0f;
|
dt = 35.0f;
|
||||||
|
|||||||
@@ -328,6 +328,7 @@ void GameStateDuel::Update(float dt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
mParent->effect->UpdateSmall(dt);
|
||||||
game->Update(dt);
|
game->Update(dt);
|
||||||
if (game->gameOver){
|
if (game->gameOver){
|
||||||
credits->compute(mPlayers[0],mPlayers[1], mParent);
|
credits->compute(mPlayers[0],mPlayers[1], mParent);
|
||||||
@@ -354,14 +355,17 @@ void GameStateDuel::Update(float dt)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DUEL_STATE_MENU:
|
case DUEL_STATE_MENU:
|
||||||
|
mParent->effect->UpdateSmall(dt);
|
||||||
menu->Update(dt);
|
menu->Update(dt);
|
||||||
break;
|
break;
|
||||||
case DUEL_STATE_CANCEL:
|
case DUEL_STATE_CANCEL:
|
||||||
|
mParent->effect->UpdateSmall(dt);
|
||||||
menu->Update(dt);
|
menu->Update(dt);
|
||||||
if (menu->closed)
|
if (menu->closed)
|
||||||
mGamePhase = DUEL_STATE_PLAY;
|
mGamePhase = DUEL_STATE_PLAY;
|
||||||
break;
|
break;
|
||||||
case DUEL_STATE_BACK_TO_MAIN_MENU:
|
case DUEL_STATE_BACK_TO_MAIN_MENU:
|
||||||
|
mParent->effect->UpdateSmall(dt);
|
||||||
menu->Update(dt);
|
menu->Update(dt);
|
||||||
if (menu->closed)
|
if (menu->closed)
|
||||||
mParent->SetNextState(GAME_STATE_MENU);
|
mParent->SetNextState(GAME_STATE_MENU);
|
||||||
|
|||||||
@@ -34,8 +34,7 @@ void GameStateShop::Start()
|
|||||||
|
|
||||||
bgTexture = JRenderer::GetInstance()->LoadTexture("graphics/shop.jpg", TEX_TYPE_USE_VRAM);
|
bgTexture = JRenderer::GetInstance()->LoadTexture("graphics/shop.jpg", TEX_TYPE_USE_VRAM);
|
||||||
mBg = NEW JQuad(bgTexture, 0, 0, 400, 280); // Create background quad for rendering.
|
mBg = NEW JQuad(bgTexture, 0, 0, 400, 280); // Create background quad for rendering.
|
||||||
backTexture = JRenderer::GetInstance()->LoadTexture("sets/back.jpg", TEX_TYPE_USE_VRAM);
|
mBack = GameApp::CommonRes->GetQuad("back");
|
||||||
mBack = NEW JQuad(backTexture, 0, 0, 200, 285); // Create background quad for rendering.
|
|
||||||
|
|
||||||
JRenderer::GetInstance()->ResetPrivateVRAM();
|
JRenderer::GetInstance()->ResetPrivateVRAM();
|
||||||
JRenderer::GetInstance()->EnableVSync(true);
|
JRenderer::GetInstance()->EnableVSync(true);
|
||||||
@@ -79,8 +78,6 @@ void GameStateShop::End()
|
|||||||
{
|
{
|
||||||
JRenderer::GetInstance()->EnableVSync(false);
|
JRenderer::GetInstance()->EnableVSync(false);
|
||||||
SAFE_DELETE(shop);
|
SAFE_DELETE(shop);
|
||||||
SAFE_DELETE(mBack);
|
|
||||||
SAFE_DELETE(backTexture);
|
|
||||||
SAFE_DELETE(bgTexture);
|
SAFE_DELETE(bgTexture);
|
||||||
SAFE_DELETE(mBg);
|
SAFE_DELETE(mBg);
|
||||||
SAFE_DELETE(menu);
|
SAFE_DELETE(menu);
|
||||||
@@ -92,6 +89,8 @@ void GameStateShop::Destroy(){
|
|||||||
|
|
||||||
void GameStateShop::Update(float dt)
|
void GameStateShop::Update(float dt)
|
||||||
{
|
{
|
||||||
|
mParent->effect->UpdateSmall(dt);
|
||||||
|
mParent->effect->UpdateBig(dt);
|
||||||
if (mStage == STAGE_SHOP_MENU){
|
if (mStage == STAGE_SHOP_MENU){
|
||||||
if (menu){
|
if (menu){
|
||||||
menu->Update(dt);
|
menu->Update(dt);
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
cards in play, graveyard, library, games phases, Players avatars
|
cards in play, graveyard, library, games phases, Players avatars
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <math.h>
|
||||||
#include "../include/config.h"
|
#include "../include/config.h"
|
||||||
#include "../include/MTGGuiPlay.h"
|
#include "../include/MTGGuiPlay.h"
|
||||||
#include "../include/MTGCardInstance.h"
|
#include "../include/MTGCardInstance.h"
|
||||||
@@ -66,6 +67,7 @@ MTGGuiPlay::MTGGuiPlay(int id, GameObserver * _game):PlayGuiObjectController(id,
|
|||||||
mBg2 = NULL;
|
mBg2 = NULL;
|
||||||
GameApp::systemError = "error Loading Texture mBgTex2 in MTGGuiPlay intialization";
|
GameApp::systemError = "error Loading Texture mBgTex2 in MTGGuiPlay intialization";
|
||||||
}
|
}
|
||||||
|
|
||||||
alphaBg[0] = 0;
|
alphaBg[0] = 0;
|
||||||
AddPlayersGuiInfo();
|
AddPlayersGuiInfo();
|
||||||
}
|
}
|
||||||
@@ -250,11 +252,8 @@ void MTGGuiPlay::updateCards(){
|
|||||||
setTargettingCardPosition(cardGui, 1, !player0Mode);
|
setTargettingCardPosition(cardGui, 1, !player0Mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MTGGuiPlay::AddPlayersGuiInfo(){
|
void MTGGuiPlay::AddPlayersGuiInfo(){
|
||||||
//init with the players objects
|
//init with the players objects
|
||||||
if (mCount == 0){
|
if (mCount == 0){
|
||||||
|
|||||||
Reference in New Issue
Block a user