//GameDataPacket private static void HandlePacket(GameDataPacket packet) { foreach (var pkt in packet.GameObjects) { HandlePacket((dynamic)pkt); } CustomColors.Load(packet.ColorsJson); Globals.HasGameData = true; }
public void SendPacket(int clientId, GameDataPacket packet) { if (killServer && Thread.CurrentThread == game.MainThread) { throw new GameOverException() { EveryoneQuits = true }; } Gamers[clientId].SendAsync(packet); }
public bool Send(GameDataPacket packet) { try { Serializer.SerializeWithLengthPrefix<GameDataPacket>(DataStream, packet, PrefixStyle.Base128); return true; } catch (Exception) { return false; } }
public bool Send(GameDataPacket packet) { try { Serializer.SerializeWithLengthPrefix <GameDataPacket>(DataStream, packet, PrefixStyle.Base128); return(true); } catch (Exception) { return(false); } }
private void HandleGameData(GameDataPacket packet) { ParseGameData(packet); if (IsInitialized) { Save(); } if (!Moving) { Module.SendPacketToAll(packet); } else { Module.OnPosition(this); } SendPacket(GetDataPacket()); // We assume that if we get a GameData, it's a client that wanna play if (FirstGameData) { return; } FirstGameData = true; if (!Module.AssignID(this)) { return; } SendPacket(new IDPacket { Origin = Origin.Server, PlayerID = ID }); SendPacket(new WorldDataPacket { Origin = Origin.Server, DataItems = Module.World.GenerateDataItems() }); if (!IsGameJoltPlayer) { SendServerMessage("Please use /login %PASSWORD% for logging in or registering"); SendServerMessage("Please note that chat data isn't sended secure to server"); SendServerMessage("So it can be seen via traffic sniffing"); SendServerMessage("Don't use your regular passwords"); SendServerMessage("On server it's stored fully secure via SHA-512"); } else { Initialize(); } }
//GameDataPacket private static void HandlePacket(GameDataPacket packet) { foreach (var obj in packet.GameObjects) { HandlePacket((dynamic)obj); } Globals.HasGameData = true; if (!Globals.InEditor && Globals.HasGameData && Globals.CurrentMap != null) { Globals.LoginForm.BeginInvoke(Globals.LoginForm.EditorLoopDelegate); } GameContentManager.LoadTilesets(); }
private void ReceiveLoop() { Game.RegisterCurrentThread(); while (true) { GameDataPacket packet = Receive(); if (packet == null) { break; } try { if (packet is GameResponse) { semaPakArrival.WaitOne(); } var handler2 = OnGameDataPacketReceived; if (handler2 != null) { handler2(packet); } } catch (Exception e) { while (e.InnerException != null) { e = e.InnerException; } Trace.TraceError(e.StackTrace); Trace.Assert(false, e.StackTrace); var crashReport = new StreamWriter(FileRotator.CreateFile("./Crash", "crash", ".dmp", 1000)); crashReport.WriteLine(e); crashReport.Close(); break; } } receiveThread = null; }
public void Send(GameDataPacket packet, bool doRecord = true) { lock (senderLock) { DataStream.IsRecordEnabled = doRecord; Trace.TraceInformation("ServerGamer : Send {0}({1}) to client {2}", packet.GetType().Name, packet.GetHashCode(), this.GetHashCode()); Serializer.SerializeWithLengthPrefix <GameDataPacket>(DataStream, packet, PrefixStyle.Base128); DataStream.Flush(); } if (!DataStream.IsLastWriteSuccessful && !IsSpectator) { OnlineStatus = OnlineStatus.Offline; var handler = OnDisconnected; if (handler != null) { try { OnDisconnected(this); } catch (Exception) { } } } }
public void Send(GameDataPacket packet) { Serializer.SerializeWithLengthPrefix<GameDataPacket>(DataStream, packet, PrefixStyle.Base128); }
public void SendAsync(GameDataPacket packet) { sendQueue.Add(packet); }
public void Send(GameDataPacket packet, bool doRecord = true) { lock (senderLock) { DataStream.IsRecordEnabled = doRecord; Trace.TraceInformation("ServerGamer : Send {0}({1}) to client {2}", packet.GetType().Name, packet.GetHashCode(), this.GetHashCode()); Serializer.SerializeWithLengthPrefix<GameDataPacket>(DataStream, packet, PrefixStyle.Base128); DataStream.Flush(); } if (!DataStream.IsLastWriteSuccessful && !IsSpectator) { OnlineStatus = OnlineStatus.Offline; var handler = OnDisconnected; if (handler != null) { try { OnDisconnected(this); } catch (Exception) { } } } }
public void Send(GameDataPacket p) { networkService.Send(p); }
public void SendPacket(int clientId, GameDataPacket packet) { if (killServer && Thread.CurrentThread == game.MainThread) { throw new GameOverException() { EveryoneQuits = true }; } Gamers[clientId].SendAsync(packet); }
public void Send(GameDataPacket p) { networkService.Send(p); }
public void Send(GameDataPacket packet) { Serializer.SerializeWithLengthPrefix <GameDataPacket>(DataStream, packet, PrefixStyle.Base128); }
private void OnGameDataPacketReceived(GameDataPacket packet) { lock (receiveInProcess) { if (packet is GameResponse) { if (CurrentQuestionState == QuestionState.None) { return; } Game.CurrentGame.HandCardSwitcher.HandleHandCardMovements(); var state = CurrentQuestionState; switch (state) { case QuestionState.AskForCardUsage: var response = packet as AskForCardUsageResponse; if (response == null || response.Id != QuestionId) { Gamer.ReceiveAsync(); break; } ISkill skill; List <Card> cards; List <Player> players; response.ToAnswer(out skill, out cards, out players, PlayerId); CurrentQuestionState = QuestionState.None; AnswerCardUsage(skill, cards, players); break; case QuestionState.AskForCardChoice: var response2 = packet as AskForCardChoiceResponse; if (response2 == null || response2.Id != QuestionId) { Gamer.ReceiveAsync(); break; } int opt; var result = response2.ToAnswer(PlayerId, out opt); if (currentChoiceOptions != null) { currentChoiceOptions.OptionResult = opt; } CurrentQuestionState = QuestionState.None; AnswerCardChoice(result); break; case QuestionState.AskForMultipleChoice: var response3 = packet as AskForMultipleChoiceResponse; if (response3 == null || response3.Id != QuestionId) { Gamer.ReceiveAsync(); break; } CurrentQuestionState = QuestionState.None; AnswerMultipleChoice(response3.ChoiceIndex); break; } } else if (packet is CardRearrangementNotification) { for (int i = 0; i < Game.CurrentGame.GameServer.MaxClients; i++) { if (i != PlayerId) { Game.CurrentGame.GameServer.SendPacket(i, packet); } } } else if (packet is HandCardMovementNotification) { var notif = packet as HandCardMovementNotification; Game.CurrentGame.HandCardSwitcher.QueueHandCardMovement(notif); } } }
public void SendAsync(GameDataPacket packet) { sendQueue.Add(packet); }
private void ParseGameData(GameDataPacket packet) { if (packet.DataItems != null) { var strArray = packet.DataItems.ToArray(); if (strArray.Length >= 14) { for (var index = 0; index < strArray.Length; index++) { var dataItem = strArray[index]; if (string.IsNullOrEmpty(dataItem)) { continue; } switch (index) { case 0: GameMode = packet.GameMode; break; case 1: IsGameJoltPlayer = packet.IsGameJoltPlayer; break; case 2: GameJoltID = packet.GameJoltID; break; case 3: DecimalSeparator = packet.DecimalSeparator; break; case 4: Nickname = packet.Name; break; case 5: LevelFile = packet.LevelFile; break; case 6: Position = packet.GetPosition(DecimalSeparator); //if (packet.GetPokemonPosition(DecimalSeparator) != Vector3.Zero) //{ // LastPosition = Position; // // Position = packet.GetPosition(DecimalSeparator); // // IsMoving = LastPosition != Position; //} break; case 7: Facing = packet.Facing; break; case 8: Moving = packet.Moving; break; case 9: Skin = packet.Skin; break; case 10: BusyType = packet.BusyType; //Basic.ServersManager.UpdatePlayerList(); break; case 11: PokemonVisible = packet.PokemonVisible; break; case 12: if (packet.GetPokemonPosition(DecimalSeparator) != Vector3.Zero) { PokemonPosition = packet.GetPokemonPosition(DecimalSeparator); } break; case 13: PokemonSkin = packet.PokemonSkin; break; case 14: PokemonFacing = packet.PokemonFacing; break; } } } else { Logger.Log(LogType.Warning, $"P3D Reading Error: ParseGameData DataItems < 14. Packet DataItems {packet.DataItems}."); } } else { Logger.Log(LogType.Warning, "P3D Reading Error: ParseGameData DataItems is null."); } }
private void OnGameDataPacketReceived(GameDataPacket packet) { lock (receiveInProcess) { if (packet is GameResponse) { if (CurrentQuestionState == QuestionState.None) return; Game.CurrentGame.HandCardSwitcher.HandleHandCardMovements(); var state = CurrentQuestionState; switch (state) { case QuestionState.AskForCardUsage: var response = packet as AskForCardUsageResponse; if (response == null || response.Id != QuestionId) { Gamer.ReceiveAsync(); break; } ISkill skill; List<Card> cards; List<Player> players; response.ToAnswer(out skill, out cards, out players, PlayerId); CurrentQuestionState = QuestionState.None; AnswerCardUsage(skill, cards, players); break; case QuestionState.AskForCardChoice: var response2 = packet as AskForCardChoiceResponse; if (response2 == null || response2.Id != QuestionId) { Gamer.ReceiveAsync(); break; } int opt; var result = response2.ToAnswer(PlayerId, out opt); if (currentChoiceOptions != null) currentChoiceOptions.OptionResult = opt; CurrentQuestionState = QuestionState.None; AnswerCardChoice(result); break; case QuestionState.AskForMultipleChoice: var response3 = packet as AskForMultipleChoiceResponse; if (response3 == null || response3.Id != QuestionId) { Gamer.ReceiveAsync(); break; } CurrentQuestionState = QuestionState.None; AnswerMultipleChoice(response3.ChoiceIndex); break; } } else if (packet is CardRearrangementNotification) { for (int i = 0; i < Game.CurrentGame.GameServer.MaxClients; i++) { if (i != PlayerId) Game.CurrentGame.GameServer.SendPacket(i, packet); } } else if (packet is HandCardMovementNotification) { var notif = packet as HandCardMovementNotification; Game.CurrentGame.HandCardSwitcher.QueueHandCardMovement(notif); } } }
public void Send(GameDataPacket p) { gamer.Send(p); }