예제 #1
0
    private IEnumerator InputEnemyAttributes(EchelonBehavior behavior)
    {
        enemyCreatorHolder.SetActive(true);
        creatingNewEnemy = false;
        while (!creatingNewEnemy)
        {
            yield return(new WaitForEndOfFrame());
        }

        if (enemyCreator.GetEnemyID().Length > 0)
        {
            behavior.SetID(int.Parse(enemyCreator.GetEnemyID()));
        }

        behavior.SetFaction(enemyCreator.GetEnemyFaction());
        behavior.GetComponent <Image>().sprite = enemyCreator.GetChosenSprite();

        enemyCreator.ResetInputField();
        enemyCreatorHolder.SetActive(false);
    }
예제 #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);
        }
    }