topical media & game development

talk show tell print

lib-unity-tutorial-network-m2h-Assets-Example4-GameAssets-Scripts-scoreBoard.js / js



  /* 
  *  This file is part of the Unity networking tutorial by M2H (http://www.M2H.nl)
  *  The original author of this code is Mike Hergaarden, even though some small parts 
  *  are copied from the Unity tutorials/manuals.
  *  Feel free to use this code for your own projects, drop us a line if you made something exciting! 
  */
  #pragma strict
  
  var skin : GUISkin;
  
  //static var newRecordMessage : String = "";
  
  private var displayingHighscore : boolean = false;
  private var highscoreText : GUIText;
  
  private var playerName : String = "";
  
  private var scoreText : String = "Loading scores";
  
  private var hidestats : boolean = true;
  private var scoreBoardHeight :int = 60;
  private var gameSetupScript : GameSetup;
  
  function Awake(){
          gameSetupScript = GetComponent(GameSetup);
          
          highscoreText = GetComponent(GUIText);
          highscoreText.enabled=false;
          playerName= PlayerPrefs.GetString("playerName");
  }
  
  function OnGUI () {
          GUI.skin = skin;
  
          scoreText = "Scoreboard:\n";
          for(var entry : FPSPlayerNode in  gameSetupScript.playerList){
                  scoreText += entry.playerName+" \t"+entry.kills+" kills "+entry.deaths+" deaths\n";                
          }
  
          GUILayout.BeginArea (Rect ((Screen.width-185),20,175,scoreBoardHeight));
          GUILayout.Box(scoreText);
          GUILayout.EndArea ();
  }
  
  function LocalPlayerHasKilled(){
          var kills : int =0;
          var deaths : int = 0;
          for (var playerInstance : FPSPlayerNode in gameSetupScript.playerList) {
                  if (Network.player == playerInstance.networkPlayer) {
                          kills = playerInstance.kills;
                          deaths = playerInstance.deaths;
                          break;
                  }
          }
          
          kills++;
          
          //Overwrite the data of other players with the new correct score
          networkView.RPC("UpdateScore",RPCMode.All, Network.player, kills, deaths); 
  }
  
  function LocalPlayerDied(){
          var kills : int =0;
          var deaths : int = 0;
          for (var playerInstance : FPSPlayerNode in gameSetupScript.playerList) {
                  if (Network.player == playerInstance.networkPlayer) {
                          kills = playerInstance.kills;
                          deaths = playerInstance.deaths;
                          break;
                  }
          }        
          deaths++;
          
          //Overwrite with new correct score
          networkView.RPC("UpdateScore",RPCMode.All, Network.player, kills, deaths); 
  }
  
                  
  @RPC
  function UpdateScore(player : NetworkPlayer, kills : int, deaths : int){
          Debug.Log((Network.player==player)+"=local "+kills+"kills & deaths="+deaths);
          var found : boolean = false;
          for (var playerInstance : FPSPlayerNode in gameSetupScript.playerList) {
                  if (player == playerInstance.networkPlayer) {
                          playerInstance.kills=kills;
                          playerInstance.deaths=deaths;
                          found=true;
                          break;                        
                  }
          }        
          if(!found){
                  Debug.LogError("Could not find network player "+player+" in the gamesetup playerlist!");
          }
          scoreBoardHeight = gameSetupScript.playerList.Count*15+40;                
  }


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.