Example #1
0
        private IEnumerator CheckAllStart()
        {
            while (true)
            {
                yield return(0);

                bool allStart = true;
                foreach (Player item in PhotonNetwork.PlayerList)
                {
                    if (item.CustomProperties.TryGetValue(Lobby.KEY_LOADING_STATUS, out object value))
                    {
                        int loadingStatus = (int)value;
                        if (loadingStatus < 2)
                        {
                            allStart = false;
                            break;
                        }
                    }
                }

                if (allStart)
                {
                    MapManager.Instance.Initialize();
                    RPCArrayVector2Int startCoordinates = new RPCArrayVector2Int {
                        value = new Vector2Int[8]
                    };
                    for (int a = 0; a < 4; ++a)
                    {
                        Block block = MapManager.Instance.maps[0]
                                      .walkableBlockList[Random.Range(0, MapManager.Instance.maps[0].walkableBlockList.Count)];
                        MapManager.Instance.SetNotWalkable(0, block.x, block.y);
                        startCoordinates.value[a] = new Vector2Int(block.x, block.y);
                    }

                    for (int a = 4; a < 8; ++a)
                    {
                        Block block = MapManager.Instance.maps[1]
                                      .walkableBlockList[Random.Range(0, MapManager.Instance.maps[1].walkableBlockList.Count)];
                        MapManager.Instance.SetNotWalkable(1, block.x, block.y);
                        startCoordinates.value[a] = new Vector2Int(block.x, block.y);
                    }

                    LogManager.Instance.Add("Custom Call: GameSystem.Instance.GameSystemInitialize().");
                    GameSystem.Instance.GameSystemInitialize(JsonUtility.ToJson(startCoordinates));
                    yield break;
                }
            }
        }
Example #2
0
        private void GameSystemInitializeRPC(string parameter, PhotonMessageInfo info)
        {
            RPCArrayVector2Int startCoordinates = JsonUtility.FromJson <RPCArrayVector2Int>(parameter);

            MapManager.Instance.Initialize();
            OperatorListBlue.Clear();
            for (int a = 0; a < operatorPropertyListBlue.Count; ++a)
            {
                MapManager.Instance.SetNotWalkable(0, startCoordinates.value[a].x, startCoordinates.value[a].y);
                Vector3 position =
                    MapManager.Instance.CoordinateToPosition(0, startCoordinates.value[a].x,
                                                             startCoordinates.value[a].y);
                OperatorListBlue.Add(
                    (Instantiate(prefabsOperator[operatorPropertyListBlue[a].index], position,
                                 Quaternion.Euler(0f, 0f, 0f)) as GameObject).GetComponent <Operator>());
                (Instantiate(prefabsCircle[0], OperatorListBlue[a].transform) as GameObject).transform.localPosition =
                    Vector3.zero;
                OperatorListBlue[a].property = operatorPropertyListBlue[a];
                OperatorListBlue[a].property.currentMapIndex = 0;
                OperatorListBlue[a].viewUnit.group           = 0;
            }

            OperatorListRed.Clear();
            for (int a = 0; a < operatorPropertyListRed.Count; ++a)
            {
                MapManager.Instance.SetNotWalkable(1, startCoordinates.value[a + 4].x, startCoordinates.value[a + 4].y);
                Vector3 position = MapManager.Instance.CoordinateToPosition(1, startCoordinates.value[a + 4].x,
                                                                            startCoordinates.value[a + 4].y);
                OperatorListRed.Add(
                    (Instantiate(prefabsOperator[operatorPropertyListRed[a].index], position,
                                 Quaternion.Euler(0f, 180f, 0f)) as GameObject).GetComponent <Operator>());
                (Instantiate(prefabsCircle[1], OperatorListRed[a].transform) as GameObject).transform.localPosition =
                    Vector3.zero;
                OperatorListRed[a].property = operatorPropertyListRed[a];
                OperatorListRed[a].property.currentMapIndex = 1;
                OperatorListRed[a].viewUnit.group           = 1;
            }

            if (Index == 0)
            {
                CameraController.Instance.rotationY = 0f;
                CurrentOperator = OperatorListBlue[0];
                for (int a = 1; a < OperatorListBlue.Count; ++a)
                {
                    FogOfViewField.Instance.otherViewUnitList.Add(OperatorListBlue[a].viewUnit);
                }

                for (int a = 0; a < OperatorListRed.Count; ++a)
                {
                    FogOfViewField.Instance.otherViewUnitList.Add(OperatorListRed[a].viewUnit);
                }
            }
            else if (Index == 1)
            {
                CameraController.Instance.rotationY = 180f;
                CurrentOperator = OperatorListRed[0];
                for (int a = 1; a < OperatorListRed.Count; ++a)
                {
                    FogOfViewField.Instance.otherViewUnitList.Add(OperatorListRed[a].viewUnit);
                }

                for (int a = 0; a < OperatorListBlue.Count; ++a)
                {
                    FogOfViewField.Instance.otherViewUnitList.Add(OperatorListBlue[a].viewUnit);
                }
            }

            CameraController.FocusTo = CurrentOperator.transform;
            CameraController.Instance.Focus();
            FogOfViewField.Instance.mainViewUnit = CurrentOperator.viewUnit;
            FogOfViewField.Instance.Initialize();
            LogManager.Instance.Add("Custom Call: GameTurnTimer.Instance.StartGameTurn(). Sent Server Time: " +
                                    info.SentServerTime + ".");
            GameTurnTimer.Instance.StartGameTurn(info.SentServerTime);
        }