示例#1
0
    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();
        }
    }
示例#2
0
文件: Chat.cs 项目: MlCHAEL/Sanicball
    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));
    }
示例#3
0
    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;
    }
示例#4
0
    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);
    }