#pragma strict
var Players : GameObject[ ];
var LobbyPlayer : GameObject;
var LevelsLoaded : int = 0;
var CurMap : String = “SmallTown”;
var CurGameMode : String = “TDM”;
var InLobby : boolean = true;
var SMap : boolean = false;
var SMode : boolean = false;
var StartTime : int = 5;
var StartingMatch : boolean = false;
function OnConnectedToServer () {
Network.Instantiate(LobbyPlayer, transform.position, transform.rotation, 0);
}
function OnPlayerDissconnected (Player : NetworkPlayer){
Network.RemoveRPCs(Player,0);
Network.DestroyPlayerObjects(Player);
}
function Awake () {
DontDestroyOnLoad(this);
networkView.group = 1;
}
function Update () {
if(SMap == true)
SMode = false;
if(SMode == true)
SMap = false;
Players = GameObject.FindGameObjectsWithTag(“Player”);
}
function OnGUI () {
if(InLobby == true){
GUI.Label(Rect(10, 10, 90, 30),“Game Lobby”);
if (GUI.Button(Rect(10, 40, 90, 30), “Start Match”)){
StartMatch();
}
if (GUI.Button(Rect(10, 90, 90, 30),“Select Map”)){
SMap = true;
}
if (SMap == true){
GUI.Box(Rect(120, 0, 180, Screen.height), “Maps”);
if (GUI.Button(Rect(125, 170, 90, 25),“Small Town”)){
CurMap = “SmallToun”;
SMap = false;
}
}
if (GUI.Button(Rect(125, 20, 90, 25), “Select Mode”)){
SMode = true;
}
if (SMode == true){
GUI.Box(Rect(120, 0, 180, Screen.height),“GameModes”);
if (GUI.Button(Rect(125, 20, 170, 25),“Team Death Match”)){
CurGameMode = “TDM”;
SMode = false;
}
}
GUILayout.BeginArea(Rect(Screen.width - Screen.width / 2 - 150, 30, Screen.width / 2 - 140, Screen.height));
GUILayout.BeginHorizontal();
for(var playerName in Players){
if (GUILayout.Button(playerName.ToString)){
Debug.Log(“Click”);
}
}
GUILayout.FlexibleSpace();
GUILayout.EndHorizontal();
GUILayout.EndArea();
if (StartingMatch == true){
GUI.Label(Rect(Screen.width-150, Screen.height-25, 150, 25),"Match Starts In: " + StartTime);
}
}
}
function StartMatch () {
StartingMatch = true;
yield WaitForSeconds(1);
StartTime --;
yield WaitForSeconds(1);
StartTime --;
yield WaitForSeconds(1);
StartTime --;
yield WaitForSeconds(1);
StartTime --;
yield WaitForSeconds(1);
StartTime --;
Network.RemoveRPCsInGroup(0);
Network.RemoveRPCsInGroup(1);
networkView.RPC(“StartGame”, RPCMode.AllBuffered, CurMap, LevelsLoaded + 1);
InLobby = false;
}
@RPC
function StartGame ( CurLevel : String, LsLoaded : int ){
Debug.Log("Load: " + CurMap);
LevelsLoaded = LsLoaded;
Network.SetSendingEnabled(0,false);
Network.isMessageQueueRunning = false;
Network.SetLevelPrefix(LsLoaded);
Application.LoadLevel(CurLevel);
yield;
yield;
Network.isMessageQueueRunning = true;
Network.SetSendingEnabled(0,true);
}