318 result.setPointer(result.javaOwnedInstance.getPointer()); |
318 result.setPointer(result.javaOwnedInstance.getPointer()); |
319 return result; |
319 return result; |
320 } |
320 } |
321 } |
321 } |
322 |
322 |
|
323 public static class ByteArrayPtr extends PointerType { |
|
324 public byte[] deref(int size) { |
|
325 return getPointer().getByteArray(0, size); |
|
326 } |
|
327 |
|
328 public static byte[] deref(ByteArrayPtr ptr, int size) { |
|
329 if(ptr==null && size==0) { |
|
330 return null; |
|
331 } else { |
|
332 return ptr.deref(size); |
|
333 } |
|
334 } |
|
335 |
|
336 public static ByteArrayPtr createJavaOwned(byte[] buffer) { |
|
337 if(buffer == null) { |
|
338 return null; |
|
339 } |
|
340 // no need for javaOwnedInstance here because PointerType |
|
341 // remembers the memory as its Pointer |
|
342 Pointer ptr = new Memory(buffer.length); |
|
343 ptr.write(0, buffer, 0, buffer.length); |
|
344 ByteArrayPtr result = new ByteArrayPtr(); |
|
345 result.setPointer(ptr); |
|
346 return result; |
|
347 } |
|
348 } |
|
349 |
323 static class HogStruct extends Structure { |
350 static class HogStruct extends Structure { |
324 public static class ByVal extends HogStruct implements Structure.ByValue {} |
351 public static class ByVal extends HogStruct implements Structure.ByValue {} |
325 public static class ByRef extends HogStruct implements Structure.ByReference {} |
352 public static class ByRef extends HogStruct implements Structure.ByReference {} |
326 private static String[] FIELD_ORDER = new String[] {"name", "hat", "rounds", "kills", "deaths", "suicides", "difficulty", "initialHealth", "weaponset"}; |
353 private static String[] FIELD_ORDER = new String[] {"name", "hat", "rounds", "kills", "deaths", "suicides", "difficulty", "initialHealth", "weaponset"}; |
327 |
354 |
564 mapgen = map.mapgen; |
591 mapgen = map.mapgen; |
565 name = map.name; |
592 name = map.name; |
566 seed = map.seed; |
593 seed = map.seed; |
567 theme = map.theme; |
594 theme = map.theme; |
568 byte[] buf = map.getDrawData(); |
595 byte[] buf = map.getDrawData(); |
569 if(buf != null) { |
596 drawData = ByteArrayPtr.createJavaOwned(buf); |
570 drawData = new Memory(buf.length); |
597 drawDataSize = NativeSizeT.valueOf(buf==null ? 0 : buf.length); |
571 drawData.write(0, buf, 0, buf.length); |
|
572 drawDataSize = NativeSizeT.valueOf(buf.length); |
|
573 } else { |
|
574 drawData = null; |
|
575 drawDataSize = NativeSizeT.valueOf(0); |
|
576 } |
|
577 templateFilter = map.templateFilter; |
598 templateFilter = map.templateFilter; |
578 mazeSize = map.mazeSize; |
599 mazeSize = map.mazeSize; |
579 } |
600 } |
580 |
601 |
581 public MapRecipe toMapRecipe() { |
602 public MapRecipe toMapRecipe() { |
582 byte[] buf = null; |
603 byte[] buf = ByteArrayPtr.deref(drawData, drawDataSize.intValue()); |
583 if(drawData != null && drawDataSize.intValue()>0) { |
|
584 buf = new byte[drawDataSize.intValue()]; |
|
585 drawData.read(0, buf, 0, drawDataSize.intValue()); |
|
586 } |
|
587 return new MapRecipe(mapgen, templateFilter, mazeSize, name, seed, theme, buf); |
604 return new MapRecipe(mapgen, templateFilter, mazeSize, name, seed, theme, buf); |
588 } |
605 } |
589 |
606 |
590 public int mapgen; |
607 public int mapgen; |
591 public String name; |
608 public String name; |
592 public String seed; |
609 public String seed; |
593 public String theme; |
610 public String theme; |
594 public Pointer drawData; |
611 public ByteArrayPtr drawData; |
595 public NativeSizeT drawDataSize; |
612 public NativeSizeT drawDataSize; |
596 public int templateFilter; |
613 public int templateFilter; |
597 public int mazeSize; |
614 public int mazeSize; |
598 } |
615 } |
599 |
616 |
946 public static interface TeamCallback extends Callback { |
963 public static interface TeamCallback extends Callback { |
947 void callback(Pointer context, TeamPtr arg1); |
964 void callback(Pointer context, TeamPtr arg1); |
948 } |
965 } |
949 |
966 |
950 public static interface BytesCallback extends Callback { |
967 public static interface BytesCallback extends Callback { |
951 void callback(Pointer context, Pointer buffer, NativeSizeT size); |
968 void callback(Pointer context, ByteArrayPtr buffer, NativeSizeT size); |
952 } |
969 } |
953 |
970 |
954 public static interface BytesBoolCallback extends Callback { |
971 public static interface BytesBoolCallback extends Callback { |
955 void callback(Pointer context, Pointer buffer, NativeSizeT size, boolean arg3); |
972 void callback(Pointer context, ByteArrayPtr buffer, NativeSizeT size, boolean arg3); |
956 } |
973 } |
957 |
974 |
958 public static interface SchemeCallback extends Callback { |
975 public static interface SchemeCallback extends Callback { |
959 void callback(Pointer context, SchemePtr arg1); |
976 void callback(Pointer context, SchemePtr arg1); |
960 } |
977 } |
966 public static interface WeaponsetCallback extends Callback { |
983 public static interface WeaponsetCallback extends Callback { |
967 void callback(Pointer context, WeaponsetPtr arg1); |
984 void callback(Pointer context, WeaponsetPtr arg1); |
968 } |
985 } |
969 |
986 |
970 public static interface MapimageCallback extends Callback { |
987 public static interface MapimageCallback extends Callback { |
971 void callback(Pointer context, Pointer buffer, int hedgehogCount); |
988 void callback(Pointer context, ByteArrayPtr buffer, int hedgehogCount); |
972 } |
989 } |
973 |
990 |
974 public static interface LogCallback extends Callback { |
991 public static interface LogCallback extends Callback { |
975 void callback(int level, String logMessage); |
992 void callback(int level, String logMessage); |
976 } |
993 } |
1033 int flib_netconn_send_renameRoom(NetconnPtr conn, String roomName); |
1050 int flib_netconn_send_renameRoom(NetconnPtr conn, String roomName); |
1034 int flib_netconn_send_leaveRoom(NetconnPtr conn, String msg); |
1051 int flib_netconn_send_leaveRoom(NetconnPtr conn, String msg); |
1035 int flib_netconn_send_toggleReady(NetconnPtr conn); |
1052 int flib_netconn_send_toggleReady(NetconnPtr conn); |
1036 int flib_netconn_send_addTeam(NetconnPtr conn, TeamPtr team); |
1053 int flib_netconn_send_addTeam(NetconnPtr conn, TeamPtr team); |
1037 int flib_netconn_send_removeTeam(NetconnPtr conn, String teamname); |
1054 int flib_netconn_send_removeTeam(NetconnPtr conn, String teamname); |
1038 int flib_netconn_send_engineMessage(NetconnPtr conn, Pointer message, NativeSizeT size); |
1055 int flib_netconn_send_engineMessage(NetconnPtr conn, ByteArrayPtr message, NativeSizeT size); |
1039 int flib_netconn_send_teamHogCount(NetconnPtr conn, String teamname, int hogcount); |
1056 int flib_netconn_send_teamHogCount(NetconnPtr conn, String teamname, int hogcount); |
1040 int flib_netconn_send_teamColor(NetconnPtr conn, String teamname, int colorIndex); |
1057 int flib_netconn_send_teamColor(NetconnPtr conn, String teamname, int colorIndex); |
1041 int flib_netconn_send_weaponset(NetconnPtr conn, WeaponsetPtr weaponset); |
1058 int flib_netconn_send_weaponset(NetconnPtr conn, WeaponsetPtr weaponset); |
1042 int flib_netconn_send_map(NetconnPtr conn, MapRecipePtr map); |
1059 int flib_netconn_send_map(NetconnPtr conn, MapRecipePtr map); |
1043 int flib_netconn_send_mapName(NetconnPtr conn, String mapName); |
1060 int flib_netconn_send_mapName(NetconnPtr conn, String mapName); |
1044 int flib_netconn_send_mapGen(NetconnPtr conn, int mapGen); |
1061 int flib_netconn_send_mapGen(NetconnPtr conn, int mapGen); |
1045 int flib_netconn_send_mapTemplate(NetconnPtr conn, int templateFilter); |
1062 int flib_netconn_send_mapTemplate(NetconnPtr conn, int templateFilter); |
1046 int flib_netconn_send_mapMazeSize(NetconnPtr conn, int mazeSize); |
1063 int flib_netconn_send_mapMazeSize(NetconnPtr conn, int mazeSize); |
1047 int flib_netconn_send_mapSeed(NetconnPtr conn, String seed); |
1064 int flib_netconn_send_mapSeed(NetconnPtr conn, String seed); |
1048 int flib_netconn_send_mapTheme(NetconnPtr conn, String theme); |
1065 int flib_netconn_send_mapTheme(NetconnPtr conn, String theme); |
1049 int flib_netconn_send_mapDrawdata(NetconnPtr conn, Pointer drawData, NativeSizeT size); |
1066 int flib_netconn_send_mapDrawdata(NetconnPtr conn, ByteArrayPtr drawData, NativeSizeT size); |
1050 int flib_netconn_send_script(NetconnPtr conn, String scriptName); |
1067 int flib_netconn_send_script(NetconnPtr conn, String scriptName); |
1051 int flib_netconn_send_scheme(NetconnPtr conn, SchemePtr scheme); |
1068 int flib_netconn_send_scheme(NetconnPtr conn, SchemePtr scheme); |
1052 int flib_netconn_send_roundfinished(NetconnPtr conn, boolean withoutError); |
1069 int flib_netconn_send_roundfinished(NetconnPtr conn, boolean withoutError); |
1053 int flib_netconn_send_ban(NetconnPtr conn, String playerName); |
1070 int flib_netconn_send_ban(NetconnPtr conn, String playerName); |
1054 int flib_netconn_send_kick(NetconnPtr conn, String playerName); |
1071 int flib_netconn_send_kick(NetconnPtr conn, String playerName); |
1098 static final int GAME_END_INTERRUPTED = 1; |
1115 static final int GAME_END_INTERRUPTED = 1; |
1099 static final int GAME_END_HALTED = 2; |
1116 static final int GAME_END_HALTED = 2; |
1100 static final int GAME_END_ERROR = 3; |
1117 static final int GAME_END_ERROR = 3; |
1101 |
1118 |
1102 GameconnPtr flib_gameconn_create(String playerName, GameSetupPtr setup, boolean netgame); |
1119 GameconnPtr flib_gameconn_create(String playerName, GameSetupPtr setup, boolean netgame); |
1103 GameconnPtr flib_gameconn_create_playdemo(Pointer demo, NativeSizeT size); |
1120 GameconnPtr flib_gameconn_create_playdemo(ByteArrayPtr demo, NativeSizeT size); |
1104 GameconnPtr flib_gameconn_create_loadgame(String playerName, Pointer save, NativeSizeT size); |
1121 GameconnPtr flib_gameconn_create_loadgame(String playerName, ByteArrayPtr save, NativeSizeT size); |
1105 GameconnPtr flib_gameconn_create_campaign(String playerName, String seed, String script); |
1122 GameconnPtr flib_gameconn_create_campaign(String playerName, String seed, String script); |
1106 |
1123 |
1107 void flib_gameconn_destroy(GameconnPtr conn); |
1124 void flib_gameconn_destroy(GameconnPtr conn); |
1108 int flib_gameconn_getport(GameconnPtr conn); |
1125 int flib_gameconn_getport(GameconnPtr conn); |
1109 void flib_gameconn_tick(GameconnPtr conn); |
1126 void flib_gameconn_tick(GameconnPtr conn); |
1110 |
1127 |
1111 int flib_gameconn_send_enginemsg(GameconnPtr conn, Pointer data, NativeSizeT len); |
1128 int flib_gameconn_send_enginemsg(GameconnPtr conn, ByteArrayPtr data, NativeSizeT len); |
1112 int flib_gameconn_send_textmsg(GameconnPtr conn, int msgtype, String msg); |
1129 int flib_gameconn_send_textmsg(GameconnPtr conn, int msgtype, String msg); |
1113 int flib_gameconn_send_chatmsg(GameconnPtr conn, String playername, String msg); |
1130 int flib_gameconn_send_chatmsg(GameconnPtr conn, String playername, String msg); |
1114 int flib_gameconn_send_quit(GameconnPtr conn); |
1131 int flib_gameconn_send_quit(GameconnPtr conn); |
1115 int flib_gameconn_send_cmd(GameconnPtr conn, String cmdString); |
1132 int flib_gameconn_send_cmd(GameconnPtr conn, String cmdString); |
1116 |
1133 |