Exemplo n.º 1
0
    //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);
                }
            }
        }
    }
Exemplo n.º 2
0
    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;
        }
    }