/// <summary> /// Основной расчетный игровой метод /// 1) Вызывает Отрисовку WPF элементов карты и юнитов /// 2) Производит расчет игровой модели /// 3) Обновляет текущий момент времени /// После чего возвращает истории для исполнения интерфейсом /// </summary> /// <returns>Истории</returns> public static Stories UpdateTime() { Stories stories = new Stories(); for (int i = 0; i < mainMap.Units.Count; i++) { var unit = mainMap.Units[i]; var story = new UnitStory(unit); ActionCombination(AttackActions()); if (unit.CurrentAction != null) { switch (unit.CurrentAction.GetType().Name) { case "MoveAction": story.States.AddRange((List <UnitState>)((MoveAction)unit.CurrentAction).Now(unit, _gameTime)); stories.GetStories.Add(story); break; case "AttackAction": story.States.AddRange((List <UnitState>)((AttackAction)unit.CurrentAction).Now(unit, _gameTime)); stories.GetStories.Add(story); break; case "BuildAction": story.States.AddRange((List <UnitState>)((BuildAction)unit.CurrentAction).Now(unit, _gameTime)); stories.GetStories.Add(story); break; default: // Nothing to do break; } if (unit.CurrentAction.Completed) { unit.CurrentAction = null; break; } } } _gameTime += _gameTimeInterval; return(stories); }
/// <summary> /// Основной расчетный игровой метод /// 1) Вызывает Отрисовку WPF элементов карты и юнитов /// 2) Производит расчет игровой модели /// 3) Обновляет текущий момент времени /// После чего возвращает истории для исполнения интерфейсом /// </summary> /// <returns>Истории</returns> public static Stories UpdateTime() { Stories stories = new Stories(); for (int i = 0; i < mainMap.Units.Count; i++) { var unit = mainMap.Units[i]; var story = new UnitStory(unit); ActionCombination(AttackActions()); if (unit.CurrentAction != null) { switch (unit.CurrentAction.GetType().Name) { case "MoveAction": story.States.AddRange((List<UnitState>)((MoveAction)unit.CurrentAction).Now(unit, _gameTime)); stories.GetStories.Add(story); break; case "AttackAction": story.States.AddRange((List<UnitState>)((AttackAction)unit.CurrentAction).Now(unit, _gameTime)); stories.GetStories.Add(story); break; case "BuildAction": story.States.AddRange((List<UnitState>)((BuildAction)unit.CurrentAction).Now(unit, _gameTime)); stories.GetStories.Add(story); break; default: // Nothing to do break; } if (unit.CurrentAction.Completed) { unit.CurrentAction = null; break; } } } _gameTime += _gameTimeInterval; return stories; }