Ejemplo n.º 1
0
    public void AddEnemy()
    {
        gameStateManager.gameState = GameStates.PlacingEchelon;
        echelonToPlace             = EchelonType.Enemy;

        NormalEchelonHolder.color = Color.white;
        ParachuteHolder.color     = Color.white;
        HOCHolder.color           = Color.white;
        NPCHolder.color           = Color.white;
        EnemyHolder.color         = Color.yellow;
    }
Ejemplo n.º 2
0
    public void AddEchelon(EchelonType type, NodeBehavior node)
    {
        bool valid = false;

        if (type == EchelonType.Enemy || type == EchelonType.NPC)
        {
            valid = true;
        }
        else if (node.GetOwner() == Faction.Blue)
        {
            if (node.GetNodeType() == NodeType.HeavyHelipad)
            {
                valid = true;
            }
            else if (type != EchelonType.HOC)
            {
                if (node.GetNodeType() == NodeType.HQ || node.GetNodeType() == NodeType.Helipad)
                {
                    valid = true;
                }
            }
        }

        if (valid)
        {
            GameObject newEchelon = null;
            switch (type)
            {
            case EchelonType.RegularGriffin:
                newEchelon = Instantiate(regularEcheTemplate, node.gameObject.transform.position, Quaternion.identity, mapImage.transform);
                regularEchelons.Add(newEchelon.GetComponent <EchelonBehavior>());
                planner.AddEchelon();
                makingHOC = false;
                StartCoroutine(InputEchelonName(newEchelon.GetComponent <EchelonBehavior>()));
                break;

            case EchelonType.Parachute:
                newEchelon = Instantiate(parachuteTemplate, node.gameObject.transform.position, Quaternion.identity, mapImage.transform);
                parachuteEchelons.Add(newEchelon.GetComponent <ParachuteBehavior>());
                planner.AddEchelon();
                makingHOC = false;
                StartCoroutine(InputEchelonName(newEchelon.GetComponent <EchelonBehavior>()));
                break;

            case EchelonType.HOC:
                newEchelon = Instantiate(HOCTemplate, node.gameObject.transform.position, Quaternion.identity, mapImage.transform);
                HOCs.Add(newEchelon.GetComponent <HOCBehavior>());
                planner.AddHOC();
                makingHOC = true;
                StartCoroutine(InputEchelonName(newEchelon.GetComponent <EchelonBehavior>()));
                break;

            case EchelonType.NPC:
                newEchelon = Instantiate(NPCTemplate, node.gameObject.transform.position, Quaternion.identity, mapImage.transform);
                NPCs.Add(newEchelon.GetComponent <EchelonBehavior>());
                break;

            case EchelonType.Enemy:
                newEchelon = Instantiate(regularEnemyTemplate, node.gameObject.transform.position, Quaternion.identity, mapImage.transform);
                enemies.Add(newEchelon.GetComponent <EchelonBehavior>());
                StartCoroutine(InputEnemyAttributes(newEchelon.GetComponent <EchelonBehavior>()));
                break;
            }
            EchelonBehavior behavior = newEchelon.GetComponent <EchelonBehavior>();
            behavior.SetNode(node);
            allEchelons.Add(behavior);

            if (type == EchelonType.RegularGriffin || type == EchelonType.Parachute)
            {
                if (retreatedEchelons.Count > 0)
                {
                    behavior.SetID(retreatedEchelons.Dequeue());
                }
                else
                {
                    behavior.SetID(regularEchelons.Count + parachuteEchelons.Count);
                }
            }
            else if (type == EchelonType.HOC)
            {
                if (retreatedHOCs.Count > 0)
                {
                    behavior.SetID(retreatedHOCs.Dequeue());
                }
                else
                {
                    behavior.SetID(HOCs.Count);
                }
            }

            if (gameStateManager.factionMoving == FactionTurn.Blue)
            {
                if (behavior.GetFaction() == Faction.Blue)
                {
                    if (type != EchelonType.NPC)
                    {
                        planner.AdjustAP(-1);
                    }
                }
            }

            newEchelon.transform.localScale = new Vector3(node.GetComponent <RectTransform>().rect.width / 200, node.GetComponent <RectTransform>().rect.height / 200, 1);

            EventTrigger.Entry ClickEntry = new EventTrigger.Entry();
            ClickEntry.eventID = EventTriggerType.PointerClick;
            ClickEntry.callback.AddListener(delegate { SelectEchelon(behavior); });
            newEchelon.GetComponent <EventTrigger>().triggers.Add(ClickEntry);
        }
    }