Ejemplo n.º 1
0
 public void BottoneGioca()
 {
     if (Statici.nomePersonaggio != string.Empty && Statici.datiPersonaggio.Dati.nomePersonaggio != string.Empty)
     {
         if (inputNomePartita.text.Replace(" ", "") != string.Empty)
         {
             ResettaErrore();
             BloccaSbloccaCanvas(false);
             RoomSettings settings = new RoomSettings(inputNomePartita.text.Replace(" ", "").Trim());
             settings.GroupId = "games";
             settings.IsGame = true;
             settings.MaxUsers = numeroMaxDecisoDaOwner;
             settings.MaxSpectators = 0;
             SFSRoomVariable roomVariableStart = new SFSRoomVariable("gameStarted", false);
             roomVariableStart.IsPersistent = true;
             settings.Variables.Add(roomVariableStart);
             settings.Extension = new RoomExtension(EXTENSION_ID, EXTENSION_CLASS);
             sfs.Send(new CreateRoomRequest(settings, true, sfs.LastJoinedRoom));
         }
         else
             erroreText.text = "Assegnare un nome alla partita";
     }
     else
         erroreText.text = "Inserire un nome e scegliere una classe";
 }
Ejemplo n.º 2
0
    public void OnPlayWithAiClick()
    {
        RoomSettings settings = new RoomSettings(sfs.MySelf.Name + "'s game");

        settings.GroupId       = "games";
        settings.MaxUsers      = 1;
        settings.MaxSpectators = 0;
        settings.Extension     = new RoomExtension(EXTENSION_ID, EXTENSION_CLASS);
        RoomVariable isAI = new SFSRoomVariable("isAI", true);

        settings.Variables.Add(isAI);
        sfs.Send(new CreateRoomRequest(settings, true, sfs.LastJoinedRoom));
    }
Ejemplo n.º 3
0
    public void Cancel()
    {
        UserVariable uv = new SFSUserVariable("Ready", "NO");
        List<UserVariable> lUV = new List<UserVariable>();
        lUV.Add(uv);
        sfs.Send(new SetUserVariablesRequest(lUV));

        RoomVariable rv = new SFSRoomVariable("ReadyCount", int.Parse(sfs.LastJoinedRoom.GetVariable("ReadyCount").Value.ToString()) - 1);
        List<RoomVariable> lRV = new List<RoomVariable>();
        lRV.Add(rv);
        sfs.Send(new SetRoomVariablesRequest(lRV));

        ISFSObject isfsO = new SFSObject();
        isfsO.PutInt("Sender", sfs.MySelf.PlayerId);
        sfs.Send(new PublicMessageRequest("PlayerCancel", isfsO, sfs.LastJoinedRoom));
    }
Ejemplo n.º 4
0
        public static Room FromSFSArray(ISFSArray sfsa)
        {
            bool flag = sfsa.Size() == 14;
            Room room = null;

            room                     = ((!flag) ? new SFSRoom(sfsa.GetInt(0), sfsa.GetUtfString(1), sfsa.GetUtfString(2)) : new MMORoom(sfsa.GetInt(0), sfsa.GetUtfString(1), sfsa.GetUtfString(2)));
            room.IsGame              = sfsa.GetBool(3);
            room.IsHidden            = sfsa.GetBool(4);
            room.IsPasswordProtected = sfsa.GetBool(5);
            room.UserCount           = sfsa.GetShort(6);
            room.MaxUsers            = sfsa.GetShort(7);
            ISFSArray sFSArray = sfsa.GetSFSArray(8);

            if (sFSArray.Size() > 0)
            {
                List <RoomVariable> list = new List <RoomVariable>();
                for (int i = 0; i < sFSArray.Size(); i++)
                {
                    list.Add(SFSRoomVariable.FromSFSArray(sFSArray.GetSFSArray(i)));
                }
                room.SetVariables(list);
            }
            if (room.IsGame)
            {
                room.SpectatorCount = sfsa.GetShort(9);
                room.MaxSpectators  = sfsa.GetShort(10);
            }
            if (flag)
            {
                MMORoom mMORoom = room as MMORoom;
                mMORoom.DefaultAOI = Vec3D.fromArray(sfsa.GetElementAt(11));
                if (!sfsa.IsNull(13))
                {
                    mMORoom.LowerMapLimit  = Vec3D.fromArray(sfsa.GetElementAt(12));
                    mMORoom.HigherMapLimit = Vec3D.fromArray(sfsa.GetElementAt(13));
                }
            }
            return(room);
        }
