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