diff --git a/common/src/main/scala/net/psforever/objects/definition/converter/LockerContainerConverter.scala b/common/src/main/scala/net/psforever/objects/definition/converter/LockerContainerConverter.scala index b01a363c..c9bc0785 100644 --- a/common/src/main/scala/net/psforever/objects/definition/converter/LockerContainerConverter.scala +++ b/common/src/main/scala/net/psforever/objects/definition/converter/LockerContainerConverter.scala @@ -15,8 +15,12 @@ class LockerContainerConverter extends ObjectCreateConverter[LockerContainer]() } override def DetailedConstructorData(obj : LockerContainer) : Try[DetailedLockerContainerData] = { - val contents : Option[List[InternalSlot]] = if(obj.Inventory.Size > 0) { Some(MakeInventory(obj.Inventory)) } else { None } - Success(DetailedLockerContainerData(8, contents)) + if(obj.Inventory.Size > 0) { + Success(DetailedLockerContainerData(8, Some(InventoryData(MakeInventory(obj.Inventory))))) + } + else { + Success(DetailedLockerContainerData(8, None)) + } } /** diff --git a/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedLockerContainerData.scala b/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedLockerContainerData.scala index ef60dcb6..cae75cd8 100644 --- a/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedLockerContainerData.scala +++ b/common/src/main/scala/net/psforever/packet/game/objectcreate/DetailedLockerContainerData.scala @@ -15,20 +15,14 @@ import shapeless.{::, HNil} * Items are generally added and removed in the same way as with any other opened inventory. * Unlike other inventories, however, locker space is personal to an avatar and can not be accessed by other players. * @param unk na - * @param contents the items in the inventory + * @param inventory the items in this inventory */ final case class DetailedLockerContainerData(unk : Int, - contents : Option[List[InternalSlot]] + inventory : Option[InventoryData] ) extends ConstructorData { override def bitsize : Long = { val base : Long = 40L - var invSize : Long = 0L //length of all items in inventory - if(contents.isDefined) { - invSize = InventoryData.BaseSize - for(item <- contents.get) { - invSize += item.bitsize - } - } + val invSize : Long = if(inventory.isDefined) { inventory.get.bitsize } else { 0L } base + invSize } } @@ -45,11 +39,11 @@ object DetailedLockerContainerData extends Marshallable[DetailedLockerContainerD /** * Overloaded constructor for creating `DetailedLockerContainerData` containing known items. * @param unk na - * @param contents the items in the inventory + * @param inventory the items in the inventory * @return a `DetailedLockerContainerData` object */ - def apply(unk : Int, contents : List[InternalSlot]) : DetailedLockerContainerData = - new DetailedLockerContainerData(unk, Some(contents)) + def apply(unk : Int, inventory : List[InternalSlot]) : DetailedLockerContainerData = + new DetailedLockerContainerData(unk, Some(InventoryData(inventory))) /** * Overloaded constructor for creating `DetailedLockerContainerData` while masking use of `InternalSlot`. @@ -73,8 +67,8 @@ object DetailedLockerContainerData extends Marshallable[DetailedLockerContainerD case 0xC :: unk :: 0 :: 1 :: None :: HNil => Attempt.successful(DetailedLockerContainerData(unk, None)) - case 0xC :: unk :: 0 :: 1 :: Some(InventoryData(list)) :: HNil => - Attempt.successful(DetailedLockerContainerData(unk, Some(list))) + case 0xC :: unk :: 0 :: 1 :: Some(inv) :: HNil => + Attempt.successful(DetailedLockerContainerData(unk, Some(inv))) case _ => Attempt.failure(Err(s"invalid locker container data format")) }, @@ -82,8 +76,8 @@ object DetailedLockerContainerData extends Marshallable[DetailedLockerContainerD case DetailedLockerContainerData(unk, None) => Attempt.successful(0xC :: unk :: 0 :: 1 :: None :: HNil) - case DetailedLockerContainerData(unk, Some(list)) => - Attempt.successful(0xC :: unk :: 0 :: 1 :: Some(InventoryData(list)) :: HNil) + case DetailedLockerContainerData(unk, Some(inv)) => + Attempt.successful(0xC :: unk :: 0 :: 1 :: Some(inv) :: HNil) } ) } diff --git a/common/src/test/scala/game/ObjectCreateDetailedMessageTest.scala b/common/src/test/scala/game/ObjectCreateDetailedMessageTest.scala index 81314a8c..dfccf584 100644 --- a/common/src/test/scala/game/ObjectCreateDetailedMessageTest.scala +++ b/common/src/test/scala/game/ObjectCreateDetailedMessageTest.scala @@ -261,7 +261,7 @@ class ObjectCreateDetailedMessageTest extends Specification { inventory(3).guid mustEqual PlanetSideGUID(82) inventory(3).parentSlot mustEqual 5 inventory(3).obj.isInstanceOf[DetailedLockerContainerData] mustEqual true - inventory(3).obj.asInstanceOf[DetailedLockerContainerData].contents.isDefined mustEqual false + inventory(3).obj.asInstanceOf[DetailedLockerContainerData].inventory.isDefined mustEqual false //4 inventory(4).objectClass mustEqual ObjectClass.bullet_9mm inventory(4).guid mustEqual PlanetSideGUID(83)