Ejemplo n.º 5
0
    private void Update()
    {
        if (sfs != null)
            sfs.ProcessEvents();

        if (!Application.isLoadingLevel && !isLoaded)
        {
            foreach (User u in sfs.LastJoinedRoom.PlayerList)
            {
                    GameObject.Find("Slot" + u.PlayerId).transform.Find("PlayerName").GetComponent<Text>().text = u.Name;
                    if ((u.GetVariable("Ready").Value).ToString().Equals("YES"))
                        GameObject.Find("Slot" + u.PlayerId).transform.Find("Status").GetComponent<Image>().sprite = rdySprite;
                    else
                        GameObject.Find("Slot" + u.PlayerId).transform.Find("Status").GetComponent<Image>().sprite = cancelSprite;
            }

            if (sfs.MySelf.PlayerId.Equals(1))
            {
                readyBTN.SetActive(false);
                cancelBTN.SetActive(false);
                startBTN.SetActive(true);
                startBTN.GetComponent<Button>().interactable = false;

                RoomVariable map = new SFSRoomVariable("Map", "Map1");
                List<RoomVariable> lRV = new List<RoomVariable>();
                lRV.Add(map);
                sfs.Send(new SetRoomVariablesRequest(lRV, sfs.LastJoinedRoom));
            }
            else
            {
                readyBTN.SetActive(true);
                cancelBTN.SetActive(false);
                startBTN.SetActive(false);
            }

            LoadCard();
            LoadMap();
            isLoaded = true;
        }
    }
Ejemplo n.º 6
0
    private void DrawHostOptions()
    {
        GUILayout.BeginArea(new Rect(490, 80, 300, 500));
        GUILayout.BeginVertical("box");
        GUILayout.Label("Host Options");
        GUILayout.Space(10);

        GUILayout.BeginHorizontal();
        GUILayout.Label("Rounds: ");
        if (GUILayout.Button("<", GUILayout.Width(50)))
        {
            if (_roundsInt > 1)
            {
                _roundsInt--;
            }
        }
        GUILayout.Box(_roundsInt.ToString());
        if (GUILayout.Button(">", GUILayout.Width(50)))
        {
            if (_roundsInt < 20)
            {
                _roundsInt++;
            }
        }
        GUILayout.EndHorizontal();

        if (redTeam.Count + blueTeam.Count >= MIN_USERS)
        {
            if (GUILayout.Button ("Start Game"))
            {
                ISFSObject sendJoinMessage = new SFSObject();
                sendJoinMessage.PutUtfString("type", "everyoneJoin");
                smartFox.Send(new ObjectMessageRequest(sendJoinMessage, null, smartFox.LastJoinedRoom.UserList));
                var rounds = new SFSRoomVariable("rounds", _roundsInt);
                smartFox.Send(new SetRoomVariablesRequest(new [] { rounds }, smartFox.LastJoinedRoom));
            }
        }

        GUILayout.EndVertical();
        GUILayout.EndArea();
    }
