예제 #1
0
        static public void NewDoStep(Game game, DoType lastDoType, int throneProgress)
        {
            if (throneProgress < 0 || throneProgress >= game.HomeUsersSL.Count)
            {
                throneProgress = 0;
            }
            GameUser nextUser = game.HomeUsersSL[throneProgress++];

            if (nextUser.LastStep.GameUserInfo.Order.Any(p1 => p1.OrderType.Contains(lastDoType.Name)))
            {
                //Новый ход с нового листа
                nextUser.LastStep.IsNew = false;
                Step newDoStep = nextUser.LastStep.CopyStep(lastDoType.Name, false);
                if (newDoStep.StepType != "Набег")
                {
                    newDoStep.NewMarch();
                }
                newDoStep.NewMessage("dynamic_planning*stepType_" + newDoStep.StepType);
                game.ThroneProgress = throneProgress;
            }
            else
            {
                if (!game.LastHomeSteps.Any(p => p.GameUserInfo.Order.Any(p1 => p1.OrderType.Contains(lastDoType.Name))))
                {
                    throneProgress = 0;
                    //Не требующие внимания игрока сбор власти
                    if (lastDoType.Sort == 1)
                    {
                        ApplyConsolidateOrder(game);
                    }

                    //запускаем обработку следующего типа приказов;
                    DoType nextDoType = game.DbContext.DoType.SingleOrDefault(p => p.Sort == lastDoType.Sort + 1);

                    if (nextDoType != null)
                    {
                        NewDoStep(game, nextDoType, throneProgress);
                    }
                    else
                    {
                        //конец игры
                        if (game.GameInfo.Turn == 10)
                        {
                            game.TheEnd();
                        }
                        else
                        {
                            game.NewTurn();
                        }
                    }
                }
                else
                {
                    NewDoStep(game, lastDoType, throneProgress);
                }
            }
        }
예제 #2
0
        static public void NewDoStep(Game game, DoType lastDoType)
        {
            int      nextHomeIndex = game.ThroneProgress == 6 ? 0 : game.ThroneProgress;
            GameUser nextUser      = game.HomeUsersSL[nextHomeIndex];

            game.ThroneProgress = nextHomeIndex + 1;

            if (nextUser.LastStep.GameUserInfo.Order.Any(p1 => p1.OrderType.Contains(lastDoType.Name)))
            {
                //Новый ход
                Step newDoStep = nextUser.LastStep.CopyStep(lastDoType.Name, false);
                if (newDoStep.StepType != "Набег")
                {
                    newDoStep.NewMarch();
                }
                newDoStep.NewMessage("dynamic_planning*stepType_" + newDoStep.StepType);
            }
            else
            {
                if (!game.LastHomeSteps.Any(p => p.GameUserInfo.Order.Any(p1 => p1.OrderType.Contains(lastDoType.Name))))
                {
                    game.ThroneProgress = 0;

                    if (lastDoType.Sort == 1)
                    {
                        ApplyConsolidateOrder(game);
                    }

                    //запускаем обработку следующего типа приказов;
                    DoType nextDoType = game.DbContext.DoType.SingleOrDefault(p => p.Sort == lastDoType.Sort + 1);

                    if (nextDoType != null)
                    {
                        NewDoStep(game, nextDoType);
                    }
                    else
                    {
                        //конец игры
                        if (game.GameInfo.Turn == 10)
                        {
                            game.TheEnd();
                        }
                        else
                        {
                            game.NewTurn();
                        }
                    }
                }
                else
                {
                    NewDoStep(game, lastDoType);
                }
            }
        }