コード例 #1
0
    void ProcessTurn(Battler battler)
    {
        List <Battler> targets = new List <Battler> ();

        for (int i = 0; i < teams.Length; i++)
        {
            if (teams [i] != battler.team)
            {
                targets.AddRange(teams [i].battlers);
            }
        }

        // pick random target
        Battler target = targets[Random.Range(0, targets.Count)];

        // attack target
        battler.Attack(target);
    }
コード例 #2
0
ファイル: BattleManager.cs プロジェクト: dqchess/fire-emblem
    // Update is called once per frame
    void Update()
    {
        if (beginBattle)
        {
            beginBattle = false;

            // SHOW GUI
            battleUI.Show();

            if (!attacker)
            {
                attacker = player.gameObject;
            }

            switch (attacker.tag)
            {
            case "Player":
                player.attackPreview = player.entity.PreviewAttack(enemy.entity);
                enemy.defencePreview = new Dictionary <string, int>(player.attackPreview);
                if (enemy.entity.WithinAttackRange(player.entity.currentCellIndex))
                {
                    enemy.attackPreview   = player.entity.PreviewAttack(enemy.entity);
                    player.defencePreview = new Dictionary <string, int>(player.attackPreview);
                }

                player.Attack(enemy);
                player.OnAttackComplete.AddListener(delegate {
                    enemy.OnAttackComplete.AddListener(delegate {
                        if (this.enabled)
                        {
                            battleUI.DestroyBars();

                            OnBattleComplete.Invoke();

                            this.enabled = false;
                        }
                    });

                    enemy.Attack(player);
                });

                // Add Player EXP
                return;

            case "Enemy":
                enemy.attackPreview   = enemy.entity.PreviewAttack(player.entity);
                player.defencePreview = new Dictionary <string, int>(enemy.attackPreview);
                if (player.entity.WithinAttackRange(enemy.entity.currentCellIndex))
                {
                    player.attackPreview = player.entity.PreviewAttack(enemy.entity);
                    enemy.defencePreview = new Dictionary <string, int>(player.attackPreview);
                }

                enemy.Attack(player);

                enemy.OnAttackComplete.AddListener(delegate {
                    player.OnAttackComplete.AddListener(delegate {
                        if (this.enabled)
                        {
                            battleUI.DestroyBars();

                            if (enemy.HealthPoints == 0)
                            {
                                enemy.OnDeathComplete.AddListener(delegate {
                                    OnBattleComplete.Invoke();
                                });
                            }
                            else
                            {
                                OnBattleComplete.Invoke();
                            }

                            this.enabled = false;
                        }
                    });

                    player.Attack(enemy);
                });

                // Add Player EXP


                return;

            case "Other":
                print("Other");
                return;
            }
        }
    }