Ejemplo n.º 7
0
    // Changed
    // A window to use for room creation
    private void onCreateWindow(int windowID)
    {
        GUI.skin = createRoomSkin;
        GUI.DragWindow(new Rect(0, 0, createRoom.width, 60));

        if (createRoom.x + createRoom.width > Screen.width)
        {
            createRoom.x = Screen.width - createRoom.width;
        }
        else if (createRoom.x < 0)
        {
            createRoom.x = 0;
        }

        if (createRoom.y + createRoom.height > Screen.height)
        {
            createRoom.y = Screen.height - createRoom.height;
        }
        else if (createRoom.y <0)
        {
            createRoom.y = 0;
        }

        newRoomName = GUI.TextField(new Rect(20, 70, 200, 30), newRoomName, 20);
        newRoomPlayers = GUI.TextField(new Rect(20, 130, 200, 30), newRoomPlayers, 20);
        newRoomType = GUI.TextField(new Rect(20, 190, 200, 30), newRoomType, 20);

        GUI.TextArea(new Rect(20, 40, 200, 30), "New Room Name:");
        GUI.TextArea(new Rect(20, 100, 200, 30), "Max Players:");
        GUI.TextArea(new Rect(20, 160, 200, 30), "Room Stage:");

        if (GUI.Button(new Rect(createRoom.width/2 - 110, 240, 100, 30), "Create!") ||
            (Event.current.type == EventType.keyDown && Event.current.character == '\n'))
        {
            short numMaxPlayers = 0;

            if (Int16.TryParse(newRoomPlayers, out numMaxPlayers))
            {
                RoomSettings settings = new RoomSettings(newRoomName);
                settings.MaxUsers = numMaxPlayers;

                List<RoomVariable> variablesArray = new List<RoomVariable>();
                RoomVariable newRoomVariable = new SFSRoomVariable(newRoomType, null);
                variablesArray.Add(newRoomVariable);
                //settings.Variables = variablesArray;

                smartFox.Send(new CreateRoomRequest(settings));

                newRoomName = "";
                newRoomPlayers = "";
                newRoomType = "";
                showCreateRoom = false;
            }
            else
            {
                newRoomPlayers = "";
            }
        }

        if (GUI.Button(new Rect(createRoom.width/2 + 10, 240, 100, 30), "Cancel"))
        {
            newRoomName = "";
            newRoomPlayers = "";
            newRoomType = "";
            showCreateRoom = false;
        }
    }
Ejemplo n.º 8
0
 private void sendNewRoundInfo()
 {
     var toggle = new SFSRoomVariable("countdownToggle", null);
     var otherVars = new List<RoomVariable>();
     otherVars.Add(new SFSRoomVariable("currentRound", smartFox.LastJoinedRoom.GetVariable("currentRound").GetIntValue() + 1));
     otherVars.Add(new SFSRoomVariable("redTotalScore", _redTotal + _redPoints));
     otherVars.Add(new SFSRoomVariable("redStored", 0));
     otherVars.Add(new SFSRoomVariable("blueTotalScore", _blueTotal + _bluePoints));
     otherVars.Add(new SFSRoomVariable("blueStored", 0));
     otherVars.Add(new SFSRoomVariable("redRobot", getRandomPlayer(false)));
     otherVars.Add(new SFSRoomVariable("blueRobot", getRandomPlayer(true)));
     //This needs to be done in two requests
     smartFox.Send(new SetRoomVariablesRequest(new [] {toggle}));
     smartFox.Send(new SetRoomVariablesRequest(otherVars));
 }
Ejemplo n.º 9
0
    public void OnUserVariablesUpdate(BaseEvent evt)
    {
        //List<UserVariable> changedVars = (List<UserVariable>)evt.Params["changedVars"];
        ArrayList changedVars = (ArrayList)evt.Params["changedVars"];
        User user = (User)evt.Params["user"];
        Debug.Log("USER: "******"USERVAR: " + changedVars[0]);
        if (GameValues.isHost)
        {
            if (changedVars.Contains("playerJoined")){
                playerCount++;
                if (playerCount == numberOfPlayers)
                {
                    Debug.Log("GAME INITING");
                    SetupGameWorld();

                    List<RoomVariable> roomVars = new List<RoomVariable>();
                    SFSRoomVariable roomVar = new SFSRoomVariable("gameInit", true);
                    roomVars.Add(roomVar);
                    smartFox.Send(new SetRoomVariablesRequest(roomVars));
                }
            }

            if (changedVars.Contains("builtGame"))
            {
                playerInitCount++;
                //if everyone has built the game
                if (playerInitCount == numberOfPlayers)
                {
                    if (gotServerTime)
                    {
                        startCountDownToGame();
                    }
                    else
                    {
                        waitingForServerResponse = true;
                    }
                }
            }
        }

        if (changedVars.Contains("playerTeam"))
        {
            CISPlayer tempPlayer = new CISPlayer(user.Name, 0, 0, 0, 0);	// create new player with users name and 0 scores
            teamList[user.GetVariable("playerTeam").GetIntValue()].AddPlayerToTeam(tempPlayer);
        }

        if (changedVars.Contains("score"))
        {
            Debug.Log("Updated Scores: " + user.GetVariable("score").GetSFSArrayValue().GetInt(0) + ", " + user.GetVariable("score").GetSFSArrayValue().GetInt(1) + ", " + user.GetVariable("score").GetSFSArrayValue().GetInt(2));
            teamList[user.GetVariable("playerTeam").GetIntValue()].FindPlayer(user.Name).sidesCaptured = user.GetVariable("score").GetSFSArrayValue().GetInt(0);
            teamList[user.GetVariable("playerTeam").GetIntValue()].FindPlayer(user.Name).sidesLocked = user.GetVariable("score").GetSFSArrayValue().GetInt(1);
            teamList[user.GetVariable("playerTeam").GetIntValue()].FindPlayer(user.Name).sidesStolen = user.GetVariable("score").GetSFSArrayValue().GetInt(2);
            teamList[user.GetVariable("playerTeam").GetIntValue()].FindPlayer(user.Name).score = user.GetVariable("score").GetSFSArrayValue().GetInt(3);
        }
    }
