// Define a world's size private void CreateWorld() { if (_listOfEvents.Count != 0) { WarSpotEvent wsEvent = _listOfEvents.First(); if (wsEvent.EventType == EventTypes.SystemEventWorldCreated) { var tmp = wsEvent as SystemEventWorldCreated; SetWorldSize(tmp.Width, tmp.Height); _listOfEvents.Remove(tmp); } } }
public override void Update(GameTime gameTime) { if (!_globalPause) { if (!_localPause) { WarSpotEvent wsEvent = _listOfEvents.First(); switch (wsEvent.EventType) { case EventTypes.GameEventHealthChange: { var tmpEvent = wsEvent as GameEventHealthChange; var tmp = _listOfCreatures.First(creature => creature.Id == tmpEvent.SubjectId); tmp.CurrentHealth = tmpEvent.Health; _listOfEvents.Remove(wsEvent); break; } case EventTypes.GameEventCiChange: { var tmpEvent = wsEvent as GameEventCiChange; var tmp = _listOfCreatures.First(creture => creture.Id == tmpEvent.SubjectId); tmp.CurrentCi = tmpEvent.Ci; _listOfEvents.Remove(wsEvent); break; } case EventTypes.GameEventMove: { _localPause = true; var tmpEvent = wsEvent as GameEventMove; var tmp = _listOfCreatures.First(creture => creture.Id == tmpEvent.SubjectId); tmp.X = (tmp.X + tmpEvent.ShiftX + _worldWidth) % _worldWidth; tmp.Y = (tmp.Y + tmpEvent.ShiftY + _wordlHeight) % _wordlHeight; _listOfEvents.Remove(wsEvent); break; } case EventTypes.GameEventDeath: { _localPause = true; var tmpEvent = wsEvent as GameEventDeath; var tmp = _listOfCreatures.First(creture => creture.Id == tmpEvent.SubjectId); _listOfCreatures.Remove(tmp); _listOfEvents.Remove(wsEvent); break; } case EventTypes.GameEventBirth: { var tmp = wsEvent as GameEventBirth; _listOfCreatures.Add(new Creature(tmp.SubjectId, tmp.Newborn.X, tmp.Newborn.Y, tmp.Newborn.Team, tmp.Newborn.MaxHealth, tmp.Newborn.Health, tmp.Newborn.Ci)); _localPause = true; _listOfEvents.Remove(tmp); break; } case EventTypes.GameEventWorldCiChanged: { var tmp = wsEvent as GameEventWorldCiChanged; _worldMap[tmp.Y][tmp.X].changeCi(tmp.Ci); _listOfEvents.Remove(tmp); break; } case EventTypes.SystemEventTurnStarted: { var tmp = wsEvent as SystemEventTurnStarted; _turnLabel.Text = "Turn " + tmp.Number.ToString() + " / " + size.ToString(); _listOfEvents.Remove(tmp); break; } case EventTypes.SystemEventCommandWin: { var tmp = wsEvent as SystemEventCommandWin; _listOfEvents.Remove(tmp); break; } case EventTypes.SystemEventCommandDead: { var tmp = wsEvent as SystemEventCommandDead; _listOfEvents.Remove(tmp); break; } case EventTypes.SystemEventMatchEnd: { var tmp = wsEvent as SystemEventMatchEnd; ExitReplay(); break; } default: _listOfEvents.RemoveAt(0); break; } } else { // Checks time per unit game action _timeSinceLastTurn += gameTime.ElapsedGameTime.Milliseconds; // 1000 - delay between game actions if (_timeSinceLastTurn > 200) { _localPause = false; _timeSinceLastTurn = 0; } } } }