Exemplo n.º 1
0
 void Start()
 {
     characterArgs = null;
     foreach (Character character in Characters)
     {
         character.Parent = CharacterObject;
     }
     //TODO: Do Characters and Enemies need to be used as IList<Battler>?
     battleBox.AllCharacters = Characters;
     battleBox.AllEnemies = Enemies;
     foreach (Enemy enemy in Enemies)
     {
         enemy.Parent = EnemyObject;
     }
     if (Characters.Count == 0)
     {
         Debug.Log("Error: No ememies");
     }
     foreach (IBattler c in Characters)
     {
         playerStats = c.Stats;
     }
     battleEnd = false;
     wait = false;
     if (InitializeUI != null)
     {
         InitializeUI(playerStats);
     }
     StartCoroutine(Run());
 }
Exemplo n.º 2
0
 void OnCharacterTurn(CharacterTurnArgs e)
 {
     characterArgs = e;
     wait = false;
 }
Exemplo n.º 3
0
    public void Advance()
    {
        switch (BattleMenu)
        {
            case BattleMenu.Main:
                switch (index)
                {
                    //Attack
                    case 0:
                        EnemyMenu();
                        Select.Play();
                        break;

                    //Special
                    case 1:
                        SpecialMenu();
                        Select.Play();
                        break;

                    //Item
                    case 2:
                        ItemsMenu();
                        Select.Play();
                        break;

                    //Defend
                    case 3:
                        break;
                }
                break;

            //Attack an enemy with a normal or special attack
            case BattleMenu.Enemy:
                //Normal attack
                if (PrevMenu == BattleMenu.Main)
                {
                    if (OnCharacterTurn != null)
                    {
                        CharacterTurnArgs args = new CharacterTurnArgs
                        {
                            User = currentCharacter,
                            Target = AllEnemies[index],
                            ActionTarget = ActionTarget.Enemy,
                            ActionIndex = 0,
                            ActionType = ActionType.Attack
                        };
                        OnCharacterTurn(args);
                        Finish();
                    }
                }
                //Special attack
                else if (PrevMenu == BattleMenu.Special)
                {
                    if (OnCharacterTurn != null)
                    {
                        CharacterTurnArgs args = new CharacterTurnArgs
                        {
                            User = currentCharacter,
                            Target = AllEnemies[index],
                            ActionTarget = ActionTarget.Enemy,
                            ActionIndex = specialIndex,
                            ActionType = ActionType.Special
                        };
                        OnCharacterTurn(args);
                        Finish();
                    }
                }
                break;

            //Choose a special attack
            case BattleMenu.Special:
                IBattlerAction specialAttack1 = currentCharacter.BattleBehavior.SpecialActions[index];
                //Choosing a single or multiple enemies handled in EnemyMenu()
                //Make sure the character has enough SP
                if (currentCharacter.Stats.currentSP >= specialAttack1.RequiredSP)
                {
                    if (specialAttack1.ActionTarget == ActionTarget.Enemy || specialAttack1.ActionTarget == ActionTarget.AllEnemies)
                    {
                        EnemyMenu();
                        Select.Play();
                    }
                    else if (specialAttack1.ActionTarget == ActionTarget.PartyMember || specialAttack1.ActionTarget == ActionTarget.Party)
                    {
                        CharacterMenu();
                        Select.Play();
                    }
                }
                break;

            //Use an item
            case BattleMenu.Item:
                if (currentCharacter.Inventory.Count == 0)
                {
                    break;
                }
                Item item = currentCharacter.Inventory[index];
                if (OnCharacterTurn != null)
                {
                    CharacterTurnArgs args = new CharacterTurnArgs
                    {
                        User = currentCharacter,
                        Target = currentCharacter,
                        ActionTarget = ActionTarget.PartyMember,
                        ActionIndex = index,
                        ActionType = ActionType.Item
                    };
                    OnCharacterTurn(args);
                    Finish();
                }
                break;

            case BattleMenu.Player:
                break;

            case BattleMenu.AllPlayers:
                break;

            case BattleMenu.AllEnemies:
                if (OnCharacterTurn != null)
                {
                    //Normal attack
                    if (PrevMenu == BattleMenu.Main)
                    {
                        CharacterTurnArgs args = new CharacterTurnArgs
                        {
                            User = currentCharacter,
                            Target = null,
                            ActionTarget = ActionTarget.AllEnemies,
                            ActionIndex = 0,
                            ActionType = ActionType.Attack
                        };
                        OnCharacterTurn(args);
                        Finish();
                    }

                    //Special attack
                    else if (PrevMenu == BattleMenu.Special)
                    {
                        if (OnCharacterTurn != null)
                        {
                            CharacterTurnArgs args = new CharacterTurnArgs
                            {
                                User = currentCharacter,
                                Target = null,
                                ActionTarget = ActionTarget.AllEnemies,
                                ActionIndex = specialIndex,
                                ActionType = ActionType.Special
                            };
                            OnCharacterTurn(args);
                            Finish();
                        }
                    }
                }
                break;
        }
        UpdateMenu();
    }