private void CheckForSendActiveAbilityPressed(MPlayer mplayer) { // Some classes hold their active ability button down. We don't want to send a million packets, with it possibly firing on the wrong frame due to lag // (which is virtually guaranteed with any latency, except maybe over LAN), so for those classes, just send one packet when it's released instead. if (!mplayer.IsActiveAbilityKeyHeld()) { PlayerActiveAbilityStartNetMsg.SerializeAndSend( this, mplayer.player.whoAmI, false, mplayer.special); } }
// tModLoader calls senderPlayerId `whoAmI` instead, but this name is more accurate. public override void HandlePacket(BinaryReader reader, int senderPlayerId) { PacketMessageTypeEnum messageType = (PacketMessageTypeEnum)reader.ReadInt32(); switch (messageType) { case PacketMessageTypeEnum.SPAWN_DUST: if (Main.netMode != NetmodeID.Server) { SpawnDustNetMsg spawnDustNetMsg = new SpawnDustNetMsg(); spawnDustNetMsg.HandlePacket( reader, senderPlayerId, this); } break; case PacketMessageTypeEnum.VELOCITY_CHANGE_NPC: VelocityChangeNpcNetMsg velocityChangeNpcNetMsg = new VelocityChangeNpcNetMsg(); velocityChangeNpcNetMsg.HandlePacket( reader, senderPlayerId, this); break; case PacketMessageTypeEnum.SANDSTORM_VISUALS: // For Legacy support to support play with out-of-date players, but shouldn't be sent anymore SandstormVisualsNetMsg sandstormVisualsNetMsg = new SandstormVisualsNetMsg(); sandstormVisualsNetMsg.HandlePacket( reader, senderPlayerId, this); break; case PacketMessageTypeEnum.HEAL_PLAYER: HealPlayerNetMsg healPlayerNetMsg = new HealPlayerNetMsg(); healPlayerNetMsg.HandlePacket( reader, senderPlayerId, this); break; case PacketMessageTypeEnum.LEVEL_UP_PLAYER: LevelUpPlayerNetMsg levelUpPlayerNetMsg = new LevelUpPlayerNetMsg(); levelUpPlayerNetMsg.HandlePacket( reader, senderPlayerId, this); break; case PacketMessageTypeEnum.PLAYER_CLASS_LEVEL_INFO: PlayerClassLevelInfoNetMsg playerClassLevelInfoNetMsg = new PlayerClassLevelInfoNetMsg(); playerClassLevelInfoNetMsg.HandlePacket( reader, senderPlayerId, this); break; case PacketMessageTypeEnum.PLAYER_ACTIVE_ABILITY_INFO: PlayerActiveAbilityInfoNetMsg playerActiveAbilityInfoNetMsg = new PlayerActiveAbilityInfoNetMsg(); playerActiveAbilityInfoNetMsg.HandlePacket( reader, senderPlayerId, this); break; case PacketMessageTypeEnum.PLAYER_ACTIVE_ABILITY_START: PlayerActiveAbilityStartNetMsg playerActiveAbilityStartNetMsg = new PlayerActiveAbilityStartNetMsg(); playerActiveAbilityStartNetMsg.HandlePacket( reader, senderPlayerId, this); break; default: //zzz log unhandled message break; } }