/** * Handles the load Player packet, (handler "lp"). This is to load our Player object. * * @param receivedPacket * The packet to handle. */ private void HandleLoadPlayer(Data.PenguinPacket receivedPacket) { currentRoom.Self.LoadData(receivedPacket.Xt.Arguments[0]); currentRoom.Self.SetCoins(int.Parse(receivedPacket.Xt.Arguments[1])); currentRoom.Self.SetAge(int.Parse(receivedPacket.Xt.Arguments[5])); currentRoom.Self.SetMinutesPlayed(int.Parse(receivedPacket.Xt.Arguments[7])); }
/** * Handles the error packet, (handler "e"). * * @param receivedPacket * The packet to handle. */ private void HandleError(Data.PenguinPacket receivedPacket) { if (penguinErrorEvent != null) { penguinErrorEvent(int.Parse(receivedPacket.Xt.Arguments[0])); } }
/** * Handles the inventory list packet, (handler "gi"). * * @param receivedPacket * The packet to handle. */ public void HandleInventoryList(Data.PenguinPacket receivedPacket) { foreach (string itemId in receivedPacket.Xt.Arguments) { currentRoom.Self.AddInventoryItem(int.Parse(itemId)); } }
/** * Handles the add layer packet, (handler "ap"). This is so we can add a Data.Player to the room as they join. * * @param receivedPacket * The packet to handle. */ private void HandleAddPlayer(Data.PenguinPacket receivedPacket) { Data.Player newPlayer = new Data.Player(); newPlayer.LoadData(receivedPacket.Xt.Arguments[0]); if (newPlayer.Id != ID) { currentRoom.AddPlayer(newPlayer); } }
/** * Handles the change frame packet, (handler "sf"). This is so we can change their frame in their object when they change frame. * * @param receivedPacket * The packet to handle. */ private void HandleSendFrame(Data.PenguinPacket receivedPacket) { int intId = int.Parse(receivedPacket.Xt.Arguments[0]); Data.Player updatePlayer; if (currentRoom.TryGetPlayer(intId, out updatePlayer)) { updatePlayer.Position.SetFrame(int.Parse(receivedPacket.Xt.Arguments[1])); } }
/** * Executes a handler by the command. * * @param strCommand * The xt command of the received packet. * @param receivedPacket * The packet that was received. */ public void Execute(string strCommand, Data.PenguinPacket receivedPacket) { if (dicHandlers.ContainsKey(strCommand) == false) { return; } foreach (PacketHandler toExecute in dicHandlers[strCommand]) { toExecute(receivedPacket); } }
/** * Handles the Data.Player move packet, (handler "sp"), so that we can change the x and y positions of players in the Player classes. * * @param receivedPacket * The packet to handle. */ private void HandlePlayerMove(Data.PenguinPacket receivedPacket) { while (currentRoom == null) { } // Wait until the room object is set. Data.Player updatePlayer; if (currentRoom.TryGetPlayer(int.Parse(receivedPacket.Xt.Arguments[0]), out updatePlayer)) { updatePlayer.Position.SetX(int.Parse(receivedPacket.Xt.Arguments[1])); updatePlayer.Position.SetY(int.Parse(receivedPacket.Xt.Arguments[2])); } }
/** * Handles the successful login packet, (handler "l"). Sent from both the login and game. * * @param receivedPacket * The packet to handle. */ private void HandleLogin(Data.PenguinPacket receivedPacket) { if (blnIsLogin) { playerID = int.Parse(receivedPacket.Xt.Arguments[0]); loginKey = receivedPacket.Xt.Arguments[2]; LoginFinished(); } else if (blnIsJoin) { SendJoin(loginKey); } }
/** * Handles the join room packet, (handler "jr"). This is so we can change the room numbers and load the new room object and Player objects. * * @param receivedPacket * The packet to handle. */ private void HandleJoinRoom(Data.PenguinPacket receivedPacket) { int roomExtId = int.Parse(receivedPacket.Xt.Arguments[0]); string strName = (roomExtId < 1000) ? Crumbs.Rooms.GetAttributeById(roomExtId, "name") : "Igloo"; currentRoom.ChangeRoom(strName, receivedPacket.Xt.Room, roomExtId); for (int intIndex = 1; intIndex < receivedPacket.Xt.Arguments.Length; intIndex++) { Data.Player newPlayer = new Data.Player(); newPlayer.LoadData(receivedPacket.Xt.Arguments[intIndex]); currentRoom.AddPlayer(newPlayer); } }
/** * Gets a phrase by it's ID asynchronously. * * @param phraseLoaded * Callback function for when the phrase has loaded. * @param receivedPacket * The received packet containning the received phrase chat message. */ private static void AsyncPhrase(PhraseReceiveCallback phraseLoaded, Data.PenguinPacket receivedPacket) { try { string strJson = Utils.DownloadString("http://phrasechat.disney.go.com/phrasechatsvc/api/1.1/pen/en/phrase/" + receivedPacket.Xt.Arguments[1]); Hashtable htlJson = Procurios.Public.JSON.JsonDecode(strJson) as Hashtable; if (Successful(htlJson)) { phraseLoaded(GetPhrase(htlJson), receivedPacket, 200, null); } else { phraseLoaded(null, receivedPacket, 200, GetError(htlJson)); } }catch (System.Net.WebException webEx) { phraseLoaded(null, receivedPacket, (int)webEx.Status, null); } }
/** * Handles the update item packet, (handler "up*"). * * @param receivedPacket * The packet to handle. */ private void HandleUpdateItem(Data.PenguinPacket receivedPacket) { Data.Player updatePlayer; int intItem = int.Parse(receivedPacket.Xt.Arguments[1]); if (int.Parse(receivedPacket.Xt.Arguments[1]) == ID) { updatePlayer = currentRoom.Self; } else { if (currentRoom.TryGetPlayer(int.Parse(receivedPacket.Xt.Arguments[0]), out updatePlayer) == false) { return; } } updatePlayer.Item.SetByCode(receivedPacket.Xt.Command, intItem); }
/** * Starts getting a phrase by it's ID asynchronously. * * @param phraseLoaded * Callback function for when the phrase has loaded. * @param receivedPacket * The received packet containning the received phrase chat message. */ public static void BeginPhraseById(PhraseReceiveCallback phraseLoaded, Data.PenguinPacket receivedPacket) { System.Threading.Thread asyncPhrase = new System.Threading.Thread(new System.Threading.ThreadStart(delegate { AsyncPhrase(phraseLoaded, receivedPacket); })); asyncPhrase.IsBackground = true; asyncPhrase.Start(); }
/** * Handles the join server packet, (handler "js"). Sent from the game. * * @param receivedPacket * The packet to handle. */ private void HandleJoinServer(Data.PenguinPacket receivedPacket) { blnIsJoin = false; JoinFinished(); SendGetInventory(); }
/** * Handles the game over packet, (handler "zo"). * * @param receivedPacket * The packet to handle. */ private void HandleGameOver(Data.PenguinPacket receivedPacket) { currentRoom.Self.SetCoins(int.Parse(receivedPacket.Xt.Arguments[0])); }
/** * Handles the join game packet, (handler "jg"). * * @param receivedPacket * The packet to handle. */ private void HandleJoinGame(Data.PenguinPacket receivedPacket) { int roomExtId = int.Parse(receivedPacket.Xt.Arguments[0]); Room.ChangeRoom(Crumbs.Rooms.GetAttributeById(roomExtId, "name"), receivedPacket.Xt.Room, roomExtId); }
/** * Handles the remove Player packet, (handler "rp"). This is so we can remove players from the room as they leave. * * @param receivedPacket * The packet to handle. */ private void HandleRemovePlayer(Data.PenguinPacket receivedPacket) { int toRemove = int.Parse(receivedPacket.Xt.Arguments[0]); currentRoom.RemovePlayer(toRemove); }