Esempio n. 1
0
    public void CardUseRecieved(RTPacket _packet)
    {
        Debug.Log("recivi el packete wey");

        string card_name = _packet.Data.GetString(1);
        int    pos_x     = (int)_packet.Data.GetInt(2);
        int    pos_y     = (int)_packet.Data.GetInt(3);
        string id        = _packet.Data.GetString(4);
        string target_id = _packet.Data.GetString(5);

        GameObject player        = null;
        Player     player_script = null;

        GameObject target = null;
        Player     target_player_script = null;

        player = GetPlayerById(id);
        target = GetPlayerById(target_id);

        if (player != null)
        {
            player_script = player.GetComponent <Player>();
        }

        if (target != null)
        {
            target_player_script = target.GetComponent <Player>();
        }

        Player.Card card = new Player.Card(card_name, player_script);
        card.SetTarget(target_player_script);

        cards_to_attack.Add(card);
    }
Esempio n. 2
0
    // Update is called once per frame
    void Update()
    {
        switch (curr_action)
        {
        case action.wait:
            break;

        case action.card_select_target:
            state_text.gameObject.SetActive(true);
            state_text.text = "Choose a target";

            if (turn_info.turn != turn_type.strategy)
            {
                state_text.gameObject.SetActive(false);

                curr_action = action.wait;
            }

            break;

        case action.card_target_selected:
        {
            if (turn_info.turn != turn_type.strategy)
            {
                state_text.gameObject.SetActive(false);
                break;
            }

            Player client = GetClientPlayer().GetComponent <Player>();
            CardUseSend(last_clicked_card, (int)client.GetNavigationEntity().GetGridPos().x, (int)client.GetNavigationEntity().GetGridPos().y, client.GetInstanceID().ToString(), target.GetNetworkId().ToString());

            state_text.gameObject.SetActive(false);

            curr_action = action.wait;
        }
        break;

        case action.check_if_all_players_finished_moving:
        {
            if (turn_info.turn == turn_type.action && players_ready_perform_actions == players.Count)
            {
                bool can_perform = true;

                for (int i = 0; i < players.Count; i++)
                {
                    Player player = players[i].GetComponent <Player>();

                    if (player.IsMoving())
                    {
                        can_perform = false;
                    }
                }

                if (can_perform)
                {
                    curr_action = action.perform_attacks;
                }
            }
        }
        break;

        case action.perform_attacks:
        {
            players_ready_perform_actions = 0;

            for (int i = 0; i < players.Count; i++)
            {
                Player player = players[i].GetComponent <Player>();

                // Attack
                if (player.GetAttack())
                {
                    player.Attack();
                }

                // SetStealth
                if (player.GetStealth())
                {
                    if (player.GetVisible())
                    {
                        player.GainStealth();
                    }
                }
                else
                {
                    if (!player.GetVisible())
                    {
                        player.LoseStealth();
                    }
                }
            }

            for (int i = 0; i < cards_to_attack.Count; i++)
            {
                Player.Card card = cards_to_attack[i];
                card.GetOwner().UseCard(card.GetName(), card.GetTarget());
            }
            cards_to_attack.Clear();

            curr_action = action.wait;
        }
        break;

        case action.client_die:
        {
            finish_player_turn.gameObject.SetActive(false);
            attack_button.gameObject.SetActive(false);
            nav_map.DeleteMarker();

            curr_action = action.wait;
        }
        break;
        }

        DecreaseTurnTime();
    }