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); } } }
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); } } }