Added type field to Sync flatbuffer

Added type field to Sync flatbuffer
Replaced findPlayer and findDS1ObjectWrapper with findTable that uses generics
This commit is contained in:
Collin Smith 2019-12-26 02:03:47 -08:00
parent df14e4c18f
commit 8c572da389
4 changed files with 29 additions and 26 deletions

View File

@ -16,20 +16,24 @@ public final class DS1ObjectWrapperP extends Table {
public DS1ObjectWrapperP __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
public int act() { int o = __offset(4); return o != 0 ? bb.get(o + bb_pos) & 0xFF : 0; }
public int id() { int o = __offset(6); return o != 0 ? bb.get(o + bb_pos) & 0xFF : 0; }
public int type() { int o = __offset(6); return o != 0 ? bb.get(o + bb_pos) & 0xFF : 0; }
public int id() { int o = __offset(8); return o != 0 ? bb.get(o + bb_pos) & 0xFF : 0; }
public static int createDS1ObjectWrapperP(FlatBufferBuilder builder,
int act,
int type,
int id) {
builder.startObject(2);
builder.startObject(3);
DS1ObjectWrapperP.addId(builder, id);
DS1ObjectWrapperP.addType(builder, type);
DS1ObjectWrapperP.addAct(builder, act);
return DS1ObjectWrapperP.endDS1ObjectWrapperP(builder);
}
public static void startDS1ObjectWrapperP(FlatBufferBuilder builder) { builder.startObject(2); }
public static void startDS1ObjectWrapperP(FlatBufferBuilder builder) { builder.startObject(3); }
public static void addAct(FlatBufferBuilder builder, int act) { builder.addByte(0, (byte)act, (byte)0); }
public static void addId(FlatBufferBuilder builder, int id) { builder.addByte(1, (byte)id, (byte)0); }
public static void addType(FlatBufferBuilder builder, int type) { builder.addByte(1, (byte)type, (byte)0); }
public static void addId(FlatBufferBuilder builder, int id) { builder.addByte(2, (byte)id, (byte)0); }
public static int endDS1ObjectWrapperP(FlatBufferBuilder builder) {
int o = builder.endObject();
return o;

View File

@ -204,20 +204,12 @@ public class ClientNetworkReceiver extends IntervalSystem {
return -1;
}
private DS1ObjectWrapperP findDS1ObjectWrapper(Sync s) {
for (int i = 0, len = s.dataTypeLength(); i < len; i++) {
if (s.dataType(i) == SyncData.DS1ObjectWrapperP) {
return (DS1ObjectWrapperP) s.data(new DS1ObjectWrapperP(), i);
}
}
return null;
}
private PlayerP findPlayer(Sync s) {
for (int i = 0, len = s.dataTypeLength(); i < len; i++) {
if (s.dataType(i) == SyncData.PlayerP) {
return (PlayerP) s.data(new PlayerP(), i);
private <T extends Table> T findTable(Sync s, byte dataType, T table) {
ByteBuffer dataTypes = s.dataTypeAsByteBuffer();
for (int i = 0; dataTypes.hasRemaining(); i++) {
if (dataTypes.get() == dataType) {
s.data(table, i);
return table;
}
}
@ -228,10 +220,18 @@ public class ClientNetworkReceiver extends IntervalSystem {
assert syncIds.get(sync.entityId()) == Engine.INVALID_ENTITY;
Class.Type type = Class.Type.valueOf(findType(sync));
switch (type) {
case OBJ:
case OBJ: {
DS1ObjectWrapperP ds1ObjectWrapper = findTable(sync, SyncData.DS1ObjectWrapperP, new DS1ObjectWrapperP());
if (ds1ObjectWrapper != null) {
// String objectType = Riiablo.files.obj.getType1(ds1ObjectWrapper.act(), ds1ObjectWrapper.id());
// int entityId = factory.createStaticObject(map, null, null, object, 0, 0);
// return entityId;
}
return Engine.INVALID_ENTITY;
case MON:
DS1ObjectWrapperP ds1ObjectWrapper = findDS1ObjectWrapper(sync);
}
case MON: {
DS1ObjectWrapperP ds1ObjectWrapper = findTable(sync, SyncData.DS1ObjectWrapperP, new DS1ObjectWrapperP());
if (ds1ObjectWrapper != null) {
Vector2 origin = map.find(Map.ID.TOWN_ENTRY_1);
if (origin == null) origin = map.find(Map.ID.TOWN_ENTRY_2);
@ -240,14 +240,13 @@ public class ClientNetworkReceiver extends IntervalSystem {
String objectType = Riiablo.files.MonPreset.getPlace(ds1ObjectWrapper.act(), ds1ObjectWrapper.id());
MonStats.Entry monstats = Riiablo.files.monstats.get(objectType);
int entityId = factory.createMonster(map, zone, monstats, 0, 0);
// syncIds.put(sync.entityId(), entityId);
System.out.println("testa creating monster " + monstats.Code);
return entityId;
}
return Engine.INVALID_ENTITY;
}
case PLR: {
PlayerP player = findPlayer(sync);
PlayerP player = findTable(sync, SyncData.PlayerP, new PlayerP());
CharData charData = new CharData().createD2S(player.charName(), CharacterClass.get(player.charClass()));
// TODO: assert entity id is player
@ -257,7 +256,6 @@ public class ClientNetworkReceiver extends IntervalSystem {
if (origin == null) origin = map.find(Map.ID.TP_LOCATION);
Map.Zone zone = map.getZone(origin);
int entityId = factory.createPlayer(map, zone, charData, origin);
// syncIds.put(sync.entityId(), entityId);
cofs.setMode(entityId, Engine.Player.MODE_TN);
cofs.setWClass(entityId, Engine.WEAPON_1HS); // TODO...

View File

@ -17,7 +17,7 @@ public class DS1ObjectWrapperSerializer implements FlatBuffersSerializer<DS1Obje
@Override
public int putData(FlatBufferBuilder builder, DS1ObjectWrapper c) {
return DS1ObjectWrapperP.createDS1ObjectWrapperP(builder, c.ds1.getAct(), c.object.id);
return DS1ObjectWrapperP.createDS1ObjectWrapperP(builder, c.ds1.getAct(), c.object.type, c.object.id);
}
@Override

View File

@ -55,5 +55,6 @@ table PlayerP {
table DS1ObjectWrapperP {
act:uint8;
type:uint8;
id:uint8;
}