public GameState(IGameDataProvider gameDataProvider, GameStateEvents gameStateEvents) { gameDataProvider.Reset(); _gameDataProvider = gameDataProvider; _gameStateEvents = gameStateEvents; Entities = new Dictionary <int, Entity>(); PlayerEntities = new Dictionary <int, PlayerEntity>(); _modifiers = new List <IGameStateModifier>(); _creationTags = new Queue <IGameStateModifier>(); _initialQueue = new Queue <IGameStateModifier>(); _powerLog = new List <string>(); CreatedAt = DateTime.Now; Modified += gameStateEvents.OnGameStateChanged; SecretsManager = new SecretsManager(this, gameStateEvents); LocalPlayer = new Player(this, true); OpposingPlayer = new Player(this, false); GameTime = new GameTime(); Task.Run(async() => { while (MatchInfo == null || ServerInfo == null) { await Task.Delay(500); } }); }
// If your object changes state, this function should be called. It informs all observers by invoking the StateChanged delegate. protected virtual void OnStateChanged(GameStateEvents e) { if (StateChanged != null) { StateChanged(this, e); } }
public Game(IGameDataProvider gameDataProvider) { GameDataProvider = gameDataProvider; Collection = new Collection(); Account = new Account(); Arena = new Arena(); TavernBrawl = new TavernBrawl(); GameStateEvents = new GameStateEvents(); GameStateEvents.BlockStart += OnBlockStart; }
public SecretsManager(IGameState gameState, GameStateEvents gameStateEvents) { _gameState = gameState; _secretSolver = new SecretSolver(gameState); _secrets = new List <Secret>(); gameStateEvents.Attack += OnAttack; gameStateEvents.CardPlayed += OnCardPlayed; gameStateEvents.MinionDied += OnDeath; gameStateEvents.TagChange += OnTagChange; gameStateEvents.CardStolen += OnCardStolen; }
// This function is called by the object when the object changes state. private void Object_StateChanged(object sender, GameStateEvents e) { }