Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
- using Sfs2X;
- using Sfs2X.Core;
- using Sfs2X.Logging;
- using Sfs2X.Requests;
- using Sfs2X.Entities;
- using Sfs2X.Entities.Data;
- using Sfs2X.Entities.Variables;
- using Sfs2X.Entities.Managers;
- public class Lobby : MonoBehaviour
- {
- private SmartFox sfs;
- private Room lobbyRoom;
- private User user;
- private bool isConnected = false;
- private bool isConnecting = false;
- private Hashtable roomHashtables;
- private List<RoomVariable> roomVariables = new List<RoomVariable>();
- private const int serverPort = 9933;
- private const string zoneName = "BasicExamples";
- private const string lobbyName = "The Lobby";
- private const string idGroup = "CustomIdGroup";
- private const string roomName = "CustomRoom";
- public GameObject interfaceMain;
- public GameObject interfaceCreate;
- public GameObject interfaceSearch;
- public GameObject interfaceRoom;
- public string serverIp = "127.0.0.1";
- public string userName = "Billy";
- private void Awake ()
- {
- sfs = new SmartFox();
- sfs.ThreadSafeMode = true;
- sfs.AddEventListener(SFSEvent.CONNECTION, OnConnection);
- sfs.AddEventListener(SFSEvent.CONNECTION_LOST, OnConnectionLost);
- sfs.AddEventListener(SFSEvent.LOGIN, OnLogin);
- sfs.AddEventListener(SFSEvent.LOGIN_ERROR, OnLoginError);
- sfs.AddEventListener(SFSEvent.ROOM_ADD, OnCreateRoom);
- sfs.AddEventListener(SFSEvent.ROOM_CREATION_ERROR, OnCreateRoomError);
- sfs.AddEventListener(SFSEvent.ROOM_JOIN, OnJoinRoom);
- sfs.AddEventListener(SFSEvent.ROOM_JOIN_ERROR, OnJoinRoomError);
- sfs.AddEventListener(SFSEvent.PUBLIC_MESSAGE, OnPublicMessage);
- sfs.AddEventListener(SFSEvent.ROOM_REMOVE, OnRemoveRoom);
- ConnectSmartFox();
- }
- private void Update ()
- {
- sfs.ProcessEvents();
- if(!this.isConnected)
- {
- if(!this.isConnecting)
- {
- this.isConnecting = true;
- ConnectSmartFox();
- }
- }
- else
- {
- //if (sfs.GetRoomByName(roomName) != null) Debug.Log(sfs.GetRoomByName(roomName));
- //if(Input.GetKeyDown(KeyCode.A)) Debug.Log(GetRoomsByGroup().Count);
- }
- }
- public void ToogleTelas (bool b0, bool b1, bool b2, bool b3)
- {
- interfaceMain.SetActive(b0);
- interfaceCreate.SetActive(b1);
- interfaceSearch.SetActive(b2);
- interfaceRoom.SetActive(b3);
- }
- public void ActiveButtons ()
- {
- interfaceCreate.SetActive(false);
- interfaceSearch.SetActive(false);
- interfaceRoom.SetActive(false);
- interfaceMain.SetActive(true);
- }
- private void CallMainMenu ()
- {
- Application.LoadLevel("StartMenu");
- }
- private void ConfigUserPrivileges (User tempUser)
- {
- user = tempUser;
- user.PrivilegeId = 1;
- }
- private void ConnectSmartFox ()
- {
- sfs.Connect(serverIp, serverPort);
- }
- public void DisconnectSmartFox()
- {
- if(sfs.IsConnected) sfs.Disconnect();
- CallMainMenu();
- }
- public int GetNumberOfRooms ()
- {
- return sfs.GetRoomListFromGroup("default").Count;
- }
- public int GetNumberOfRoomsByGroup ()
- {
- return sfs.GetRoomListFromGroup(idGroup).Count;
- }
- public int GetNumberOfRoomsByGroup (String group)
- {
- return sfs.GetRoomListFromGroup(group).Count;
- }
- public List<Room> GetRooms ()
- {
- return sfs.GetRoomListFromGroup("default");
- }
- public List<Room> GetRoomsByGroup()
- {
- return sfs.GetRoomListFromGroup(idGroup);
- }
- public List<Room> GetRoomsByGroup(String group)
- {
- return sfs.GetRoomListFromGroup(group);
- }
- private void OnApplicationQuit ()
- {
- if(sfs.IsConnected) sfs.Disconnect();
- }
- public void CreateRoom (string roomName, Hashtable tempArgs, string[] tempProps)
- {
- roomVariables = new List<RoomVariable>();
- roomHashtables = tempArgs;
- for(int i = 0; i < tempProps.Length; i++) roomVariables.Add(new SFSRoomVariable(tempProps[i], tempArgs[tempProps[i]]));
- RoomSettings settings = new RoomSettings(roomName);
- settings.MaxUsers = 4;
- settings.GroupId = idGroup;
- settings.Name = roomName;
- settings.Events = new RoomEvents();
- settings.Events.AllowUserCountChange = true;
- settings.Events.AllowUserEnter = true;
- settings.Events.AllowUserExit = true;
- settings.Variables = roomVariables;
- //sfs.Send(new CreateRoomRequest(settings));
- //sfs.Send(new CreateRoomRequest(settings, true));
- sfs.Send(new CreateRoomRequest(settings, true, lobbyRoom));
- }
- public void SendMessage (string message)
- {
- sfs.Send(new PublicMessageRequest(message));
- }
- public void JoinRoom(string roomName)
- {
- sfs.Send(new JoinRoomRequest(roomName));
- }
- public void JoinRandomRoom()
- {
- List<Room> allRooms = GetRoomsByGroup();
- if(allRooms.Count < 1) return;
- List<Room> tempRooms = new List<Room>();
- System.Random rand = new System.Random();
- for(int i = 0; i < allRooms.Count; i++)
- {
- if(allRooms[i].GetVariable("password") == "" &&
- allRooms[i].UserCount < 4) tempRooms.Add(allRooms[i]);
- }
- int randNum = rand.Next(0, tempRooms.Count);
- sfs.Send(new JoinRoomRequest(tempRooms[randNum].Name));
- }
- //---EventListeners---//
- private void OnConnection (BaseEvent e)
- {
- if((bool)e.Params["success"])
- {
- Debug.Log("You're connected!");
- sfs.Send(new LoginRequest(userName, "", zoneName));
- isConnected = true;
- }
- else
- {
- Debug.Log("Connection Failed! We'll try to connect again!");
- isConnected = false;
- isConnecting = false;
- }
- }
- private void OnConnectionLost (BaseEvent e)
- {
- Debug.Log("Lost connection! We'll try to connect again!");
- isConnected = false;
- isConnecting = false;
- }
- private void OnLogin(BaseEvent e)
- {
- ConfigUserPrivileges((User)e.Params["user"]);
- Debug.Log("Logged in: " + e.Params["user"]);
- JoinRoom(lobbyName);
- }
- private void OnLoginError(BaseEvent e)
- {
- Debug.Log("Login error (" + e.Params["errorCode"] + "): " + e.Params["errorMessage"]);
- }
- private void OnCreateRoom (BaseEvent e)
- {
- Room sala = (Room)e.Params["room"];
- RoomManager.Instance().CreateNewRoom(sala.Name, roomHashtables, sala.UserCount);
- ToogleTelas(false, false, false, true);
- Debug.Log("A new Room was added: " + sala);
- }
- private void OnCreateRoomError (BaseEvent e)
- {
- CreateMenu cMenu = interfaceCreate.GetComponent<CreateMenu>();
- cMenu.popupAviso.SetActive(true);
- cMenu.popupText.text = "An error occurred while " + '\n' +
- "attempting to create the Room:" + '\n' +
- e.Params["reason"];
- Debug.Log("An error occurred while attempting to create the Room: " + e.Params["reason"]);
- }
- private void OnJoinRoom (BaseEvent e)
- {
- Room sala = (Room)e.Params["room"];
- lobbyRoom = sala;
- if(sala.Name != lobbyName)
- {
- Hashtable tempArgs = new Hashtable();
- tempArgs.Add("password", sala.GetVariable("password").GetStringValue());
- tempArgs.Add("scenario", sala.GetVariable("scenario").GetIntValue());
- tempArgs.Add("mode", sala.GetVariable("mode").GetIntValue());
- tempArgs.Add("modeType", sala.GetVariable("modeType").GetIntValue());
- tempArgs.Add("itensOptions", sala.GetVariable("itensOptions").GetIntValue());
- tempArgs.Add("maxPoitns", sala.GetVariable("maxPoitns").GetIntValue());
- tempArgs.Add("minutes", (float)sala.GetVariable("maxPoitns").GetDoubleValue());
- RoomManager.Instance().CreateNewRoom(sala.Name, tempArgs, sala.UserCount);
- }
- Debug.Log("Joined Room: " + e.Params["room"]);
- }
- private void OnJoinRoomError(BaseEvent e)
- {
- Debug.Log("JoinRoom (" + e.Params["errorCode"] + "): " + e.Params["errorMessage"]);
- }
- private void OnRemoveRoom(BaseEvent e)
- {
- List<Room> salas = GetRooms();
- //user.
- }
- private void OnPublicMessage (BaseEvent e)
- {
- string message = (string)e.Params["message"];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement