コード例 #1
0
        // Sets the instance reference
        private void Awake()
        {
            if (instance != null)
            {
                return;
            }

            instance = this;
            DontDestroyOnLoad(gameObject);
        }
コード例 #2
0
        /// <summary>
        /// Called after disconnecting from the Photon server.
        /// </summary>
        public override void OnDisconnectedFromPhoton()
        {
            //switch from the online to the offline scene after connection is closed
            if (SceneManager.GetActiveScene().buildIndex != 0)
            {
                SceneManager.LoadScene(0);
            }

            DatabaseRequester.Logout();
        }
コード例 #3
0
        private void WinnerRPC(int id)
        {
            if (!PhotonNetwork.isMasterClient)
            {
                return;
            }

            //check if there is only one player
            if (GameManagerScript.GetInstance().alivePlayers.Count == 1)
            {
                DatabaseRequester.SetPlayerStat(photonView.GetKills(), 1, GameManagerScript.GetInstance().dbTokens[id]);
            }
        }
コード例 #4
0
        private void BuySkin(string skin_id, GameObject row)
        {
            int    status;
            string response;

            DatabaseRequester.Buy(skin_id, out status, out response);

            if (status == 200)
            {
                row.SetActive(false);
                var cost            = System.Int32.Parse(((Text)row.transform.GetChild(1).GetComponent("Text")).text);
                int currentCurrency = UpdateCurrency(cost);
                UpdateBuyButton(currentCurrency);
            }
        }
コード例 #5
0
        private void Start()
        {
            //player add itself to the dictionnary of alive player using his player ID
            GameManagerScript.GetInstance().alivePlayers.Add(playerID, gameObject);

            //intialization of the pause counter for all players
            GameManagerScript.GetInstance().pauseCounter.Add(playerID, 3);

            //called only for this client
            if (!photonView.isMine)
            {
                return;
            }

            //activate the player UI
            playerUI.SetActive(true);

            //activate camera only for this player
            playerCamera.enabled      = true;
            playerCameraAudio.enabled = true;

            //set name in the UI
            uiScript.playerNameText.text = photonView.GetName();

            //update health, shield and fuel
            uiScript.UpdateHealth(photonView.GetHealth());
            uiScript.UpdateShield(photonView.GetShield());
            uiScript.UpdateKillsText(photonView.GetKills());

            uiScript.UpdateAliveText(GameManagerScript.alivePlayerNumber);

            Cursor.lockState = CursorLockMode.Locked;
            Cursor.visible   = false;

            thrusters.SetActive(false);

            //set a global reference to the local player
            GameManagerScript.GetInstance().localPlayer = this;

            photonView.RPC("SendDBTokenRPC", PhotonTargets.All, playerID, DatabaseRequester.GetDBToken());

            for (int i = 0; i < playerSkinedMesh.Length; i++)
            {
                playerSkinedMesh[i].shadowCastingMode = ShadowCastingMode.ShadowsOnly;
            }
        }
コード例 #6
0
        private void FillSkin()
        {
            int    status;
            string response;

            DatabaseRequester.Skin(out status, out response);

            // - leaderboard is loaded successfully
            if (status == 200)
            {
                var csv_text = response;
                var rows     = csv_text.Split('\n');

                for (int i = 0; i < skinRows.Count; i++)
                {
                    GameObject skinRow = skinRows[i];

                    Text   idText     = (Text)skinRow.transform.GetChild(0).GetComponent("Text");
                    Text   nameText   = (Text)skinRow.transform.GetChild(1).GetComponent("Text");
                    Button skinButton = (Button)skinRow.transform.GetChild(2).GetComponent("Button");

                    if (i == 0)
                    {
                        skinButton.onClick.AddListener(delegate { SetSkin("0"); });
                        if (PlayerPrefs.GetInt("prefab") == 0)
                        {
                            idText.color            = playerColor;
                            nameText.color          = playerColor;
                            skinButton.interactable = false;
                        }

                        else
                        {
                            idText.color            = Color.white;
                            nameText.color          = Color.white;
                            skinButton.interactable = true;
                        }
                    }

                    else
                    {
                        var j = i - 1;

                        // - no more skin to buy
                        if (j >= rows.Length || string.Equals(rows[j], ""))
                        {
                            skinRows[i].SetActive(false);
                            continue;
                        }

                        skinRows[i].SetActive(true);
                        var row = rows[j].Split(',');

                        nameText.text = row[1];
                        skinButton.onClick.AddListener(delegate { SetSkin(row[0]); });

                        if (row[0] == PlayerPrefs.GetInt("prefab").ToString())
                        {
                            idText.color            = playerColor;
                            nameText.color          = playerColor;
                            skinButton.interactable = false;
                        }

                        else
                        {
                            idText.color            = Color.white;
                            nameText.color          = Color.white;
                            skinButton.interactable = true;
                        }
                    }
                }
            }
        }
