예제 #1
0
    public void AgainstVote(newPlayerManager who, newPlayerManager against)
    {
        if (who.isDead || against == who)
        {
            return;
        }

        votes.Add(new Vote()
        {
            Who = who, VoteId = who.NumberInRoom, Against = against
        });

        foreach (var p in _allPlayerManagers)
        {
            if (against == p)
            {
                p.VotesNr++;
            }


            if (p == who)
            {
                p.hasVoted = true;
            }
        }

        voteImageCall(who);
        playerVotedImageCall(against);
        VotesNr++;
        pv.RPC("voteRPC", RpcTarget.Others, against.uniqID);
    }
예제 #2
0
 public void SkippedVote(newPlayerManager who)
 {
     votes.Add(new Vote()
     {
         Who = who, VoteId = who.NumberInRoom, IsSkipped = true
     });
     VotesNr++;
 }
예제 #3
0
    public void EndVote()
    {
        //return;
        int CurrentVotesNr           = 0;
        int SkippedNr                = 0;
        int HalfP                    = _allPlayerManagers.Count / 2;
        newPlayerManager higherScore = null;
        bool             TaTie       = false;

        foreach (var p in _allPlayerManagers)
        {
            if (higherScore != null)
            {
                if (higherScore.VotesNr < p.VotesNr)
                {
                    higherScore = p;
                }
                else if (higherScore.VotesNr == p.VotesNr)
                {
                    TaTie = true;
                }
            }
            else
            {
                higherScore = p;
            }
        }

        var result = votes.Where(y => y.IsSkipped == true);

        SkippedNr = result.Count();

        if (SkippedNr >= VotesNr)
        {
            Skipped();
        }
        else if (HalfP >= VotesNr)
        {
            Pass();
        }
        else if (TaTie)
        {
            Tie();
        }
        else
        {
            EjectP(higherScore);
        }

        resetCards();
        resetVoteStatuPlayer();
        resetPlayersVoteNbr();
        VotesNr = 0;
        VotePanel.SetActive(false);
    }
 private void OnTriggerStay2D(Collider2D other)
 {
     if (other.tag.Contains("Player"))
     {
         newPlayerManager collidedPlayerManager = other.gameObject.GetComponent <newPlayerManager>();
         if (!collidedPlayerManager.isEnemy)
         {
             wireButton.interactable = true;
         }
     }
 }
예제 #5
0
/**
 * On exit collision with an player, remove it from targets list
 */
    private void OnTriggerExit2D(Collider2D other)
    {
        if (other.tag == "Player")
        {
            newPlayerManager tempTarget = other.GetComponent <newPlayerManager>();
            if (targets.Contains(tempTarget))
            {
                targets.Remove(tempTarget);
            }
        }
    }
예제 #6
0
    public void Start()
    {
        pv = GetComponent <PhotonView>();
        gm = newGameManager.Instance;
        newPlayerManager npm = newPlayerManager.localNpm;

        if (npm.allBodies != null)
        {
            npm.allBodies.Add(transform);
        }

        reportButton = newPlayerManager.localNpm.reportButton;
    }
예제 #7
0
    void Start()
    {
        Instance = this;

        var currentRoom = PhotonNetwork.CurrentRoom;
        var countP      = 0;

        // Debug.Log("Current room name : " + currentRoom );
        if (PhotonNetwork.IsConnected && PhotonNetwork.IsMasterClient)
        {
            countP = PhotonNetwork.CurrentRoom.PlayerCount;
            // Debug.Log("count of players " + countP );
        }

        // Debug.Log(" room actu " + currentRoom);

        // Debug.Log("Nom du level " +  Application.loadedLevelName);



        if (playerPrefab == null)
        {
            Debug.LogError("<Color=Green><a>Missing</a></Color> playerPrefab Reference. Please set it up in GameObject 'Game Manager'", this);
        }
        else
        {
            if (newPlayerManager.LocalPlayerInstance == null)
            {
                Debug.LogFormat("We are Instantiating LocalPlayer from {0}", Application.loadedLevelName);

                PhotonNetwork.Instantiate(this.playerPrefab.name, new Vector3(0f, 0f, 0f), Quaternion.identity, 0);
            }
            else
            {
                Debug.LogFormat("Ignoring scene load for {0}", SceneManagerHelper.ActiveSceneName);
            }
        }

        players = GameObject.FindGameObjectsWithTag("Player");


        foreach (GameObject player in players)
        {
            newPlayerManager npm = player.GetComponent <newPlayerManager>();
            npm.changeCameraValueByScene();
            npm.transform.localPosition = spawnsPoints[npm.NumberInRoom].position;
        }
    }
