void OnGUI() { if (!hidden) { GUI.skin = skin; GUIStyle smallButton = GUI.skin.GetStyle("SmallButton"); Rect playerListRect = new Rect(Screen.width / 2 - 480, Screen.height / 2 - 320, 960, 640); GUI.Box(playerListRect, ""); GUILayout.BeginArea(playerListRect); List <ServerPlayer> playerList = client.GetPlayerList(); GUILayout.Label(playerList.Count + " player(s)"); playerListScroll = GUILayout.BeginScrollView(playerListScroll); if (client != null) { int i = 0; foreach (ServerPlayer sp in playerList) { GUIStyle labelStyle = GUI.skin.label; GUIStyle buttonStyle = smallButton; if (i % 2 == 0) { labelStyle = GUI.skin.GetStyle("LabelOdd"); buttonStyle = GUI.skin.GetStyle("SmallButtonOdd"); } string readystring = sp.ready ? "Ready" : "Not ready"; GUILayout.BeginHorizontal(); GUILayout.Label(sp.name, labelStyle, GUILayout.ExpandWidth(true)); GUIStyle typeStyle = new GUIStyle(labelStyle); typeStyle.normal.textColor = PlayerTypeHandler.GetPlayerColor(sp.type); GUILayout.Label(sp.type.ToString(), typeStyle, GUILayout.Width(200)); GUILayout.Label(readystring, labelStyle, GUILayout.Width(125)); if (Network.isServer && sp.player != Network.player) { if (GUILayout.Button("Kick", buttonStyle, GUILayout.Width(62))) { FindObjectOfType <Server>().KickPlayer(sp.player, "You have been kicked by the host."); } } else { GUILayout.Label("", labelStyle, GUILayout.Width(62)); } GUILayout.EndHorizontal(); i++; } } GUILayout.EndScrollView(); GUILayout.EndArea(); } }
public void SendChatMessage(NetworkPlayer sender, string message) { ServerPlayer player = GetComponent <Client>().FindServerPlayer(sender); string name = player.name; if (player.spectating) { name = "[Spectating] " + name; } if (GetComponent <Client>().IsHost(sender)) { name = "[Host] " + name; } AddMessage(name, message, PlayerTypeHandler.GetPlayerColor(player.type)); }
public Racer SpawnLobbyBall(ServerPlayer sp, bool isLocal) { Character c = Global.characters[sp.character]; //Get character for player Object o; if (sp.player == Network.player) { o = ballPlayerLobbyPrefab; } else { o = ballRemoteLobbyPrefab; } Racer r = (Racer)Instantiate(o, new Vector3(0, 8, -4), Quaternion.Euler(0, 90, 25)); r.name = o.name + "-" + sp.name; //Set character traits r.racerName = sp.name; r.renderer.material = c.material; r.mapIconMaterial = c.minimapIcon; r.GetComponent <TrailRenderer>().material = c.trail; BallControl bc = r.GetComponent <BallControl>(); if (c.alternativeMesh != null) { r.GetComponent <MeshFilter>().mesh = c.alternativeMesh; } if (bc != null) { bc.stats = c.stats; } r.transform.localScale = new Vector3(c.ballSize, c.ballSize, c.ballSize); if (o == ballRemoteLobbyPrefab) { GUIText label = r.transform.FindChild("ObjectLabel").guiText; label.text = sp.name; label.color = PlayerTypeHandler.GetPlayerColor(sp.type); } return(r); //Do more stuff //r.RaceController = raceController; //r.totalLaps = (int)settings.laps; }
void CreateRacers(RaceController raceController) { Racer[] racers = new Racer[client.GetPlayerList().Count + (int)settings.aiBallCount]; int position = 0; int row = 0; foreach (ServerPlayer sp in client.GetPlayerList()) { if (sp.spectating) { continue; //Don't spawn spectators } Character c = Global.characters[sp.character]; //Get character for player Object o; if (sp.player == Network.player) { o = playerBallPrefab; //Is mlg mode? if (c.attributes.Contains("sponsored by mlg")) { Instantiate(mlgModeObject); } } else { o = remoteBallPrefab; } Racer r = (Racer)Instantiate(o, raceController.spawnPoint.GetSpawnPoint(position, c.ballSize / 2), raceController.spawnPoint.transform.rotation * Quaternion.Euler(0, -90, 0)); r.name = o.name + "-" + sp.name; //Set character traits r.racerName = sp.name; r.renderer.material = c.material; r.mapIconMaterial = c.minimapIcon; r.GetComponent <TrailRenderer>().material = c.trail; if (c.alternativeMesh != null) { r.GetComponent <MeshFilter>().mesh = c.alternativeMesh; } BallControl bc = r.GetComponent <BallControl>(); if (bc != null) { bc.stats = c.stats; } r.transform.localScale = new Vector3(c.ballSize, c.ballSize, c.ballSize); if (o == remoteBallPrefab) { GUIText label = r.transform.FindChild("ObjectLabel").guiText; label.text = sp.name; label.color = PlayerTypeHandler.GetPlayerColor(sp.type); } //Do more stuff r.totalLaps = (int)settings.laps; //Add racer to list sp.racer = r; racers[position] = r; position++; } //Create AI balls int aiPos = 0; Racer[] balllist = new Racer[(int)settings.aiBallCount]; for (int i = 0; i < settings.aiBallCount; i++) { //TO BE CHANGED (COPYPASTE IS BAD) //Calc position to put racer at Vector3 dir; if (position % 11 == 10) { row++; } if (position % 2 == 0) { dir = Vector3.right * ((position % 10) / 2 + 1) * 2; } else { dir = Vector3.left * ((position % 10) / 2) * 2; } dir += (Vector3.back * 1.4f) * row; Character c; if (aiPos < settings.aiCharacters.Count) { c = Global.characters[(int)settings.aiCharacters[aiPos]]; //Get character for player } else { c = Global.characters[1]; //Default to knackles } Object o; if (Network.isServer) { o = aiBallPrefab; } else { o = remoteBallPrefab; } Racer r = (Racer)Instantiate(o, raceController.spawnPoint.GetSpawnPoint(position, c.ballSize / 2), raceController.spawnPoint.transform.rotation * Quaternion.Euler(0, -90, 0)); r.name = o.name + "-" + c.name; //Set character traits r.racerName = c.name; r.renderer.material = c.material; r.mapIconMaterial = c.minimapIcon; r.GetComponent <TrailRenderer>().material = c.trail; BallControl bc = r.GetComponent <BallControl>(); if (bc != null) { bc.stats = c.stats; } r.transform.localScale = new Vector3(c.ballSize, c.ballSize, c.ballSize); //Do more stuff r.totalLaps = (int)settings.laps; //Add racer to list balllist[aiPos] = r; //Set aiball for client racers[position] = r; position++; aiPos++; } client.SetAIBalls(balllist); raceController.SetRacers(racers); }