Here’s a small example of how I would save and load my data.
public class Inventory
{
public final ArrayList<InventoryItem> items = new ArrayList<InventoryItem>();
public static byte] toBytes(Inventory inventory)
{
if(inventory == null)
{
return new byte[0];
}
ByteDataWriter writer = .writeByteData();
{// writes the data >>
writer.addInteger(inventory.items.size());
for(InventoryItem item : inventory.items)
{
writer.addByteArray(InventoryItem.toBytes(item));
}
}// writes the data <<
return writer.getBytes();
}
public static Inventory fromBytes(byte] bytes)
{
if((bytes == null) || (bytes.length == 0))
{
return null;
}
ByteDataReader reader = .readByteData(bytes);
Inventory inventory = new Inventory();
{// reads the data >>
int itemCount = reader.getInteger();
for(int i = 0; i < itemCount; i++)
{
inventory.items.add(InventoryItem.fromBytes(reader.getByteArray()));
}
}// reads the data <<
return inventory;
}
}
public class InventoryItem
{
private int itemId = 0;
public static byte] toBytes(InventoryItem item)
{
if(item == null)
{
return new byte[0];
}
ByteDataWriter writer = .writeByteData();
{// writes the data >>
writer.addInteger(item.itemId);
}// writes the data <<
return writer.getBytes();
}
public static InventoryItem fromBytes(byte] bytes)
{
if((bytes == null) || (bytes.length == 0))
{
return null;
}
ByteDataReader reader = .readByteData(bytes);
InventoryItem item = new InventoryItem();
{// reads the data >>
item.itemId = reader.getInteger();
}// reads the data <<
return item;
}
}