mirror of
https://github.com/collinsmith/riiablo.git
synced 2025-02-01 10:24:30 +07:00
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:
parent
df14e4c18f
commit
8c572da389
@ -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;
|
||||
|
@ -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...
|
||||
|
@ -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
|
||||
|
@ -55,5 +55,6 @@ table PlayerP {
|
||||
|
||||
table DS1ObjectWrapperP {
|
||||
act:uint8;
|
||||
type:uint8;
|
||||
id:uint8;
|
||||
}
|
Loading…
Reference in New Issue
Block a user