Ejemplo n.º 10
0
    // Use this for initialization
    void Start()
    {
        smartFox = SmartFoxConnection.Connection;
        setCurrentTeam();
        setStartPositions();

        scoreboardStyle = new GUIStyle();
        scoreboardStyle.fontSize = 24;
        scoreboardStyle.alignment = TextAnchor.MiddleCenter;
        scoreboardStyle.normal.textColor = Color.white;

        plane = GameObject.FindGameObjectWithTag("Plane");

        targetPosition = Vector3.zero;
        _blocks = GameObject.FindGameObjectsWithTag("Block");

        if(isRobot())
            thirdPerson = true;

        if(thirdPerson)
        {
            if(isBlueTeam) {
                player = Instantiate(Player, blueStart, Quaternion.identity) as GameObject;
                player.GetComponent<PlayerNetwork>().IsBlueTeam = true;

                redRobot = Instantiate(RobotPrefab, redStart, Quaternion.identity) as GameObject;
                redRobot.GetComponent<Robot>().IsBlueTeam = false;
            } else {
                player = Instantiate(Player, redStart, Quaternion.identity) as GameObject;
                player.GetComponent<PlayerNetwork>().IsBlueTeam = false;
                blueRobot = Instantiate(RobotPrefab, blueStart, Quaternion.identity) as GameObject;
                blueRobot.GetComponent<Robot>().IsBlueTeam = true;
            }

            var cam = Instantiate(PlayerCamera) as GameObject;
            var smoothFollow = cam.GetComponent<SmoothFollow>();
            Debug.Log(smoothFollow);
            smoothFollow.target = player.transform;

            player.transform.LookAt(Vector3.zero);
            infoTexture = Resources.Load("jump-instructions") as Texture2D;
        }
        else
        {
            var cam = Instantiate(RTSCamera, new Vector3(0, 200, 0), Quaternion.identity) as GameObject;
            cam.transform.LookAt(Vector3.zero);
            redRobot = Instantiate(RobotPrefab, redStart, Quaternion.identity) as GameObject;
            blueRobot = Instantiate(RobotPrefab, blueStart, Quaternion.identity) as GameObject;
            redRobot.GetComponent<Robot>().IsBlueTeam = false;
            blueRobot.GetComponent<Robot>().IsBlueTeam = true;
            infoTexture = Resources.Load("rts-instructions") as Texture2D;
        }

        if(NetworkHelper.IsLowestID(smartFox)) {
            InvokeRepeating("sendBlockData", BLOCK_SYNC_INTERVAL, BLOCK_SYNC_INTERVAL);
        }

        ResetEventListeners();

        RoomVariable countdownChecker = smartFox.LastJoinedRoom.GetVariable("countdownToggle");

        if (countdownChecker == null)
        {
            Debug.Log("countdownchecker is null");

            if (NetworkHelper.IsLowestID(smartFox))
            {
                List<RoomVariable> roomVars = new List<RoomVariable>();
                RoomVariable countdownToggle = new SFSRoomVariable("countdownToggle", true);
                roomVars.Add(countdownToggle);
                smartFox.Send(new SetRoomVariablesRequest(roomVars, smartFox.LastJoinedRoom));
            }
        }
        else
        {
            Debug.Log("Starting round countdown");
            roundStarted = true;
            roundTime = Time.time;
        }

        if(isBlueTeam)
            flags = Resources.Load("blue-flag") as Texture2D;
        else
            flags = Resources.Load("red-flag") as Texture2D;
    }
