//Shows the submenu actions for the actor
    public void showSubMenu(GameObject actor, string subMenu)
    {
        hideActionMenu();

        int children = actionMenuCommands.transform.childCount;

        for (int i = 0; i < children - 1; i++)
        {
            Destroy(actionMenuCommands.transform.GetChild(i));
        }
        Debug.Log("Removed old menu");

        bf.turnStage       = TurnStage.SELECTING_ACTION_SUBMENU;
        bf.cameFromSubMenu = true;
        bf.curSkill        = null;
        bf.curTargetType   = TargetType.NULL;
        bf.lastSubMenu     = subMenu;

        if (subMenu.ToLower().Trim() != "items")
        {
            List <Skill> skillsMenu = null;
            if (subMenu.ToLower().Trim() == "skill")
            {
                skillsMenu = subMenuSkills;
            }
            else if (subMenu.ToLower().Trim() == "blackmagic")
            {
                skillsMenu = subMenuBlackMagic;
            }
            else if (subMenu.ToLower().Trim() == "whitemagic")
            {
                skillsMenu = subMenuWhiteMagic;
            }

            foreach (Skill s in skillsMenu)
            {
                Debug.Log("Adding skill: " + s.name);
                GameObject so = Instantiate <GameObject>(_gm._battle.actionButtonPrefab);
                so.transform.SetParent(actionMenuCommands.transform);
                BattleComandButton bcb = so.GetComponent <BattleComandButton>();
                bcb.myButton.onClick.AddListener(() => { bcb.buttonClicked(); });
                if (s.cost != 0)
                {
                    bcb.myText.text = s.name + "   " + s.cost;
                }
                else
                {
                    bcb.myText.text = s.name;
                }
                bcb.actorOwner    = actor;
                bcb.myLinkedSkill = s;
                bcb.myLinkedMenu  = -1;
                bcb.myIcon        = s.icon;
                bcb.bf            = bf;
            }
            Debug.Log("Added skills for loaded sub-menu: " + subMenu + " for actor: " + actor.GetComponent <ActorBase>().name);

            showActionMenu();
        }
        else
        {
            //Get list of usuable in combat items from inventory
            //Use a larger scroll rect of multiple columns with numbers of items
            //Use same setup for targetting as skills for items and use the turnstage to keep the navigation working

            Debug.Log("Loaded usuable item inventory for actor: " + actor.GetComponent <ActorBase>().name);
        }
    }
示例#2
0
    public void playerUsedCommand(GameObject myButton)
    {
        //Debug.Log ("Player clicked " + myButton.GetComponent<Button>().name);
        BattleComandButton bcb = myButton.GetComponent <BattleComandButton>();

        if (bcb.myLinkedMenu == -1)
        {
            Debug.Log("Player selected to use " + bcb.myLinkedSkill.name + " skill!");

            cameFromSubMenu = false;

            //Target Select
            turnStage     = TurnStage.SELECTING_TARGET;
            curSkill      = bcb.myLinkedSkill;
            curTargetType = curSkill.targetType;
            usableOnDead  = curSkill.useOnDead;

            if (curSkill.cost < getTurnOwnerTarget().actor.GetComponent <Actor>()._base.curMana)
            {
                infoBox.text = curSkill.description;
                _bm._gm._GUI.hideActionMenu();
                if (curSkill.targetType == TargetType.TARGET)
                {
                    //Debug.Log ("Skill requires enemy target. Target must be selected to confirm!");
                    targetSingle(getLivingActor(false));
                }
                else if (curSkill.targetType == TargetType.PARTY_MEMBER)
                {
                    //Debug.Log ("Skill requires party target. Target must be selected to confirm!");
                    targetSingle(getLivingActor());
                }
                else if (curSkill.targetType == TargetType.SELF)
                {
                    //Debug.Log ("Skill requires self. Confirmation required!");
                    targetSelf();
                }
                else if (curSkill.targetType == TargetType.ALL_TARGET)
                {
                    //Debug.Log ("Skill will hit all enemies. Confirmation required!");
                    targetEntireParty();
                }
                else if (curSkill.targetType == TargetType.ALL_PARTY)
                {
                    //Debug.Log ("Skill will hit all party. Confirmation required!");
                    targetEntireEnemies();
                }
            }
            else
            {
                //Inform the cost
            }
        }
        else if (bcb.myLinkedSkill == null)
        {
            Debug.Log("Player selected sub-menu " + bcb.myLinkedMenu);
            cameFromSubMenu = true;
            string submenu = "";
            if (bcb.myLinkedMenu == 0)
            {
                submenu = "skill";
            }
            else if (bcb.myLinkedMenu == 1)
            {
                submenu = "blackmagic";
            }
            else if (bcb.myLinkedMenu == 2)
            {
                submenu = "whitemagic";
            }
            else if (bcb.myLinkedMenu == 3)
            {
                submenu = "items";
            }
            else
            {
                submenu = null;
            }
            if (submenu != null)
            {
                _bm._gm._GUI.showSubMenu(turnOwner, submenu);
            }
            else
            {
                Debug.LogError("Invalid submenu was called. Terminating...");
                Application.Quit();
            }
        }
    }
    //Shows the base level actions for that actor, also recieves skills for other menus
    public void showBaseMenu(GameObject actor)
    {
        hideActionMenu();

        List <Skill> mySkills    = _gm._battle.getSkillsFor(actor);
        List <Skill> skillsToAdd = new List <Skill>();

        showActionMenu();

        //Reset values of script's saved skills
        subMenuSkills     = new List <Skill>();
        subMenuBlackMagic = new List <Skill>();
        subMenuWhiteMagic = new List <Skill>();

        foreach (Skill s in mySkills)
        {
            //Add to list
            if (s.skillType == SkillType.NONE)
            {
                skillsToAdd.Add(s);
            }
            else
            {
                //Player has skill for a sub-menu
                if (s.skillType == SkillType.Skill)
                {
                    Debug.Log("Added a skill to skill submenu: " + s.name);
                    subMenuSkills.Add(s);
                }
                else if (s.skillType == SkillType.Black_Magic)
                {
                    Debug.Log("Added a skill to black magic submenu: " + s.name);
                    subMenuBlackMagic.Add(s);
                }
                else if (s.skillType == SkillType.White_Magic)
                {
                    Debug.Log("Added a skill to white magic submenu: " + s.name);
                    subMenuWhiteMagic.Add(s);
                }
            }
        }
        Debug.Log("SM Skills: " + subMenuWhiteMagic.Count + ", BM Skills: " + subMenuBlackMagic.Count + ", Other Skills: " + subMenuSkills.Count);

        //Create button for each base menu skill
        foreach (Skill s in skillsToAdd)
        {
            GameObject so = Instantiate <GameObject>(_gm._battle.actionButtonPrefab);
            so.transform.SetParent(actionMenuCommands.transform);
            BattleComandButton sbcb = so.GetComponent <BattleComandButton>();
            sbcb.myButton = so.GetComponent <Button>();
            sbcb.myButton.onClick.AddListener(delegate() { sbcb.buttonClicked(); });
            if (s.cost != 0)
            {
                sbcb.myText.text = s.name + "   " + s.cost;
            }
            else
            {
                sbcb.myText.text = s.name;
            }
            sbcb.actorOwner    = actor;
            sbcb.myLinkedSkill = s;
            sbcb.myLinkedMenu  = -1;
            sbcb.bf            = bf;
            if (actor.GetComponent <ActorBase>().curMana < s.cost)
            {
                //Turn owner cannot afford cost of this skill currently.
                so.GetComponent <Button>().image.color = Color.gray;
            }
            Debug.Log("Created command for skill: " + s.name);
        }

        //Add buttons for the submenus
        //SKILLS
        if (subMenuSkills.Count > 0)
        {
            GameObject suo = Instantiate <GameObject>(_gm._battle.actionButtonPrefab);
            suo.transform.SetParent(actionMenuCommands.transform);
            BattleComandButton subbcb = suo.GetComponent <BattleComandButton>();
            subbcb.myButton = subbcb.GetComponent <Button>();
            subbcb.myButton.onClick.AddListener(delegate() { subbcb.buttonClicked(); });
            subbcb.myText.text   = "Skills";
            subbcb.actorOwner    = actor;
            subbcb.myLinkedSkill = null;
            subbcb.myLinkedMenu  = 0;
            subbcb.bf            = bf;
            Debug.Log("Created skills submenu button!");
        }
        //BLACK MAGIC
        if (subMenuBlackMagic.Count > 0)
        {
            GameObject suo = Instantiate <GameObject>(_gm._battle.actionButtonPrefab);
            suo.transform.SetParent(actionMenuCommands.transform);
            BattleComandButton subbcb = suo.GetComponent <BattleComandButton>();
            subbcb.myButton = subbcb.GetComponent <Button>();
            subbcb.myButton.onClick.AddListener(delegate() { subbcb.buttonClicked(); });
            subbcb.myText.text   = "Black Magic";
            subbcb.actorOwner    = actor;
            subbcb.myLinkedSkill = null;
            subbcb.myLinkedMenu  = 1;
            subbcb.bf            = bf;
            Debug.Log("Created black magic submenu button!");
        }
        //WHITE MAGIC
        if (subMenuWhiteMagic.Count > 0)
        {
            GameObject suo = Instantiate <GameObject>(_gm._battle.actionButtonPrefab);
            suo.transform.SetParent(actionMenuCommands.transform);
            BattleComandButton subbcb = suo.GetComponent <BattleComandButton>();
            subbcb.myButton = subbcb.GetComponent <Button>();
            subbcb.myButton.onClick.AddListener(delegate() { subbcb.buttonClicked(); });
            subbcb.myText.text   = "White Magic";
            subbcb.actorOwner    = actor;
            subbcb.myLinkedSkill = null;
            subbcb.myLinkedMenu  = 2;
            subbcb.bf            = bf;
            Debug.Log("Created white magic submenu button!");
        }

        Debug.Log("Adding required Items button!");
        GameObject io = Instantiate <GameObject>(_gm._battle.actionButtonPrefab);

        io.transform.SetParent(actionMenuCommands.transform);
        BattleComandButton bcb = io.GetComponent <BattleComandButton>();

        bcb.myButton = io.GetComponent <Button>();
        bcb.myButton.onClick.AddListener(delegate() { bcb.buttonClicked(); });
        bcb.myText.text   = "Items";
        bcb.actorOwner    = actor;
        bcb.myLinkedSkill = null;
        bcb.myLinkedMenu  = 3;
        bcb.bf            = bf;
        Debug.Log("Created Items submenu button!");

        bf.turnStage       = TurnStage.SELECTING_ACTION;
        bf.curSkill        = null;
        bf.curTargetType   = TargetType.NULL;
        bf.cameFromSubMenu = false;

        Debug.Log("Added base menu skills for actor: " + actor.GetComponent <Actor>().name);
    }