Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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;
        }