Ejemplo n.º 11
0
 private void setRoomVariable()
 {
     if(_roomVarName == "" || _roomVarValue == "")
         return;
     RoomVariable roomVar;
     var typeString = _roomVarValue[0];
     switch(typeString) {
     case 'f':
         roomVar = new SFSRoomVariable(_roomVarName, float.Parse (_roomVarValue.Substring(1)));
         break;
     case 's':
         roomVar = new SFSRoomVariable(_roomVarName, _roomVarValue.Substring(1));
         break;
     default:
         Debug.Log ("Unhandled prefix");
         return;
     }
     SmartFoxConnection.Connection.Send (new SetRoomVariablesRequest(new [] {roomVar}, SmartFoxConnection.Connection.LastJoinedRoom));
 }
Ejemplo n.º 12
0
    private void OnRoomJoin(BaseEvent evt)
    {
        Room room = (Room)evt.Params["room"];
        Debug.Log(room.Name);

        if (room.IsGame)
        {
            reset();
            if (room.Name.Contains(sfs.MySelf.Name))
            {
                Debug.Log("Create Var");
                RoomVariable map = new SFSRoomVariable("Map", "");
                RoomVariable pass = new SFSRoomVariable("Pass", "");
                RoomVariable readyCount = new SFSRoomVariable("ReadyCount", 1);
                List<RoomVariable> lRV = new List<RoomVariable>();
                lRV.Add(map);
                lRV.Add(pass);
                lRV.Add(readyCount);
                sfs.Send(new SetRoomVariablesRequest(lRV, room));
            }
            Debug.Log("Chuyen vao Lobby cua Room Game");
            PlayerPrefs.SetString("RoomName",room.Name);

            Application.LoadLevel("Lobby");
        }
        else
        {
            Debug.Log("\nYou joined a Room: " + room.Name);
        }
    }
Ejemplo n.º 13
0
    public void Ready()
    {
        UserVariable uv = new SFSUserVariable("Ready", "YES");
        List<UserVariable> lUV = new List<UserVariable>();
        lUV.Add(uv);
        sfs.Send(new SetUserVariablesRequest(lUV));

        RoomVariable rv = new SFSRoomVariable("ReadyCount", int.Parse(sfs.LastJoinedRoom.GetVariable("ReadyCount").Value.ToString()) + 1);
        List<RoomVariable> lRV = new List<RoomVariable>();
        lRV.Add(rv);
        sfs.Send(new SetRoomVariablesRequest(lRV));

        ISFSObject isfsO = new SFSObject();
        isfsO.PutInt("Sender",sfs.MySelf.PlayerId);
        sfs.Send(new PublicMessageRequest("PlayerReady",isfsO,sfs.LastJoinedRoom));

        sfs.Send(new ExtensionRequest(ConfigRequestCmd.cmd_playerready, isfsO, sfs.LastJoinedRoom));
    }
Ejemplo n.º 14
0
    private void startCountDownToGame()
    {
        gameStateManager.state = GameStateManager.GameState.StartCountDown;
        List<RoomVariable> roomVars = new List<RoomVariable>();

        double startCountdownTime = TimeManager.Instance.ClientTimeStamp + 5000.0f;

        SFSRoomVariable countdownTime = new SFSRoomVariable("startCountdownTime", (double)startCountdownTime);
        roomVars.Add(countdownTime);

        countdownTimeStart = startCountdownTime;
        if (countdownTimeStart <= 0)
        {
            waitingForServerResponse = true;
        }
        else
        {
            smartFox.Send(new SetRoomVariablesRequest(roomVars));
        }
    }
