//TODO : Hard Code, should make it data-driven public void AssignAgentsInSingleRow(CA_Terrain.TerrainBuilder p_terrain) { if (p_terrain.GetType() != typeof(PlainBuilder) || unitSTPlist.Count <= 0) { return; } for (int i = 0; i < p_terrain.activate_size; i++) { int offsetIndex = i + p_terrain.activateStartXPos; Transform g_prefab = p_terrain.stored_prefabs[offsetIndex].transform; if (g_prefab.name.IndexOf("On") > 0 && p_terrain.grids[i].isWalkable) { if (UtilityMethod.PercentageGame(0.05f)) { Unit_STP unitSTP = unitSTPlist[Random.Range(0, unitSTPlist.Count)]; GameObject generateUnit = PoolManager.instance.ReuseObject(unitSTP._id); AIAgent aIAgent = generateUnit.GetComponent <AIAgent>(); AddAgent(aIAgent); generateUnit.transform.SetParent(unitHolder.transform); generateUnit.transform.position = g_prefab.transform.position + (Vector3.up * 0.5f); aIAgent.SetUp(_map); generateUnit.SetActive(true); } } } }
public override void OnNotify(string p_event, params object[] p_objects) { base.OnNotify(p_event, p_objects); switch (p_event) { case EventFlag.Game.SetUp: { Debug.Log("Game Start"); _mapGeneration = MainApp.Instance.FindObject <MapGenerator>("model/map_generator"); _themeGeneration = MainApp.Instance.FindObject <ThemeGenerator>("model/map_generator"); _inputController = MainApp.Instance.GetObserver <InputController>(); _aiDirector = MainApp.Instance.GetObserver <AIDirector>(); _camera = MainApp.Instance.FindObject <CameraHandler>("view/camera"); Init(); } break; case EventFlag.Game.PlayerMove: { CA_Terrain.TerrainBuilder terrainBuilder = _mapGeneration.AssignSRandomTerrain(); _aiDirector.AssignAgentsInSingleRow(terrainBuilder); }; break; case EventFlag.Game.UnitAttack: { if (p_objects.Length == 2) { OnUnitAttack((BaseUnit)p_objects[0], (BaseUnit)p_objects[1]); } }; break; case EventFlag.Game.UnitDestroy: { OnUnitDestroy((BaseUnit)p_objects[0]); } break; } }