コード例 #7
0
        private void FillMarket()
        {
            int    status;
            string response;
            int    currency;

            // - get player currency
            DatabaseRequester.Currency(out status, out response);

            if (status == 200)
            {
                currency            = System.Int32.Parse(response);
                playerCurrency.text = currency.ToString();
            }

            else
            {
                return;
            }


            DatabaseRequester.Market(out status, out response);

            // - leaderboard is loaded successfully
            if (status == 200)
            {
                var csv_text = response;
                var rows     = csv_text.Split('\n');

                // - Disable all rows by default
                for (int i = 0; i < marketRows.Count; i++)
                {
                    marketRows[i].SetActive(false);
                }

                for (int i = 0; i < rows.Length; i++)
                {
                    var row = rows[i].Split(',');


                    if (row[0].Equals(""))
                    {
                        continue;
                    }

                    Debug.Log(row[0] + " " + row[1] + " " + row[2]);

                    int id = (System.Int32.Parse(row[0]) - 1) % 3;

                    marketRows[id].SetActive(true);
                    GameObject marketRow = marketRows[id];

                    Text   nameText  = (Text)marketRow.transform.GetChild(0).GetComponent("Text");
                    Text   costText  = (Text)marketRow.transform.GetChild(1).GetComponent("Text");
                    Button buyButton = (Button)marketRow.transform.GetChild(2).GetComponent("Button");

                    nameText.text = row[1];
                    costText.text = row[2];
                    buyButton.onClick.AddListener(delegate { BuySkin(row[0], marketRow); });
                    buyButton.interactable = currency >= System.Int32.Parse(row[2]);
                }
            }
        }
