Пример #1
0
    /// <summary>
    /// 実際に攻撃を行い、ゲームを進める
    /// </summary>
    /// <param name="on_first">1マス先を取るのに使用</param>
    void Attack_Process(int adjust_value1, int adjust_value2)
    {
        var enemy_manager = new Enemy_Manager();

        // 隣接してるエネミーを調べる
        GameObject side_enemy = enemy_manager.Find_Enemy(player_script.position.x + adjust_value1,
                                                         player_script.position.y + adjust_value2);
        // 隣接してるエネミーのステータスを取ってくる
        var enemy_status = side_enemy.GetComponent <Enemy_Controller>().enemy_status;

        enemy_status.hit_point -= damage_calculation.Damage(player_status.attack,
                                                            enemy_status.defence);
        // ダメージのログを流す
        Log_Scroll.Player_Attack_Log(player_status, side_enemy, damage_calculation.Damage(player_status.attack,
                                                                                          enemy_status.defence));

        // 攻撃した敵が死んでいたら経験値を取得
        if (enemy_status.hit_point <= 0)
        {
            // レベルアップより先に経験値を取得
            Log_Scroll.Get_Experience_Point(player_status, side_enemy, enemy_status.experience_point);

            // 実際に経験値を取得し、次レベルに必要な経験値量に達しているかを見る
            player_status.Add_Experience_Point(enemy_status.experience_point);

            // ダンジョンに出現中の敵のリストを取得
            List <GameObject> enemy_list = Enemy_Manager.Instance.enemies;
            // プレイヤーに隣接しているものを抽出
            enemy_manager.Dead_Enemy(enemy_list.IndexOf(side_enemy));
        }
        // 移動状態に戻す
        player_action.Set_Action(ePlayer_State.Move);
    }
Пример #2
0
    /// <summary>
    /// Playerのターン経過の処理(自動回復、はらへり) プレイヤーの行動が終了したときに呼ばれる
    /// </summary>
    public void Add_Turn()
    {
        ++turn_count;
        var game_manager = GameManager.Instance;

        //TODO:ひとまず
        if (hit_point.Value < max_hit_point.Value &&
            hunger_point.Value > 0)
        {
            ++hit_point.Value;
        }

        // 空腹であればHPを1減らす
        if (hunger_point.Value <= 0)
        {
            --hit_point.Value;
        }

        // 3ターンに1度空腹ポイントを1減らす
        else if (0 == turn_count % 3)
        {
            --hunger_point.Value;

            // 一定量を下回ったらログで空腹を知らせる
            if (hunger_point.Value == 50)
            {
                Log_Scroll.Generic_Log("おなかがへってきた");
            }
            if (hunger_point.Value == 20)
            {
                Log_Scroll.Generic_Log("おなかがへりすぎて目が回ってきた");
            }
            // 2になったらログで知らせる
            if (hunger_point.Value == 2)
            {
                Log_Scroll.Generic_Log("ダメだ、もうたおれそうだ!");
            }
            // 1になったらログで知らせる
            if (hunger_point.Value == 1)
            {
                Log_Scroll.Generic_Log("なにかたべないと!");
            }
        }

        if (Enemy_Manager.Instance.enemies.Count > 0)
        {
            game_manager.Set_Game_State(eGame_State.Enemy_Trun);
        }
        else if (Dungeon_Manager.Instance.Is_Exist)
        {
            game_manager.Set_Game_State(eGame_State.Dungeon_Turn);
        }
        //TODO:ほんとはパートナーの番に
        else
        {
            //TODO:パートナーターン
        }
    }