/// <summary> /// Return false if disconnect/finished /// </summary> void RunClientHandshake() { clientThread.WatchdogTick = DateTime.Now; //Read Handshake var hs = PacketReader.ReadFirstPackage(clientStream); if (hs == null) { //Old status packet LegacyStatus.SendStatus(clientStream); Phase = Phases.FinalClose; return; } var h = new Handshake(hs); Debug.FromClient(this, h); clientThread.State = "Handshake Received " + h; ClientVersion = h.Version; if (h.State == HandshakeState.Status) { RunStatusPing(h); return; } if (h.State == HandshakeState.None) { Close("Invalid handshake state: " + h.State); return; } if (h.State != HandshakeState.Login) { Close("Invalid handshake state: " + h.State); return; } #if DEBUG if (h.Version >= ProtocolVersion.next) { throw new InvalidDataException("new version: " + h.Version); } #endif if (h.Version > MinecraftServer.BackendVersion) { clientThread.State = "Handshake too high version"; Close("We are still running " + MinecraftServer.BackendVersion.ToText() + " we are so very sorry about that"); return; } if (h.Version < MinecraftServer.FrontendVersion) { clientThread.State = "Handshake too low version"; Close("Upgrade your client to " + MinecraftServer.FrontendVersion.ToText()); return; } //Login var l = new LoginStart(PacketReader.ReadHandshake(clientStream)); clientThread.State = "LoginStart Received " + l.Name; unverifiedUsername = l.Name; #if DEBUGx var names = new string[] { "travelcraft2012", "nuxas", "drjanitor" }; unverifiedUsername = names[logincount++ % names.Length]; #endif if (unverifiedUsername.Length == 0 || unverifiedUsername.Length > 16) { clientThread.State = "Handshake wrong username length"; Close("Bad username"); Console.WriteLine("Wrong username length: " + unverifiedUsername.Length); return; } //Set Compression var compression = new SetCompression(); SendToClientInternal(compression); maxUncompressed = compression.MaxSize; //Send encryption request clientThread.State = "Handshake: Sending encryption request"; //Initiate ID var r = new Random(); ID = new byte[8]; r.NextBytes(ID); SendToClientInternal(new EncryptionRequest(Authentication.McHex(ID), MinecraftServer.RsaBytes)); clientThread.State = "Handshake: Sent encryption request, reading response"; //Read enc response int erSize; var erBuffer = PacketReader.Read(clientStream, out erSize); if (erSize != 0) { erBuffer = Compression.Decompress(erBuffer, erSize); } var er = new EncryptionResponse(erBuffer); clientThread.State = "Handshake: Got enc resp"; CryptoMC cryptoStream = new CryptoMC(clientStream, er); //Verify user clientThread.WatchdogTick = DateTime.Now; clientThread.State = "Handshake: loading proxy data"; Settings = LoadProxyPlayer(unverifiedUsername); if (IPAddress.IsLoopback(RemoteEndPoint.Address)) { MinecraftUsername = unverifiedUsername; Log.WritePlayer(this, "Succesful login from (local) " + RemoteEndPoint); } else { clientThread.State = "Handshake: Verifying login credentials"; string error = Authentication.VerifyUserLogin(unverifiedUsername, cryptoStream.SharedKey, ID); if (error != null) { //Unauthorized Log.WriteAuthFail(unverifiedUsername, RemoteEndPoint, error); Close("Mojang says " + error); return; } else { MinecraftUsername = unverifiedUsername; Log.WritePlayer(this, "Login from " + RemoteEndPoint + " " + Country); } } clientThread.State = "Handshake: Logged in"; //Get UUID try { Settings.UUID = UsernameUUID.GetUUID(MinecraftUsername); //Saved further down Debug.WriteLine("Real UUID for " + MinecraftUsername + " is " + Settings.UUID); } catch (Exception) { Debug.WriteLine("Failed to get UUID for MinecraftName " + MinecraftUsername); } clientThread.WatchdogTick = DateTime.Now; MineProxy.Inbox.Status(this); //start encryption clientStream = cryptoStream; SendToClientInternal(new LoginSuccess(Settings.UUID, MinecraftUsername)); clientThread.User = MinecraftUsername; clientThread.State = "Logged in"; EntityID = freeEID; //Math.Abs(unverifiedUsername.GetHashCode()); freeEID += 5000; //Login reply to client JoinGame lr = new JoinGame(); lr.ClientVersion = 0; lr.Difficulty = 0; lr.Dimension = 0; lr.EntityID = EntityID; lr.MaxPlayers = (byte)MinecraftServer.PlayerListSlots; lr.GameMode = 0; SendToClient(lr); Phase = Phases.Gaming; Queue = new SendQueue(this); PlayerList.LoginPlayer(this); SaveProxyPlayer(); string name = h.Host.ToLowerInvariant().Split('.')[0]; if (name == "con") { SetWorld(World.Construct); } else { SetWorld(World.Main); } //Handshake complete }
/// <summary> /// Throw exception on error /// </summary> void RunServerHandshake() { thread.WatchdogTick = DateTime.Now; //Handshaker SendToBackend(new Handshake(MinecraftServer.IP.ToString(), Vanilla.Endpoint.Port, HandshakeState.Login)); SendToBackend(new LoginStart(Player.MinecraftUsername)); thread.WatchdogTick = DateTime.Now; //No encryption with localhost?!!! :D /* * //Read Encryption Request * var encReq = new EncryptionRequest(PacketReader.Read(serverReader, EncryptionRequest.ID)); * Debug.FromServer(encReq, Player); * * //Send response * if (encReq.ServerID != "") * throw new InvalidOperationException("Backend server online mode must be false, ID=-, got " + encReq.ServerID); * crypto = new CryptoMC(serverStream, encReq); * SendToBackend(new EncryptionResponse(crypto)); * * //Start encryption * serverStream = crypto; * serverReader = new EndianBinaryReader(EndianBitConverter.Big, serverStream); * serverWriter = new EndianBinaryWriter(EndianBitConverter.Big, serverStream); */ byte[] buffer = PacketReader.ReadHandshake(serverStream); if (buffer[0] == 0) { string disconnectMessage = Encoding.ASCII.GetString(buffer, 2, buffer.Length - 2); Player.TellSystem("[Error]", disconnectMessage); throw new InvalidOperationException(disconnectMessage); } var compression = new SetCompression(buffer); maxUncompressed = compression.MaxSize; Debug.FromServer(compression, Player); var loginSuccess = new LoginSuccess(PacketReader.Read(serverStream)); UUID = loginSuccess.UUID; Debug.FromServer(loginSuccess, Player); //Read LoginRequest JoinGame res = new JoinGame(PacketReader.Read(serverStream)); Debug.FromServer(res, Player); thread.State = "Got Login"; EID = res.EntityID; Mode = (GameMode)res.GameMode; Dimension = res.Dimension; //Store UUID permanently - No need to store from backend since that is offline uuid phase = Phases.Gaming; }
// Use this for initialization void Start() { _canvas = GameObject.Find("Canvas"); joinGame = _canvas.GetComponent <JoinGame>(); characterViewer = GetComponent <CharacterViewer>(); }
public void HandleMessage(JoinGame message, Socket handler) { lock (BoardLock) { var selectedTeam = SelectTeamForPlayer(message.preferredTeam); //both teams are full if (selectedTeam == null) { gameMaster.Connection.SendFromClient(handler, XmlMessageConverter.ToXml(new RejectJoiningGame() { gameName = message.gameName, playerId = message.playerId })); gameMaster.Connection.SendFromClient(handler, XmlMessageConverter.ToXml(new GameStarted() { gameId = this.gameId })); return; } var role = message.preferredRole; if (role == PlayerType.leader) { if (selectedTeam.HasLeader) { role = PlayerType.member; } } var guid = Utils.GenerateGuid(); var fieldForPlayer = Board.GetEmptyPositionForPlayer(selectedTeam.Color); fieldForPlayer.PlayerId = message.playerId; if (role == PlayerType.leader) { selectedTeam.AddLeader(new Wrapper.Leader(message.playerId, guid, selectedTeam, fieldForPlayer.X, fieldForPlayer.Y)); } else { selectedTeam.Players.Add(new Wrapper.Player(message.playerId, guid, selectedTeam, fieldForPlayer.X, fieldForPlayer.Y)); } var answer = new ConfirmJoiningGame(); answer.playerId = message.playerId; answer.privateGuid = guid; answer.gameId = this.gameId; answer.PlayerDefinition = new Player() { id = message.playerId, team = selectedTeam.Color, type = role }; var answerString = XmlMessageConverter.ToXml(answer); gameMaster.Connection.SendFromClient(handler, answerString); } if (IsReady) { var board = Board; var players = Players.Select(p => p.SchemaPlayer).ToArray(); foreach (var player in Players) { var startGame = new Common.Schema.Game() { Board = board.SchemaBoard, playerId = player.Id, PlayerLocation = new Location() { x = player.X, y = player.Y }, Players = players }; var gameString = XmlMessageConverter.ToXml(startGame); //ConsoleDebug.Message(gameString); gameMaster.Connection.SendFromClient(handler, gameString); //send GameStarted message to server so it won't show it as an open game var gameStarted = new GameStarted() { gameId = gameId }; var startedString = XmlMessageConverter.ToXml(gameStarted); gameMaster.Connection.SendFromClient(handler, startedString); } //place first pieces for (int i = 0; i < gameMaster.Settings.GameDefinition.InitialNumberOfPieces; i++) { PlaceNewPiece(Board.GetRandomEmptyFieldInTaskArea()); } //start infinite Piece place loop GameInProgress = true; GeneratePieces(); } }
// Start is called before the first frame update void Start() { GameManager.Inst.isInbackground = false; if (GameObject.FindGameObjectWithTag("SocketIO") != null && socketIOComponent == null) { socketIOComponent = GameObject.FindGameObjectWithTag("SocketIO").GetComponent <SocketIOComponent>(); } isAnimationOver = false; GameManager.Inst.isNotYetJoin = false; //hide player showing section and title first foreach (GameObject game in playerRows) { game.SetActive(false); } //start animation after slider gets open StartCoroutine(StartAnimation()); enterCodeField.GetComponent <TMP_InputField>().onEndEdit.AddListener(EndEditing); errorPanel.SetActive(false); confirmPanel.SetActive(false); //socket setup socketIOComponent.On("leftGame", (SocketIOEvent obj) => { confirmText.text = obj.data.ToDictionary()["message"]; confirmOkButton.text = "OK"; isAdminExited = true; StartCoroutine(StartConfirmPanelAnimation()); }); socketIOComponent.On("playerJoinedRoom", (SocketIOEvent obj) => { JoinGame joinGame = JsonUtility.FromJson <JoinGame>(obj.data.ToString()); for (int i = 0; i < joinGame.team.Length; i++) { playerRowsText[i].GetComponentInChildren <TMP_Text>().text = joinGame.team[i].userName; GameManager.Inst.Lobby_id = joinGame.team[i].lobby_id; string roleToSet = "friend"; if (joinGame.team[i].role == "admin") { roleToSet = "admin"; } if (joinGame.team[i].deviceId == SystemInfo.deviceUniqueIdentifier && joinGame.team[i].role == "friend") { roleToSet = "you"; } playerRowsText[i].transform.GetChild(1).gameObject.SetActive(true); playerRowsText[i].transform.GetChild(1).gameObject.GetComponent <TMP_Text>().text = roleToSet; print("<Color><b> !♦ playerJoinedRoom ♦! </b></Color>"); } }); socketIOComponent.On("playerLeftGame", (SocketIOEvent obj) => { JoinGame joinGame = JsonUtility.FromJson <JoinGame>(obj.data.ToString()); Debug.Log("obj: " + joinGame.status); //set joined players to rows for (int i = joinGame.team.Length; i < playerRowsText.Length; i++) { playerRowsText[i].GetComponentInChildren <TMP_Text>().text = "pending..."; GameManager.Inst.isNotYetJoin = false; playerRowsText[i].transform.GetChild(1).gameObject.SetActive(false); } }); }
private void OnJoinGame(string joinSecret) => JoinGame?.Invoke(joinSecret);
//will send code to server and will fetch team for same using socket (it's used) public void CheckAndJoinGame() { myGameCode = enterCodeField.GetComponent <TMP_InputField>().text; Player player = new Player(); Dictionary <string, string> inputData = new Dictionary <string, string>(); inputData.Add("code", myGameCode); inputData.Add("userName", player.GetUserName()); inputData.Add("deviceId", SystemInfo.deviceUniqueIdentifier); socketIOComponent.Emit("joinGame", new JSONObject(inputData), (JSONObject obj) => { string jsonString = obj[0].ToString(); Debug.Log("joinGame CHECKING 11: " + jsonString); JoinGame joinGame = JsonUtility.FromJson <JoinGame>(jsonString); if (joinGame.status == true) { GameManager.Inst.isNotYetJoin = true; joinedTeam = true; enterCodeField.GetComponent <TMP_InputField>().interactable = false; //set joined players to rows for (int i = 0; i < joinGame.team.Length; i++) { playerRowsText[i].GetComponentInChildren <TMP_Text>().text = joinGame.team[i].userName; string roleToSet = "friend"; if (joinGame.team[i].role == "admin") { roleToSet = "admin"; } if (joinGame.team[i].deviceId == SystemInfo.deviceUniqueIdentifier && joinGame.team[i].role == "friend") { roleToSet = "you"; } playerRowsText[i].transform.GetChild(1).gameObject.SetActive(true); playerRowsText[i].transform.GetChild(1).gameObject.GetComponent <TMP_Text>().text = roleToSet; //show player showing section and title first foreach (GameObject game in playerRows) { game.SetActive(true); } StartCoroutine(AnimateRows(0)); } // here timer //timer = 15; //InvokeRepeating("Starttimer", 1f, 1f); } else { GameManager.Inst.isNotYetJoin = false; //if api sends error, show error panel isErrorVisible = true; errorPanel.SetActive(true); errorPanel.GetComponent <Animator>().Play("ErrorAnimationIn"); errorText.text = joinGame.message; } }); }
// ParseNetMessage accepts input of raw bytes from a NetMessage. Parses and returns a Net message. public static INet Parse(ushort msgType, byte[] content) { INet msg = null; MsgType mt = (MsgType)msgType; switch (mt) { case MsgType.Multipart: msg = new Multipart(); break; case MsgType.Heartbeat: msg = new Heartbeat(); break; case MsgType.Connected: msg = new Connected(); break; case MsgType.Disconnected: msg = new Disconnected(); break; case MsgType.CreateAcct: msg = new CreateAcct(); break; case MsgType.CreateAcctResp: msg = new CreateAcctResp(); break; case MsgType.Login: msg = new Login(); break; case MsgType.LoginResp: msg = new LoginResp(); break; case MsgType.Character: msg = new Character(); break; case MsgType.ListGames: msg = new ListGames(); break; case MsgType.ListGamesResp: msg = new ListGamesResp(); break; case MsgType.CreateGame: msg = new CreateGame(); break; case MsgType.CreateGameResp: msg = new CreateGameResp(); break; case MsgType.JoinGame: msg = new JoinGame(); break; case MsgType.GameConnected: msg = new GameConnected(); break; case MsgType.GameMasterFrame: msg = new GameMasterFrame(); break; case MsgType.Entity: msg = new Entity(); break; case MsgType.MovePlayer: msg = new MovePlayer(); break; case MsgType.UseAbility: msg = new UseAbility(); break; case MsgType.AbilityResult: msg = new AbilityResult(); break; case MsgType.EndGame: msg = new EndGame(); break; } MemoryStream ms = new MemoryStream(content); msg.Deserialize(new BinaryReader(ms)); return(msg); }
private void InvokeJoinGame(JoinGame packet) { packetListener.OnJoinGame(packet); }
public void OnJoinGame(JoinGame packet) { }
public void Tick() { lock (MinecraftServer.Worlds) { foreach (var i in MinecraftServer.Worlds) { foreach (var p in i.Players) { var ka = new KeepAlive() { Owner = p.OwnerID }; ka.KeepAliveID = new Random().Next(); NetworkService.EnqueuePacket(ka); } } } if (NetworkService.IsAvalible(new LoginStart())) { var p = NetworkService.GetPacket <LoginStart>() as LoginStart; var pl = new Player() { OwnerID = p.Owner, Name = p.Name }; var Logins = new LoginSuccess() { Owner = p.Owner }; Logins.Username = p.Name; Logins.UUID = GetUuid(p.Name); NetworkService.EnqueuePacket(Logins); var jg = new JoinGame() { Owner = p.Owner }; jg.EntityID = 0; jg.Gamemode = (byte)pl.GameMode; jg.Dimension = 0; jg.Difficulty = 0; jg.MaxPlayers = 255; jg.LevelType = "default"; jg.ReducedDebugInfo = 0; NetworkService.EnqueuePacket(jg); var ppal = new PlayerPositionAndLook() { Owner = p.Owner }; ppal.X = pl.Posistion.X; ppal.Y = pl.Posistion.Y; ppal.Z = pl.Posistion.Z; ppal.Yaw = pl.Look.Yaw; ppal.Pitch = pl.Look.Pitch; ppal.Flags = 255; NetworkService.EnqueuePacket(ppal); pl.Spawned = true; MinecraftServer.Worlds[0].Players.Add(pl); } }
private void OnJoinGame(string secret) { JoinGame?.Invoke(secret); }
private void Awake() { inst = this; isAnimationOver = false; GameManager.Inst.isNotYetJoin = false; GameManager.Inst.isInbackground = false; if (GameObject.FindGameObjectWithTag("SocketIO") != null && socketIOComponent == null) { socketIOComponent = GameObject.FindGameObjectWithTag("SocketIO").GetComponent <SocketIOComponent>(); } else { print("-=-=socketIO-=error-=->"); } Debug.Log("socketIO: " + socketIOComponent); //enterCodeField.GetComponent<TMP_InputField>().onEndEdit.AddListener(EndEditing); enterCodeField.GetComponent <TMP_InputField>().interactable = false; //get code from server GetCodeFromServer(); //start animation after slider gets open StartCoroutine(StartAnimation()); //get current user name (who will be admin) and set on first row Player player = new Player(); playerRowsText[0].GetComponentInChildren <TMP_Text>().text = player.GetUserName(); playerRowsText[0].interactable = false; //deactive confirmation panel and change message of that confirmPanel.SetActive(false); confirmText.text = "Your friends will not be able join team using this code. Are you sure you want to leave ?"; //Socket setup socketIOComponent.On("playerJoinedRoom", (SocketIOEvent obj) => { JoinGame joinGame = JsonUtility.FromJson <JoinGame>(obj.data.ToString()); print("playerJoinedRoom + data.ToString()" + obj.data.ToString()); Debug.Log("obj: " + joinGame.status); GameManager.Inst.isNotYetJoin = true; //set joined players to rows for (int i = 1; i < joinGame.team.Length; i++) { playerRowsText[i].GetComponentInChildren <TMP_Text>().text = joinGame.team[i].userName; GameManager.Inst.Lobby_id = joinGame.team[i].lobby_id; string roleToSet = "friend"; if (joinGame.team[i].role == "admin") { roleToSet = "admin"; } if (joinGame.team[i].deviceId == SystemInfo.deviceUniqueIdentifier && joinGame.team[i].role == "friend") { roleToSet = "you"; } playerRowsText[i].transform.GetChild(2).gameObject.SetActive(false); playerRowsText[i].transform.GetChild(1).gameObject.SetActive(true); playerRowsText[i].transform.GetChild(1).gameObject.GetComponent <TMP_Text>().text = roleToSet; Dictionary <string, Dictionary <string, string> > playerDetails = new Dictionary <string, Dictionary <string, string> >(); Dictionary <string, string> obj1 = new Dictionary <string, string>(); obj1.Add((i + 1).ToString(), (i + 1).ToString()); playerDetails.Add((i + 1).ToString(), obj1); PlayerDetails details = new PlayerDetails(); print("playerJoinedRoom joinGame.team.Length" + joinGame.team.Length); details.allUsers = new PlayerData[joinGame.team.Length]; int j = 0; foreach (string key in playerDetails.Keys) { Debug.Log("KEY: " + key); foreach (string innerKey in playerDetails[key].Keys) { //Debug.Log(innerKey + " INNER VALUE: " + playerDetails[key][innerKey]); PlayerData data = new PlayerData(); data.name = key; data.type = innerKey; data.team = playerDetails[key][innerKey]; print("playerJoinedRoom >>>>>>>>>>>>>>>>>>" + innerKey); Debug.Log("playerJoinedRoom ♥ KEY: " + key); if (innerKey != "none" && j <= joinGame.team.Length) { switch (key) { case "1": data.color = "red"; details.allUsers[j] = data; break; case "2": data.color = "yellow"; details.allUsers[j] = data; break; case "3": data.color = "green"; details.allUsers[j] = data; break; case "4": data.color = "blue"; details.allUsers[j] = data; break; } if (j != joinGame.team.Length) { j++; print("j " + j); } } } } print("♥♥♥" + details.allUsers[j]); PlayerPrefs.SetString("singlePlayerGame", JsonUtility.ToJson(details)); } // here timer //timer = 15; //InvokeRepeating("Starttimer", 1f, 1f); //SceneManager.LoadScene("MultiPlayerGamePlayScene"); GameObject.Find("StartButtonText").GetComponent <TMP_Text>().text = "You can Start Game"; }); socketIOComponent.On("playerLeftGame", (SocketIOEvent obj) => { JoinGame joinGame = JsonUtility.FromJson <JoinGame>(obj.data.ToString()); Debug.Log("obj: " + joinGame.status); //set joined players to rows for (int i = joinGame.team.Length; i < playerRowsText.Length; i++) { playerRowsText[i].GetComponentInChildren <TMP_Text>().text = "add friend"; GameManager.Inst.isNotYetJoin = false; playerRowsText[i].transform.GetChild(2).gameObject.SetActive(true); playerRowsText[i].transform.GetChild(1).gameObject.SetActive(false); } }); //make socket not destroy //DontDestroyOnLoad(socketIOComponent); //get code from server //GetCodeFromServer(); from here to Awake top }
public void Use(int characterIndex) { var validation = new CharacterValidation() { Player = Player }; CharacterValidationResult validationResult; validationResult = validation.ValidateCharacterIndex(characterIndex); if (!CanValidateNext(validationResult)) { return; } validationResult = validation.ValidateEmptyCharacterSelection(characterIndex); // Quando o slot de personagem está vazio, muda o AlertType para Connection. if (validationResult.AlertMessageType == AlertMessageType.None) { validationResult.AlertMessageType = AlertMessageType.Connection; validationResult.MenuResetType = MenuResetType.Login; validationResult.Disconnect = true; // Realiza a desconexão pois é impossível utilizar um personagem que não existe. if (!CanValidateNext(validationResult)) { return; } } var character = Player.CharacterSelection[characterIndex]; if (character.CharacterId > 0) { Player.CharacterId = character.CharacterId; // Quando um personagem pendente para exclusão é usado. A requisição é cancelada. var cancelRequest = false; if (Player.CharacterSelection[characterIndex].PendingExclusion) { Global.DeleteRequest.CancelDelete(character.CharacterId); cancelRequest = true; } var characters = new CharacterDatabase(Player); characters.LoadCharacter(cancelRequest); characters.Close(); Global.WriteLog(LogType.Player, $"Loaded characters from {Player.Username}", LogColor.Green); var game = new JoinGame() { Player = Player }; game.Join(); } }
//will send code to server and will fetch team for same (not used) IEnumerator CheckCodeAndJoin() { myGameCode = enterCodeField.GetComponent <TMP_InputField>().text; Player player = new Player(); string apiUrl = ApiUtil.BASE_URL + "checkCode/" + myGameCode + "/" + player.GetUserName() + "/" + SystemInfo.deviceUniqueIdentifier; UnityWebRequest www = UnityWebRequest.Get(apiUrl); yield return(www.SendWebRequest()); // hold for API response if (www.isNetworkError || www.isHttpError) { Debug.Log(www.error); } else { string jsonString = www.downloadHandler.text; Debug.Log("CHECKING 11: " + jsonString); JoinGame joinGame = JsonUtility.FromJson <JoinGame>(jsonString); if (joinGame.status == true) { joinedTeam = true; enterCodeField.GetComponent <TMP_InputField>().interactable = false; //set joined players to rows for (int i = 0; i < joinGame.team.Length; i++) { playerRowsText[i].GetComponentInChildren <TMP_Text>().text = joinGame.team[i].userName; string roleToSet = "friend"; if (joinGame.team[i].role == "admin") { roleToSet = "admin"; } if (joinGame.team[i].deviceId == SystemInfo.deviceUniqueIdentifier && joinGame.team[i].role == "friend") { roleToSet = "you"; } playerRowsText[i].transform.GetChild(1).gameObject.SetActive(true); playerRowsText[i].transform.GetChild(1).gameObject.GetComponent <TMP_Text>().text = roleToSet; } //show player showing section and title first foreach (GameObject game in playerRows) { game.SetActive(true); } StartCoroutine(AnimateRows(0)); } else { //if api sends error, show error panel isErrorVisible = true; errorPanel.SetActive(true); errorPanel.GetComponent <Animator>().Play("ErrorAnimationIn"); errorText.text = joinGame.message; } } }
public IEnumerable <IEvent> On(JoinGame command) { yield return(new Gamejoined(command.ID, command.AccountID)); }
public void CreateEncodingSamples() { StreamWriter writer = new StreamWriter("MessageSamples.txt"); MessageNumber msgNumber = MessageNumber.Create(100, 120); MessageNumber conversationNumber = MessageNumber.Create(200, 240); AgentInfo agentInfo = new AgentInfo(10, AgentInfo.PossibleAgentType.BrilliantStudent, new Common.EndPoint("129.123.5.10:1234")) { AgentStatus = AgentInfo.PossibleAgentStatus.InGame, ANumber = "A00001", FirstName = "Joe", LastName = "Jones", Location = new FieldLocation(10, 20), Points = 100, Strength = 200, Speed = 1.2 }; AckNak ackNak = new AckNak(Reply.PossibleStatus.Success, agentInfo, "Test Message") { MessageNr = msgNumber, ConversationId = conversationNumber, IntResult = 99, Note = "Test Note" }; writer.WriteLine("AckNak"); writer.WriteLine("\tMessageNr={0}", ackNak.MessageNr.ToString()); writer.WriteLine("\tConversationId={0}", ackNak.ConversationId.ToString()); writer.WriteLine("\tReplyType={0}", ackNak.ReplyType); writer.WriteLine("\tAckNak Status={0}", ackNak.Status); writer.WriteLine("\tAgent Info:"); writer.WriteLine("\t\tId={0}", agentInfo.Id); writer.WriteLine("\t\tAgentStatus={0}", agentInfo.AgentStatus); writer.WriteLine("\t\tANumber={0}", agentInfo.ANumber); writer.WriteLine("\t\tFirstName={0}", agentInfo.FirstName); writer.WriteLine("\t\tLastName={0}", agentInfo.LastName); writer.WriteLine("\t\tLocation={0}", agentInfo.Location.ToString()); writer.WriteLine("\t\tPoints={0}", agentInfo.Points); writer.WriteLine("\t\tStrength={0}", agentInfo.Strength); writer.WriteLine("\t\tSpeed={0}", agentInfo.Speed); ByteList byteList = new ByteList(); ackNak.Encode(byteList); writer.WriteLine(""); writer.WriteLine("Encoding:"); writer.WriteLine(byteList.CreateLogString()); writer.WriteLine(""); writer.WriteLine("------------------------------------"); writer.WriteLine(""); JoinGame joinGame = new JoinGame(20, agentInfo) { MessageNr = msgNumber, ConversationId = conversationNumber, }; writer.WriteLine("JoinGame"); writer.WriteLine("\tMessageNr={0}", joinGame.MessageNr.ToString()); writer.WriteLine("\tConversationId={0}", joinGame.ConversationId.ToString()); writer.WriteLine("\tGameId={0}", joinGame.GameId); writer.WriteLine("\tAgent Info:"); writer.WriteLine("\t\tId={0}", agentInfo.Id); writer.WriteLine("\t\tAgentStatus={0}", agentInfo.AgentStatus); writer.WriteLine("\t\tANumber={0}", agentInfo.ANumber); writer.WriteLine("\t\tFirstName={0}", agentInfo.FirstName); writer.WriteLine("\t\tLastName={0}", agentInfo.LastName); writer.WriteLine("\t\tLocation={0}", agentInfo.Location.ToString()); writer.WriteLine("\t\tPoints={0}", agentInfo.Points); writer.WriteLine("\t\tStrength={0}", agentInfo.Strength); writer.WriteLine("\t\tSpeed={0}", agentInfo.Speed); byteList = new ByteList(); joinGame.Encode(byteList); writer.WriteLine(""); writer.WriteLine("Encoding:"); writer.WriteLine(byteList.CreateLogString()); writer.WriteLine(""); writer.WriteLine("------------------------------------"); writer.WriteLine(""); // TODO: All of the other message types }