Ejemplo n.º 15
0
 public void OnUserVariablesUpdate(BaseEvent evt)
 {
     //List<UserVariable> changedVars = (List<UserVariable>)evt.Params["changedVars"];
     ArrayList changedVars = (ArrayList)evt.Params["changedVars"];
     User user = (User)evt.Params["user"];
     Debug.Log("USERVAR: " + changedVars[0]);
     if (GameValues.isHost)
     {
         if (changedVars.Contains("playerJoined")){
             playerCount++;
             Debug.Log("player count: " + playerCount);
             if (playerCount == numberOfPlayers)
             {
                 Debug.Log("GAME START");
                 List<RoomVariable> roomVars = new List<RoomVariable>();
                 SFSRoomVariable roomVar = new SFSRoomVariable("gameStarted", true);
                 roomVars.Add(roomVar);
                 smartFox.Send(new SetRoomVariablesRequest(roomVars));
                 SetupGameWorld();
             }
         }
     }
     //make a character
     //MakeCharacter(user);
 }
Ejemplo n.º 16
0
    private void DrawCountDown()
    {
        int timeleft = (int)(COUNT_DOWN_SECONDS - (Time.time - countDownTime));

        GUIStyle funstyle = new GUIStyle();
        funstyle.fontSize = 50;
        funstyle.normal.textColor = Color.white;
        GUILayout.BeginArea(new Rect(Screen.width/2 - 160, 100, Screen.width, Screen.height));
        GUILayout.Label("Starting in " + timeleft + " seconds...", funstyle);
        GUILayout.Label(infoTexture);
        GUILayout.EndArea();

        if (timeleft <= 0 && NetworkHelper.IsLowestID(smartFox))
        {
            List<RoomVariable> roomVars = new List<RoomVariable>();
            RoomVariable countdownToggle = new SFSRoomVariable("countdownToggle", false);
            roomVars.Add(countdownToggle);
            smartFox.Send(new SetRoomVariablesRequest(roomVars, smartFox.LastJoinedRoom));
            countDownStarted = false;
        }
    }
Ejemplo n.º 17
0
    private void ConfirmJoinedGame()
    {
        //add your player id to the list of joined players
        List<RoomVariable> roomVars = new List<RoomVariable>();
        SFSArray playersJoined = (SFSArray)currentRoom.GetVariable("playersJoined").GetSFSArrayValue();
        Debug.Log("joined players so far: " + playersJoined.Size());
        playersJoined.AddInt(GameValues.playerID);
        SFSRoomVariable roomVar = new SFSRoomVariable("playersJoined", playersJoined);
        roomVars.Add(roomVar);
        smartFox.Send(new SetRoomVariablesRequest(roomVars));

        //register your team

        List<UserVariable> userVars = new List<UserVariable>();
        userVars.Add(new SFSUserVariable("playerTeam", GameValues.teamNum));
        userVars.Add(new SFSUserVariable("playerJoined", true));
        smartFox.Send(new SetUserVariablesRequest(userVars));
    }
Ejemplo n.º 18
0
    private void DrawRoomsGUI()
    {
        GUILayout.BeginArea(new Rect(screenW - 190, 290, 180, 150));

        if (GameValues.isHost)
        {
            //start game button event listener
            if (GUI.Button(new Rect(80, 110, 85, 24), "Start Game"))
            {

                // ****** Create the actual game ******* //
                String[] nameParts = this.currentActiveRoom.Name.Split('-');
                String gameName = nameParts[0] + " - Game";

                RoomSettings settings = new RoomSettings(gameName);
                settings.MaxUsers = (short)currentActiveRoom.MaxUsers; // how many players allowed: 12
                settings.Extension = new RoomExtension(GameManager.ExtName, GameManager.ExtClass);
                settings.IsGame = true;

                //get the variables set up from the lobby
                List<RoomVariable> lobbyVars = currentActiveRoom.GetVariables();
                SFSObject lobbyGameInfo = (SFSObject)((RoomVariable)lobbyVars[1]).GetSFSObjectValue();
                //lobbyGameInfo.GetSFSArray("
                //FORMAT BY INDEX
                //0 = (bool)        gameStarted
                //1 = (SFSObject)   gameInfo
                //      -(string)   the host username               key: "host"
                //      -(IntArray) playerIds                       key: "playerIDs"
                //      -(int)      number of Teams                 key: "numTeams"
                //      -(SFSArray) teams                           key: "teams"
                //      -(int)      length of the game in seconds   key: "gameLength"

                SFSRoomVariable gameInfo = new SFSRoomVariable("gameInfo", lobbyGameInfo);
                settings.Variables.Add(gameInfo);

                Debug.Log("numberOfPlayers: " + currentActiveRoom.UserCount);
                SFSRoomVariable userCountVar = new SFSRoomVariable("numberOfPlayers", currentActiveRoom.UserCount);
                settings.Variables.Add(userCountVar);

                SFSArray joinedPlayers = new SFSArray();
                SFSRoomVariable joinedVar = new SFSRoomVariable("playersJoined", joinedPlayers);
                settings.Variables.Add(joinedVar);

                //get the values from the appropriate fields to populate the gameInfo
                smartFox.Send(new CreateRoomRequest(settings, true));

                //let other players know to switch rooms
                List<RoomVariable> roomVars = new List<RoomVariable>();
                roomVars.Add(new SFSRoomVariable("gameStarted", true));
                smartFox.Send(new SetRoomVariablesRequest(roomVars));

            }
        }
        GUILayout.EndArea();
    }
Ejemplo n.º 19
0
    private void DrawRoomsGUI()
    {
        if (GameValues.isHost)
        {
            //start game button event listener
            if (GUILayout.Button("Start Game") && startGameTime <= 0)
            {

                // ****** Create the actual game ******* //
                String[] nameParts = this.currentActiveRoom.Name.Split('-');
                String gameName = nameParts[0].Trim() + " - Game";
                Debug.Log("Host created game named: " + gameName);

                RoomSettings settings = new RoomSettings(gameName);
                settings.MaxUsers = (short)currentActiveRoom.MaxUsers; // how many players allowed: 12
                settings.Extension = new RoomExtension(GameManager.ExtName, GameManager.ExtClass);
                settings.IsGame = true;
                settings.MaxVariables = 15;

                //get the variables set up from the lobby
                List<RoomVariable> lobbyVars = currentActiveRoom.GetVariables();
                SFSObject lobbyGameInfo = (SFSObject)((RoomVariable)lobbyVars[1]).GetSFSObjectValue();
                //lobbyGameInfo.GetSFSArray("
                //FORMAT BY INDEX
                //0 = (bool)        gameStarted
                //1 = (SFSObject)   gameInfo
                //      -(string)   the host username               key: "host"
                //      -(IntArray) playerIds                       key: "playerIDs"
                //      -(int)      number of Teams                 key: "numTeams"
                //      -(SFSArray) teams                           key: "teams"
                //      -(int)      length of the game in seconds   key: "gameLength"

                SFSRoomVariable gameInfo = new SFSRoomVariable("gameInfo", lobbyGameInfo);
                settings.Variables.Add(gameInfo);

                SFSRoomVariable userCountVar = new SFSRoomVariable("numberOfPlayers", currentActiveRoom.UserCount);
                settings.Variables.Add(userCountVar);

                SFSArray joinedPlayers = new SFSArray();
                SFSRoomVariable joinedVar = new SFSRoomVariable("playersJoined", joinedPlayers);
                settings.Variables.Add(joinedVar);

                //get the values from the appropriate fields to populate the gameInfo
                smartFox.Send(new CreateRoomRequest(settings));

                //start timer
                startGameTime = Time.time + 5.0f;
                Debug.Log("Start the countdown");

                List<RoomVariable> roomVars = new List<RoomVariable>();

                SFSRoomVariable startCountdown = new SFSRoomVariable("startCountdown", true);
                roomVars.Add(startCountdown);
                smartFox.Send(new SetRoomVariablesRequest(roomVars));
            }
        }
        else
        {
            //start game button event listener
            if (GUILayout.Button("Waiting..."))
            {
            }
        }
    }