diff --git a/src/resources/objects/player/PlayerObject.java b/src/resources/objects/player/PlayerObject.java index e2c40a205..0a7f6d8bb 100644 --- a/src/resources/objects/player/PlayerObject.java +++ b/src/resources/objects/player/PlayerObject.java @@ -39,6 +39,7 @@ import resources.objects.intangible.IntangibleObject; import resources.objects.waypoint.WaypointObject; import resources.player.AccessLevel; import resources.player.Player; +import resources.player.PlayerFlags; import utilities.MathUtils; import utilities.Encoder.StringType; @@ -335,20 +336,23 @@ public class PlayerObject extends IntangibleObject { this.profWheelPosition = profWheelPosition; sendDelta(8, 8, profWheelPosition); } - - public void setFlagBitmask(int flagBitmask) { - flagsList.set(0, flagsList.get(0) | flagBitmask); + + public void setFlagBitmask(PlayerFlags ... flags) { + for (PlayerFlags flag : flags) + flagsList.set(0, flagsList.get(0) | flag.getFlag()); sendDelta(3, 5, flagsList); } - public void clearFlagBitmask(int flagBitmask) { - flagsList.set(0, flagsList.get(0) & ~flagBitmask); + public void clearFlagBitmask(PlayerFlags ... flags) { + for (PlayerFlags flag : flags) + flagsList.set(0, flagsList.get(0) & ~flag.getFlag()); sendDelta(3, 5, flagsList); } - public void toggleFlag(int flag) { - if ((flagsList.get(0) & flag) == flag) clearFlagBitmask(flag); - else setFlagBitmask(flag); + public void toggleFlag(PlayerFlags ... flags) { + for (PlayerFlags flag : flags) + flagsList.set(0, flagsList.get(0) ^ flag.getFlag()); + sendDelta(3, 5, flagsList); } private int getProfessionIcon() { diff --git a/src/resources/player/PlayerFlags.java b/src/resources/player/PlayerFlags.java index 5f4281aa2..961fdf68b 100644 --- a/src/resources/player/PlayerFlags.java +++ b/src/resources/player/PlayerFlags.java @@ -27,21 +27,43 @@ ***********************************************************************************/ package resources.player; -public class PlayerFlags { +import java.util.EnumSet; + +public enum PlayerFlags { /** Marks as Looking for a Group */ - public static final int LFG = 0x01; + LFG (0x0001), /** Marks as Helper */ - public static final int HELPER = 0x02; + HELPER (0x0002), /** Marks as Roleplayer */ - public static final int ROLEPLAYER = 0x04; + ROLEPLAYER (0x0004), /** Away from Keyboard */ - public static final int AFK = 0x80; + AFK (0x0080), /** Logged Out */ - public static final int LD = 0x0100; + LD (0x0100), /** Display the Faction Rank */ - public static final int FACTIONRANK = 0x0200; + FACTIONRANK (0x0200), /** Marks as Out of Character */ - public static final int OOC = 0x0800; + OOC (0x0800), /** Marks as Looking for Work */ - public static final int LFW = 0x2000; + LFW (0x2000); + + private int flag; + + PlayerFlags(int flag) { + this.flag = flag; + } + + public int getFlag() { + return flag; + } + + public static EnumSet getFlags(int bits) { + EnumSet flags = EnumSet.noneOf(PlayerFlags.class); + for (PlayerFlags flag : values()) { + if ((flag.getFlag() & bits) != 0) + flags.add(flag); + } + return flags; + } + }