Ejemplo n.º 1
0
    //Function that creates the player and assigns a control scheme to it as detected by the input or if the player is already active it just assigns the control scheme detected
    void Create_Player()
    {
        //If some Players are already active it assigns a control scheme to them (works progressively from player 1 to 4)
        if (is_p1_active == true && player1move.ThisPlayerControl == MoveSelector.ControlTypesHere.NotAssigned /*&& !ps1.is_CPU*/)
        {
            newPlayer = player1move;
            ps        = panel1.GetComponent <PlayerSelector>();
        }

        else if (is_p2_active == true && player2move.ThisPlayerControl == MoveSelector.ControlTypesHere.NotAssigned && !ps2.is_CPU)
        {
            newPlayer = player2move;
            ps        = panel2.GetComponent <PlayerSelector>();
        }

        else if (is_p3_active == true && player3move.ThisPlayerControl == MoveSelector.ControlTypesHere.NotAssigned && !ps3.is_CPU)
        {
            newPlayer = player3move;
            ps        = panel3.GetComponent <PlayerSelector>();
        }

        else if (is_p4_active == true && player4move.ThisPlayerControl == MoveSelector.ControlTypesHere.NotAssigned && !ps4.is_CPU)
        {
            newPlayer = player4move;
            ps        = panel4.GetComponent <PlayerSelector>();
        }



        //If there are no active players it creates a new player and assigns the control scheme detected
        else
        {
            if (num_players <= 4)
            {
                num_players++;
            }

            switch (num_players)
            {
            case 1:
                player.SetActive(true);
                newPlayer    = player1move;
                is_p1_active = true;
                ps           = panel1.GetComponent <PlayerSelector>();
                break;

            case 2:
                player2.SetActive(true);
                newPlayer    = player2move;
                is_p2_active = true;
                ps           = panel2.GetComponent <PlayerSelector>();
                break;

            case 3:
                player3.SetActive(true);
                newPlayer    = player3move;
                is_p3_active = true;
                ps           = panel3.GetComponent <PlayerSelector>();
                break;

            case 4:
                player4.SetActive(true);
                newPlayer    = player4move;
                is_p4_active = true;
                ps           = panel4.GetComponent <PlayerSelector>();
                break;

            default:
                num_players = 4;
                break;
            }
            newPlayer.Hand.SetAsLastSibling();
            if (newPlayer.playerID == 1)
            {
                newPlayer.GetComponent <Collider2D>().enabled = false;
            }
            newPlayer.is_this_active = true;
            ps.CPU_Controls          = 1;
            ps.switch_case           = 1;
            ps.HandObject.SetActive(true);
            ps.Token.sprite    = ps.Player_Token;
            ps.Hand.sprite     = ps.hand_closed;
            ps.carImage.sprite = ps.default_Empty;
        }

        setControlScheme();
    }
    //Function that creates the player and assigns a control scheme to it as detected by the input or if the player is already active it just assigns the control scheme detected
    void Create_Player()
    {
        //If some Players are already active it assigns a control scheme to them (works progressively from player 1 to 4)
        if (is_p1_active == true && player1move.ThisPlayerControl == MoveSelector.ControlTypesHere.NotAssigned /*&& !ps1.is_CPU*/)
        {
            newPlayer = player1move;
            ps = panel1.GetComponent<PlayerSelector>();
        }

        else if (is_p2_active == true && player2move.ThisPlayerControl == MoveSelector.ControlTypesHere.NotAssigned && !ps2.is_CPU)
        {
            newPlayer = player2move;
            ps = panel2.GetComponent<PlayerSelector>();
        }

        else if (is_p3_active == true && player3move.ThisPlayerControl == MoveSelector.ControlTypesHere.NotAssigned && !ps3.is_CPU)
        {
            newPlayer = player3move;
            ps = panel3.GetComponent<PlayerSelector>();
        }

        else if (is_p4_active == true && player4move.ThisPlayerControl == MoveSelector.ControlTypesHere.NotAssigned && !ps4.is_CPU)
        {
            newPlayer = player4move;
            ps = panel4.GetComponent<PlayerSelector>();
        }

        //If there are no active players it creates a new player and assigns the control scheme detected
        else {

            if (num_players <= 4) { num_players++; }

            switch (num_players)
        {

            case 1:
                player.SetActive(true);
                newPlayer = player1move;
                is_p1_active = true;
                ps = panel1.GetComponent<PlayerSelector>();
                break;

            case 2:
                player2.SetActive(true);
                newPlayer = player2move;
                is_p2_active = true;
                ps = panel2.GetComponent<PlayerSelector>();
                break;

            case 3:
                player3.SetActive(true);
                newPlayer = player3move;
                is_p3_active = true;
                ps = panel3.GetComponent<PlayerSelector>();
                break;

            case 4:
                player4.SetActive(true);
                newPlayer = player4move;
                is_p4_active = true;
                ps = panel4.GetComponent<PlayerSelector>();
                break;

            default:
                    num_players = 4;
                break;

        }
            newPlayer.Hand.SetAsLastSibling();
            if (newPlayer.playerID == 1) { newPlayer.GetComponent<Collider2D>().enabled = false; }
            newPlayer.is_this_active = true;
            ps.CPU_Controls = 1;
            ps.switch_case  = 1;
            ps.HandObject.SetActive(true);
            ps.Token.sprite = ps.Player_Token;
            ps.Hand.sprite = ps.hand_closed;
            ps.carImage.sprite = ps.default_Empty;

        }

        setControlScheme();
    }
