Ejemplo n.º 1
0
    void Start()
    {
        cam_main = this.GetComponent <Battle_camera_main>();
        //cam = player.transform.GetChild(0).gameObject;
        cam.GetComponent <cameraController>().enabled   = false;
        player.GetComponent <actorController>().enabled = false;
        //enemies = new List<GameObject>();
        battle_queue = new Queue <battle_event>();
        aliveEnemies = Random.Range(1, 5);
        create_enemies(aliveEnemies, get_enemy_stations(aliveEnemies));

        var main_character = gameObject.AddComponent <battle_agent>();

        main_character.setup_agent("Protaganist", 1000, 100, player, false);
        //main_character.name = "Protaganist";
        //main_character.body = player;
        players.Add(main_character);
        players.Reverse();
        //players.Add(new battle_agent("Player One", 1000, 50, player, false));
        this.GetComponent <battleIntroAnimation>().enabled = true;
        foreach (battle_agent i in players)
        {
            var temp = gameObject.AddComponent <battle_event>();
            temp.setup_battle_event(i);
            //temp.name = i.player_name;
            battle_queue.Enqueue(temp);
        }
        //!!!current_move = battle_queue.Dequeue();
        Debug.Log("First move triggered");
        current_move = next_move(battle_queue);
        //Debug.Log("Number of enemies: " + aliveEnemies);
        //Disable player camera controller

        //Start battle intro animation script
    }
Ejemplo n.º 2
0
    // Start is called before the first frame update

    private battle_event next_move(Queue <battle_event> queue)
    {
        battle_event next_move = queue.Dequeue();

        players_turn = !next_move.hostile;
        int z = (int)next_move.turn_actor.body.transform.position.z;

        z = z / (int)Mathf.Abs(z);
        //Debug.Log(z);
        //Vector3 desired_cam_offset = new Vector3(3*-z, 2, 8*z);//change this with cross products
        Vector3 desired_cam_offset;

        if (players_turn)
        {
            desired_cam_offset = new Vector3(3 * -z, 2, 8 * z);
        }
        else
        {
            Vector3 enemy_to_player = next_move.turn_actor.body.transform.position - player.transform.position;
            enemy_to_player.y = 0f;
            //Debug.Log(enemy_to_player);
            Vector3 ortho = Vector3.Cross(Vector3.up, enemy_to_player).normalized;
            //Debug.Log(ortho);
            desired_cam_offset = new Vector3(3 * ortho.x, 2, 3 * ortho.z) + enemy_to_player.normalized * 8;
        }

        Vector3 next_move_agent_pos = next_move.turn_actor.body.transform.position;
        Vector3 final_cam_pos       = next_move_agent_pos + desired_cam_offset;
        Vector3 final_look_at_pos;

        //Debug.Log(final_cam_pos);
        if (next_move.hostile)
        {
            final_look_at_pos = player.transform.position;
            //final_look_at_pos = final_cam_pos + player.transform.position;
        }
        else
        {
            final_look_at_pos = new Vector3(0, 2, 10);
        }

        cam_main.set_cam_settings(final_cam_pos, final_look_at_pos);
        //cam_main.set_cam_settings(new Vector3(3, 3, -18), new Vector3(0, 2, 10));
        cam_main.run();
        if (queue.Count == 0)
        {
            foreach (battle_agent i in players)
            {
                var temp = gameObject.AddComponent <battle_event>();
                temp.setup_battle_event(i);
                //temp.name = i.player_name;
                battle_queue.Enqueue(temp);
            }
        }

        return(next_move);
    }
Ejemplo n.º 3
0
    // Update is called once per frame
    void Update()
    {
        debug_text.text = "Debug: \n" +
                          "Animation in progress: " + !is_idle() + "\n" +
                          "Current move: " + current_move.turn_actor.player_name + "\n" +
                          "Current player HP: " + current_move.turn_actor.health + "\n";
        if (is_idle())
        {
            //Debug.Log("Queue count: " + battle_queue.Count);


            if (!current_move.hostile)
            {
                //players_turn = true;
                //cam_main.set_cam_settings(new Vector3(3, 3, -18), new Vector3(0, 2, 10));
                //cam_main.run();
                //Debug.Log("Players move!");
                if (Input.GetButton("W"))
                {
                    Debug.Log("Next turn!");
                    current_move = next_move(battle_queue);
                    //current_move = battle_queue.Dequeue();
                }
            }
            else if (current_move.hostile)
            {
                //Debug.Log("Enemy turn!");
                if (Input.GetButton("W"))
                {
                    Debug.Log("Next turn!");
                    current_move = next_move(battle_queue);
                    //current_move = battle_queue.Dequeue();
                }
                //AI CONTROLL
            }
            //move_cam_to_start_pos();
            //Debug.Log("enemy name: "+ players[0].name);
            //Debug.Log("Player name: " + players[players.Count - 1].name);
        }
        else
        {
            //Debug.Log("Not idle");
            //Animations are prob running...
            //Debug.Log("Camera animation in progress");
        }


        //successfully took control of camera
        //Actual battle logic
    }