- Magic 2010 - blockers ordering - Fixed a memory leak introduced in a previous revision (foreach)
94 lines
2.3 KiB
C++
94 lines
2.3 KiB
C++
#ifndef _GAMEOBSERVER_H_
|
|
#define _GAMEOBSERVER_H_
|
|
|
|
#include "Player.h"
|
|
#include "MTGAbility.h"
|
|
#include "DuelLayers.h"
|
|
#include "MTGCardInstance.h"
|
|
#include "PlayGuiObject.h"
|
|
#include "DuelLayers.h"
|
|
#include "TargetChooser.h"
|
|
#include "PhaseRing.h"
|
|
#include "ReplacementEffects.h"
|
|
|
|
class MTGGamePhase;
|
|
class MTGAbility;
|
|
class MTGCardInstance;
|
|
class CardGui;
|
|
class Player;
|
|
class TargetChooser;
|
|
|
|
|
|
class GameObserver{
|
|
protected:
|
|
int reaction;
|
|
static GameObserver * mInstance;
|
|
MTGCardInstance * cardWaitingForTargets;
|
|
|
|
int nbPlayers;
|
|
int currentPlayerId;
|
|
int currentRound;
|
|
int blockersAssigned;
|
|
|
|
|
|
public:
|
|
int blockersSorted;
|
|
int forceShuffleLibrary[2];
|
|
int turn;
|
|
int forceShuffleLibraries();
|
|
int targetListIsSet(MTGCardInstance * card);
|
|
PhaseRing * phaseRing;
|
|
int cancelCurrentAction();
|
|
int currentGamePhase;
|
|
ExtraCosts * waitForExtraPayment;
|
|
int oldGamePhase;
|
|
TargetChooser * targetChooser;
|
|
DuelLayers * mLayers;
|
|
ReplacementEffects *replacementEffects;
|
|
Player * gameOver;
|
|
Player * players[2]; //created outside
|
|
MTGGamePhase * gamePhaseManager; //Created Outside ?
|
|
|
|
TargetChooser * getCurrentTargetChooser();
|
|
void stackObjectClicked(Interruptible * action);
|
|
|
|
void cardClick(MTGCardInstance * card,Targetable * _object = NULL );
|
|
int enteringPhase(int phase);
|
|
int getCurrentGamePhase();
|
|
void userRequestNextGamePhase();
|
|
void nextGamePhase();
|
|
void cleanupPhase();
|
|
void nextPlayer();
|
|
static void Init(Player * _players[], int _nbplayers);
|
|
static GameObserver * GetInstance();
|
|
static void EndInstance();
|
|
Player * currentPlayer;
|
|
Player * currentActionPlayer;
|
|
Player * isInterrupting;
|
|
Player * opponent();
|
|
Player * currentlyActing();
|
|
GameObserver(Player * _players[], int _nbplayers);
|
|
~GameObserver();
|
|
void setGamePhaseManager(MTGGamePhase * _phases);
|
|
void stateEffects();
|
|
void eventOccured();
|
|
void addObserver(MTGAbility * observer);
|
|
void removeObserver(ActionElement * observer);
|
|
void startGame(int shuffle = 1, int draw = 1);
|
|
void untapPhase();
|
|
void draw();
|
|
int isInPlay(MTGCardInstance * card);
|
|
int isACreature(MTGCardInstance * card);
|
|
int tryToTapOrUntap(MTGCardInstance * card);
|
|
|
|
int checkManaCost(MTGCardInstance * card);
|
|
|
|
void Update(float dt);
|
|
void Render();
|
|
void ButtonPressed(int, PlayGuiObject*);
|
|
|
|
int receiveEvent(WEvent * event);
|
|
};
|
|
|
|
#endif
|