From 58df91a7fa98b93bddb1ba95ba94f9efd924344b Mon Sep 17 00:00:00 2001 From: Josh Larson Date: Sat, 1 Sep 2018 21:15:29 -0500 Subject: [PATCH] Changed UpdatePvpStatusMessage to use EnumSet for flags --- .../swg/zone/UpdatePvpStatusMessage.java | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/projectswg/common/network/packets/swg/zone/UpdatePvpStatusMessage.java b/src/main/java/com/projectswg/common/network/packets/swg/zone/UpdatePvpStatusMessage.java index 3c7b251..e760c80 100644 --- a/src/main/java/com/projectswg/common/network/packets/swg/zone/UpdatePvpStatusMessage.java +++ b/src/main/java/com/projectswg/common/network/packets/swg/zone/UpdatePvpStatusMessage.java @@ -26,29 +26,30 @@ ***********************************************************************************/ package com.projectswg.common.network.packets.swg.zone; -import java.util.Arrays; -import java.util.EnumSet; - import com.projectswg.common.data.encodables.tangible.PvpFaction; import com.projectswg.common.data.encodables.tangible.PvpFlag; import com.projectswg.common.network.NetBuffer; import com.projectswg.common.network.packets.SWGPacket; +import java.util.Collections; +import java.util.EnumSet; +import java.util.Set; + public class UpdatePvpStatusMessage extends SWGPacket { public static final int CRC = getCrc("UpdatePvpStatusMessage"); - private PvpFlag[] pvpFlags; + private EnumSet pvpFlags; private PvpFaction pvpFaction; private long objId; public UpdatePvpStatusMessage() { - pvpFlags = new PvpFlag[]{PvpFlag.PLAYER}; + pvpFlags = EnumSet.noneOf(PvpFlag.class); pvpFaction = PvpFaction.NEUTRAL; objId = 0; } - public UpdatePvpStatusMessage(PvpFaction pvpFaction, long objId, PvpFlag... pvpFlags) { - this.pvpFlags = pvpFlags; + public UpdatePvpStatusMessage(PvpFaction pvpFaction, long objId, Set pvpFlags) { + this.pvpFlags = EnumSet.copyOf(pvpFlags); this.pvpFaction = pvpFaction; this.objId = objId; } @@ -56,24 +57,18 @@ public class UpdatePvpStatusMessage extends SWGPacket { public void decode(NetBuffer data) { if (!super.checkDecode(data, CRC)) return; - EnumSet enumFlags = PvpFlag.getFlags(data.getInt()); - pvpFlags = enumFlags.toArray(new PvpFlag[enumFlags.size()]); + pvpFlags = PvpFlag.getFlags(data.getInt()); pvpFaction = PvpFaction.getFactionForCrc(data.getInt()); objId = data.getLong(); } public NetBuffer encode() { - int length = 22; - int flagBitmask = 0; - NetBuffer data = NetBuffer.allocate(length); - - for(PvpFlag pvpFlag : pvpFlags) - flagBitmask |= pvpFlag.getBitmask(); + NetBuffer data = NetBuffer.allocate(22); data.addShort(4); data.addInt(CRC); - data.addInt(flagBitmask); + data.addInt(pvpFlags.stream().mapToInt(PvpFlag::getBitmask).reduce(0, (a, b) -> a | b)); data.addInt(pvpFaction.getCrc()); data.addLong(objId); return data; @@ -81,14 +76,14 @@ public class UpdatePvpStatusMessage extends SWGPacket { public long getObjectId() { return objId; } public PvpFaction getPlayerFaction() { return pvpFaction; } - public PvpFlag[] getPvpFlags() { return pvpFlags; } + public Set getPvpFlags() { return Collections.unmodifiableSet(pvpFlags); } @Override protected String getPacketData() { return createPacketInformation( "objId", objId, "faction", pvpFaction, - "flags", Arrays.toString(pvpFlags) + "flags", pvpFlags ); }