private void SelectBuild(int _id) { BuildController.Select(_id); IBuild build; if (BuildController.TryGetBuild(_id, out build)) { UI.SelectBuild(build); } }
public void InitContoller() { Console.Log(ConsoleFilter.MainController, "Game contoller Init is Start"); IsDisposed = true; if (Main.Instance == null) { Console.LogError(ConsoleFilter.MainController, "Main is null in InitContoller Game"); return; } commandQueue = new Queue <Action>(); teams = new Dictionary <TeamId, NWTeamInfo>(); gameControllers = Main.Instance; gameControllers.ServerSimulator.GameCommandResultResponse -= GameCommandResult; gameControllers.ServerSimulator.GameCommandResultResponse += GameCommandResult; gameControllers.ServerSimulator.StartGameStateResponse -= SetStartGameState; gameControllers.ServerSimulator.StartGameStateResponse += SetStartGameState; gameControllers.ServerSimulator.UpdateGameState -= SetGameState; gameControllers.ServerSimulator.UpdateGameState += SetGameState; SelectObject = GetComponent <SelectObject>() as ISelectObject; if (SelectObject == null) { Console.LogError(ConsoleFilter.MainController, "Get Component SelectObject is fail"); return; } SelectObject.SetGameControoler(this); //SelectObject.SelectObjRequest -= SelectObjRequest; //SelectObject.SelectObjRequest += SelectObjRequest; //SelectObject.SendCommandRequest -= SendCommandRequest; //SelectObject.SendCommandRequest += SendCommandRequest; SelectObject.SelectBuild -= SelectBuild; SelectObject.SelectBuild += SelectBuild; UnitController = new UnitController(); BuildController = new BuildController(); MainPlayerController = new MainPlayerController(this, TeamId.Red); MainPlayerController.SendGameCommandEvent -= MainPlayerCommand; MainPlayerController.SendGameCommandEvent += MainPlayerCommand; UpdateLoadUnfo(LoadScreeResutType.Done, LevelModules.Scene, 1.0f); if (!gameControllers.MainUI.SwhichCurrentScreen(ScreenType, CallBackInitUI)) { Console.LogError(ConsoleFilter.MainController, "Game create fail, UI is fail"); return; } resourceManager = new SceneResourceManager(gameControllers); Dictionary <int, string> prefabs = new Dictionary <int, string>(); LevelDescription levelDescription = null; int idLevel = gameControllers.ServerSimulator.GetGameInfo(); if (idLevel < 0) { Console.LogError(ConsoleFilter.MainController, "Get Game Info from simulator is fail"); return; } if (!gameControllers.GameXml.Levels.TryGetValue(idLevel, out levelDescription) || levelDescription == null) { Console.LogErrorFormat(ConsoleFilter.MainController, "get levelDescription id fail, level id {0}", idLevel); return; } int id = 0; prefabs.Add(id, levelDescription.Path); BuildPrefabIds = new Dictionary <BuildType, int>(); foreach (BuildType type in Enum.GetValues(typeof(BuildType)) as BuildType[]) { if (gameControllers.GameXml.Builds.ContainsKey(type)) { id++; BuildPrefabIds.Add(type, id); prefabs.Add(id, gameControllers.GameXml.Builds[type].Path); } else { Console.LogErrorFormat(ConsoleFilter.MainController, "Can't get buildinfo for {0}", type); } } TurretPrefabIds = new Dictionary <TurretType, int>(); foreach (TurretType type in Enum.GetValues(typeof(TurretType)) as TurretType[]) { if (type != TurretType.None) { if (gameControllers.GameXml.Turrets.ContainsKey(type)) { id++; TurretPrefabIds.Add(type, id); prefabs.Add(id, gameControllers.GameXml.Turrets[type].Path); } else { Console.LogErrorFormat(ConsoleFilter.MainController, "Can't get turretInfo for {0}", type); } } } TurretGhostPrefabIds = new Dictionary <TurretType, int>(); foreach (TurretType type in Enum.GetValues(typeof(TurretType)) as TurretType[]) { if (type != TurretType.None) { if (gameControllers.GameXml.Turrets.ContainsKey(type)) { id++; TurretGhostPrefabIds.Add(type, id); prefabs.Add(id, gameControllers.GameXml.Turrets[type].PathGhost); } else { Console.LogErrorFormat(ConsoleFilter.MainController, "Can't get turretInfo for {0}", type); } } } id++; TurretPlatformId = id; prefabs.Add(TurretPlatformId, gameControllers.GameXml.TurretPlatformPath); if (!resourceManager.StartLoadResources(prefabs, CallBackLoadResources)) { Console.LogError(ConsoleFilter.MainController, "Game create fail, LoadResources is fail"); return; } IsDisposed = false; Console.Log(ConsoleFilter.MainController, "Game contoller Init is Done"); }
private void InstansingResource() { Console.Log(ConsoleFilter.GameController, "Start Instansing"); CallBackLoadInstansingResource(LoadScreeResutType.Progress, 0.0f); GameObject mapPrefab = null; if (!resourceManager.GetPrefab(0, out mapPrefab) || mapPrefab == null) { Console.LogError(ConsoleFilter.MainController, "Can't get prefab for Map"); CallBackLoadInstansingResource(LoadScreeResutType.Fail, 0.0f); return; } CallBackLoadInstansingResource(LoadScreeResutType.Progress, 0.1f); GameObject MapObj = UnityEngine.Object.Instantiate(mapPrefab, Vector3.zero, new Quaternion()) as GameObject; mapController = MapObj.GetComponent <MapController>() as MapController; if (mapController == null) { Console.LogError(ConsoleFilter.MainController, "Can't get GetComponent Map Controller"); CallBackLoadInstansingResource(LoadScreeResutType.Fail, 0.1f); return; } CallBackLoadInstansingResource(LoadScreeResutType.Progress, 0.1f); if (mapController.MapXml == null) { Console.LogError(ConsoleFilter.MainController, "Can't get xml for level"); CallBackLoadInstansingResource(LoadScreeResutType.Fail, 0.1f); return; } LevelData leveldata = null; if (!SaveAndReadXmlData.LoadXmllDataFromText(mapController.MapXml, out leveldata) || leveldata == null) { Console.LogError(ConsoleFilter.MainController, "Can't parse xml for level"); CallBackLoadInstansingResource(LoadScreeResutType.Fail, 0.1f); return; } gameControllers.ServerSimulator.SetStartGameInfo(leveldata); if (cameraController == null) { Console.LogError(ConsoleFilter.MainController, "camera Controller is null"); CallBackLoadInstansingResource(LoadScreeResutType.Fail, 0.1f); return; } if (Util.ArrayIsNullOrEmpty(leveldata.Teams)) { Console.LogError(ConsoleFilter.MainController, "not found teams, is null"); CallBackLoadInstansingResource(LoadScreeResutType.Fail, 0.1f); return; } cameraController.transform.position = new Vector3( leveldata.Teams[0].CameraPosition.Position.X, leveldata.Teams[0].CameraPosition.Position.Y, leveldata.Teams[0].CameraPosition.Position.Z); cameraController.transform.rotation = new Quaternion( leveldata.Teams[0].CameraPosition.Rotation.X, leveldata.Teams[0].CameraPosition.Rotation.Y, leveldata.Teams[0].CameraPosition.Rotation.Z, leveldata.Teams[0].CameraPosition.Rotation.W); IDictionary <BuildType, GameObject> prefabsBuild = new Dictionary <BuildType, GameObject>(); foreach (BuildType type in BuildPrefabIds.Keys) { GameObject prefab = null; if (!resourceManager.GetPrefab(BuildPrefabIds[type], out prefab) || prefab == null) { Console.LogErrorFormat(ConsoleFilter.MainController, "Can't get prefab {0}", type); continue; } prefabsBuild.Add(type, prefab); } IDictionary <TurretType, GameObject> prefabsTurret = new Dictionary <TurretType, GameObject>(); foreach (TurretType type in TurretPrefabIds.Keys) { GameObject prefab = null; if (!resourceManager.GetPrefab(TurretPrefabIds[type], out prefab) || prefab == null) { Console.LogErrorFormat(ConsoleFilter.MainController, "Can't get prefab {0}", type); continue; } prefabsTurret.Add(type, prefab); } IDictionary <TurretType, GameObject> prefabsTurretGhost = new Dictionary <TurretType, GameObject>(); foreach (TurretType type in TurretGhostPrefabIds.Keys) { GameObject prefab = null; if (!resourceManager.GetPrefab(TurretGhostPrefabIds[type], out prefab) || prefab == null) { Console.LogErrorFormat(ConsoleFilter.MainController, "Can't get prefab turret Ghost {0}", type); continue; } prefabsTurretGhost.Add(type, prefab); } GameObject turretPlatform = null; if (!resourceManager.GetPrefab(TurretPlatformId, out turretPlatform) || turretPlatform == null) { Console.LogError(ConsoleFilter.MainController, "Can't get prefab turret Platform"); } BuildController.SetPrefbs(prefabsBuild, prefabsTurret, prefabsTurretGhost, turretPlatform); CallBackLoadInstansingResource(LoadScreeResutType.Done, 1.0f); }
public void SetGameState(NWGameStateInfo _gameState) { if (_gameState == null) { Console.LogError(ConsoleFilter.GameController, "Update GameStateInfo is null"); return; } if (Util.ArrayIsNullOrEmpty(_gameState.Teams)) { Console.LogError(ConsoleFilter.GameController, "Update GameStateInfo Teams is null"); return; } foreach (NWTeamInfo team in _gameState.Teams) { if (!teams.ContainsKey(team.Id)) { Console.LogErrorFormat(ConsoleFilter.GameController, "Team {0} is not Containce", team.Id); continue; } teams[team.Id].Resources = team.Resources; teams[team.Id].Units = team.Units; teams[team.Id].Builds = team.Builds; teams[team.Id].Turrets = team.Turrets; } if (!Util.ArrayIsNullOrEmpty(_gameState.Units)) { foreach (NWUnit serverUnit in _gameState.Units) { Unit unit = null; if (UnitController.TryGetUnit(serverUnit.Id, out unit) && unit != null) { unit.transform.position = Util.ConvertRTSStructToVector3(serverUnit.trasform); } } } if (!Util.ArrayIsNullOrEmpty(_gameState.Builds)) { foreach (NWBuild serverBuild in _gameState.Builds) { BuildController.UpdateBuild(serverBuild); } } //add and Update Turrets int[] turretsId = BuildController.GetAllTurretsId(); HashSet <int> Turrets = new HashSet <int>(turretsId); int[] serverTurretsId = Util.ArrayIsNullOrEmpty(_gameState.Turrets) ? new int[0] : Array.ConvertAll(_gameState.Turrets, x => x.Id); HashSet <int> ServerTurrets = new HashSet <int>(serverTurretsId); HashSet <int> removeTurrets = new HashSet <int>(Turrets); removeTurrets.ExceptWith(ServerTurrets); foreach (NWTurret nwTurret in _gameState.Turrets) { int id = nwTurret.Id; ITurret turret = null; if (BuildController.TryGetTurret(id, out turret) && turret != null) { turret.UpdateInfo(nwTurret); } else { BuildController.AddTurret(nwTurret); } } foreach (int turretId in removeTurrets) { BuildController.RemoveTurret(turretId); } commandQueue.Enqueue(() => { UI.SetMainPlayerTeamInfo(teams[MainPlayerController.TeamId]); }); }
public void SetStartGameState(NWGameStateInfo _state) { if (_state == null) { Console.LogError(ConsoleFilter.GameController, "Start GameStateInfo is null"); return; } if (Util.ArrayIsNullOrEmpty(_state.Teams)) { Console.LogError(ConsoleFilter.GameController, "Start GameStateInfo Teams is null"); return; } foreach (NWTeamInfo team in _state.Teams) { if (teams.ContainsKey(team.Id)) { Console.LogErrorFormat(ConsoleFilter.GameController, "Dublicate Team {0}", team.Id); continue; } teams.Add(team.Id, team); } if (!Util.ArrayIsNullOrEmpty(_state.Units)) { foreach (NWUnit unit in _state.Units) { UnitController.AddUnit(unit); } } if (!Util.ArrayIsNullOrEmpty(_state.Builds)) { foreach (NWBuild build in _state.Builds) { if (build == null) { Console.LogError(ConsoleFilter.MainController, "ServerBuild is null"); continue; } BuildController.AddBuild(build); } } if (!Util.ArrayIsNullOrEmpty(_state.Turrets)) { foreach (NWTurret turret in _state.Turrets) { if (turret == null) { Console.LogError(ConsoleFilter.MainController, "ServerTurret is null"); } BuildController.AddTurret(turret); } } if (gameControllers.SwichScreenController != null) { gameControllers.SwichScreenController.LoadScreenDone(); } commandQueue.Enqueue(() => { if (teams.ContainsKey(MainPlayerController.TeamId)) { UI.SetMainPlayerTeamInfo(teams[MainPlayerController.TeamId]); } }); }