From fd4880bcfe562d545ac0fd48af26277334039040 Mon Sep 17 00:00:00 2001 From: Zack Piispanen Date: Thu, 1 Mar 2012 16:14:08 -0500 Subject: [PATCH] Added in handler for TeamChange packet --- TShockAPI/GetDataHandlers.cs | 52 ++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index db514d10..bb595a5c 100644 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -135,6 +135,38 @@ namespace TShockAPI return args.Handled; } + /// + /// For use in a PlayerTeam event + /// + public class PlayerTeamEventArgs : HandledEventArgs + { + /// + /// The Terraria player ID of the player + /// + public byte PlayerId { get; set; } + /// + /// Enable/disable pvp? + /// + public byte Team { get; set; } + } + /// + /// TogglePvp - called when a player toggles pvp + /// + public static HandlerList PlayerTeam; + private static bool OnPlayerTeam(byte _id, byte _team) + { + if (PlayerTeam == null) + return false; + + var args = new PlayerTeamEventArgs + { + PlayerId = _id, + Team = _team, + }; + PlayerTeam.Invoke(null, args); + return args.Handled; + } + /// /// For use in a PlayerSlot event /// @@ -1091,6 +1123,7 @@ namespace TShockAPI {PacketTypes.TileSendSquare, HandleSendTileSquare}, {PacketTypes.ProjectileNew, HandleProjectileNew}, {PacketTypes.TogglePvp, HandleTogglePvp}, + {PacketTypes.PlayerTeam, HandlePlayerTeam}, {PacketTypes.TileKill, HandleTileKill}, {PacketTypes.PlayerKillMe, HandlePlayerKillMe}, {PacketTypes.LiquidSet, HandleLiquidSet}, @@ -1774,6 +1807,25 @@ namespace TShockAPI return true; } + private static bool HandlePlayerTeam(GetDataHandlerArgs args) + { + byte id = args.Data.ReadInt8(); + byte team = args.Data.ReadInt8(); + if (OnPlayerTeam(id, team)) + return true; + + if (id != args.Player.Index) + { + return true; + } + + args.TPlayer.team = team; + + NetMessage.SendData((int)PacketTypes.PlayerTeam, -1, -1, "", args.Player.Index); + + return true; + } + private static bool HandlePlayerUpdate(GetDataHandlerArgs args) { var plr = args.Data.ReadInt8();