예제 #8
0
/***
 * Detecting collision with other player and process targeting
 */
    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.tag == "Player")
        {
            //setting target
            newPlayerManager target = other.GetComponent <newPlayerManager>();

            //checking players roles, process targeting for the kill action
            if (isEnemy && target.isEnemy != true && isDead != true)
            {
                PlayerTarget = target;
                targets.Add(target);
                killButton.interactable = true;
            }
        }
    }
예제 #9
0
    void Awake()
    {
        photonView = GetComponent <PhotonView>();

        //set the instances
        thisPlayerManager = this;
        // used in GameManager.cs: we keep track of the localPlayer instance to prevent instantiation when levels are synchronized
        if (photonView.IsMine)
        {
            uniqID = photonView.Owner.NickName + RandomString(5);
            photonView.RPC("unidIDRpcCall", RpcTarget.OthersBuffered, uniqID);
            LocalPlayerInstance = this.gameObject;
            localNpm            = this;
        }

        DontDestroyOnLoad(this.gameObject);
    }
예제 #10
0
    // Start is called before the first frame update
    void Start()
    {
        pv = GetComponent <PhotonView>();

        _allPlayerManagers = new List <newPlayerManager>();
        playersGameObjects = GameObject.FindGameObjectsWithTag("Player");



        foreach (var p in playersGameObjects)
        {
            _allPlayerManagers.Add(p.GetComponent <newPlayerManager>());
            var card = Instantiate(PlayerCardPrefab, Vector3.zero, Quaternion.identity, PlayesGrid);
            // var card = PhotonNetwork.Instantiate("PlayerVoteCard", new Vector3(0, 0, 0), Quaternion.identity);

            cardLogic        cl = card.GetComponent <cardLogic>();
            newPlayerManager pm = p.GetComponent <newPlayerManager>();
            pm.voteManager        = this;
            cl.characterImg.color = pm.myAvatarSprite.color;
            cl.ChaNameTxt.text    = pm.playerNameText.text;
            cl.thisPlayer         = pm;
            cl.VM         = this;
            cl.BlockPanel = BlockPanel;
            cl.startBlockPanel();
            pm.CardLogic = cl;

            if (pm.report)
            {
                cl.AlertImg.enabled = true;
            }

            allCardsList.Add(cl);

            // setting the right of vote
            if (pm.isDead)
            {
                setDeadCard(card, cl);
            }
            else
            {
                CanVoteNbr++;
            }
        }
        pv.RPC("cardsCountUpdate", RpcTarget.All);
    }
예제 #11
0
    void Start()
    {
        players            = GameObject.FindGameObjectsWithTag("Player");
        _allPlayerManagers = new List <newPlayerManager>();
        EnemyScreen.GetComponent <EndScreenDelay>().GameManager = this;

        foreach (GameObject player in players)
        {
            _allPlayerManagers.Add(player.GetComponent <newPlayerManager>());
            newPlayerManager npm = player.GetComponent <newPlayerManager>();
            npm.GameManager = this;
            npm.changeCameraValueByScene();
            npm.setCanvasButton(buttonCanvas);
            npm.transform.localPosition = spawnsPoints[npm.NumberInRoom].position;
            npm.DebugText = debugText;
        }

        welcomeScreen.GetComponent <welcomeScreen>().player = newPlayerManager.LocalPlayerInstance.GetComponent <newPlayerManager>();
        welcomeScreen.SetActive(true);
        welcomeScreen.GetComponent <welcomeScreen>().switchScreen();
        StartCoroutine(loading());
        Instance = this;
        StartCoroutine(welcomePanelDelay());
    }
예제 #12
0
 public void EjectP(newPlayerManager playerToEject)
 {
     playerToEject.DieRPCCall(false);
     EjectLogic.EjectedPlayer = playerToEject;
     EjectPanel.SetActive(true);
 }
예제 #13
0
 public void playerVotedImageCall(newPlayerManager against)
 {
     against.CardLogic.CM.addVotedImg();
 }
예제 #14
0
 public void voteImageCall(newPlayerManager who)
 {
     who.CardLogic.CM.votedCall();
 }
예제 #15
0
 // Use this for initialization
 void Start()
 {
     instance = this;
 }