/// <summary> /// Update this instance. /// если сервер, то случайным образом выбирается чей ход и отправляется на клиент /// если клиент, тогда ожидается выбор чей ход от сервера /// </summary> void Update() { if (mGameBegun) { // если сервер, то случайным образом выбирается чей ход и отправляется на клиент if (GameOptions.Instance.Server) { FieldOperations field = mGameOrder.EnemyField.GetComponent <FieldOperations>(); if (mFirstUpdate && field.isAllShipsArePlaced) { if (Random.Range(0, 2) == 0) { mGameOrder.SetPlayerTurn(); SendEnemyTurn(); } else { mGameOrder.SetEnemyTurn(); SendYourTurn(); } mFirstUpdate = false; } } // если клиент, тогда ожидается выбор чей ход от сервера if (mStartWithYourTurn.HasValue) { if (mStartWithYourTurn.Value) { mGameOrder.SetPlayerTurn(); } else { mGameOrder.SetEnemyTurn(); } mStartWithYourTurn = null; } } }
/// <summary> /// Ms the game order_ on begin game. /// когда игрок расставил свои корабли /// компьютер тоже расставляет свои корабли /// </summary> void mGameOrder_OnBeginGame() { mGameBegun = true; FieldOperations field = mGameOrder.EnemyField.GetComponent <FieldOperations>(); // список кораблей которые нужно расставить противнику List <int> ship_types = new List <int> { 3, 2, 2, 1, 1, 1, 0, 0, 0, 0 }; // для каждого корабля из списка // проверяются возможные клетки для постановки корабля // и выбирается случайно из вожмных вариантов и ставится foreach (var type in ship_types) { List <ShipPos> pos = GetPossiblePoitions(type); if (pos.Count > 0) { int num = Random.Range(0, pos.Count); field.PlaceShip(type, pos[num].Horizontal, pos[num].X, pos[num].Y, false); } } // случайным образом выбирается чей ход if (Random.Range(0, 2) == 0) { mGameOrder.SetPlayerTurn(); } else { mGameOrder.SetEnemyTurn(); } mGameOrder.PlayerField.GetComponent <FieldOperations>().RefreshRedPlanes(); }