コード例 #8
0
        private void FillLeaderboard()
        {
            int    status;
            string response;
            bool   hasFoundPlayer = false;

            DatabaseRequester.Leaderboard(out status, out response);

            // - leaderboard is loaded successfully
            if (status == 200)
            {
                var csv_text = response;
                var rows     = csv_text.Split('\n');

                for (int i = 0; i < rows.Length; i++)
                {
                    var row = rows[i].Split(',');

                    if (row.Length == 5 && i < leaderboardRows.Count)
                    {
                        GameObject leaderboardRow = leaderboardRows[i];

                        Text rankText   = (Text)leaderboardRow.transform.GetChild(0).GetComponent("Text");
                        Text playerText = (Text)leaderboardRow.transform.GetChild(1).GetComponent("Text");
                        Text killText   = (Text)leaderboardRow.transform.GetChild(2).GetComponent("Text");
                        Text winText    = (Text)leaderboardRow.transform.GetChild(3).GetComponent("Text");
                        Text playedText = (Text)leaderboardRow.transform.GetChild(4).GetComponent("Text");
                        Text scoreText  = (Text)leaderboardRow.transform.GetChild(5).GetComponent("Text");

                        playerText.text = row[0];
                        killText.text   = row[1];
                        winText.text    = row[2];
                        playedText.text = row[3];
                        scoreText.text  = row[4];

                        if (System.String.Equals(row[0], DatabaseRequester.GetPlayerPseudo(), System.StringComparison.OrdinalIgnoreCase))
                        {
                            rankText.color   = playerColor;
                            playerText.color = playerColor;
                            winText.color    = playerColor;
                            killText.color   = playerColor;
                            playedText.color = playerColor;
                            scoreText.color  = playerColor;
                            hasFoundPlayer   = true;
                        }
                    }
                }

                if (hasFoundPlayer)
                {
                    leaderboardRows[10].SetActive(false);
                }

                else
                {
                    leaderboardRows[10].SetActive(true);
                    var row = rows[10].Split(',');

                    GameObject leaderboardRow = leaderboardRows[10];

                    Text rankText   = (Text)leaderboardRow.transform.GetChild(0).GetComponent("Text");
                    Text playerText = (Text)leaderboardRow.transform.GetChild(1).GetComponent("Text");
                    Text killText   = (Text)leaderboardRow.transform.GetChild(2).GetComponent("Text");
                    Text winText    = (Text)leaderboardRow.transform.GetChild(3).GetComponent("Text");
                    Text playedText = (Text)leaderboardRow.transform.GetChild(4).GetComponent("Text");
                    Text scoreText  = (Text)leaderboardRow.transform.GetChild(5).GetComponent("Text");

                    rankText.text   = row[0];
                    playerText.text = row[1];
                    killText.text   = row[2];
                    winText.text    = row[3];
                    playedText.text = row[4];
                    scoreText.text  = row[5];

                    rankText.color   = playerColor;
                    playerText.color = playerColor;
                    winText.color    = playerColor;
                    killText.color   = playerColor;
                    playedText.color = playerColor;
                    scoreText.color  = playerColor;
                    hasFoundPlayer   = true;
                }
            }
        }
コード例 #9
0
ファイル: HealthScript.cs プロジェクト: Misttgun/Battle-Robot
        /// <summary>
        /// Server only: calculate damage to be taken by the Player,
        /// triggers kills increase and workflow on death.
        /// </summary>
        public void TakeDamage(int hitPoint, int killerID = -1)
        {
            if (!PhotonNetwork.isMasterClient || GameManagerScript.GetInstance().IsGamePause())
            {
                return;
            }

            int damage = (int)(hitPoint * damageMultiplicator);

            //store network variables temporary
            int health = playerPhotonView.GetHealth();
            int shield = playerPhotonView.GetShield();

            //reduce shield on hit
            if (shield > 0 && killerID != -1)
            {
                var shieldDamage = shield - damage;

                if (shieldDamage < 0)
                {
                    playerPhotonView.SetShield(0);
                    playerPhotonView.SetHealth(health + shieldDamage);
                }
                else
                {
                    playerPhotonView.SetShield(shieldDamage);
                }
            }

//            //if player is already dead, but we can still shoot him... don't ask me why
//            if (health <= 0)
//            {
//                return;
//            }

            //substract health by damage
            //locally for now, to only have one update later on
            else
            {
                health -= damage;
            }

            //the player is dead
            if (health <= 0)
            {
                //if we took damage from another player
                if (killerID != -1)
                {
                    //get killer and increase kills for that player
                    playerPhotonView.RPC("UpdateKillsRPC", PhotonTargets.MasterClient, killerID);
                }

                //set the player current rank
                playerPhotonView.SetRank(GameManagerScript.alivePlayerNumber);

                // set dead player stats
                DatabaseRequester.SetPlayerStat(playerPhotonView.GetKills(), 0, GameManagerScript.GetInstance().dbTokens[playerPhotonView.owner.ID]);

                //tell all clients that the player is dead
                playerPhotonView.RPC("IsDeadRPC", PhotonTargets.All, playerPhotonView.owner.ID);
            }
            else
            {
                //we didn't die, set health to new value
                playerPhotonView.SetHealth(health);
            }
        }
コード例 #10
0
ファイル: LobbyScript.cs プロジェクト: Misttgun/Battle-Robot
 /// <summary>
 /// Quit the game
 /// </summary>
 public void Quit()
 {
     DatabaseRequester.Logout();
     Application.Quit();
 }