Ejemplo n.º 3
0
    //This funciton is called when the activation button on the panel is pressed (changes the player status to active, non active or cpu)
    public void PanelManager()
    {
        if (m.playerID != 1) //Player 1 will have a slightly different behaviour
        {
            if (!CoinController.is_grabbed)
            {
                //A new player can be activated only if it's the one right next to the highest currently activated player. e.g. if only player 1 is active you can activate player 2 but not player 3
                if (l.num_players == m.playerID || l.num_players == m.playerID - 1)
                {
                    switch_case++;
                    switch (switch_case)
                    {
                    case 1:
                        //Makes it an active player
                        if (l.num_players == m.playerID - 1 && !m.is_this_active)
                        {
                            Token.sprite = Player_Token;
                            HandObject.SetActive(true);

                            playerCoin.SetActive(true);
                            cpuText.text = "";
                            t.text       = nameplayer;

                            Hand.sprite = hand_closed;
                            m.Hand.SetAsLastSibling();
                            if (m.playerID == 1)
                            {
                                m.GetComponent <Collider2D>().enabled = false;
                            }


                            if (l.num_players < m.playerID)
                            {
                                l.num_players++;
                            }

                            if (m.playerID == 1)
                            {
                                l.is_p1_active = true;
                            }
                            else if (m.playerID == 2)
                            {
                                l.is_p2_active = true;
                            }
                            else if (m.playerID == 3)
                            {
                                l.is_p3_active = true;
                            }
                            else if (m.playerID == 4)
                            {
                                l.is_p4_active = true;
                            }

                            m.is_this_active = true;
                            CPU_Controls     = 1;
                            is_CPU           = false;
                            carImage.sprite  = default_Empty;
                        }

                        break;

                    case 2:
                        //Makes it a CPU
                        if (l.num_players == m.playerID - 1 && !m.is_this_active)
                        {
                            playerCoin.SetActive(true);
                            m.is_this_active = true;
                            l.num_players++;

                            if (m.playerID == 1)
                            {
                                l.is_p1_active = true;
                            }
                            else if (m.playerID == 2)
                            {
                                l.is_p2_active = true;
                            }
                            else if (m.playerID == 3)
                            {
                                l.is_p3_active = true;
                            }
                            else if (m.playerID == 4)
                            {
                                l.is_p4_active = true;
                            }
                        }

                        if (m.is_this_active)
                        {
                            cpuText.text    = "";
                            t.text          = "CPU";
                            is_CPU          = true;
                            CPU_Controls    = 2;
                            carImage.sprite = default_Empty;
                            Controls        = 4;

                            HandObject.SetActive(false);
                            Token.sprite = CPU_Token;

                            l.num_CPU_Players++;
                            resetControlsCPU();
                            ControlManager();
                        }

                        break;

                    default:
                        //Deactivates it and resets all its variables
                        if (l.num_players == m.playerID && m.is_this_active)

                        {
                            print("deleting player");

                            playerCoin.SetActive(false);


                            if (m.ThisPlayerControl == MoveSelector.ControlTypesHere.Joy1)
                            {
                                m.ThisPlayerControl = MoveSelector.ControlTypesHere.NotAssigned;
                                l.is_joy1_taken     = false;
                            }

                            else if (m.ThisPlayerControl == MoveSelector.ControlTypesHere.Joy2)
                            {
                                m.ThisPlayerControl = MoveSelector.ControlTypesHere.NotAssigned;
                                l.is_joy2_taken     = false;
                            }

                            else if (m.ThisPlayerControl == MoveSelector.ControlTypesHere.ArrowKeys)
                            {
                                m.ThisPlayerControl  = MoveSelector.ControlTypesHere.NotAssigned;
                                l.is_arrowKeys_taken = false;
                            }

                            else if (m.ThisPlayerControl == MoveSelector.ControlTypesHere.WSDA)
                            {
                                m.ThisPlayerControl = MoveSelector.ControlTypesHere.NotAssigned;
                                l.is_wsda_taken     = false;
                            }

                            if (m.playerID == 1)
                            {
                                l.is_p1_active = false;
                            }
                            else if (m.playerID == 2)
                            {
                                l.is_p2_active = false;
                            }
                            else if (m.playerID == 3)
                            {
                                l.is_p3_active = false;
                            }
                            else if (m.playerID == 4)
                            {
                                l.is_p4_active = false;
                            }

                            l.num_players--;
                            l.num_CPU_Players--;
                            m.is_this_active = false;
                            is_CPU           = false;
                            CoinController.is_car_selected = false;
                        }

                        switch_case = 0;
                        playerCoin.transform.position = m.playerPosition;
                        carImage.sprite = default_notActive;

                        if (Car1.ThisCarSelected == true && CoinController.CoinID == Car1.ID)
                        {
                            Car1.CheckPlayerActivation();
                        }
                        else if (Car2.ThisCarSelected == true && CoinController.CoinID == Car2.ID)
                        {
                            Car2.CheckPlayerActivation();
                        }
                        else if (Car3.ThisCarSelected == true && CoinController.CoinID == Car3.ID)
                        {
                            Car3.CheckPlayerActivation();
                        }
                        else if (Car4.ThisCarSelected == true && CoinController.CoinID == Car4.ID)
                        {
                            Car4.CheckPlayerActivation();
                        }

                        CPU_Controls = 0;
                        t.text       = "N/A";
                        cpuText.text = "";

                        if (m.playerID == 1)
                        {
                            buttonController.SetOverlay(false);
                            controlController.SetOverlay(false);
                        }

                        Controls = 4;
                        ControlManager();

                        break;
                    }
                }
                //If this is a middle player (e.g. player 2 when 3 players are active) only switches between CPU and active status. Player cannot be disabled
                else if (m.is_this_active)
                {
                    CPU_Controls++;

                    switch (CPU_Controls)
                    {
                    case 1:

                        is_CPU = false;
                        resetControlsCPU();
                        Controls = 4;
                        ControlManager();
                        Hand.sprite  = hand_closed;
                        cpuText.text = "";
                        t.text       = nameplayer;
                        switch_case  = 1;
                        Token.sprite = Player_Token;
                        HandObject.SetActive(true);
                        CPU_Controls = 1;
                        l.num_CPU_Players--;

                        break;

                    case 2:
                        cpuText.text = "";
                        t.text       = "CPU";
                        is_CPU       = true;
                        CPU_Controls = 0;
                        switch_case  = 2;
                        resetControlsCPU();
                        Controls = 4;
                        ControlManager();

                        l.num_CPU_Players++;
                        HandObject.SetActive(false);
                        Token.sprite = CPU_Token;

                        m.ThisPlayerControl = MoveSelector.ControlTypesHere.NotAssigned;
                        break;

                    default:
                        switch_case  = 0;
                        CPU_Controls = 0;
                        Controls     = 4;
                        is_CPU       = false;
                        break;
                    }
                }
            }
        }

        //Player 1 can also not be deactivated as it controls other players' statuses and activation
        else
        {
            CPU_Controls++;

            switch (CPU_Controls)
            {
            case 1:
                cpuText.text = "";
                t.text       = nameplayer;
                is_CPU       = false;
                switch_case  = 1;
                Token.sprite = Player_Token;
                break;

            case 2:
                cpuText.text = "";
                t.text       = "CPU";
                is_CPU       = true;
                CPU_Controls = 0;
                Token.sprite = CPU_Token;
                switch_case  = 2;
                break;

            default:
                switch_case  = 0;
                CPU_Controls = 0;
                is_CPU       = false;
                break;
            }
        }
    }