From 05901f5562ddc93d08832321f86e9a5f2d5e6449 Mon Sep 17 00:00:00 2001 From: vjurenka Date: Thu, 13 Nov 2014 18:17:06 +0100 Subject: [PATCH] BWAPI4 experimental support & BWMIrror 1.1 generator --- bwapi/Bullet.java | 71 +- bwapi/BulletType.java | 9 +- bwapi/Client.java | 26 +- bwapi/CommandType/Enum.java | 3 - bwapi/DamageType.java | 10 +- bwapi/Event.java | 28 +- bwapi/ExplosionType.java | 9 +- bwapi/Force.java | 8 +- bwapi/Game.java | 183 +- bwapi/GameType.java | 10 +- bwapi/Mirror.java | 4 +- bwapi/Order.java | 9 +- bwapi/Player.java | 71 +- bwapi/PlayerType.java | 10 +- bwapi/Race.java | 22 +- bwapi/Region.java | 31 +- bwapi/ShapeType/Enum.java | 3 - bwapi/TechType.java | 25 +- bwapi/Unit.java | 329 +- bwapi/UnitCommand.java | 12 +- bwapi/UnitCommandType.java | 11 +- bwapi/UnitSizeType.java | 10 +- bwapi/UnitType.java | 109 +- bwapi/UpgradeType.java | 22 +- bwapi/WeaponType.java | 51 +- bwapi4-includes/BWAPI.h | 63 + bwapi4-includes/BWAPI/AIModule.h | 224 + bwapi4-includes/BWAPI/ArithmaticFilter.h | 0 bwapi4-includes/BWAPI/BestFilter.h | 58 + bwapi4-includes/BWAPI/Bullet.h | 167 + bwapi4-includes/BWAPI/BulletType.h | 120 + bwapi4-includes/BWAPI/Bulletset.h | 18 + bwapi4-includes/BWAPI/Client.h | 17 + bwapi4-includes/BWAPI/Client/BulletData.h | 23 + bwapi4-includes/BWAPI/Client/BulletImpl.h | 33 + bwapi4-includes/BWAPI/Client/Client.h | 34 + bwapi4-includes/BWAPI/Client/Command.h | 23 + bwapi4-includes/BWAPI/Client/CommandType.h | 33 + bwapi4-includes/BWAPI/Client/Event.h | 14 + bwapi4-includes/BWAPI/Client/ForceData.h | 9 + bwapi4-includes/BWAPI/Client/ForceImpl.h | 23 + bwapi4-includes/BWAPI/Client/GameData.h | 163 + bwapi4-includes/BWAPI/Client/GameImpl.h | 205 + bwapi4-includes/BWAPI/Client/GameTable.h | 30 + bwapi4-includes/BWAPI/Client/PlayerData.h | 59 + bwapi4-includes/BWAPI/Client/PlayerImpl.h | 75 + bwapi4-includes/BWAPI/Client/RegionData.h | 25 + bwapi4-includes/BWAPI/Client/RegionImpl.h | 39 + bwapi4-includes/BWAPI/Client/Shape.h | 48 + bwapi4-includes/BWAPI/Client/ShapeType.h | 22 + bwapi4-includes/BWAPI/Client/UnitCommand.h | 20 + bwapi4-includes/BWAPI/Client/UnitData.h | 111 + bwapi4-includes/BWAPI/Client/UnitImpl.h | 242 + bwapi4-includes/BWAPI/Color.h | 209 + bwapi4-includes/BWAPI/ComparisonFilter.h | 92 + bwapi4-includes/BWAPI/ConstVectorset.h | 364 + bwapi4-includes/BWAPI/Constants.h | 6 + bwapi4-includes/BWAPI/CoordinateType.h | 14 + bwapi4-includes/BWAPI/DamageType.h | 52 + bwapi4-includes/BWAPI/Error.h | 103 + bwapi4-includes/BWAPI/Event.h | 64 + bwapi4-includes/BWAPI/EventType.h | 30 + bwapi4-includes/BWAPI/ExplosionType.h | 89 + bwapi4-includes/BWAPI/Filters.h | 194 + bwapi4-includes/BWAPI/Flag.h | 18 + bwapi4-includes/BWAPI/Force.h | 63 + bwapi4-includes/BWAPI/Forceset.h | 25 + bwapi4-includes/BWAPI/Game.h | 1531 ++++ bwapi4-includes/BWAPI/GameType.h | 73 + bwapi4-includes/BWAPI/Input.h | 247 + bwapi4-includes/BWAPI/Interface.h | 131 + bwapi4-includes/BWAPI/InterfaceEvent.h | 142 + bwapi4-includes/BWAPI/Latency.h | 17 + bwapi4-includes/BWAPI/Order.h | 391 + bwapi4-includes/BWAPI/Player.h | 592 ++ bwapi4-includes/BWAPI/PlayerType.h | 65 + bwapi4-includes/BWAPI/Playerset.h | 47 + bwapi4-includes/BWAPI/Position.h | 266 + bwapi4-includes/BWAPI/PositionUnit.h | 45 + bwapi4-includes/BWAPI/Race.h | 104 + bwapi4-includes/BWAPI/Region.h | 129 + bwapi4-includes/BWAPI/Regionset.h | 28 + bwapi4-includes/BWAPI/TechType.h | 185 + bwapi4-includes/BWAPI/TournamentAction.h | 25 + bwapi4-includes/BWAPI/Type.h | 172 + bwapi4-includes/BWAPI/UnaryFilter.h | 68 + bwapi4-includes/BWAPI/Unit.h | 2004 +++++ bwapi4-includes/BWAPI/UnitCommand.h | 81 + bwapi4-includes/BWAPI/UnitCommandType.h | 130 + bwapi4-includes/BWAPI/UnitSizeType.h | 52 + bwapi4-includes/BWAPI/UnitType.h | 1025 +++ bwapi4-includes/BWAPI/Unitset.h | 191 + bwapi4-includes/BWAPI/UpgradeType.h | 183 + bwapi4-includes/BWAPI/Vectorset.h | 520 ++ bwapi4-includes/BWAPI/Vectorset_iterator.h | 117 + bwapi4-includes/BWAPI/WeaponType.h | 333 + bwapi4-includes/swig.i | 261 + bwapi4/AIModule.java | 133 + bwapi4/BestFilter.java | 31 + bwapi4/BestUnitFilter.java | 31 + bwapi4/Bullet.java | 115 + bwapi4/BulletType.java | 31 + bwapi4/Bulletset.java | 31 + bwapi4/Client.java | 55 + bwapi4/Color.java | 73 + bwapi4/CommandType/Enum.java | 41 + bwapi4/CompareFilter.java | 31 + bwapi4/CoordinateType/Enum.java | 27 + bwapi4/DamageType.java | 31 + bwapi4/Enum/Enum.java | 126 + bwapi4/Error.java | 31 + bwapi4/Event.java | 61 + bwapi4/EventType/Enum.java | 41 + bwapi4/ExplosionType.java | 31 + bwapi4/Flag/Enum.java | 25 + bwapi4/Force.java | 49 + bwapi4/Forceset.java | 37 + bwapi4/Game.java | 1363 +++ bwapi4/GameType.java | 31 + bwapi4/GameWrapper.java | 37 + bwapi4/InterfaceEvent.java | 43 + bwapi4/Key.java | 251 + bwapi4/Latency/Enum.java | 29 + bwapi4/MouseButton.java | 27 + bwapi4/Order.java | 31 + bwapi4/Player.java | 391 + bwapi4/PlayerType.java | 31 + bwapi4/Playerset.java | 55 + bwapi4/Point.java | 43 + bwapi4/Position.java | 86 + bwapi4/PositionOrUnit.java | 55 + bwapi4/Race.java | 31 + bwapi4/Region.java | 115 + bwapi4/Regionset.java | 43 + bwapi4/ShapeType/Enum.java | 30 + bwapi4/TechType.java | 31 + bwapi4/Text/Enum.java | 49 + bwapi4/Text/Size/Enum.java | 26 + bwapi4/TilePosition.java | 85 + bwapi4/Tournament/ActionID.java | 35 + bwapi4/UnaryFilter.java | 31 + bwapi4/Unit.java | 2773 ++++++ bwapi4/UnitCommand.java | 37 + bwapi4/UnitCommandType.java | 31 + bwapi4/UnitFilter.java | 31 + bwapi4/UnitSizeType.java | 31 + bwapi4/UnitType.java | 31 + bwapi4/Unitset.java | 391 + bwapi4/UpgradeType.java | 31 + bwapi4/WalkPosition.java | 83 + bwapi4/WeaponType.java | 31 + bwapi_bridge.dll | Bin 1758720 -> 1758720 bytes bwapi_bridge.exp | Bin 139071 -> 139071 bytes bwapi_bridge.lib | Bin 233926 -> 233926 bytes bwapi_bridge1_1.exp | Bin 0 -> 139076 bytes bwmirror_v1_0.jar | Bin 955322 -> 0 bytes bwmirror_v1_1.jar | Bin 0 -> 955754 bytes bwta/BWTA.java | 96 - bwta/BaseLocation.java | 48 +- bwta/Chokepoint.java | 16 +- bwta/Polygon.java | 27 +- bwta/Region.java | 32 +- c4/impl.cpp | 4690 ++++++++++ compiled/bwapi/Bullet.class | Bin 2405 -> 2422 bytes compiled/bwapi/BulletType.class | Bin 2021 -> 2038 bytes compiled/bwapi/Client.class | Bin 1226 -> 1243 bytes compiled/bwapi/CommandType/Enum.class | Bin 2161 -> 2161 bytes compiled/bwapi/DamageType.class | Bin 1197 -> 1214 bytes compiled/bwapi/Event.class | Bin 1472 -> 1489 bytes compiled/bwapi/ExplosionType.class | Bin 1599 -> 1616 bytes compiled/bwapi/Force.class | Bin 1293 -> 1310 bytes compiled/bwapi/Game.class | Bin 22163 -> 22180 bytes compiled/bwapi/GameType.class | Bin 1406 -> 1423 bytes compiled/bwapi/Mirror.class | Bin 3233 -> 3236 bytes compiled/bwapi/Order.class | Bin 4549 -> 4566 bytes compiled/bwapi/Player.class | Bin 7032 -> 7049 bytes compiled/bwapi/PlayerType.class | Bin 1292 -> 1309 bytes compiled/bwapi/Race.class | Bin 1696 -> 1713 bytes compiled/bwapi/Region.class | Bin 2351 -> 2368 bytes compiled/bwapi/ShapeType/Enum.class | Bin 1253 -> 1253 bytes compiled/bwapi/TechType.class | Bin 3254 -> 3271 bytes compiled/bwapi/Unit.class | Bin 21386 -> 21403 bytes compiled/bwapi/UnitCommand.class | Bin 994 -> 1011 bytes compiled/bwapi/UnitCommandType.class | Bin 2041 -> 2058 bytes compiled/bwapi/UnitSizeType.class | Bin 1175 -> 1192 bytes compiled/bwapi/UnitType.class | Bin 14723 -> 14740 bytes compiled/bwapi/UpgradeType.class | Bin 4136 -> 4153 bytes compiled/bwapi/WeaponType.class | Bin 6648 -> 6665 bytes compiled/bwta/BWTA.class | Bin 1429 -> 1429 bytes compiled/bwta/BaseLocation.class | Bin 2062 -> 2079 bytes compiled/bwta/Chokepoint.class | Bin 1084 -> 1101 bytes compiled/bwta/Polygon.class | Bin 1496 -> 1513 bytes compiled/bwta/Region.class | Bin 1900 -> 1917 bytes compiled4/bwapi4/AIModule.class | Bin 0 -> 2888 bytes compiled4/bwapi4/BestFilter.class | Bin 0 -> 844 bytes compiled4/bwapi4/BestUnitFilter.class | Bin 0 -> 860 bytes compiled4/bwapi4/Bullet.class | Bin 0 -> 2418 bytes compiled4/bwapi4/BulletType.class | Bin 0 -> 844 bytes compiled4/bwapi4/Bulletset.class | Bin 0 -> 840 bytes compiled4/bwapi4/Client.class | Bin 0 -> 1229 bytes compiled4/bwapi4/Color.class | Bin 0 -> 1301 bytes compiled4/bwapi4/CommandType/Enum.class | Bin 0 -> 1980 bytes compiled4/bwapi4/CompareFilter.class | Bin 0 -> 856 bytes compiled4/bwapi4/CoordinateType/Enum.class | Bin 0 -> 1124 bytes compiled4/bwapi4/DamageType.class | Bin 0 -> 844 bytes compiled4/bwapi4/Enum/Enum.class | Bin 0 -> 7934 bytes compiled4/bwapi4/Error.class | Bin 0 -> 824 bytes compiled4/bwapi4/Event.class | Bin 0 -> 1481 bytes compiled4/bwapi4/EventType/Enum.class | Bin 0 -> 1960 bytes compiled4/bwapi4/ExplosionType.class | Bin 0 -> 856 bytes compiled4/bwapi4/Flag/Enum.class | Bin 0 -> 981 bytes compiled4/bwapi4/Force.class | Bin 0 -> 1209 bytes compiled4/bwapi4/Forceset.class | Bin 0 -> 981 bytes compiled4/bwapi4/Game.class | Bin 0 -> 28461 bytes compiled4/bwapi4/GameType.class | Bin 0 -> 836 bytes compiled4/bwapi4/GameWrapper.class | Bin 0 -> 940 bytes compiled4/bwapi4/InterfaceEvent.class | Bin 0 -> 1075 bytes compiled4/bwapi4/Key.class | Bin 0 -> 14818 bytes compiled4/bwapi4/Latency/Enum.class | Bin 0 -> 1226 bytes compiled4/bwapi4/MouseButton.class | Bin 0 -> 1091 bytes compiled4/bwapi4/Order.class | Bin 0 -> 824 bytes compiled4/bwapi4/Player.class | Bin 0 -> 7364 bytes compiled4/bwapi4/PlayerType.class | Bin 0 -> 844 bytes compiled4/bwapi4/Playerset.class | Bin 0 -> 1254 bytes compiled4/bwapi4/Point.class | Bin 0 -> 1038 bytes compiled4/bwapi4/Position.class | Bin 0 -> 1880 bytes compiled4/bwapi4/PositionOrUnit.class | Bin 0 -> 1335 bytes compiled4/bwapi4/Race.class | Bin 0 -> 820 bytes compiled4/bwapi4/Region.class | Bin 0 -> 2539 bytes compiled4/bwapi4/Regionset.class | Bin 0 -> 1157 bytes compiled4/bwapi4/ShapeType/Enum.class | Bin 0 -> 1259 bytes compiled4/bwapi4/TechType.class | Bin 0 -> 836 bytes compiled4/bwapi4/Text/Enum.class | Bin 0 -> 2353 bytes compiled4/bwapi4/Text/Size/Enum.class | Bin 0 -> 1045 bytes compiled4/bwapi4/TilePosition.class | Bin 0 -> 1861 bytes compiled4/bwapi4/Tournament/ActionID.class | Bin 0 -> 1622 bytes compiled4/bwapi4/UnaryFilter.class | Bin 0 -> 848 bytes compiled4/bwapi4/Unit.class | Bin 0 -> 44585 bytes compiled4/bwapi4/UnitCommand.class | Bin 0 -> 999 bytes compiled4/bwapi4/UnitCommandType.class | Bin 0 -> 864 bytes compiled4/bwapi4/UnitFilter.class | Bin 0 -> 844 bytes compiled4/bwapi4/UnitSizeType.class | Bin 0 -> 852 bytes compiled4/bwapi4/UnitType.class | Bin 0 -> 836 bytes compiled4/bwapi4/Unitset.class | Bin 0 -> 7052 bytes compiled4/bwapi4/UpgradeType.class | Bin 0 -> 848 bytes compiled4/bwapi4/WalkPosition.class | Bin 0 -> 1916 bytes compiled4/bwapi4/WeaponType.class | Bin 0 -> 844 bytes concat_header4.h | 7630 +++++++++++++++++ headers/bwapi4_AIModule.h | 149 + headers/bwapi4_BestFilter.h | 13 + headers/bwapi4_BestUnitFilter.h | 13 + headers/bwapi4_Bullet.h | 125 + headers/bwapi4_BulletType.h | 13 + headers/bwapi4_Bulletset.h | 13 + headers/bwapi4_Client.h | 45 + headers/bwapi4_Color.h | 37 + headers/bwapi4_CompareFilter.h | 13 + headers/bwapi4_DamageType.h | 13 + headers/bwapi4_Error.h | 13 + headers/bwapi4_Event.h | 53 + headers/bwapi4_ExplosionType.h | 13 + headers/bwapi4_Force.h | 37 + headers/bwapi4_Forceset.h | 21 + headers/bwapi4_Game.h | 1789 ++++ headers/bwapi4_GameType.h | 13 + headers/bwapi4_GameWrapper.h | 21 + headers/bwapi4_InterfaceEvent.h | 29 + headers/bwapi4_Key.h | 13 + headers/bwapi4_MouseButton.h | 13 + headers/bwapi4_Order.h | 13 + headers/bwapi4_Player.h | 493 ++ headers/bwapi4_PlayerType.h | 13 + headers/bwapi4_Playerset.h | 45 + headers/bwapi4_Point.h | 29 + headers/bwapi4_Position.h | 61 + headers/bwapi4_PositionOrUnit.h | 45 + headers/bwapi4_Race.h | 13 + headers/bwapi4_Region.h | 125 + headers/bwapi4_Regionset.h | 29 + headers/bwapi4_TechType.h | 13 + headers/bwapi4_TilePosition.h | 53 + headers/bwapi4_UnaryFilter.h | 13 + headers/bwapi4_Unit.h | 3669 ++++++++ headers/bwapi4_UnitCommand.h | 21 + headers/bwapi4_UnitCommandType.h | 13 + headers/bwapi4_UnitFilter.h | 13 + headers/bwapi4_UnitSizeType.h | 13 + headers/bwapi4_UnitType.h | 13 + headers/bwapi4_Unitset.h | 493 ++ headers/bwapi4_UpgradeType.h | 13 + headers/bwapi4_WalkPosition.h | 61 + headers/bwapi4_WeaponType.h | 13 + headers4/bwapi4_AIModule.h | 149 + headers4/bwapi4_BestFilter.h | 13 + headers4/bwapi4_BestUnitFilter.h | 13 + headers4/bwapi4_Bullet.h | 125 + headers4/bwapi4_BulletType.h | 13 + headers4/bwapi4_Bulletset.h | 13 + headers4/bwapi4_Client.h | 45 + headers4/bwapi4_Color.h | 37 + headers4/bwapi4_CompareFilter.h | 13 + headers4/bwapi4_DamageType.h | 13 + headers4/bwapi4_Error.h | 13 + headers4/bwapi4_Event.h | 53 + headers4/bwapi4_ExplosionType.h | 13 + headers4/bwapi4_Force.h | 37 + headers4/bwapi4_Forceset.h | 21 + headers4/bwapi4_Game.h | 1789 ++++ headers4/bwapi4_GameType.h | 13 + headers4/bwapi4_GameWrapper.h | 21 + headers4/bwapi4_InterfaceEvent.h | 29 + headers4/bwapi4_Key.h | 13 + headers4/bwapi4_MouseButton.h | 13 + headers4/bwapi4_Order.h | 13 + headers4/bwapi4_Player.h | 493 ++ headers4/bwapi4_PlayerType.h | 13 + headers4/bwapi4_Playerset.h | 45 + headers4/bwapi4_Point.h | 29 + headers4/bwapi4_Position.h | 61 + headers4/bwapi4_PositionOrUnit.h | 45 + headers4/bwapi4_Race.h | 13 + headers4/bwapi4_Region.h | 125 + headers4/bwapi4_Regionset.h | 29 + headers4/bwapi4_TechType.h | 13 + headers4/bwapi4_TilePosition.h | 53 + headers4/bwapi4_UnaryFilter.h | 13 + headers4/bwapi4_Unit.h | 3669 ++++++++ headers4/bwapi4_UnitCommand.h | 21 + headers4/bwapi4_UnitCommandType.h | 13 + headers4/bwapi4_UnitFilter.h | 13 + headers4/bwapi4_UnitSizeType.h | 13 + headers4/bwapi4_UnitType.h | 13 + headers4/bwapi4_Unitset.h | 493 ++ headers4/bwapi4_UpgradeType.h | 13 + headers4/bwapi4_WalkPosition.h | 61 + headers4/bwapi4_WeaponType.h | 13 + manual-bwapi/Mirror.java | 4 +- manual-bwapi4/BestUnitFilter.java | 31 + manual-bwapi4/Position.java | 86 + manual-bwapi4/TilePosition.java | 85 + manual-bwapi4/UnitFilter.java | 31 + manual-bwapi4/WalkPosition.java | 83 + .../generator/CJavaPipeline$1.class | Bin 685 -> 685 bytes .../generator/CJavaPipeline$2.class | Bin 936 -> 936 bytes .../generator/CJavaPipeline.class | Bin 8664 -> 8991 bytes .../generator/MirrorContext.class | Bin 3104 -> 3309 bytes .../generator/MyJavaCompiler.class | Bin 3566 -> 3750 bytes .../generator/c/HeaderMaker.class | Bin 3268 -> 3380 bytes .../generator/java/ClassMirror.class | Bin 7361 -> 7464 bytes .../generator/java/EnumMirror.class | Bin 3161 -> 3466 bytes .../generator/java/Mirror.class | Bin 3054 -> 2170 bytes .../InvokeGenerator/impl/CApiParser$1.class | Bin 855 -> 855 bytes .../InvokeGenerator/impl/CApiParser.class | Bin 11342 -> 11588 bytes .../test/FunctionRegexTest.class | Bin 1398 -> 1438 bytes .../InvokeGenerator/test/LinesCounter.class | Bin 2155 -> 0 bytes .../InvokeGenerator/test/RegexTest.class | Bin 1369 -> 0 bytes .../InvokeGenerator/util/FileUtils.class | Bin 0 -> 793 bytes src/generator/CJavaPipeline.java | 85 +- src/generator/MirrorContext.java | 3 + src/generator/MyJavaCompiler.java | 7 + src/generator/c/HeaderMaker.java | 6 +- src/generator/java/ClassMirror.java | 3 + src/generator/java/EnumMirror.java | 8 +- src/generator/java/Mirror.java | 49 +- src/impl/CApiParser.java | 33 +- src/test/FunctionRegexTest.java | 5 +- src/util/FileUtils.java | 28 + 367 files changed, 48131 insertions(+), 1289 deletions(-) create mode 100644 bwapi4-includes/BWAPI.h create mode 100644 bwapi4-includes/BWAPI/AIModule.h create mode 100644 bwapi4-includes/BWAPI/ArithmaticFilter.h create mode 100644 bwapi4-includes/BWAPI/BestFilter.h create mode 100644 bwapi4-includes/BWAPI/Bullet.h create mode 100644 bwapi4-includes/BWAPI/BulletType.h create mode 100644 bwapi4-includes/BWAPI/Bulletset.h create mode 100644 bwapi4-includes/BWAPI/Client.h create mode 100644 bwapi4-includes/BWAPI/Client/BulletData.h create mode 100644 bwapi4-includes/BWAPI/Client/BulletImpl.h create mode 100644 bwapi4-includes/BWAPI/Client/Client.h create mode 100644 bwapi4-includes/BWAPI/Client/Command.h create mode 100644 bwapi4-includes/BWAPI/Client/CommandType.h create mode 100644 bwapi4-includes/BWAPI/Client/Event.h create mode 100644 bwapi4-includes/BWAPI/Client/ForceData.h create mode 100644 bwapi4-includes/BWAPI/Client/ForceImpl.h create mode 100644 bwapi4-includes/BWAPI/Client/GameData.h create mode 100644 bwapi4-includes/BWAPI/Client/GameImpl.h create mode 100644 bwapi4-includes/BWAPI/Client/GameTable.h create mode 100644 bwapi4-includes/BWAPI/Client/PlayerData.h create mode 100644 bwapi4-includes/BWAPI/Client/PlayerImpl.h create mode 100644 bwapi4-includes/BWAPI/Client/RegionData.h create mode 100644 bwapi4-includes/BWAPI/Client/RegionImpl.h create mode 100644 bwapi4-includes/BWAPI/Client/Shape.h create mode 100644 bwapi4-includes/BWAPI/Client/ShapeType.h create mode 100644 bwapi4-includes/BWAPI/Client/UnitCommand.h create mode 100644 bwapi4-includes/BWAPI/Client/UnitData.h create mode 100644 bwapi4-includes/BWAPI/Client/UnitImpl.h create mode 100644 bwapi4-includes/BWAPI/Color.h create mode 100644 bwapi4-includes/BWAPI/ComparisonFilter.h create mode 100644 bwapi4-includes/BWAPI/ConstVectorset.h create mode 100644 bwapi4-includes/BWAPI/Constants.h create mode 100644 bwapi4-includes/BWAPI/CoordinateType.h create mode 100644 bwapi4-includes/BWAPI/DamageType.h create mode 100644 bwapi4-includes/BWAPI/Error.h create mode 100644 bwapi4-includes/BWAPI/Event.h create mode 100644 bwapi4-includes/BWAPI/EventType.h create mode 100644 bwapi4-includes/BWAPI/ExplosionType.h create mode 100644 bwapi4-includes/BWAPI/Filters.h create mode 100644 bwapi4-includes/BWAPI/Flag.h create mode 100644 bwapi4-includes/BWAPI/Force.h create mode 100644 bwapi4-includes/BWAPI/Forceset.h create mode 100644 bwapi4-includes/BWAPI/Game.h create mode 100644 bwapi4-includes/BWAPI/GameType.h create mode 100644 bwapi4-includes/BWAPI/Input.h create mode 100644 bwapi4-includes/BWAPI/Interface.h create mode 100644 bwapi4-includes/BWAPI/InterfaceEvent.h create mode 100644 bwapi4-includes/BWAPI/Latency.h create mode 100644 bwapi4-includes/BWAPI/Order.h create mode 100644 bwapi4-includes/BWAPI/Player.h create mode 100644 bwapi4-includes/BWAPI/PlayerType.h create mode 100644 bwapi4-includes/BWAPI/Playerset.h create mode 100644 bwapi4-includes/BWAPI/Position.h create mode 100644 bwapi4-includes/BWAPI/PositionUnit.h create mode 100644 bwapi4-includes/BWAPI/Race.h create mode 100644 bwapi4-includes/BWAPI/Region.h create mode 100644 bwapi4-includes/BWAPI/Regionset.h create mode 100644 bwapi4-includes/BWAPI/TechType.h create mode 100644 bwapi4-includes/BWAPI/TournamentAction.h create mode 100644 bwapi4-includes/BWAPI/Type.h create mode 100644 bwapi4-includes/BWAPI/UnaryFilter.h create mode 100644 bwapi4-includes/BWAPI/Unit.h create mode 100644 bwapi4-includes/BWAPI/UnitCommand.h create mode 100644 bwapi4-includes/BWAPI/UnitCommandType.h create mode 100644 bwapi4-includes/BWAPI/UnitSizeType.h create mode 100644 bwapi4-includes/BWAPI/UnitType.h create mode 100644 bwapi4-includes/BWAPI/Unitset.h create mode 100644 bwapi4-includes/BWAPI/UpgradeType.h create mode 100644 bwapi4-includes/BWAPI/Vectorset.h create mode 100644 bwapi4-includes/BWAPI/Vectorset_iterator.h create mode 100644 bwapi4-includes/BWAPI/WeaponType.h create mode 100644 bwapi4-includes/swig.i create mode 100644 bwapi4/AIModule.java create mode 100644 bwapi4/BestFilter.java create mode 100644 bwapi4/BestUnitFilter.java create mode 100644 bwapi4/Bullet.java create mode 100644 bwapi4/BulletType.java create mode 100644 bwapi4/Bulletset.java create mode 100644 bwapi4/Client.java create mode 100644 bwapi4/Color.java create mode 100644 bwapi4/CommandType/Enum.java create mode 100644 bwapi4/CompareFilter.java create mode 100644 bwapi4/CoordinateType/Enum.java create mode 100644 bwapi4/DamageType.java create mode 100644 bwapi4/Enum/Enum.java create mode 100644 bwapi4/Error.java create mode 100644 bwapi4/Event.java create mode 100644 bwapi4/EventType/Enum.java create mode 100644 bwapi4/ExplosionType.java create mode 100644 bwapi4/Flag/Enum.java create mode 100644 bwapi4/Force.java create mode 100644 bwapi4/Forceset.java create mode 100644 bwapi4/Game.java create mode 100644 bwapi4/GameType.java create mode 100644 bwapi4/GameWrapper.java create mode 100644 bwapi4/InterfaceEvent.java create mode 100644 bwapi4/Key.java create mode 100644 bwapi4/Latency/Enum.java create mode 100644 bwapi4/MouseButton.java create mode 100644 bwapi4/Order.java create mode 100644 bwapi4/Player.java create mode 100644 bwapi4/PlayerType.java create mode 100644 bwapi4/Playerset.java create mode 100644 bwapi4/Point.java create mode 100644 bwapi4/Position.java create mode 100644 bwapi4/PositionOrUnit.java create mode 100644 bwapi4/Race.java create mode 100644 bwapi4/Region.java create mode 100644 bwapi4/Regionset.java create mode 100644 bwapi4/ShapeType/Enum.java create mode 100644 bwapi4/TechType.java create mode 100644 bwapi4/Text/Enum.java create mode 100644 bwapi4/Text/Size/Enum.java create mode 100644 bwapi4/TilePosition.java create mode 100644 bwapi4/Tournament/ActionID.java create mode 100644 bwapi4/UnaryFilter.java create mode 100644 bwapi4/Unit.java create mode 100644 bwapi4/UnitCommand.java create mode 100644 bwapi4/UnitCommandType.java create mode 100644 bwapi4/UnitFilter.java create mode 100644 bwapi4/UnitSizeType.java create mode 100644 bwapi4/UnitType.java create mode 100644 bwapi4/Unitset.java create mode 100644 bwapi4/UpgradeType.java create mode 100644 bwapi4/WalkPosition.java create mode 100644 bwapi4/WeaponType.java create mode 100644 bwapi_bridge1_1.exp delete mode 100644 bwmirror_v1_0.jar create mode 100644 bwmirror_v1_1.jar create mode 100644 c4/impl.cpp create mode 100644 compiled4/bwapi4/AIModule.class create mode 100644 compiled4/bwapi4/BestFilter.class create mode 100644 compiled4/bwapi4/BestUnitFilter.class create mode 100644 compiled4/bwapi4/Bullet.class create mode 100644 compiled4/bwapi4/BulletType.class create mode 100644 compiled4/bwapi4/Bulletset.class create mode 100644 compiled4/bwapi4/Client.class create mode 100644 compiled4/bwapi4/Color.class create mode 100644 compiled4/bwapi4/CommandType/Enum.class create mode 100644 compiled4/bwapi4/CompareFilter.class create mode 100644 compiled4/bwapi4/CoordinateType/Enum.class create mode 100644 compiled4/bwapi4/DamageType.class create mode 100644 compiled4/bwapi4/Enum/Enum.class create mode 100644 compiled4/bwapi4/Error.class create mode 100644 compiled4/bwapi4/Event.class create mode 100644 compiled4/bwapi4/EventType/Enum.class create mode 100644 compiled4/bwapi4/ExplosionType.class create mode 100644 compiled4/bwapi4/Flag/Enum.class create mode 100644 compiled4/bwapi4/Force.class create mode 100644 compiled4/bwapi4/Forceset.class create mode 100644 compiled4/bwapi4/Game.class create mode 100644 compiled4/bwapi4/GameType.class create mode 100644 compiled4/bwapi4/GameWrapper.class create mode 100644 compiled4/bwapi4/InterfaceEvent.class create mode 100644 compiled4/bwapi4/Key.class create mode 100644 compiled4/bwapi4/Latency/Enum.class create mode 100644 compiled4/bwapi4/MouseButton.class create mode 100644 compiled4/bwapi4/Order.class create mode 100644 compiled4/bwapi4/Player.class create mode 100644 compiled4/bwapi4/PlayerType.class create mode 100644 compiled4/bwapi4/Playerset.class create mode 100644 compiled4/bwapi4/Point.class create mode 100644 compiled4/bwapi4/Position.class create mode 100644 compiled4/bwapi4/PositionOrUnit.class create mode 100644 compiled4/bwapi4/Race.class create mode 100644 compiled4/bwapi4/Region.class create mode 100644 compiled4/bwapi4/Regionset.class create mode 100644 compiled4/bwapi4/ShapeType/Enum.class create mode 100644 compiled4/bwapi4/TechType.class create mode 100644 compiled4/bwapi4/Text/Enum.class create mode 100644 compiled4/bwapi4/Text/Size/Enum.class create mode 100644 compiled4/bwapi4/TilePosition.class create mode 100644 compiled4/bwapi4/Tournament/ActionID.class create mode 100644 compiled4/bwapi4/UnaryFilter.class create mode 100644 compiled4/bwapi4/Unit.class create mode 100644 compiled4/bwapi4/UnitCommand.class create mode 100644 compiled4/bwapi4/UnitCommandType.class create mode 100644 compiled4/bwapi4/UnitFilter.class create mode 100644 compiled4/bwapi4/UnitSizeType.class create mode 100644 compiled4/bwapi4/UnitType.class create mode 100644 compiled4/bwapi4/Unitset.class create mode 100644 compiled4/bwapi4/UpgradeType.class create mode 100644 compiled4/bwapi4/WalkPosition.class create mode 100644 compiled4/bwapi4/WeaponType.class create mode 100644 concat_header4.h create mode 100644 headers/bwapi4_AIModule.h create mode 100644 headers/bwapi4_BestFilter.h create mode 100644 headers/bwapi4_BestUnitFilter.h create mode 100644 headers/bwapi4_Bullet.h create mode 100644 headers/bwapi4_BulletType.h create mode 100644 headers/bwapi4_Bulletset.h create mode 100644 headers/bwapi4_Client.h create mode 100644 headers/bwapi4_Color.h create mode 100644 headers/bwapi4_CompareFilter.h create mode 100644 headers/bwapi4_DamageType.h create mode 100644 headers/bwapi4_Error.h create mode 100644 headers/bwapi4_Event.h create mode 100644 headers/bwapi4_ExplosionType.h create mode 100644 headers/bwapi4_Force.h create mode 100644 headers/bwapi4_Forceset.h create mode 100644 headers/bwapi4_Game.h create mode 100644 headers/bwapi4_GameType.h create mode 100644 headers/bwapi4_GameWrapper.h create mode 100644 headers/bwapi4_InterfaceEvent.h create mode 100644 headers/bwapi4_Key.h create mode 100644 headers/bwapi4_MouseButton.h create mode 100644 headers/bwapi4_Order.h create mode 100644 headers/bwapi4_Player.h create mode 100644 headers/bwapi4_PlayerType.h create mode 100644 headers/bwapi4_Playerset.h create mode 100644 headers/bwapi4_Point.h create mode 100644 headers/bwapi4_Position.h create mode 100644 headers/bwapi4_PositionOrUnit.h create mode 100644 headers/bwapi4_Race.h create mode 100644 headers/bwapi4_Region.h create mode 100644 headers/bwapi4_Regionset.h create mode 100644 headers/bwapi4_TechType.h create mode 100644 headers/bwapi4_TilePosition.h create mode 100644 headers/bwapi4_UnaryFilter.h create mode 100644 headers/bwapi4_Unit.h create mode 100644 headers/bwapi4_UnitCommand.h create mode 100644 headers/bwapi4_UnitCommandType.h create mode 100644 headers/bwapi4_UnitFilter.h create mode 100644 headers/bwapi4_UnitSizeType.h create mode 100644 headers/bwapi4_UnitType.h create mode 100644 headers/bwapi4_Unitset.h create mode 100644 headers/bwapi4_UpgradeType.h create mode 100644 headers/bwapi4_WalkPosition.h create mode 100644 headers/bwapi4_WeaponType.h create mode 100644 headers4/bwapi4_AIModule.h create mode 100644 headers4/bwapi4_BestFilter.h create mode 100644 headers4/bwapi4_BestUnitFilter.h create mode 100644 headers4/bwapi4_Bullet.h create mode 100644 headers4/bwapi4_BulletType.h create mode 100644 headers4/bwapi4_Bulletset.h create mode 100644 headers4/bwapi4_Client.h create mode 100644 headers4/bwapi4_Color.h create mode 100644 headers4/bwapi4_CompareFilter.h create mode 100644 headers4/bwapi4_DamageType.h create mode 100644 headers4/bwapi4_Error.h create mode 100644 headers4/bwapi4_Event.h create mode 100644 headers4/bwapi4_ExplosionType.h create mode 100644 headers4/bwapi4_Force.h create mode 100644 headers4/bwapi4_Forceset.h create mode 100644 headers4/bwapi4_Game.h create mode 100644 headers4/bwapi4_GameType.h create mode 100644 headers4/bwapi4_GameWrapper.h create mode 100644 headers4/bwapi4_InterfaceEvent.h create mode 100644 headers4/bwapi4_Key.h create mode 100644 headers4/bwapi4_MouseButton.h create mode 100644 headers4/bwapi4_Order.h create mode 100644 headers4/bwapi4_Player.h create mode 100644 headers4/bwapi4_PlayerType.h create mode 100644 headers4/bwapi4_Playerset.h create mode 100644 headers4/bwapi4_Point.h create mode 100644 headers4/bwapi4_Position.h create mode 100644 headers4/bwapi4_PositionOrUnit.h create mode 100644 headers4/bwapi4_Race.h create mode 100644 headers4/bwapi4_Region.h create mode 100644 headers4/bwapi4_Regionset.h create mode 100644 headers4/bwapi4_TechType.h create mode 100644 headers4/bwapi4_TilePosition.h create mode 100644 headers4/bwapi4_UnaryFilter.h create mode 100644 headers4/bwapi4_Unit.h create mode 100644 headers4/bwapi4_UnitCommand.h create mode 100644 headers4/bwapi4_UnitCommandType.h create mode 100644 headers4/bwapi4_UnitFilter.h create mode 100644 headers4/bwapi4_UnitSizeType.h create mode 100644 headers4/bwapi4_UnitType.h create mode 100644 headers4/bwapi4_Unitset.h create mode 100644 headers4/bwapi4_UpgradeType.h create mode 100644 headers4/bwapi4_WalkPosition.h create mode 100644 headers4/bwapi4_WeaponType.h create mode 100644 manual-bwapi4/BestUnitFilter.java create mode 100644 manual-bwapi4/Position.java create mode 100644 manual-bwapi4/TilePosition.java create mode 100644 manual-bwapi4/UnitFilter.java create mode 100644 manual-bwapi4/WalkPosition.java delete mode 100644 out/production/InvokeGenerator/test/LinesCounter.class delete mode 100644 out/production/InvokeGenerator/test/RegexTest.class create mode 100644 out/production/InvokeGenerator/util/FileUtils.class create mode 100644 src/util/FileUtils.java diff --git a/bwapi/Bullet.java b/bwapi/Bullet.java index fa5594a..561f255 100644 --- a/bwapi/Bullet.java +++ b/bwapi/Bullet.java @@ -7,128 +7,60 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; -/** -The Bullet class is used to get information about individual bullets, missiles, spells, and generally any sort of non-melee attack. Unlike Units, Bullet objects are reused after they are destroyed, however the ID of the bullet is updated when it represents a new bullet. -If Flag::CompleteMapInformation is disabled, then a bullet is accessible if and only if it is visible. If a bullet is not visible, Bullet::exists will return false, regardless of whether or not the bullet exists. This is because absolutely no state information on invisible enemy bullets is made available to the AI. -If Flag::CompleteMapInformation is enabled, then all bullets that exist in the game are accessible, and Bullet::exists is accurate for all bullets. -No message similar to AIModule::onUnitDestroy exists for bullets. To determine if a bullet has been destroyed, check to see if exists() is false or getID() has changed to a new value. - - -*/ public class Bullet { -/** -Returns a unique ID for this bullet. - -*/ public int getID() { return getID_native(pointer); } -/** -Returns the player of the source unit, or NULL if the source unit has been destroyed or is otherwise inaccessible. - -*/ public Player getPlayer() { return getPlayer_native(pointer); } -/** -Returns the type of the bullet. - -*/ public BulletType getType() { return getType_native(pointer); } -/** -Returns the unit that fired the bullet. If the unit is inaccessible (such as a cloaked or burrowed enemy unit with no detection around and complete map information disabled), this will return NULL. - -*/ public Unit getSource() { return getSource_native(pointer); } -/** -Returns the position of the bullet, or an invalid position if the bullet is inaccessible. - -*/ public Position getPosition() { return getPosition_native(pointer); } -/** -Returns the direction the bullet is facing/traveling in, measured in radians. An angle of 0 means the bullet is facing east/right. If the bullet is inaccessible this will return 0. - -*/ public double getAngle() { return getAngle_native(pointer); } -/** -Returns the x component of the bullet's velocity, measured in pixels per frame. If the bullet is inaccessible this will return 0. - -*/ public double getVelocityX() { return getVelocityX_native(pointer); } -/** -Returns the y component of the bullet's velocity, measured in pixels per frame. If the bullet is inaccessible this will return 0. - -*/ public double getVelocityY() { return getVelocityY_native(pointer); } -/** -Returns the unit that the bullet is trying to hit. If the unit is inaccessible (such as a cloaked or burrowed enemy unit with no detection around and complete map information disabled), this will return NULL. If the bullet is inaccessible this will return NULL. - -*/ public Unit getTarget() { return getTarget_native(pointer); } -/** -Returns the target position of the bullet. If the bullet is inaccessible this will return an invalid position. - -*/ public Position getTargetPosition() { return getTargetPosition_native(pointer); } -/** -Returns the maximum number of frames until this bullet is removed. Generally bullets hit their targets before this timer reaches 0. If the bullet is inaccessible this will return 0. - -*/ public int getRemoveTimer() { return getRemoveTimer_native(pointer); } -/** -Returns true if the bullet is accessible. If Flag::CompleteMapInformation is enabled, all bullets that actually exist in the game will be accessible. If it is disabled, then only visible bullets will be accessible. - -*/ public boolean exists() { return exists_native(pointer); } -/** -bool isVisible(Player* player) const; -Returns true if the bullet is visible. -If Flag::CompleteMapInformation is enabled, you can also specify to which player you want to check visibility for, otherwise Game::self is used. - -*/ public boolean isVisible() { return isVisible_native(pointer); } -/** -bool isVisible(Player* player) const; -Returns true if the bullet is visible. -If Flag::CompleteMapInformation is enabled, you can also specify to which player you want to check visibility for, otherwise Game::self is used. - -*/ public boolean isVisible(Player player) { return isVisible_native(pointer, player); } @@ -141,6 +73,9 @@ If Flag::CompleteMapInformation is enabled, you can also } private static Bullet get(long pointer) { + if (pointer == 0 ) { + return null; + } Bullet instance = instances.get(pointer); if (instance == null ) { instance = new Bullet(pointer); diff --git a/bwapi/BulletType.java b/bwapi/BulletType.java index 90ae827..e9d8d96 100644 --- a/bwapi/BulletType.java +++ b/bwapi/BulletType.java @@ -7,14 +7,8 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; -/** -Each Bullet object in the game has a certain type. The list of all the possible Bullet types is available here: BulletTypes. - - -*/ public class BulletType { - /** Returns the name of this bullet type. */ public String c_str() { return c_str_native(pointer); } @@ -105,6 +99,9 @@ public class BulletType { } private static BulletType get(long pointer) { + if (pointer == 0 ) { + return null; + } BulletType instance = instances.get(pointer); if (instance == null ) { instance = new BulletType(pointer); diff --git a/bwapi/Client.java b/bwapi/Client.java index 48f5e2d..7ca6341 100644 --- a/bwapi/Client.java +++ b/bwapi/Client.java @@ -7,43 +7,20 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; -/** -The Client class manages the connection between a BWAPI client program and the BWAPI server running in BWAPI.dll. For examples of how to use this class please see the Example AI Client and the AI Module Loader that are included in the latest release of BWAPI. -The BWAPIClient.lib library contains the implementation of the Client class along with classes which implement the Game, Force, Player, Unit, and Bullet interfaces. -Stand-alone programs made with BWAPIClient should keep all interaction with dynamic BWAPI classes (Game, Force, Player, Unit, Bullet) in a single thread that runs synchronously with Starcraft: Broodwar via calls to update(). - - -*/ public class Client { -/** -Returns true if the client is currently connected to the server. - -*/ public boolean isConnected() { return isConnected_native(pointer); } -/** -Attempts to connect the client to the server. If it succeeds, it returns true. If Starcraft/BWAPI is not yet running, this will fail and return false. - -*/ public boolean connect() { return connect_native(pointer); } -/** -Disconnects the client from the server. - -*/ public void disconnect() { disconnect_native(pointer); } -/** -This is a blocking command that tells the server to process commands sent from the client and proceed to the next frame in the game. Thus update() will only return once the next game frame (or if in menus, next menu frame) has been received. Once the server proceeds to the next frame, the client will update some local information and then return so the AI can execute its code for the current frame. Rather than sending callbacks to the client for things like AIModule::onUnitCreate, BWAPI generates a list of event objects, which can be accessed via Game::getEvents. These events correspond to AIModule callbacks. - -*/ public void update() { update_native(pointer); } @@ -56,6 +33,9 @@ This is a blocking command that tells the server to process commands sent from t } private static Client get(long pointer) { + if (pointer == 0 ) { + return null; + } Client instance = instances.get(pointer); if (instance == null ) { instance = new Client(pointer); diff --git a/bwapi/CommandType/Enum.java b/bwapi/CommandType/Enum.java index d275c6b..7e20d4e 100644 --- a/bwapi/CommandType/Enum.java +++ b/bwapi/CommandType/Enum.java @@ -7,9 +7,6 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; - /**

- * Used in UnitCommand - */ public enum Enum { None(0), diff --git a/bwapi/DamageType.java b/bwapi/DamageType.java index 95b7071..862fc66 100644 --- a/bwapi/DamageType.java +++ b/bwapi/DamageType.java @@ -7,15 +7,8 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; -/** -Each type of Unit in Starcraft: Broodwar has a particular WeaponType for its ground weapon and air weapon (either of which could be WeaponTypes::None). Each type of Weapon has a particular damage type, which could be explosive, concussive, or something else. Here is the list of all the possible DamageTypes. - - -*/ public class DamageType { - /** Returns the name of this damage type. For example DamageTypes::Explosive.getName() will return - * std::string("Explosive"). */ public String c_str() { return c_str_native(pointer); } @@ -46,6 +39,9 @@ public class DamageType { } private static DamageType get(long pointer) { + if (pointer == 0 ) { + return null; + } DamageType instance = instances.get(pointer); if (instance == null ) { instance = new DamageType(pointer); diff --git a/bwapi/Event.java b/bwapi/Event.java index 01819ee..87c511e 100644 --- a/bwapi/Event.java +++ b/bwapi/Event.java @@ -7,49 +7,24 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; -/** -Events correspond to AIModule callbacks and can be obtained by calling Game::getEvents. - - -*/ public class Event { -/** -Returns the Position. Used in EventType::NukeDetect. - -*/ public Position getPosition() { return getPosition_native(pointer); } -/** -Returns the text. Used in EventType::SendText, EventType::ReceiveText, EventType::SaveGame. - -*/ public String getText() { return getText_native(pointer); } -/** -Returns the unit. Used in EventType::UnitDiscover, EventType::UnitEvade, EventType::UnitCreate, EventType::UnitDestroy, EventType::UnitShow, EventType::UnitHide, EventType::UnitMorph, EventType::UnitRenegade, and EventType::UnitComplete. - -*/ public Unit getUnit() { return getUnit_native(pointer); } -/** -Returns the player. Used in EventType::ReceiveText and EventType::PlayerLeft. - -*/ public Player getPlayer() { return getPlayer_native(pointer); } -/** -Returns true if the BWAPI-controlled player is the winner. Used in EventType::MatchEnd. - -*/ public boolean isWinner() { return isWinner_native(pointer); } @@ -62,6 +37,9 @@ Returns true if the BWAPI-controlled player is the winner. Used in EventType::Ma } private static Event get(long pointer) { + if (pointer == 0 ) { + return null; + } Event instance = instances.get(pointer); if (instance == null ) { instance = new Event(pointer); diff --git a/bwapi/ExplosionType.java b/bwapi/ExplosionType.java index 03c6fca..d46a275 100644 --- a/bwapi/ExplosionType.java +++ b/bwapi/ExplosionType.java @@ -7,14 +7,8 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; -/** -Each type of Unit in Starcraft: Broodwar has a particular WeaponType for its ground weapon and air weapon (either of which could be WeaponTypes::None). Each type of Weapon has a particular explosion type. Here is the list of all the possible ExplosionTypes. - - -*/ public class ExplosionType { - /** Returns the name of this explosion type. */ public String c_str() { return c_str_native(pointer); } @@ -81,6 +75,9 @@ public class ExplosionType { } private static ExplosionType get(long pointer) { + if (pointer == 0 ) { + return null; + } ExplosionType instance = instances.get(pointer); if (instance == null ) { instance = new ExplosionType(pointer); diff --git a/bwapi/Force.java b/bwapi/Force.java index 6fe0431..4ed88f2 100644 --- a/bwapi/Force.java +++ b/bwapi/Force.java @@ -7,21 +7,16 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; - /** The Force class is used to get information about each force in the match, such as the name of the force - * and the set of players in the force. */ public class Force { - /** Returns a unique ID for the force. */ public int getID() { return getID_native(pointer); } - /** Returns the name of the force. */ public String getName() { return getName_native(pointer); } - /** Returns the set of players in the force. */ public List getPlayers() { return getPlayers_native(pointer); } @@ -34,6 +29,9 @@ public class Force { } private static Force get(long pointer) { + if (pointer == 0 ) { + return null; + } Force instance = instances.get(pointer); if (instance == null ) { instance = new Force(pointer); diff --git a/bwapi/Game.java b/bwapi/Game.java index 61ecf96..24edd17 100644 --- a/bwapi/Game.java +++ b/bwapi/Game.java @@ -7,116 +7,84 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; - /** The abstract Game class is implemented by BWAPI and offers many methods for retrieving information - * about the current Broodwar game, including the set of players, units, map information, as well as - * information about the user, such as mouse position, screen position, and the current selection of - * units. */ public class Game { - /** Returns the set of all forces in the match. */ public List getForces() { return getForces_native(pointer); } - /** Returns the set of all players in the match. Note that this includes the Neutral player, which owns - * all the neutral units such as minerals, critters, etc. */ public List getPlayers() { return getPlayers_native(pointer); } - /** Returns all the visible units. If Flag::CompleteMapInformation is enabled, the set of all units - * is returned, not just visible ones. Note that units inside refineries are not included in this set - * yet. */ public List getAllUnits() { return getAllUnits_native(pointer); } - /** Returns the set of all accessible mineral patches. */ public List getMinerals() { return getMinerals_native(pointer); } - /** Returns the set of all accessible vespene geysers. */ public List getGeysers() { return getGeysers_native(pointer); } - /** Returns the set of all accessible neutral units. */ public List getNeutralUnits() { return getNeutralUnits_native(pointer); } - /** Returns the set of all mineral patches (including mined out and other inaccessible ones). */ public List getStaticMinerals() { return getStaticMinerals_native(pointer); } - /** Returns the set of all vespene geysers (including mined out and other inaccessible ones). */ public List getStaticGeysers() { return getStaticGeysers_native(pointer); } - /** Returns the set of all neutral units (including mined out and other inaccessible ones). */ public List getStaticNeutralUnits() { return getStaticNeutralUnits_native(pointer); } - /** Returns all visible bullets. If Flag::CompleteMapInformation is enabled, the set of all bullets is - * returned, not just visible ones. */ public List getBullets() { return getBullets_native(pointer); } - /** Returns all visible nuke dots. If Flag::CompleteMapInformation is enabled, the set of all nuke dots - * is returned, not just visible ones. */ public List getNukeDots() { return getNukeDots_native(pointer); } - /** Returns the list of events */ public Force getForce(int forceID) { return getForce_native(pointer, forceID); } - /** Returns the player with the given ID, or NULL if no player has the given ID */ public Player getPlayer(int playerID) { return getPlayer_native(pointer, playerID); } - /** Returns the unit with the given ID, or NULL if no unit has the given ID */ public Unit getUnit(int unitID) { return getUnit_native(pointer, unitID); } - /** Returns a pointer to a Unit given an index. */ public Unit indexToUnit(int unitIndex) { return indexToUnit_native(pointer, unitIndex); } - /** Returns the Region with the given ID, or NULL if no region has the given ID */ public Region getRegion(int regionID) { return getRegion_native(pointer, regionID); } - /** Returns the game type */ public GameType getGameType() { return getGameType_native(pointer); } - /** Returns the amount of latency the current game has. Currently only returns Latency::SinglePlayer, - * Latency::LanLow, Latency::LanMedium, or Latency::LanHigh. */ public int getLatency() { return getLatency_native(pointer); } - /** Returns the number of logical frames since the match started. If the game is paused, - * Game::getFrameCount will not increase however AIModule::onFrame will still be called while paused. - * On Fastest, there are about 23.8 - 24 frames per second. */ public int getFrameCount() { return getFrameCount_native(pointer); } - /** Returns the Frames Per Second (FPS) that the game is currently running at */ public int getFPS() { return getFPS_native(pointer); } @@ -125,88 +93,58 @@ public class Game { return getAverageFPS_native(pointer); } - /** Returns the position of the mouse on the screen. Returns Positions::Unknown if Flag::UserInput is - * disabled. */ public Position getMousePosition() { return getMousePosition_native(pointer); } - /** Returns true if the specified mouse button is pressed. Returns false if Flag::UserInput is - * disabled. */ public boolean getMouseState(MouseButton button) { return getMouseState_native(pointer, button); } - /** Returns true if the specified mouse button is pressed. Returns false if Flag::UserInput is - * disabled. */ public boolean getMouseState(int button) { return getMouseState_native(pointer, button); } - /** Returns true if the specified key is pressed. Returns false if Flag::UserInput is disabled. - * Unfortunately this does not read the raw keyboard input yet - when you hold down a key, the - * getKeyState function is true for a frame, then false for a few frames, and then alternates between - * true and false (as if you were holding down the key in a text box). Hopefully this will be fixed in - * a later version. */ public boolean getKeyState(Key key) { return getKeyState_native(pointer, key); } - /** Returns true if the specified key is pressed. Returns false if Flag::UserInput is disabled. - * Unfortunately this does not read the raw keyboard input yet - when you hold down a key, the - * getKeyState function is true for a frame, then false for a few frames, and then alternates between - * true and false (as if you were holding down the key in a text box). Hopefully this will be fixed in - * a later version. */ public boolean getKeyState(int key) { return getKeyState_native(pointer, key); } - /** Returns the position of the top left corner of the screen on the map. Returns Positions::Unknown if - * Flag::UserInput is disabled. */ public Position getScreenPosition() { return getScreenPosition_native(pointer); } - /** Moves the screen to the given position on the map. The position specified where the top left corner - * of the screen will be. */ public void setScreenPosition(int x, int y) { setScreenPosition_native(pointer, x, y); } - /** Moves the screen to the given position on the map. The position specified where the top left corner - * of the screen will be. */ public void setScreenPosition(Position p) { setScreenPosition_native(pointer, p); } - /** Pings the given position on the minimap. */ public void pingMinimap(int x, int y) { pingMinimap_native(pointer, x, y); } - /** Pings the given position on the minimap. */ public void pingMinimap(Position p) { pingMinimap_native(pointer, p); } - /** Returns true if the given flag has been enabled. Note that flags can only be enabled at the - * beginning of a match, during the AIModule::onStart callback. */ public boolean isFlagEnabled(int flag) { return isFlagEnabled_native(pointer, flag); } - /** Enables the specified flag. Note that flags can only be enabled at the beginning of a match, during - * the AIModule::onStart callback. */ public void enableFlag(int flag) { enableFlag_native(pointer, flag); } - /** Returns the set of accessible units that are on the given build tile. */ public List getUnitsOnTile(int tileX, int tileY) { return getUnitsOnTile_native(pointer, tileX, tileY); } - /** Returns the set of accessible units that are in or overlapping the given rectangle. */ public List getUnitsInRectangle(int left, int top, int right, int bottom) { return getUnitsInRectangle_native(pointer, left, top, right, bottom); } @@ -215,65 +153,46 @@ public class Game { return getUnitsInRectangle_native(pointer, topLeft, bottomRight); } - /** Returns the set of accessible units within or overlapping a circle at the given point with the given radius. */ public List getUnitsInRadius(Position center, int radius) { return getUnitsInRadius_native(pointer, center, radius); } - /** Returns the last error that was set. If you try to order enemy units around, or morph bunkers into - * lurkers, BWAPI will set error codes, which can be retrieved using this function. */ public Error getLastError() { return getLastError_native(pointer); } - /** Sets the last error code. */ public boolean setLastError(Error e) { return setLastError_native(pointer, e); } - /** Returns the width of the current map, in build tile units. To get the width of the current map in - * walk tile units, multiply by 4. To get the width of the current map in Position units, multiply by - * TILE_SIZE (which is 32). */ public int mapWidth() { return mapWidth_native(pointer); } - /** Returns the height of the current map, in build tile units. To get the height of the current map in - * walk tile units, multiply by 4. To get the height of the current map in Position units, multiply by - * TILE_SIZE (which is 32). */ public int mapHeight() { return mapHeight_native(pointer); } - /** Returns the file name of the current map. */ public String mapFileName() { return mapFileName_native(pointer); } - /** Returns the full path name of the current map. */ public String mapPathName() { return mapPathName_native(pointer); } - /** Returns the name/title of the current map. */ public String mapName() { return mapName_native(pointer); } - /** Returns the SHA-1 hash of the map file. */ public String mapHash() { return mapHash_native(pointer); } - /** Returns true if the specified walk tile is walkable. The values of x and y are in walk tile - * coordinates (different from build tile coordinates). Note that this just uses the static map data. - * You will also need to make sure no ground units are on the coresponding build tile to see if its - * currently walkable. To do this, see unitsOnTile. */ public boolean isWalkable(int walkX, int walkY) { return isWalkable_native(pointer, walkX, walkY); } - /** Returns the ground height of the given build tile. 0 = normal, 1 = high ground. 2 = very high ground. */ public boolean isBuildable(int tileX, int tileY) { return isBuildable_native(pointer, tileX, tileY); } @@ -282,7 +201,6 @@ public class Game { return isBuildable_native(pointer, tileX, tileY, includeBuildings); } - /** Returns the ground height of the given build tile. 0 = normal, 1 = high ground. 2 = very high ground. */ public boolean isBuildable(TilePosition position) { return isBuildable_native(pointer, position); } @@ -291,43 +209,30 @@ public class Game { return isBuildable_native(pointer, position, includeBuildings); } - /** Returns true if the specified build tile is visible. If the tile is concealed by fog of war, the - * function will return false. */ public boolean isVisible(int tileX, int tileY) { return isVisible_native(pointer, tileX, tileY); } - /** Returns true if the specified build tile is visible. If the tile is concealed by fog of war, the - * function will return false. */ public boolean isVisible(TilePosition position) { return isVisible_native(pointer, position); } - /** Returns true if the specified build tile has been explored (i.e. was visible at some point in the - * match). */ public boolean isExplored(int tileX, int tileY) { return isExplored_native(pointer, tileX, tileY); } - /** Returns true if the specified build tile has been explored (i.e. was visible at some point in the - * match). */ public boolean isExplored(TilePosition position) { return isExplored_native(pointer, position); } - /** Returns true if the specified build tile has zerg creep on it. If the tile is concealed by fog of - * war, the function will return false. */ public boolean hasCreep(int tileX, int tileY) { return hasCreep_native(pointer, tileX, tileY); } - /** Returns true if the specified build tile has zerg creep on it. If the tile is concealed by fog of - * war, the function will return false. */ public boolean hasCreep(TilePosition position) { return hasCreep_native(pointer, position); } - /** Returns true if the given build location is powered by a nearby friendly pylon. */ public boolean hasPower(int tileX, int tileY) { return hasPower_native(pointer, tileX, tileY); } @@ -336,7 +241,6 @@ public class Game { return hasPower_native(pointer, tileX, tileY, unitType); } - /** Returns true if the given build location is powered by a nearby friendly pylon. */ public boolean hasPower(TilePosition position) { return hasPower_native(pointer, position); } @@ -345,7 +249,6 @@ public class Game { return hasPower_native(pointer, position, unitType); } - /** Returns true if the given build location is powered by a nearby friendly pylon. */ public boolean hasPower(int tileX, int tileY, int tileWidth, int tileHeight) { return hasPower_native(pointer, tileX, tileY, tileWidth, tileHeight); } @@ -354,7 +257,6 @@ public class Game { return hasPower_native(pointer, tileX, tileY, tileWidth, tileHeight, unitType); } - /** Returns true if the given build location is powered by a nearby friendly pylon. */ public boolean hasPower(TilePosition position, int tileWidth, int tileHeight) { return hasPower_native(pointer, position, tileWidth, tileHeight); } @@ -363,7 +265,6 @@ public class Game { return hasPower_native(pointer, position, tileWidth, tileHeight, unitType); } - /** Returns true if the given pixel location is powered by a nearby friendly pylon. */ public boolean hasPowerPrecise(int x, int y) { return hasPowerPrecise_native(pointer, x, y); } @@ -372,7 +273,6 @@ public class Game { return hasPowerPrecise_native(pointer, x, y, unitType); } - /** Returns true if the given pixel location is powered by a nearby friendly pylon. */ public boolean hasPowerPrecise(Position position) { return hasPowerPrecise_native(pointer, position); } @@ -381,9 +281,6 @@ public class Game { return hasPowerPrecise_native(pointer, position, unitType); } - /** Returns true if the given unit type can be built at the given build tile position. Note the tile - * position specifies the top left tile of the building. If builder is not null, the unit will be - * discarded when determining whether or not any ground units are blocking the build location. */ public boolean canBuildHere(Unit builder, TilePosition position, UnitType type) { return canBuildHere_native(pointer, builder, position, type); } @@ -392,40 +289,26 @@ public class Game { return canBuildHere_native(pointer, builder, position, type, checkExplored); } - /** Returns true if the AI player has enough resources, supply, tech, and required units in order to - * make the given unit type. If builder is not null, canMake will return true only if the builder unit - * can build the given unit type. */ public boolean canMake(Unit builder, UnitType type) { return canMake_native(pointer, builder, type); } - /** Returns true if the AI player has enough resources required to research the given tech type. If unit - * is not null, canResearch will return true only if the given unit can research the given tech type. */ public boolean canResearch(Unit unit, TechType type) { return canResearch_native(pointer, unit, type); } - /** Returns true if the AI player has enough resources required to upgrade the given upgrade type. If - * unit is not null, canUpgrade will return true only if the given unit can upgrade the given upgrade - * type. */ public boolean canUpgrade(Unit unit, UpgradeType type) { return canUpgrade_native(pointer, unit, type); } - /** Returns the set of starting locations for the given map. To determine the starting location for the - * players in the current match, see Player::getStartLocation. */ public List getStartLocations() { return getStartLocations_native(pointer); } - /** Prints text on the screen. Text is not sent to other players in multiplayer games. */ public void printf(String cstr_format) { printf_native(pointer, cstr_format); } - /** Sends text to other players - as if it were entered in chat. In single player games and replays, - * this will just print the text on the screen. If the game is a single player match and not a replay, - * then this function can be used to execute cheat codes, i.e. Broodwar->sendText("show me the money"). */ public void sendText(String cstr_format) { sendText_native(pointer, cstr_format); } @@ -434,71 +317,50 @@ public class Game { sendTextEx_native(pointer, toAllies, cstr_format); } - /** Used to change the race while in a lobby. Note that there is no onLobbyEnter callback yet, so this - * function cannot be used at this time. */ public void changeRace(Race race) { changeRace_native(pointer, race); } - /** Returns true if Broodwar is in a game. Returns false for lobby and menu screens */ public boolean isInGame() { return isInGame_native(pointer); } - /** Returns true if Broodwar is in a multiplayer game. Returns false for single player games and - * replays. */ public boolean isMultiplayer() { return isMultiplayer_native(pointer); } - /** Returns true if Broodwar is in a BNet multiplayer game. - */ public boolean isBattleNet() { return isBattleNet_native(pointer); } - /** Returns true if Broodwar is paused. If the game is paused, Game::getFrameCount will continue to - * increase and AIModule::onFrame will still be called while paused. */ public boolean isPaused() { return isPaused_native(pointer); } - /** Returns true if Broodwar is in a replay. */ public boolean isReplay() { return isReplay_native(pointer); } - /** Used to start the game while in a lobby. Note that there is no onLobbyEnter callback yet, so this - * function cannot be used at this time. */ public void startGame() { startGame_native(pointer); } - /** Pauses the game. If the game is paused, Game::getFrameCount will not increase however - * AIModule::onFrame will still be called while paused. */ public void pauseGame() { pauseGame_native(pointer); } - /** Resumes the game. */ public void resumeGame() { resumeGame_native(pointer); } - /** Leaves the current match and goes to the after-game stats screen. */ public void leaveGame() { leaveGame_native(pointer); } - /** Restarts the match. Works the same way as if you restarted the match from the menu screen. Only - * available in single player mode. */ public void restartGame() { restartGame_native(pointer); } - /** Sets the speed of the game to the given number. Lower numbers are faster. 0 is the fastest speed - * StarCraft can handle (which is about as fast as the fastest speed you can view a replay at). Any - * negative value will reset the speed to the StarCraft default. */ public void setLocalSpeed() { setLocalSpeed_native(pointer); } @@ -507,45 +369,34 @@ public class Game { setLocalSpeed_native(pointer, speed); } - /** Issues a command to a group of units */ public boolean issueCommand(List units, UnitCommand command) { return issueCommand_native(pointer, units, command); } - /** Returns the set of units currently selected by the user in the GUI. If Flag?::UserInput? was not - * enabled during the AIModule::onStart callback, this function will always return an empty set. */ public List getSelectedUnits() { return getSelectedUnits_native(pointer); } - /** Returns a pointer to the player that BWAPI controls. In replays this will return null. */ public Player self() { return self_native(pointer); } - /** Returns a pointer to the enemy player. If there is more than one enemy, this returns a pointer to - * just one enemy (see enemies to get all enemies still in game). In replays this will - * return NULL. */ public Player enemy() { return enemy_native(pointer); } - /** Returns a pointer to the neutral player. */ public Player neutral() { return neutral_native(pointer); } - /** Returns a set of all the ally players that have not left or been defeated. Does not include self. */ public List allies() { return allies_native(pointer); } - /** Returns a set of all the enemy players that have not left or been defeated. */ public List enemies() { return enemies_native(pointer); } - /** Returns a set of all the observer players that have not left. */ public List observers() { return observers_native(pointer); } @@ -558,8 +409,6 @@ public class Game { setTextSize_native(pointer, size); } - /** Draws text on the screen at the given position. Text can be drawn in different colors by using the - * following control characters: TODO: add image from wiki.*/ public void drawText(int ctype, int x, int y, String cstr_format) { drawText_native(pointer, ctype, x, y, cstr_format); } @@ -576,8 +425,6 @@ public class Game { drawTextScreen_native(pointer, x, y, cstr_format); } - /** Draws a box on the screen, with the given color. If isSolid is true, the entire box will be - * rendered, otherwise just the outline will be drawn. */ public void drawBox(int ctype, int left, int top, int right, int bottom, Color color) { drawBox_native(pointer, ctype, left, top, right, bottom, color); } @@ -610,8 +457,6 @@ public class Game { drawBoxScreen_native(pointer, left, top, right, bottom, color, isSolid); } - /** Draws a triangle on the screen. If isSolid is true, a solid triangle is drawn, otherwise just the - * outline of the triangle will be drawn. */ public void drawTriangle(int ctype, int ax, int ay, int bx, int by, int cx, int cy, Color color) { drawTriangle_native(pointer, ctype, ax, ay, bx, by, cx, cy, color); } @@ -644,8 +489,6 @@ public class Game { drawTriangleScreen_native(pointer, ax, ay, bx, by, cx, cy, color, isSolid); } - /** Draws a circle on the screen, with the given color. If isSolid is true, a solid circle is drawn, - * otherwise just the outline of a circle will be drawn. */ public void drawCircle(int ctype, int x, int y, int radius, Color color) { drawCircle_native(pointer, ctype, x, y, radius, color); } @@ -678,8 +521,6 @@ public class Game { drawCircleScreen_native(pointer, x, y, radius, color, isSolid); } - /** Draws an ellipse on the screen, with the given color. If isSolid is true, a solid ellipse is drawn, - * otherwise just the outline of an ellipse will be drawn. */ public void drawEllipse(int ctype, int x, int y, int xrad, int yrad, Color color) { drawEllipse_native(pointer, ctype, x, y, xrad, yrad, color); } @@ -712,7 +553,6 @@ public class Game { drawEllipseScreen_native(pointer, x, y, xrad, yrad, color, isSolid); } - /** Draws a dot on the screen at the given position with the given color. */ public void drawDot(int ctype, int x, int y, Color color) { drawDot_native(pointer, ctype, x, y, color); } @@ -729,7 +569,6 @@ public class Game { drawDotScreen_native(pointer, x, y, color); } - /** Draws a line on the screen from (x1,y1) to (x2,y2) with the given color. */ public void drawLine(int ctype, int x1, int y1, int x2, int y2, Color color) { drawLine_native(pointer, ctype, x1, y1, x2, y2, color); } @@ -746,12 +585,10 @@ public class Game { drawLineScreen_native(pointer, x1, y1, x2, y2, color); } - /** Retrieves the screen buffer for the game (excluding the HUD) */ public void getScreenBuffer() { getScreenBuffer_native(pointer); } - /** Retrieves latency values for the game. Includes latency, speed, and mode */ public int getLatencyFrames() { return getLatencyFrames_native(pointer); } @@ -768,32 +605,26 @@ public class Game { return getRemainingLatencyTime_native(pointer); } - /** Retrieves the current revision of BWAPI. */ public int getRevision() { return getRevision_native(pointer); } - /** Retrieves the debug state of the BWAPI build. */ public boolean isDebug() { return isDebug_native(pointer); } - /** Returns true if latency compensation is enabled */ public boolean isLatComEnabled() { return isLatComEnabled_native(pointer); } - /** Use to enable or disable latency compensation. Default: Enabled */ public void setLatCom(boolean isEnabled) { setLatCom_native(pointer, isEnabled); } - /** Retrieves the number of frames in the replay */ public int getReplayFrameCount() { return getReplayFrameCount_native(pointer); } - /** Sets the rendering state of the Starcraft GUI */ public void setGUI() { setGUI_native(pointer); } @@ -802,7 +633,6 @@ public class Game { setGUI_native(pointer, enabled); } - /** Retrieves the instance number recorded by BWAPI to identify which instance an AI module belongs to */ public int getAPM() { return getAPM_native(pointer); } @@ -811,12 +641,10 @@ public class Game { return getAPM_native(pointer, includeSelects); } - /** Changes the map to the one specified. Changes do not take effect unless the game is restarted. */ public boolean setMap(String cstr_mapFileName) { return setMap_native(pointer, cstr_mapFileName); } - /** Sets the frame skip value. 1 = normal */ public void setFrameSkip() { setFrameSkip_native(pointer); } @@ -825,12 +653,10 @@ public class Game { setFrameSkip_native(pointer, frameSkip); } - /** Returns true if Starcraft can find a path from the source to the destination. */ public boolean hasPath(Position source, Position destination) { return hasPath_native(pointer, source, destination); } - /** Sets the BWAPI player's alliance with another player. */ public boolean setAlliance(Player player, boolean allied) { return setAlliance_native(pointer, player, allied); } @@ -843,7 +669,6 @@ public class Game { return setAlliance_native(pointer, player, allied, alliedVictory); } - /** Sets the BWAPI player's vision with another player. */ public boolean setVision(Player player) { return setVision_native(pointer, player); } @@ -852,7 +677,6 @@ public class Game { return setVision_native(pointer, player, enabled); } - /** Returns the elapsed game time in seconds. */ public void setCommandOptimizationLevel() { setCommandOptimizationLevel_native(pointer); } @@ -861,7 +685,6 @@ public class Game { setCommandOptimizationLevel_native(pointer, level); } - /** Returns the remaining countdown time in seconds. */ public Region getRegionAt(int x, int y) { return getRegionAt_native(pointer, x, y); } @@ -870,12 +693,10 @@ public class Game { return getRegionAt_native(pointer, position); } - /** Returns the time taken to perform the previous event call. Used for tournament management. */ public int getLastEventTime() { return getLastEventTime_native(pointer); } - /** Hides or reveals a player in a replay. */ public boolean setReplayVision(Player player) { return setReplayVision_native(pointer, player); } @@ -884,7 +705,6 @@ public class Game { return setReplayVision_native(pointer, player, enabled); } - /** Enables or disables the Fog of War in a replay. */ public boolean setRevealAll() { return setRevealAll_native(pointer); } @@ -901,6 +721,9 @@ public class Game { } private static Game get(long pointer) { + if (pointer == 0 ) { + return null; + } Game instance = instances.get(pointer); if (instance == null ) { instance = new Game(pointer); diff --git a/bwapi/GameType.java b/bwapi/GameType.java index 2b0bb11..8d74436 100644 --- a/bwapi/GameType.java +++ b/bwapi/GameType.java @@ -7,15 +7,8 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; -/** -List of all GameTypes. - - -*/ public class GameType { - /** Returns the name of the game type. For example GameTypes::Melee.getName() will return an - * std::string object containing "Melee". */ public String c_str() { return c_str_native(pointer); } @@ -64,6 +57,9 @@ public class GameType { } private static GameType get(long pointer) { + if (pointer == 0 ) { + return null; + } GameType instance = instances.get(pointer); if (instance == null ) { instance = new GameType(pointer); diff --git a/bwapi/Mirror.java b/bwapi/Mirror.java index e249ae9..72d4682 100644 --- a/bwapi/Mirror.java +++ b/bwapi/Mirror.java @@ -56,11 +56,11 @@ public class Mirror { private static final boolean EXTRACT_JAR = true; - private static final String VERSION = "1_0"; + private static final String VERSION = "1_1"; static { String arch = System.getProperty("os.arch"); - String dllNames[] = {"bwapi_bridge", "gmp-vc90-mt", "mpfr-vc90-mt"}; + String dllNames[] = {"bwapi_bridge" + VERSION, "gmp-vc90-mt", "mpfr-vc90-mt"}; if(!arch.equals("x86")){ throw new UnsupportedOperationException("BWMirror API supports only x86 architecture."); } diff --git a/bwapi/Order.java b/bwapi/Order.java index 83f10fb..04902a4 100644 --- a/bwapi/Order.java +++ b/bwapi/Order.java @@ -7,14 +7,8 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; - /** To get detailed information about what a unit is doing, you can use the Unit::getOrder method, which - * will return an Order object. Note that a single command, like gather minerals, can consist of several - * orders ( MoveToMinerals, HarvestMinerals2, MiningMinerals, ReturnMinerals, etc) which will indicate what - * state the unit is in while executing the command. For information about how to issue commands to units, - * go to Unit. */ public class Order { - /** Returns the name of this order. */ public String c_str() { return c_str_native(pointer); } @@ -345,6 +339,9 @@ public class Order { } private static Order get(long pointer) { + if (pointer == 0 ) { + return null; + } Order instance = instances.get(pointer); if (instance == null ) { instance = new Order(pointer); diff --git a/bwapi/Player.java b/bwapi/Player.java index bad3f58..8a12401 100644 --- a/bwapi/Player.java +++ b/bwapi/Player.java @@ -7,134 +7,100 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; - /** Each player in a match will have his or her own player instance. There is also a neutral player which - * owns all the neutral units. */ public class Player { - /** Returns a unique ID for the player. */ public int getID() { return getID_native(pointer); } - /** Returns the name of the player. */ public String getName() { return getName_native(pointer); } - /** Returns the set of units the player own. Note that units loaded into Terran dropships, Terran - * bunkers, Terran refineries, Protoss assimilators, and Zerg extractors are not yet included in the - * set. */ public List getUnits() { return getUnits_native(pointer); } - /** Returns the race of the player. */ public Race getRace() { return getRace_native(pointer); } - /** Returns the type of the player. */ public PlayerType getType() { return getType_native(pointer); } - /** Returns the force the player is on. */ public Force getForce() { return getForce_native(pointer); } - /** Returns true if other player is an ally of this player. */ public boolean isAlly(Player player) { return isAlly_native(pointer, player); } - /** Returns true if other player is an enemy of this player. */ public boolean isEnemy(Player player) { return isEnemy_native(pointer, player); } - /** Returns true if the player is the neutral player. */ public boolean isNeutral() { return isNeutral_native(pointer); } - /** Returns the starting location of the player. If complete map information is disabled, this function - * will return TilePositions::Unknown for enemy players. For the complete set of starting locations for - * the current map, see Game::getStartLocations. */ public TilePosition getStartLocation() { return getStartLocation_native(pointer); } - /** Returns true if the player has achieved victory. */ public boolean isVictorious() { return isVictorious_native(pointer); } - /** Returns true if the player has been defeated. */ public boolean isDefeated() { return isDefeated_native(pointer); } - /** Returns true if the player left the game. */ public boolean leftGame() { return leftGame_native(pointer); } - /** Returns the amount of minerals the player has. */ public int minerals() { return minerals_native(pointer); } - /** Returns the amount of vespene gas the player has. */ public int gas() { return gas_native(pointer); } - /** Returns the cumulative amount of minerals the player has mined up to this point (including the 50 - * minerals at the start of the game). */ public int gatheredMinerals() { return gatheredMinerals_native(pointer); } - /** Returns the cumulative amount of gas the player has harvested up to this point. */ public int gatheredGas() { return gatheredGas_native(pointer); } - /** Returns the cumulative amount of minerals the player has spent on repairs up to this point. */ public int repairedMinerals() { return repairedMinerals_native(pointer); } - /** Returns the cumulative amount of gas the player has spent on repairs up to this point. */ public int repairedGas() { return repairedGas_native(pointer); } - /** Returns the cumulative amount of minerals the player has gained from refunded units up to this point. */ public int refundedMinerals() { return refundedMinerals_native(pointer); } - /** Returns the cumulative amount of gas the player has gained from refunded units up to this point. */ public int refundedGas() { return refundedGas_native(pointer); } - /** Returns the cumulative amount of minerals the player has spent up to this point (not including repairs). */ public int spentMinerals() { return spentMinerals_native(pointer); } - /** Returns the cumulative amount of gas the player has spent up to this point (not including repairs). */ public int spentGas() { return spentGas_native(pointer); } - /** Returns the total amount of supply the player has. If a race is provided, the total supply for the - * given race will be returned, otherwise the player's initial race will be used. Supply counts returned - * by BWAPI are double what you would expect to see from playing the game. This is because zerglings - * take up 0.5 in-game supply. */ public int supplyTotal() { return supplyTotal_native(pointer); } @@ -143,10 +109,6 @@ public class Player { return supplyTotal_native(pointer, race); } - /** Returns how much of the supply is actually being used by units. If a race is provided, the used - * supply for the given race will be returned, otherwise the player's initial race will be used. Supply - * counts returned by BWAPI are double what you would expect to see from playing the game. This is - * because zerglings take up 0.5 in-game supply. */ public int supplyUsed() { return supplyUsed_native(pointer); } @@ -155,140 +117,110 @@ public class Player { return supplyUsed_native(pointer, race); } - /** Returns the number of all accessible units of the given type. */ public int allUnitCount(UnitType unit) { return allUnitCount_native(pointer, unit); } - /** Returns the number of visible units of the given type. */ public int visibleUnitCount(UnitType unit) { return visibleUnitCount_native(pointer, unit); } - /** Returns the number of completed units of the given type. */ public int completedUnitCount(UnitType unit) { return completedUnitCount_native(pointer, unit); } - /** Returns the number of incomplete units of the given type. */ public int incompleteUnitCount(UnitType unit) { return incompleteUnitCount_native(pointer, unit); } - /** Returns the number of dead units of the given type. */ public int deadUnitCount(UnitType unit) { return deadUnitCount_native(pointer, unit); } - /** Returns the number of killed units of the given type. */ public int killedUnitCount(UnitType unit) { return killedUnitCount_native(pointer, unit); } - /** Returns the player's current upgrade level of the given upgrade. To order a unit to upgrade a given - * upgrade type, see Unit::upgrade. */ public boolean hasResearched(TechType tech) { return hasResearched_native(pointer, tech); } - /** Returns true if the player is researching the given tech. To order a unit to research a given tech - * type, see Unit::reseach. */ public boolean isResearching(TechType tech) { return isResearching_native(pointer, tech); } - /** Returns true if the player is upgrading the given upgrade. To order a unit to upgrade a given - * upgrade type, see Unit::upgrade. */ public boolean isUpgrading(UpgradeType upgrade) { return isUpgrading_native(pointer, upgrade); } - /** Returns the color of the player for drawing */ public Color getColor() { return getColor_native(pointer); } - /** Returns the color of the player for text messages */ public int getTextColor() { return getTextColor_native(pointer); } - /** Returns the max energy of the given unit type, taking into account upgrades */ public int maxEnergy(UnitType unit) { return maxEnergy_native(pointer, unit); } - /** Returns the top speed of the given unit type, includes upgrades */ public double topSpeed(UnitType unit) { return topSpeed_native(pointer, unit); } - /** Returns the max ground weapon range of the given unit type, includes upgrades */ public int groundWeaponMaxRange(UnitType unit) { return groundWeaponMaxRange_native(pointer, unit); } - /** Returns the max air weapon range of the given unit type, includes upgrades */ public int airWeaponMaxRange(UnitType unit) { return airWeaponMaxRange_native(pointer, unit); } - /** Returns the max range of the given weapon with upgrades */ public int weaponMaxRange(WeaponType weapon) { return weaponMaxRange_native(pointer, weapon); } - /** Returns the sight range of the given unit type, includes upgrades */ public int sightRange(UnitType unit) { return sightRange_native(pointer, unit); } - /** Returns the ground weapon cooldown of the given unit type, includes upgrades */ public int groundWeaponDamageCooldown(UnitType unit) { return groundWeaponDamageCooldown_native(pointer, unit); } - /** Returns the armor of the given unit type, includes upgrades */ public int armor(UnitType unit) { return armor_native(pointer, unit); } - /** Returns the Player's Total Unit Score */ public int getUnitScore() { return getUnitScore_native(pointer); } - /** Returns the Player's Total Kill Score */ public int getKillScore() { return getKillScore_native(pointer); } - /** Returns the Player's Total Buildings Score */ public int getBuildingScore() { return getBuildingScore_native(pointer); } - /** Returns the Player's Total Razings Score */ public int getRazingScore() { return getRazingScore_native(pointer); } - /** Returns the Player's Custom Score */ public int getCustomScore() { return getCustomScore_native(pointer); } - /** Returns true if the Player is only observing the game, and not participating */ public boolean isObserver() { return isObserver_native(pointer); } - /** Returns the maximum upgrades available specific to the player (Use Map Settings). */ public boolean isResearchAvailable(TechType tech) { return isResearchAvailable_native(pointer, tech); } - /** Returns true if the unit is available for the player to build (Use Map Settings). */ public boolean isUnitAvailable(UnitType unit) { return isUnitAvailable_native(pointer, unit); } @@ -301,6 +233,9 @@ public class Player { } private static Player get(long pointer) { + if (pointer == 0 ) { + return null; + } Player instance = instances.get(pointer); if (instance == null ) { instance = new Player(pointer); diff --git a/bwapi/PlayerType.java b/bwapi/PlayerType.java index 609cef5..3821569 100644 --- a/bwapi/PlayerType.java +++ b/bwapi/PlayerType.java @@ -7,15 +7,8 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; -/** -List of all PlayerTypes. - - -*/ public class PlayerType { - /** Returns the name of the player type. For example PlayerTypes::Computer.getName() will return an - * std::string object containing "Computer". */ public String c_str() { return c_str_native(pointer); } @@ -54,6 +47,9 @@ public class PlayerType { } private static PlayerType get(long pointer) { + if (pointer == 0 ) { + return null; + } PlayerType instance = instances.get(pointer); if (instance == null ) { instance = new PlayerType(pointer); diff --git a/bwapi/Race.java b/bwapi/Race.java index 0dbf46c..8dab711 100644 --- a/bwapi/Race.java +++ b/bwapi/Race.java @@ -7,15 +7,8 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; -/** -List of all Races. - - -*/ public class Race { - /** Returns the name of the race. For example Races::Terran.getName() will return a std::string object - * containing "Terran". */ public String c_str() { return c_str_native(pointer); } @@ -24,34 +17,22 @@ public class Race { return c_str(); } - /** Returns the worker unit type for the given race. For example Races::Protoss.getWorker() will return - * a pointer to UnitTypes::Protoss_Probe. */ public UnitType getWorker() { return getWorker_native(pointer); } - /** Returns the center unit type for the given race. For example Races::Terran.getCenter() will return a - * pointer to UnitTypes::Terran_Command_Center. While there are three center types for Zerg - * (Hatchery, Lair, and Hive), Races::Zerg.getCenter() will only return a pointer to - * UnitTypes::Zerg_Hatchery, since it is the unit type needed to make a new center. */ public UnitType getCenter() { return getCenter_native(pointer); } - /** Returns the refinery unit type for the given race. For example: Races::Zerg.getRefinery() will - * return a pointer to UnitTypes::Zerg_Extractor?. */ public UnitType getRefinery() { return getRefinery_native(pointer); } - /** Returns the transport unit type for the given race. For example: Races::Protoss.getTransport() will - * return a pointer to UnitTypes::Protoss_Shuttle. */ public UnitType getTransport() { return getTransport_native(pointer); } - /** Returns the main supply provider unit type for the given race. For example: - * Races::Terran.getSupplyProvider() will return a pointer to UnitTypes::Terran_Supply_Depot?. */ public UnitType getSupplyProvider() { return getSupplyProvider_native(pointer); } @@ -78,6 +59,9 @@ public class Race { } private static Race get(long pointer) { + if (pointer == 0 ) { + return null; + } Race instance = instances.get(pointer); if (instance == null ) { instance = new Race(pointer); diff --git a/bwapi/Region.java b/bwapi/Region.java index a093578..1615389 100644 --- a/bwapi/Region.java +++ b/bwapi/Region.java @@ -7,84 +7,56 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; -/** -The Region class provides access to some of Broodwar's pathing information and offers members that can assist in navigation, scouting, construction, and information for key areas such as chokepoints. Though not always accurate, it is a lightweight alternative to BWTA that beginners can start with. -These regions are not so advanced as to cover everything up to a choke point with accurate polygons, but instead are small clusters of tiles connected to each other, kind of like a honeycomb. - - -*/ public class Region { - /** Returns the unique ID for this region assigned by Broodwar. */ public int getID() { return getID_native(pointer); } - /** Returns an ID for the body of land that this region belongs to. */ public int getRegionGroupID() { return getRegionGroupID_native(pointer); } - /** Retrieves the center of the region. */ public Position getCenter() { return getCenter_native(pointer); } - /** Returns true if this region belongs to strategic higher ground, assigned by Broodwar. */ public boolean isHigherGround() { return isHigherGround_native(pointer); } - /** Returns a value representing the strategic advantage of this region according to Broodwar. */ public int getDefensePriority() { return getDefensePriority_native(pointer); } - /** Returns true if the region can be walked on by ground units. */ public boolean isWalkable() { return isWalkable_native(pointer); } - /** Retrieves the set of neighbors that this region is connected to. */ public int getBoundsLeft() { return getBoundsLeft_native(pointer); } -/** - - -*/ public int getBoundsTop() { return getBoundsTop_native(pointer); } -/** - - -*/ public int getBoundsRight() { return getBoundsRight_native(pointer); } -/** - - -*/ public int getBoundsBottom() { return getBoundsBottom_native(pointer); } - /** Retrieves the closest accessable neighbor region. */ public Region getClosestAccessibleRegion() { return getClosestAccessibleRegion_native(pointer); } - /** Retrieves the closest inaccessable neighbor region. */ public Region getClosestInaccessibleRegion() { return getClosestInaccessibleRegion_native(pointer); } - /** Retrieves the center-to-center distance between two regions. */ public int getDistance(Region other) { return getDistance_native(pointer, other); } @@ -97,6 +69,9 @@ public class Region { } private static Region get(long pointer) { + if (pointer == 0 ) { + return null; + } Region instance = instances.get(pointer); if (instance == null ) { instance = new Region(pointer); diff --git a/bwapi/ShapeType/Enum.java b/bwapi/ShapeType/Enum.java index 2622233..92b4abb 100644 --- a/bwapi/ShapeType/Enum.java +++ b/bwapi/ShapeType/Enum.java @@ -7,9 +7,6 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; - /**

- * Used in UnitCommand - */ public enum Enum { None(0), diff --git a/bwapi/TechType.java b/bwapi/TechType.java index b8edee2..43ada59 100644 --- a/bwapi/TechType.java +++ b/bwapi/TechType.java @@ -7,14 +7,8 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; -/** -List of all TechTypes. - - -*/ public class TechType { - /** Returns the name of the tech type. */ public String c_str() { return c_str_native(pointer); } @@ -23,62 +17,46 @@ public class TechType { return c_str(); } - /** Returns the race that uses the TechType. For example, TechTypes::Scanner_Sweep?.getRace() will - * return Races::Terran. */ public Race getRace() { return getRace_native(pointer); } - /** Returns the mineral cost of the tech type. */ public int mineralPrice() { return mineralPrice_native(pointer); } - /** Returns the vespene gas price of the tech type. */ public int gasPrice() { return gasPrice_native(pointer); } - /** Returns the number of frames needed to research the tech type. */ public int researchTime() { return researchTime_native(pointer); } - /** Returns the amount of energy used each time this tech type is used. */ public int energyUsed() { return energyUsed_native(pointer); } - /** Returns the type of unit that researches this tech type. If this tech type is available for free - * (does not need to be researched), then this method will return UnitTypes::None. */ public UnitType whatResearches() { return whatResearches_native(pointer); } - /** Returns the corresponding weapon for this tech type, or TechTypes::None if no corresponding weapon - * exists. For example, TechTypes::Dark_Swarm.getWeapon() will return a pointer to - * WeaponTypes::Dark_Swarm. */ public WeaponType getWeapon() { return getWeapon_native(pointer); } - /** Returns true if this tech type must be used on another unit (i.e. Irradiate) */ public boolean targetsUnit() { return targetsUnit_native(pointer); } - /** Returns true if this tech type must be specified a position (i.e. Dark Swarm) */ public boolean targetsPosition() { return targetsPosition_native(pointer); } - /** Returns the set of units that can use this tech type. Usually this will just be a set of one unit - * type, however in some cases, such as TechTypes::Burrowing, several unit types will be returned. */ public List whatUses() { return whatUses_native(pointer); } - /** Returns the order used to execute this tech type as an action. */ public Order getOrder() { return getOrder_native(pointer); } @@ -163,6 +141,9 @@ public class TechType { } private static TechType get(long pointer) { + if (pointer == 0 ) { + return null; + } TechType instance = instances.get(pointer); if (instance == null ) { instance = new TechType(pointer); diff --git a/bwapi/Unit.java b/bwapi/Unit.java index e0c7e4b..8f1920c 100644 --- a/bwapi/Unit.java +++ b/bwapi/Unit.java @@ -7,265 +7,184 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; - /** The Unit class is used to get information about individual units as well as issue orders to units. Each - * unit in the game has a unique Unit object, and Unit objects are not deleted until the end of the match - * (so you don't need to worry about unit pointers becoming invalid). - *

- * Every Unit in the game is either accessible or inaccessible. To determine if an AI can access a - * particular unit, BWAPI checks to see if Flag::CompleteMapInformation? is enabled. So there are two cases - * to consider - either the flag is enabled, or it is disabled: - *

- * If Flag::CompleteMapInformation? is disabled, then a unit is accessible if and only if it is visible. - * Note also that some properties of visible enemy units will not be made available to the AI (such as the - * contents of visible enemy dropships). If a unit is not visible, Unit::exists will return false, - * regardless of whether or not the unit exists. This is because absolutely no state information on - * invisible enemy units is made available to the AI. To determine if an enemy unit has been destroyed, the - * AI must watch for AIModule::onUnitDestroy messages from BWAPI, which is only called for visible units - * which get destroyed. - *

- * If Flag::CompleteMapInformation? is enabled, then all units that exist in the game are accessible, and - * Unit::exists is accurate for all units. Similarly AIModule::onUnitDestroy messages are generated for all - * units that get destroyed, not just visible ones. - *

- * If a Unit is not accessible, in general the only the getInitial__ functions will be available to the AI. - * However for units that were owned by the player, getPlayer and getType will continue to work for units - * that have been destroyed. */ public class Unit { - /** Returns a unique ID for this unit. It simply casts the unit's address as an integer, since each unit - * has a unique address. */ public int getID() { return getID_native(pointer); } - /** Returns the unit ID that is used in a replay (*.rep) file's action recordings. */ public int getReplayID() { return getReplayID_native(pointer); } - /** Returns a pointer to the player that owns this unit. */ public Player getPlayer() { return getPlayer_native(pointer); } - /** Returns the current type of the unit. */ public UnitType getType() { return getType_native(pointer); } - /** Returns the position of the unit on the map. */ public Position getPosition() { return getPosition_native(pointer); } - /** Returns the build tile position of the unit on the map. Useful if the unit is a building. The tile - * position is of the top left corner of the building. */ public TilePosition getTilePosition() { return getTilePosition_native(pointer); } - /** Returns the direction the unit is facing, measured in radians. An angle of 0 means the unit is - * facing east. */ public double getAngle() { return getAngle_native(pointer); } - /** Returns the x component of the unit's velocity, measured in pixels per frame. */ public double getVelocityX() { return getVelocityX_native(pointer); } - /** Returns the y component of the unit's velocity, measured in pixels per frame. */ public double getVelocityY() { return getVelocityY_native(pointer); } - /** Returns the region that this unit is currently in. */ public Region getRegion() { return getRegion_native(pointer); } - /** Returns the X coordinate of the left side of the unit. */ public int getLeft() { return getLeft_native(pointer); } - /** Returns the Y coordinate of the top side of the unit. */ public int getTop() { return getTop_native(pointer); } - /** Returns the X coordinate of the right side of the unit. */ public int getRight() { return getRight_native(pointer); } - /** Returns the Y coordinate of the bottom side of the unit. */ public int getBottom() { return getBottom_native(pointer); } - /** Returns the unit's current amount of hit points. */ public int getHitPoints() { return getHitPoints_native(pointer); } - /** Returns the unit's current amount of shields. */ public int getShields() { return getShields_native(pointer); } - /** Returns the unit's current amount of energy. */ public int getEnergy() { return getEnergy_native(pointer); } - /** Returns the unit's current amount of containing resources. Useful for determining how much minerals - * are left in a mineral patch, or how much gas is left in a geyser - * (can also be called on a refinery/assimilator/extractor). */ public int getResources() { return getResources_native(pointer); } - /** Retrieves the group ID of a resource. Can be used to identify which resources belong to an expansion. */ public int getResourceGroup() { return getResourceGroup_native(pointer); } - /** Returns the edge-to-edge distance between the current unit and the target unit. */ public int getDistance(Unit target) { return getDistance_native(pointer, target); } - /** Returns the distance from the edge of the current unit to the target position. */ public int getDistance(Position target) { return getDistance_native(pointer, target); } - /** Returns true if the unit is able to move to the target unit */ public boolean hasPath(Unit target) { return hasPath_native(pointer, target); } - /** Returns true if the unit is able to move to the target position */ public boolean hasPath(Position target) { return hasPath_native(pointer, target); } - /** Returns the frame of the last successful command. Frame is comparable to Game::getFrameCount(). */ public int getLastCommandFrame() { return getLastCommandFrame_native(pointer); } - /** Returns the last successful command. */ public Player getLastAttackingPlayer() { return getLastAttackingPlayer_native(pointer); } - /** Returns the player's current upgrade level for the given upgrade, if the unit is affected by this - * upgrade.*/ public int getUpgradeLevel(UpgradeType upgrade) { return getUpgradeLevel_native(pointer, upgrade); } - /** Returns the initial type of the unit or Unknown if it wasn't a neutral unit at the beginning of the - * game. */ public UnitType getInitialType() { return getInitialType_native(pointer); } - /** Returns the initial position of the unit on the map, or Positions::Unknown if the unit wasn't a - * neutral unit at the beginning of the game. */ public Position getInitialPosition() { return getInitialPosition_native(pointer); } - /** Returns the initial build tile position of the unit on the map, or TilePositions::Unknown if the - * unit wasn't a neutral unit at the beginning of the game. The tile position is of the top left corner - * of the building. */ public TilePosition getInitialTilePosition() { return getInitialTilePosition_native(pointer); } - /** Returns the unit's initial amount of hit points, or 0 if it wasn't a neutral unit at the beginning - * of the game. */ public int getInitialHitPoints() { return getInitialHitPoints_native(pointer); } - /** Returns the unit's initial amount of containing resources, or 0 if the unit wasn't a neutral unit - * at the beginning of the game. */ public int getInitialResources() { return getInitialResources_native(pointer); } - /** Returns the unit's current kill count. */ public int getKillCount() { return getKillCount_native(pointer); } - /** Returns the unit's acid spore count. */ public int getAcidSporeCount() { return getAcidSporeCount_native(pointer); } - /** Returns the number of interceptors the Protoss Carrier has. */ public int getInterceptorCount() { return getInterceptorCount_native(pointer); } - /** Returns the number of scarabs in the Protoss Reaver. */ public int getScarabCount() { return getScarabCount_native(pointer); } - /** Returns the number of spider mines in the Terran Vulture. */ public int getSpiderMineCount() { return getSpiderMineCount_native(pointer); } - /** Returns unit's ground weapon cooldown. It is 0 if the unit is ready to attack. */ public int getGroundWeaponCooldown() { return getGroundWeaponCooldown_native(pointer); } - /** Returns unit's air weapon cooldown. It is 0 if the unit is ready to attack. */ public int getAirWeaponCooldown() { return getAirWeaponCooldown_native(pointer); } - /** Returns unit's ground weapon cooldown. It is 0 if the unit is ready cast a spell. */ public int getSpellCooldown() { return getSpellCooldown_native(pointer); } - /** Returns the remaining hit points of the defense matrix. Initially a defense Matrix has 250 points. - * \see Unit::getDefenseMatrixTimer, Unit::isDefenseMatrixed. */ public int getDefenseMatrixPoints() { return getDefenseMatrixPoints_native(pointer); } - /** Returns the time until the defense matrix wears off. 0 -> No defense Matrix present. */ public int getDefenseMatrixTimer() { return getDefenseMatrixTimer_native(pointer); } - /** Returns the time until the ensnare effect wears off. 0 -> No ensnare effect present. */ public int getEnsnareTimer() { return getEnsnareTimer_native(pointer); } - /** Returns the time until the radiation wears off. 0 -> No radiation present. */ public int getIrradiateTimer() { return getIrradiateTimer_native(pointer); } - /** Returns the time until the lockdown wears off. 0 -> No lockdown present. */ public int getLockdownTimer() { return getLockdownTimer_native(pointer); } - /** Returns the time until the maelstrom wears off. 0 -> No maelstrom present. */ public int getMaelstromTimer() { return getMaelstromTimer_native(pointer); } @@ -274,89 +193,58 @@ public class Unit { return getOrderTimer_native(pointer); } - /** Returns the time until the plague wears off. 0 -> No plague present. */ public int getPlagueTimer() { return getPlagueTimer_native(pointer); } - /** Returns the amount of time until the unit is removed, or 0 if the unit does not have a remove timer. - * Used to determine how much time remains before hallucinated units, dark swarm, etc have until they - * are removed. */ public int getRemoveTimer() { return getRemoveTimer_native(pointer); } - /** Returns the time until the stasis field wears off. 0 -> No stasis field present. */ public int getStasisTimer() { return getStasisTimer_native(pointer); } - /** Returns the time until the stimpack wears off. 0 -> No stimpack boost present. */ public int getStimTimer() { return getStimTimer_native(pointer); } - /** Returns the building type a worker is about to construct. If the unit is a morphing Zerg unit or an - * incomplete building, this returns the UnitType the unit is about to become upon completion.*/ public UnitType getBuildType() { return getBuildType_native(pointer); } - /** Returns the list of units queued up to be trained. - * \see Unit::train, Unit::cancelTrain, Unit::isTraining. */ public TechType getTech() { return getTech_native(pointer); } - /** Returns the upgrade that the unit is currently upgrading. If the unit is not upgrading anything, - * UpgradeTypes::None is returned. - * \see Unit::upgrade, Unit::cancelUpgrade, Unit::isUpgrading, Unit::getRemainingUpgradeTime. */ public UpgradeType getUpgrade() { return getUpgrade_native(pointer); } - /** Returns the remaining build time of a unit/building that is being constructed. */ public int getRemainingBuildTime() { return getRemainingBuildTime_native(pointer); } - /** Returns the remaining time of the unit that is currently being trained. If the unit is a Hatchery, - * Lair, or Hive, this returns the amount of time until the next larva spawns, or 0 if the unit already - * has 3 larva. */ public int getRemainingTrainTime() { return getRemainingTrainTime_native(pointer); } - /** Returns the amount of time until the unit is done researching its current tech. If the unit is not - * researching anything, 0 is returned. - * \see Unit::research, Unit::cancelResearch, Unit::isResearching, Unit::getTech. */ public int getRemainingResearchTime() { return getRemainingResearchTime_native(pointer); } - /** Returns the amount of time until the unit is done upgrading its current upgrade. If the unit is not - * upgrading anything, 0 is returned. - * \see Unit::upgrade, Unit::cancelUpgrade, Unit::isUpgrading, Unit::getUpgrade. */ public int getRemainingUpgradeTime() { return getRemainingUpgradeTime_native(pointer); } - /** If the unit is an SCV that is constructing a building, this will return the building it is - * constructing. If the unit is a Terran building that is being constructed, this will return the SCV - * that is constructing it. */ public Unit getBuildUnit() { return getBuildUnit_native(pointer); } - /** Generally returns the appropriate target unit after issuing an order that accepts a target unit - * (i.e. attack, repair, gather, follow, etc.). To check for a target that has been acquired - * automatically (without issuing an order) see getOrderTarget. */ public Unit getTarget() { return getTarget_native(pointer); } - /** Returns the target position the unit is moving to (provided a valid path to the target position - * exists). */ public Position getTargetPosition() { return getTargetPosition_native(pointer); } @@ -369,106 +257,74 @@ public class Unit { return getSecondaryOrder_native(pointer); } - /** This is usually set when the low level unit AI acquires a new target automatically. For example if - * an enemy probe comes in range of your marine, the marine will start attacking it, and getOrderTarget - * will be set in this case, but not getTarget. */ public Unit getOrderTarget() { return getOrderTarget_native(pointer); } - /** Returns the target position for the units order. For example for the move order getTargetPosition - * returns the end of the units path but this returns the location the unit is trying to move to. */ public Position getOrderTargetPosition() { return getOrderTargetPosition_native(pointer); } - /** Returns the position the building is rallied to. If the building does not produce units, - * Positions::None is returned. - * \see Unit::setRallyPoint, Unit::getRallyUnit. */ public Position getRallyPosition() { return getRallyPosition_native(pointer); } - /** Returns the unit the building is rallied to. If the building is not rallied to any unit, NULL is - * returned. - * \see Unit::setRallyPoint, Unit::getRallyPosition. */ public Unit getRallyUnit() { return getRallyUnit_native(pointer); } - /** Returns the add-on of this unit, or NULL if the unit doesn't have an add-on. */ public Unit getAddon() { return getAddon_native(pointer); } - /** Returns the corresponding connected nydus canal of this unit, or NULL if the unit does not have a - * connected nydus canal. */ public Unit getNydusExit() { return getNydusExit_native(pointer); } - /** Returns the power up the unit is holding, or NULL if the unit is not holding a power up */ public Unit getPowerUp() { return getPowerUp_native(pointer); } - /** Returns the dropship, shuttle, overlord, or bunker that is this unit is loaded in to. */ public Unit getTransport() { return getTransport_native(pointer); } - /** Returns a list of the units loaded into a Terran Bunker, Terran Dropship, Protoss Shuttle, or Zerg - * Overlord. */ public List getLoadedUnits() { return getLoadedUnits_native(pointer); } - /** For Protoss Interceptors, this returns the Carrier unit this Interceptor is controlled by. For all - * other unit types this function returns NULL. */ public Unit getCarrier() { return getCarrier_native(pointer); } - /** Returns the set of interceptors controlled by this unit. If the unit has no interceptors, or is not - * a Carrier, this function returns an empty set. */ public List getInterceptors() { return getInterceptors_native(pointer); } - /** For Zerg Larva, this returns the Hatchery, Lair, or Hive unit this Larva was spawned from. For all - * other unit types this function returns NULL. */ public Unit getHatchery() { return getHatchery_native(pointer); } - /** Returns the set of larva spawned by this unit. If the unit has no larva, or is not a Hatchery, Lair, - * or Hive, this function returns an empty set. Equivalent to clicking "Select Larva" from the Starcraft - * GUI. */ public List getLarva() { return getLarva_native(pointer); } - /** Returns the set of units within the given radius of this unit */ public List getUnitsInRadius(int radius) { return getUnitsInRadius_native(pointer, radius); } - /** Returns the set of units within weapon range of this unit. */ public List getUnitsInWeaponRange(WeaponType weapon) { return getUnitsInWeaponRange_native(pointer, weapon); } - /** Returns the unit's custom client info. The client is responsible for deallocation. */ public boolean exists() { return exists_native(pointer); } - /* Returns true if the Nuclear Missile Silo has a nuke */ public boolean hasNuke() { return hasNuke_native(pointer); } - /** Returns true if the unit is currently accelerating. */ public boolean isAccelerating() { return isAccelerating_native(pointer); } @@ -481,289 +337,198 @@ public class Unit { return isAttackFrame_native(pointer); } - /** Returns true if the unit is being constructed. Always true for incomplete Protoss and Zerg - * buildings, and true for incomplete Terran buildings that have an SCV constructing them. If the SCV - * halts construction, isBeingConstructed will return false. - *

- * \see Unit::build, Unit::cancelConstruction, Unit::haltConstruction, Unit::isConstructing. */ public boolean isBeingConstructed() { return isBeingConstructed_native(pointer); } - /** Returns true if the unit is a mineral patch or refinery that is being gathered. */ public boolean isBeingGathered() { return isBeingGathered_native(pointer); } - /** Returns true if the unit is currently being healed by a Terran Medic, or repaired by a Terran SCV. */ public boolean isBeingHealed() { return isBeingHealed_native(pointer); } - /** Returns true if the unit is currently blind from a Medic's Optical Flare. */ public boolean isBlind() { return isBlind_native(pointer); } - /** Returns true if the unit is currently braking/slowing down. */ public boolean isBraking() { return isBraking_native(pointer); } - /** Returns true if the unit is a Zerg unit that is current burrowed. - * \see Unit::burrow, Unit::unburrow. */ public boolean isBurrowed() { return isBurrowed_native(pointer); } - /** Returns true if the unit is a worker that is carrying gas. - * \see Unit::returnCargo, Unit::isGatheringGas. */ public boolean isCarryingGas() { return isCarryingGas_native(pointer); } - /** Returns true if the unit is a worker that is carrying minerals. - * \see Unit::returnCargo, Unit::isGatheringMinerals. */ public boolean isCarryingMinerals() { return isCarryingMinerals_native(pointer); } - /** Returns true if the unit is cloaked. - * \see Unit::cloak, Unit::decloak. */ public boolean isCloaked() { return isCloaked_native(pointer); } - /** Returns true if the unit has been completed. */ public boolean isCompleted() { return isCompleted_native(pointer); } - /** Returns true when a unit has been issued an order to build a structure and is moving to the build - * location. Also returns true for Terran SCVs while they construct a building. - * \see Unit::build, Unit::cancelConstruction, Unit::haltConstruction, Unit::isBeingConstructed. */ public boolean isConstructing() { return isConstructing_native(pointer); } - /** Returns true if the unit has a defense matrix from a Terran Science Vessel. */ public boolean isDefenseMatrixed() { return isDefenseMatrixed_native(pointer); } - /** Returns true if the unit is detected. */ public boolean isDetected() { return isDetected_native(pointer); } - /** Returns true if the unit has been ensnared by a Zerg Queen. */ public boolean isEnsnared() { return isEnsnared_native(pointer); } - /** Returns true if the unit is following another unit. - * \see Unit::follow, Unit::getTarget. */ public boolean isFollowing() { return isFollowing_native(pointer); } - /** Returns true if the unit is in one of the four states for gathering gas (MoveToGas, WaitForGas, - * HarvestGas, ReturnGas). - * \see Unit::isCarryingGas. */ public boolean isGatheringGas() { return isGatheringGas_native(pointer); } - /** Returns true if the unit is in one of the four states for gathering minerals (MoveToMinerals, - * WaitForMinerals, MiningMinerals, ReturnMinerals). - * \see Unit::isCarryingMinerals. */ public boolean isGatheringMinerals() { return isGatheringMinerals_native(pointer); } - /** Returns true for hallucinated units, false for normal units. Returns true for hallucinated enemy - * units only if Complete Map Information is enabled. - * \see Unit::getRemoveTimer. */ public boolean isHallucination() { return isHallucination_native(pointer); } - /** Returns true if the unit is holding position - * \see Unit::holdPosition. */ public boolean isHoldingPosition() { return isHoldingPosition_native(pointer); } - /** Returns true if the unit is not doing anything. - * \see Unit::stop. */ public boolean isIdle() { return isIdle_native(pointer); } - /** Returns true if the unit can be interrupted. */ public boolean isInterruptible() { return isInterruptible_native(pointer); } - /** Returns true if the unit is invincible. */ public boolean isInvincible() { return isInvincible_native(pointer); } - /** Returns true if the unit can attack a specified target from its current position. */ public boolean isInWeaponRange(Unit target) { return isInWeaponRange_native(pointer, target); } - /** Returns true if the unit is being irradiated by a Terran Science Vessel. - * \see Unit::getIrradiateTimer. */ public boolean isIrradiated() { return isIrradiated_native(pointer); } - /** Returns true if the unit is a Terran building that is currently lifted off the ground. - * \see Unit::lift,Unit::land. */ public boolean isLifted() { return isLifted_native(pointer); } - /** Return true if the unit is loaded into a Terran Bunker, Terran Dropship, Protoss Shuttle, or Zerg - * Overlord. - * \see Unit::load, Unit::unload, Unit::unloadAll. */ public boolean isLoaded() { return isLoaded_native(pointer); } - /** Returns true if the unit is locked down by a Terran Ghost. - * \see Unit::getLockdownTimer. */ public boolean isLockedDown() { return isLockedDown_native(pointer); } - /** Returns true if the unit is being maelstrommed. - * \see Unit::getMaelstromTimer. */ public boolean isMaelstrommed() { return isMaelstrommed_native(pointer); } - /** Returns true if the unit is a zerg unit that is morphing. - * \see Unit::morph, Unit::cancelMorph, Unit::getBuildType, Unit::getRemainingBuildTime. */ public boolean isMorphing() { return isMorphing_native(pointer); } - /** Returns true if the unit is moving. - * \see Unit::attack, Unit::stop. */ public boolean isMoving() { return isMoving_native(pointer); } - /** Returns true if the unit has been parasited by some other player. */ public boolean isParasited() { return isParasited_native(pointer); } - /** Returns true if the unit is patrolling between two positions. - * \see Unit::patrol. */ public boolean isPatrolling() { return isPatrolling_native(pointer); } - /** Returns true if the unit has been plagued by a Zerg Defiler. - * \see Unit::getPlagueTimer. */ public boolean isPlagued() { return isPlagued_native(pointer); } - /** Returns true if the unit is a Terran SCV that is repairing or moving to repair another unit. */ public boolean isRepairing() { return isRepairing_native(pointer); } - /** Returns true if the unit is a building that is researching tech. See TechTypes for the complete list - * of available techs in Broodwar. - * \see Unit::research, Unit::cancelResearch, Unit::getTech, Unit::getRemainingResearchTime. */ public boolean isResearching() { return isResearching_native(pointer); } - /** Returns true if the unit has been selected by the user via the starcraft GUI. Only available if you - * enable Flag::UserInput during AIModule::onStart. - * \see Game::getSelectedUnits. */ public boolean isSelected() { return isSelected_native(pointer); } - /** Returns true if the unit is a Terran Siege Tank that is currently in Siege mode. - * \see Unit::siege, Unit::unsiege. */ public boolean isSieged() { return isSieged_native(pointer); } - /** Returns true if the unit is starting to attack. - * \see Unit::attackUnit, Unit::getGroundWeaponCooldown, Unit::getAirWeaponCooldown. */ public boolean isStartingAttack() { return isStartingAttack_native(pointer); } - /** Returns true if the unit has been stasised by a Protoss Arbiter. - * \see Unit::getStasisTimer. */ public boolean isStasised() { return isStasised_native(pointer); } - /** Returns true if the unit is currently stimmed. - * \see Unit::getStimTimer. */ public boolean isStimmed() { return isStimmed_native(pointer); } - /** Returns true if the unit is being pushed off of another unit */ public boolean isStuck() { return isStuck_native(pointer); } - /** Returns true if the unit is training units (i.e. a Barracks training Marines). - * \see Unit::train, Unit::getTrainingQueue, Unit::cancelTrain, Unit::getRemainingTrainTime. */ public boolean isTraining() { return isTraining_native(pointer); } - /** Returns true if the unit was recently attacked. */ public boolean isUnderAttack() { return isUnderAttack_native(pointer); } - /** Returns true if the unit is under a Dark Swarm. */ public boolean isUnderDarkSwarm() { return isUnderDarkSwarm_native(pointer); } - /** Returns true if the unit is under a Disruption Web. */ public boolean isUnderDisruptionWeb() { return isUnderDisruptionWeb_native(pointer); } - /** Returns true if the unit is under a Protoss Psionic Storm. */ public boolean isUnderStorm() { return isUnderStorm_native(pointer); } - /** Returns true if the unit is a Protoss building that is unpowered because no pylons are in range. */ public boolean isUnpowered() { return isUnpowered_native(pointer); } - /** Returns true if the unit is a building that is upgrading. See UpgradeTypes for the complete list - * of available upgrades in Broodwar. - * \see Unit::upgrade, Unit::cancelUpgrade, Unit::getUpgrade, Unit::getRemainingUpgradeTime. */ public boolean isUpgrading() { return isUpgrading_native(pointer); } - /** Returns true if the unit is visible. If the CompleteMapInformation? cheat flag is enabled, existing - * units hidden by the fog of war will be accessible, but isVisible will still return false. - * \see Unit::exists. */ public boolean isVisible() { return isVisible_native(pointer); } @@ -772,17 +537,14 @@ public class Unit { return isVisible_native(pointer, player); } - /** Returns true if the unit is able to execute the given command, or false if there is an error */ public boolean canIssueCommand(UnitCommand command) { return canIssueCommand_native(pointer, command); } - /** Issues the give unit command, or returns false if there is an error */ public boolean issueCommand(UnitCommand command) { return issueCommand_native(pointer, command); } - /** Orders the unit to attack move to the specified location. */ public boolean attack(Position target) { return attack_native(pointer, target); } @@ -791,7 +553,6 @@ public class Unit { return attack_native(pointer, target, shiftQueueCommand); } - /** Orders the unit to attack the specified unit. */ public boolean attack(Unit target) { return attack_native(pointer, target); } @@ -800,59 +561,38 @@ public class Unit { return attack_native(pointer, target, shiftQueueCommand); } - /** Orders the unit to build the given unit type at the given position. Note that if the player does not - * have enough resources when the unit attempts to place the building down, the order will fail. The - * tile position specifies where the top left corner of the building will be placed. */ public boolean build(TilePosition target, UnitType type) { return build_native(pointer, target, type); } - /** Orders the unit to build the given addon. The unit must be a Terran building that can have an addon - * and the specified unit type must be an addon unit type. */ public boolean buildAddon(UnitType type) { return buildAddon_native(pointer, type); } - /** Orders this unit to add the specified unit type to the training queue. Note that the player must - * have sufficient resources to train. If you wish to make units from a hatchery, use getLarva to get - * the larva associated with the hatchery and then call morph on the larva you want to morph. This - * command can also be used to make interceptors and scarabs. */ public boolean train(UnitType type) { return train_native(pointer, type); } - /** Orders the unit to morph into the specified unit type. Returns false if given a wrong type. - * \see Unit::cancelMorph, Unit::isMorphing. */ public boolean morph(UnitType type) { return morph_native(pointer, type); } - /** Orders the unit to research the given tech type. - * \see Unit::cancelResearch, Unit::Unit#isResearching, Unit::getRemainingResearchTime, Unit::getTech. */ public boolean research(TechType tech) { return research_native(pointer, tech); } - /** Orders the unit to upgrade the given upgrade type. - * \see Unit::cancelUpgrade, Unit::Unit#isUpgrading, Unit::getRemainingUpgradeTime, Unit::getUpgrade. */ public boolean upgrade(UpgradeType upgrade) { return upgrade_native(pointer, upgrade); } - /** Orders the unit to set its rally position to the specified position. - * \see Unit::getRallyPosition, Unit::getRallyUnit. */ public boolean setRallyPoint(Position target) { return setRallyPoint_native(pointer, target); } - /** Orders the unit to set its rally unit to the specified unit. - * \see Unit::setRallyPosition, Unit::getRallyPosition, Unit::getRallyUnit. */ public boolean setRallyPoint(Unit target) { return setRallyPoint_native(pointer, target); } - /** Orders the unit to move from its current position to the specified position. - * \see Unit::isMoving. */ public boolean move(Position target) { return move_native(pointer, target); } @@ -861,8 +601,6 @@ public class Unit { return move_native(pointer, target, shiftQueueCommand); } - /** Orders the unit to patrol between its current position and the specified position. - * \see Unit::isPatrolling. */ public boolean patrol(Position target) { return patrol_native(pointer, target); } @@ -871,7 +609,6 @@ public class Unit { return patrol_native(pointer, target, shiftQueueCommand); } - /** Orders the unit to hold its position.*/ public boolean holdPosition() { return holdPosition_native(pointer); } @@ -880,7 +617,6 @@ public class Unit { return holdPosition_native(pointer, shiftQueueCommand); } - /** Orders the unit to stop. */ public boolean stop() { return stop_native(pointer); } @@ -889,8 +625,6 @@ public class Unit { return stop_native(pointer, shiftQueueCommand); } - /** Orders the unit to follow the specified unit. - * \see Unit::isFollowing. */ public boolean follow(Unit target) { return follow_native(pointer, target); } @@ -899,8 +633,6 @@ public class Unit { return follow_native(pointer, target, shiftQueueCommand); } - /** Orders the unit to gather the specified unit (must be mineral or refinery type). - * \see Unit::isGatheringGas, Unit::isGatheringMinerals. */ public boolean gather(Unit target) { return gather_native(pointer, target); } @@ -909,9 +641,6 @@ public class Unit { return gather_native(pointer, target, shiftQueueCommand); } - /** Orders the unit to return its cargo to a nearby resource depot such as a Command Center. Only - * workers that are carrying minerals or gas can be ordered to return cargo. - * \see Unit::isCarryingGas, Unit::isCarryingMinerals. */ public boolean returnCargo() { return returnCargo_native(pointer); } @@ -920,9 +649,6 @@ public class Unit { return returnCargo_native(pointer, shiftQueueCommand); } - /** Orders the unit to repair the specified unit. Only Terran SCVs can be ordered to repair, and the - * target must be a mechanical Terran unit or building. - * \see Unit::isRepairing. */ public boolean repair(Unit target) { return repair_native(pointer, target); } @@ -931,58 +657,38 @@ public class Unit { return repair_native(pointer, target, shiftQueueCommand); } - /** Orders the unit to burrow. Either the unit must be a Zerg Lurker, or the unit must be a Zerg ground - * unit and burrow tech must be researched. - * \see: Unit::unburrow, Unit::isBurrowed. */ public boolean burrow() { return burrow_native(pointer); } - /** Orders the burrowed unit to unburrow. - * \see: Unit::burrow, Unit::isBurrowed. - * */ public boolean unburrow() { return unburrow_native(pointer); } - /** Orders the unit to cloak. - * \see: Unit::decloak, Unit::isCloaked. */ public boolean cloak() { return cloak_native(pointer); } - /** Orders the unit to decloak. - * \see: Unit::cloak, Unit::isCloaked. */ public boolean decloak() { return decloak_native(pointer); } - /** Orders the unit to siege. Note: unit must be a Terran siege tank. - * \see Unit::unsiege, Unit::isSieged. */ public boolean siege() { return siege_native(pointer); } - /** Orders the unit to unsiege. Note: unit must be a Terran siege tank. - * \see: Unit::unsiege, Unit::isSieged. */ public boolean unsiege() { return unsiege_native(pointer); } - /** Orders the unit to lift. Note: unit must be a Terran building that can be lifted. - * \see Unit::land, Unit::isLifted. */ public boolean lift() { return lift_native(pointer); } - /** Orders the unit to land. Note: unit must be a Terran building that is currently lifted. - * \see Unit::lift, Unit::isLifted. */ public boolean land(TilePosition target) { return land_native(pointer, target); } - /** Orders the unit to load the target unit. - * \see Unit::unload, Unit::unloadAll, Unit::getLoadedUnits, Unit:isLoaded. */ public boolean load(Unit target) { return load_native(pointer, target); } @@ -991,14 +697,10 @@ public class Unit { return load_native(pointer, target, shiftQueueCommand); } - /** Orders the unit to unload the target unit. - * \see Unit::load, Unit::unloadAll, Unit::getLoadedUnits, Unit:isLoaded. */ public boolean unload(Unit target) { return unload_native(pointer, target); } - /** Orders the unit to unload all loaded units at the unit's current position. - * \see Unit::load, Unit::unload, Unit::unloadAll, Unit::getLoadedUnits, Unit:isLoaded. */ public boolean unloadAll() { return unloadAll_native(pointer); } @@ -1007,10 +709,6 @@ public class Unit { return unloadAll_native(pointer, shiftQueueCommand); } - /** Orders the unit to unload all loaded units at the specified location. Unit should be a Terran - * Dropship, Protoss Shuttle, or Zerg Overlord. If the unit is a Terran Bunker, the units will be - * unloaded right outside the bunker, like in the first version of unloadAll. - * \see Unit::load, Unit::unload, Unit::unloadAll, Unit::getLoadedUnits, Unit:isLoaded. */ public boolean unloadAll(Position target) { return unloadAll_native(pointer, target); } @@ -1019,7 +717,6 @@ public class Unit { return unloadAll_native(pointer, target, shiftQueueCommand); } - /** Works like the right click in the GUI. */ public boolean rightClick(Position target) { return rightClick_native(pointer, target); } @@ -1028,8 +725,6 @@ public class Unit { return rightClick_native(pointer, target, shiftQueueCommand); } - /** Works like the right click in the GUI. Right click on a mineral patch to order a worker to mine, - * right click on an enemy to attack it. */ public boolean rightClick(Unit target) { return rightClick_native(pointer, target); } @@ -1038,26 +733,18 @@ public class Unit { return rightClick_native(pointer, target, shiftQueueCommand); } - /** Orders the SCV to stop constructing the building, and the building is left in a partially complete - * state until it is canceled, destroyed, or completed. - * \see Unit::isConstructing. */ public boolean haltConstruction() { return haltConstruction_native(pointer); } - /** Orders the building to stop being constructed. - * \see Unit::beingConstructed. */ public boolean cancelConstruction() { return cancelConstruction_native(pointer); } - /** Orders the unit to stop making the addon. */ public boolean cancelAddon() { return cancelAddon_native(pointer); } - /** Orders the unit to remove the specified unit from its training queue. - * \see Unit::train, Unit::cancelTrain, Unit::isTraining, Unit::getTrainingQueue. */ public boolean cancelTrain() { return cancelTrain_native(pointer); } @@ -1066,43 +753,30 @@ public class Unit { return cancelTrain_native(pointer, slot); } - /** Orders the unit to stop morphing. - * \see Unit::morph, Unit::isMorphing. */ public boolean cancelMorph() { return cancelMorph_native(pointer); } - /** Orders the unit to cancel a research in progress. - * \see Unit::research, Unit::isResearching, Unit::getTech. */ public boolean cancelResearch() { return cancelResearch_native(pointer); } - /** Orders the unit to cancel an upgrade in progress. - * \see Unit::upgrade, Unit::isUpgrading, Unit::getUpgrade. */ public boolean cancelUpgrade() { return cancelUpgrade_native(pointer); } - /** Orders the unit to use a tech not requiring a target (ie Stim Pack). Returns true if it is a valid - * tech. */ public boolean useTech(TechType tech) { return useTech_native(pointer, tech); } - /** Orders the unit to use a tech requiring a position target (ie Dark Swarm). Returns true if it is a - * valid tech.*/ public boolean useTech(TechType tech, Position target) { return useTech_native(pointer, tech, target); } - /** Orders the unit to use a tech requiring a unit target (ie Irradiate). Returns true if it is a valid - * tech.*/ public boolean useTech(TechType tech, Unit target) { return useTech_native(pointer, tech, target); } - /** Moves a Flag Beacon to the target location. */ public boolean placeCOP(TilePosition target) { return placeCOP_native(pointer, target); } @@ -1115,6 +789,9 @@ public class Unit { } private static Unit get(long pointer) { + if (pointer == 0 ) { + return null; + } Unit instance = instances.get(pointer); if (instance == null ) { instance = new Unit(pointer); diff --git a/bwapi/UnitCommand.java b/bwapi/UnitCommand.java index a30523d..75556ff 100644 --- a/bwapi/UnitCommand.java +++ b/bwapi/UnitCommand.java @@ -7,17 +7,8 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; -/** -UnitCommand objects are currently used only as arguments to one function - Unit::issueCommand. While units can be issued commands the normal way via the Unit methods (i.e. Unit::attack), in some cases you may want to have a function that can process any unit command, such as when you're writing a proxy for BWAPI. - - -*/ public class UnitCommand { -/** -Returns the type of the command - -*/ public UnitCommandType getType() { return getType_native(pointer); } @@ -30,6 +21,9 @@ Returns the type of the command } private static UnitCommand get(long pointer) { + if (pointer == 0 ) { + return null; + } UnitCommand instance = instances.get(pointer); if (instance == null ) { instance = new UnitCommand(pointer); diff --git a/bwapi/UnitCommandType.java b/bwapi/UnitCommandType.java index 6fe3e92..8a0454e 100644 --- a/bwapi/UnitCommandType.java +++ b/bwapi/UnitCommandType.java @@ -7,16 +7,8 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; -/** -Specifies the type of UnitCommand. Used when constructing UnitCommand objects, which are then passed to Unit::issueCommand which uses this type to determine which Unit member function to call. -List of all UnitCommandTypes. - - -*/ public class UnitCommandType { - /** Returns the string corresponding to the UnitCommandType object. For example, - * UnitCommandTypes::Set_Rally_Position.getName() returns std::string("Set Rally Position")*/ public String c_str() { return c_str_native(pointer); } @@ -125,6 +117,9 @@ public class UnitCommandType { } private static UnitCommandType get(long pointer) { + if (pointer == 0 ) { + return null; + } UnitCommandType instance = instances.get(pointer); if (instance == null ) { instance = new UnitCommandType(pointer); diff --git a/bwapi/UnitSizeType.java b/bwapi/UnitSizeType.java index cb007eb..5207ba7 100644 --- a/bwapi/UnitSizeType.java +++ b/bwapi/UnitSizeType.java @@ -7,15 +7,8 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; -/** -List of all UnitSizeTypes. - - -*/ public class UnitSizeType { - /** Returns the string corresponding to the UnitSizeType object. For example, - * UnitSizeTypes::Medium.getName() returns std::string("Medium")*/ public String c_str() { return c_str_native(pointer); } @@ -44,6 +37,9 @@ public class UnitSizeType { } private static UnitSizeType get(long pointer) { + if (pointer == 0 ) { + return null; + } UnitSizeType instance = instances.get(pointer); if (instance == null ) { instance = new UnitSizeType(pointer); diff --git a/bwapi/UnitType.java b/bwapi/UnitType.java index 2191785..988e42d 100644 --- a/bwapi/UnitType.java +++ b/bwapi/UnitType.java @@ -7,11 +7,8 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; - /** The UnitType class is used to get information about a particular type of unit, such as the build time - * of a Lurker, or the mineral price of an Ultralisk. TODO Add the unittype table from the wiki*/ public class UnitType { - /** Returns the name of the unit. */ public String c_str() { return c_str_native(pointer); } @@ -20,164 +17,118 @@ public class UnitType { return c_str(); } - /** Returns the race that the unit belongs to. For example UnitTypes::Terran_SCV.getRace() will return - * Races::Terran. */ public Race getRace() { return getRace_native(pointer); } - /** Returns what builds this unit type. The second number will usually be 1 unless the unit type is - * Protoss_Archon or Protoss_Dark_Archon. Units that cannot be created, such as critters and mineral - * fields, will return a pair where the unit type is UnitTypes::None, and the second component is 0. - *

- * Example: UnitTypes::Terran_Marine.whatBuilds() will return an std::pair, where the first component - * is UnitTypes::Terran_Barracks. */ public TechType requiredTech() { return requiredTech_native(pointer); } - /** Returns the tech used to cloak the unit, or TechTypes::None if the unit cannot cloak or is - permanently cloaked */ public TechType cloakingTech() { return cloakingTech_native(pointer); } - /** Returns the set of tech types this unit can use, provided the tech types have been researched and - * the unit has enough energy. */ public List abilities() { return abilities_native(pointer); } - /** Returns the set of upgrade types that can affect this unit. */ public List upgrades() { return upgrades_native(pointer); } - /** Returns the upgrade that increase's the unit's armor, or UpgradeTypes::None if no upgrade - * increase's this unit's armor. For example UnitTypes::Terran_Marine.armorUpgrade() will return a - * pointer to UpgradeTypes::Terran_Infantry_Armor. */ public UpgradeType armorUpgrade() { return armorUpgrade_native(pointer); } - /** Returns the maximum amount of hit points the unit type can have. */ public int maxHitPoints() { return maxHitPoints_native(pointer); } - /** Returns the maximum amount of shields the unit type can have. */ public int maxShields() { return maxShields_native(pointer); } - /** Returns the maximum amount of energy the unit type can have. */ public int maxEnergy() { return maxEnergy_native(pointer); } - /** Returns the amount of armor the non-upgraded unit type has. */ public int armor() { return armor_native(pointer); } - /** Returns the mineral price of the unit. - *

- * Example: UnitTypes::Siege_Tank_Tank_Mode.mineralPrice() returns 150. */ public int mineralPrice() { return mineralPrice_native(pointer); } - /** UnitTypes::Siege_Tank_Tank_Mode.gasPrice() returns 100. */ public int gasPrice() { return gasPrice_native(pointer); } - /** Returns the number of frames needed to make this unit type. */ public int buildTime() { return buildTime_native(pointer); } - /** Returns the amount of supply used by this unit. Supply counts returned by BWAPI are double what you - * would expect to see from playing the game. This is because zerglings take up 0.5 in-game supply. */ public int supplyRequired() { return supplyRequired_native(pointer); } - /** Returns the amount of supply produced by this unit (i.e. for a Protoss_Pylon). Supply counts - * returned by BWAPI are double what you would expect to see from playing the game. This is because - * zerglings take up 0.5 in-game supply. */ public int supplyProvided() { return supplyProvided_native(pointer); } - /** Returns the amount of space this unit type takes up inside a bunker or transport unit. */ public int spaceRequired() { return spaceRequired_native(pointer); } - /** Returns the amount of space this unit type provides. */ public int spaceProvided() { return spaceProvided_native(pointer); } - /** Returns the score which is used to determine the total scores in the after-game stats screen. */ public int buildScore() { return buildScore_native(pointer); } - /** Returns the score which is used to determine the total scores in the after-game stats screen. */ public int destroyScore() { return destroyScore_native(pointer); } - /** Returns the size of the unit - either Small, Medium, Large, or Independent. */ public UnitSizeType size() { return size_native(pointer); } - /** Returns the tile width of the unit. Useful for determining the size of buildings. For example - * UnitTypes::Terran_Supply_Depot.tileWidth() will return 3. */ public int tileWidth() { return tileWidth_native(pointer); } - /** Returns the tile height of the unit. Useful for determining the size of buildings. For example - * UnitTypes::Terran_Supply_Depot.tileHeight() will return 2. */ public int tileHeight() { return tileHeight_native(pointer); } - /** Distance from the center of the unit to the left edge of the unit, measured in pixels. */ public int dimensionLeft() { return dimensionLeft_native(pointer); } - /** Distance from the center of the unit to the top edge of the unit, measured in pixels. */ public int dimensionUp() { return dimensionUp_native(pointer); } - /** Distance from the center of the unit to the right edge of the unit, measured in pixels. */ public int dimensionRight() { return dimensionRight_native(pointer); } - /** Distance from the center of the unit to the bottom edge of the unit, measured in pixels. */ public int dimensionDown() { return dimensionDown_native(pointer); } - /** Returns the range at which the unit will start targeting enemy units, measured in pixels. */ public int seekRange() { return seekRange_native(pointer); } - /** Returns how far the un-upgraded unit type can see into the fog of war, measured in pixels. */ public int sightRange() { return sightRange_native(pointer); } - /** Returns the unit's ground weapon. */ public WeaponType groundWeapon() { return groundWeapon_native(pointer); } @@ -186,7 +137,6 @@ public class UnitType { return maxGroundHits_native(pointer); } - /** Returns the unit's air weapon. */ public WeaponType airWeapon() { return airWeapon_native(pointer); } @@ -195,210 +145,154 @@ public class UnitType { return maxAirHits_native(pointer); } - /** Returns the unit's non-upgraded top speed in pixels per frame. For Terran buildings that can lift - * off and the Zerg Infested Command Center, this returns how fast the building moves when it is - * lifted. */ public double topSpeed() { return topSpeed_native(pointer); } - /** Returns how fast the unit can accelerate to its top speed. What units this quantity is measured in - * is currently unknown. */ public int acceleration() { return acceleration_native(pointer); } - /** Related to how fast the unit can halt. What units this quantity is measured in is currently - * unknown. */ public int haltDistance() { return haltDistance_native(pointer); } - /** Related to how fast the unit can turn. What units this quantity is measured in is currently - * unknown. */ public int turnRadius() { return turnRadius_native(pointer); } - /** Returns true if the unit can train other units. For example, UnitTypes::Terran_Barracks.canProduce() - * will return true, while UnitTypes::Terran_Marine?.canProduce() will return false. This is also true - * for two non-building units: Protoss Carrier (can produce interceptors) and Protoss Reaver - * (can produce scarabs). */ public boolean canProduce() { return canProduce_native(pointer); } - /** Returns true if the unit can attack (either ground or air). Returns false for units that can only - * inflict damage via special abilities (such as Protoss High Templar). */ public boolean canAttack() { return canAttack_native(pointer); } - /** Returns true if the unit can move. Note that buildings will return false, even Terran buildings - * which can move once lifted. */ public boolean canMove() { return canMove_native(pointer); } - /** Returns true for flying/air units. */ public boolean isFlyer() { return isFlyer_native(pointer); } - /** Returns true for units that regenerate health (i.e. zerg units). */ public boolean regeneratesHP() { return regeneratesHP_native(pointer); } - /** Returns true if the unit type is capable of casting spells / using technology. */ public boolean isSpellcaster() { return isSpellcaster_native(pointer); } - /** Returns true for the two units that are permanently cloaked - Protoss Observer and Protoss Dark - * Templar. */ public boolean hasPermanentCloak() { return hasPermanentCloak_native(pointer); } - /** Returns true for units that cannot be destroyed (i.e. Terran Nuclear Missile, Mineral Field, - * Vespene Geyser, etc) */ public boolean isInvincible() { return isInvincible_native(pointer); } - /** Returns true if the unit is organic, such as a Terran Marine. */ public boolean isOrganic() { return isOrganic_native(pointer); } - /** Returns true if the unit is mechanical such as a Terran Vulture. */ public boolean isMechanical() { return isMechanical_native(pointer); } - /** Returns true for the four robotic Protoss units - Probe, Shuttle, Reaver, and Observer. */ public boolean isRobotic() { return isRobotic_native(pointer); } - /** Returns true for the seven units that can detect cloaked units - Terran Science Vessel, Spell - * Scanner Sweep, Zerg Overlord, Protoss Observer, Terran Missile Turret, Zerg Spore Colony, and Protoss - * Photon Cannon. */ public boolean isDetector() { return isDetector_native(pointer); } - /** Returns true for the five units that hold resources - Mineral Field, Vespene Geyser, - * Terran Refinery, Zerg Extractor, and Protoss Assimilator. */ public boolean isResourceContainer() { return isResourceContainer_native(pointer); } - /** Returns true for the five units that can accept resources - Terran Command Center, Protoss Nexus, - * Zerg Hatchery, Zerg Lair, and Zerg Hive. */ public boolean isResourceDepot() { return isResourceDepot_native(pointer); } - /** Returns true for Terran Refinery, Zerg Extractor, and Protoss Assimilator. */ public boolean isRefinery() { return isRefinery_native(pointer); } - /** Returns true for Protoss Probe, Terran SCV, and Zerg Drone. */ public boolean isWorker() { return isWorker_native(pointer); } - /** Returns true for buildings that must be near a pylon to be constructed. */ public boolean requiresPsi() { return requiresPsi_native(pointer); } - /** Returns true for buildings that can only be built on zerg creep. */ public boolean requiresCreep() { return requiresCreep_native(pointer); } - /** Returns true for Zergling and Scourge. */ public boolean isTwoUnitsInOneEgg() { return isTwoUnitsInOneEgg_native(pointer); } - /** Returns true for Zerg Lurker and units that can burrow when burrow tech is researched. */ public boolean isBurrowable() { return isBurrowable_native(pointer); } - /** Returns true for units that can be cloaked - Terran Ghost and Terran Wraith. Does not include units - * which have permanent cloak (Protoss Observer and Protoss Dark Templar). */ public boolean isCloakable() { return isCloakable_native(pointer); } - /** Returns true if the unit is a building (also true for mineral field and vespene geyser). */ public boolean isBuilding() { return isBuilding_native(pointer); } - /** Returns true if the unit is an add-on, such as a Terran Comsat Station. */ public boolean isAddon() { return isAddon_native(pointer); } - /** Returns true for Terran buildings that can lift off (i.e. Barracks). */ public boolean isFlyingBuilding() { return isFlyingBuilding_native(pointer); } - /** Returns true if the unit is neutral, such as a critter or mineral field. */ public boolean isNeutral() { return isNeutral_native(pointer); } - /** Returns true if the unit is a Hero unit. */ public boolean isHero() { return isHero_native(pointer); } - /** Returns true if the unit is a Powerup unit. */ public boolean isPowerup() { return isPowerup_native(pointer); } - /** Returns true if the unit is a regular Beacon. */ public boolean isBeacon() { return isBeacon_native(pointer); } - /** Returns true if the unit is a flag Beacon. */ public boolean isFlagBeacon() { return isFlagBeacon_native(pointer); } - /** Returns true if the unit is a special building. */ public boolean isSpecialBuilding() { return isSpecialBuilding_native(pointer); } - /** Returns true if the unit is a spell unit. */ public boolean isSpell() { return isSpell_native(pointer); } - /** Returns true if the unit produces larva. */ public boolean producesLarva() { return producesLarva_native(pointer); } - /** Returns true if the unit is one of the three mineral field types. */ public boolean isMineralField() { return isMineralField_native(pointer); } - /** Returns true if the unit is capable of constructing an addon. - This consists of Command Center, Factory, Starport, and Science Facility. */ public boolean canBuildAddon() { return canBuildAddon_native(pointer); } @@ -833,6 +727,9 @@ public class UnitType { } private static UnitType get(long pointer) { + if (pointer == 0 ) { + return null; + } UnitType instance = instances.get(pointer); if (instance == null ) { instance = new UnitType(pointer); diff --git a/bwapi/UpgradeType.java b/bwapi/UpgradeType.java index 21ef604..81f6ecc 100644 --- a/bwapi/UpgradeType.java +++ b/bwapi/UpgradeType.java @@ -7,15 +7,8 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; -/** -The UpgradeType class is used to get information about a particular upgrade. -List of all UpgradeTypes. - - -*/ public class UpgradeType { - /** Returns the name for the upgrade type. */ public String c_str() { return c_str_native(pointer); } @@ -24,13 +17,10 @@ public class UpgradeType { return c_str(); } - /** Returns the race the upgrade is for. For example, UpgradeTypes::Terran_Infantry_Armor.getRace() - * will return Races::Terran. */ public Race getRace() { return getRace_native(pointer); } - /** Returns the mineral price for the first upgrade. */ public int mineralPrice() { return mineralPrice_native(pointer); } @@ -39,12 +29,10 @@ public class UpgradeType { return mineralPrice_native(pointer, level); } - /** Returns the amount that the mineral price increases for each additional upgrade. */ public int mineralPriceFactor() { return mineralPriceFactor_native(pointer); } - /** Returns the vespene gas price for the first upgrade. */ public int gasPrice() { return gasPrice_native(pointer); } @@ -53,12 +41,10 @@ public class UpgradeType { return gasPrice_native(pointer, level); } - /** Returns the amount that the vespene gas price increases for each additional upgrade. */ public int gasPriceFactor() { return gasPriceFactor_native(pointer); } - /** Returns the number of frames needed to research the first upgrade. */ public int upgradeTime() { return upgradeTime_native(pointer); } @@ -67,22 +53,18 @@ public class UpgradeType { return upgradeTime_native(pointer, level); } - /** Returns the number of frames that the upgrade time increases for each additional upgrade. */ public int upgradeTimeFactor() { return upgradeTimeFactor_native(pointer); } - /** Returns the maximum number of times the upgrade can be researched. */ public int maxRepeats() { return maxRepeats_native(pointer); } - /** Returns the type of unit that researches the upgrade. */ public UnitType whatUpgrades() { return whatUpgrades_native(pointer); } - /** Returns the type of unit that is additionally required for the upgrade. */ public UnitType whatsRequired() { return whatsRequired_native(pointer); } @@ -91,7 +73,6 @@ public class UpgradeType { return whatsRequired_native(pointer, level); } - /** Returns the set of units that are affected by this upgrade. */ public List whatUses() { return whatUses_native(pointer); } @@ -208,6 +189,9 @@ public class UpgradeType { } private static UpgradeType get(long pointer) { + if (pointer == 0 ) { + return null; + } UpgradeType instance = instances.get(pointer); if (instance == null ) { instance = new UpgradeType(pointer); diff --git a/bwapi/WeaponType.java b/bwapi/WeaponType.java index 16497b3..a95c7ca 100644 --- a/bwapi/WeaponType.java +++ b/bwapi/WeaponType.java @@ -7,14 +7,8 @@ import java.util.HashMap; import java.util.Collection; import java.util.List; -/** -List of all WeaponTypes. - - -*/ public class WeaponType { - /** Returns the name of the weapon. */ public String c_str() { return c_str_native(pointer); } @@ -23,136 +17,94 @@ public class WeaponType { return c_str(); } - /** Returns the tech type that must be researched before this weapon can be used, or TechTypes::None if - * no tech type is required. */ public TechType getTech() { return getTech_native(pointer); } - /** Returns the unit that can use this weapon. */ public UnitType whatUses() { return whatUses_native(pointer); } - /** Returns the amount of damage that this weapon deals per attack. */ public int damageAmount() { return damageAmount_native(pointer); } -/** - -*/ public int damageBonus() { return damageBonus_native(pointer); } - /** Returns the amount of cooldown time between attacks. */ public int damageCooldown() { return damageCooldown_native(pointer); } - /** Returns the amount that the damage increases per upgrade. - * \see WeaponType::upgradeType. */ public int damageFactor() { return damageFactor_native(pointer); } - /** Returns the upgrade type that can be upgraded to increase the attack damage. */ public UpgradeType upgradeType() { return upgradeType_native(pointer); } - /** Returns the type of damage that this weapon uses (i.e. concussive, normal, explosive, etc). */ public DamageType damageType() { return damageType_native(pointer); } - /** Returns the type of explosion that this weapon uses. */ public ExplosionType explosionType() { return explosionType_native(pointer); } - /** Returns the minimum attack range of the weapon, measured in pixels, 0 for most things except - * WeaponTypes::Arclite_Shock_Cannon (the weapon of the Terran Siege Tank in Siege Mode). */ public int minRange() { return minRange_native(pointer); } - /** Returns the maximum attack range of the weapon, measured in pixels. */ public int maxRange() { return maxRange_native(pointer); } - /** Inner radius used in splash damage calculations. */ public int innerSplashRadius() { return innerSplashRadius_native(pointer); } - /** Median radius used in splash damage calculations. */ public int medianSplashRadius() { return medianSplashRadius_native(pointer); } - /** Outer radius used in splash damage calculations. */ public int outerSplashRadius() { return outerSplashRadius_native(pointer); } - /** Returns true if this weapon can attack air units. */ public boolean targetsAir() { return targetsAir_native(pointer); } - /** Returns true if this weapon can attack ground units. */ public boolean targetsGround() { return targetsGround_native(pointer); } -/** - -*/ public boolean targetsMechanical() { return targetsMechanical_native(pointer); } -/** - -*/ public boolean targetsOrganic() { return targetsOrganic_native(pointer); } -/** - -*/ public boolean targetsNonBuilding() { return targetsNonBuilding_native(pointer); } -/** - -*/ public boolean targetsNonRobotic() { return targetsNonRobotic_native(pointer); } -/** - -*/ public boolean targetsTerrain() { return targetsTerrain_native(pointer); } -/** - -*/ public boolean targetsOrgOrMech() { return targetsOrgOrMech_native(pointer); } -/** - -*/ public boolean targetsOwn() { return targetsOwn_native(pointer); } @@ -369,6 +321,9 @@ public class WeaponType { } private static WeaponType get(long pointer) { + if (pointer == 0 ) { + return null; + } WeaponType instance = instances.get(pointer); if (instance == null ) { instance = new WeaponType(pointer); diff --git a/bwapi4-includes/BWAPI.h b/bwapi4-includes/BWAPI.h new file mode 100644 index 0000000..f9d3f40 --- /dev/null +++ b/bwapi4-includes/BWAPI.h @@ -0,0 +1,63 @@ +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace BWAPI +{ + /// Retrieves the revision of the BWAPILIB module currently being used. + /// + /// @returns + /// An integer representing the revision number of the library. + /// + /// @threadsafe + int BWAPI_getRevision(); + + /// Checks if the BWAPILIB module was compiled in DEBUG mode. + /// + /// @retval true if this is a DEBUG build + /// @retval false if this is a RELEASE build + /// + /// @threadsafe + bool BWAPI_isDebug(); +} diff --git a/bwapi4-includes/BWAPI/AIModule.h b/bwapi4-includes/BWAPI/AIModule.h new file mode 100644 index 0000000..8528904 --- /dev/null +++ b/bwapi4-includes/BWAPI/AIModule.h @@ -0,0 +1,224 @@ +#pragma once +#include +#include +#include +#include + +namespace BWAPI +{ + // Forward declarations + class PlayerInterface; + typedef PlayerInterface *Player; + class Color; + + /// AIModule is a virtual class that is intended to be implemented or inherited by a custom AI + /// class. The Broodwar interface is guaranteed to be initialized if any of these predefined + /// interface functions are invoked by BWAPI. + /// + /// @warning + /// Using BWAPI in any thread other than the thread that invokes these functions can produce + /// unexpected behaviour and possibly crash your bot. Multi-threaded AIs are possible so + /// long as all BWAPI interaction is limited to the calling thread. + /// + /// @note + /// Replays are considered games and call all of the same callbacks as a standard game would. + class AIModule + { + public: + AIModule(); + virtual ~AIModule(); + + /// Called only once at the beginning of a game. It is intended that the AI module do any + /// data initialization in this function. + /// + /// @warning + /// Using the Broodwar interface before this function is called can produce undefined + /// behaviour and crash your bot. (During static initialization of a class for example) + virtual void onStart(); + + /// Called once at the end of a game. + /// + /// @param isWinner + /// A boolean value to determine if the current player has won the match. This value will + /// be true if the current player has won, and false if either the player has lost or the + /// game is actually a replay. + virtual void onEnd(bool isWinner); + + /// Called once for every execution of a logical frame in Broodwar. + /// Users will generally put most of their code in this function. + virtual void onFrame(); + + /// Called when the user attempts to send a text message. This function can be used to make + /// the bot execute text commands entered by the user for debugging purposes. + /// + /// @param text + /// A string containing the exact text message that was sent by the user. + /// + /// @note + /// If Flag::UserInput is disabled, then this function is not called. + virtual void onSendText(std::string text); + + /// Called when the client receives a message from another Player. This function can be used + /// to retrieve information from allies in team games, or just to respond to other players. + /// + /// @param player + /// The Player interface object representing the owner of the text message. + /// @param text + /// The text message that the \p player sent. + /// + /// @note + /// Messages sent by the current player will never invoke this function. + virtual void onReceiveText(Player player, std::string text); + + /// Called when a Player leaves the game. All of their units are automatically given to the + /// neutral player with their colour and alliance parameters preserved. + /// + /// @param player + /// The Player interface object representing the player that left the game. + virtual void onPlayerLeft(Player player); + + /// Called when a @Nuke has been launched somewhere on the map. + /// + /// @param target + /// A Position object containing the target location of the @Nuke. If the target location + /// is not visible and Flag::CompleteMapInformation is disabled, then target will be + /// Positions::Unknown. + virtual void onNukeDetect(Position target); + + /// Called when a Unit becomes accessible. + /// + /// @param unit + /// The Unit interface object representing the unit that has just become accessible. + /// + /// @note + /// This function INCLUDES the state of Flag::CompleteMapInformation. + /// + /// @see onUnitShow + virtual void onUnitDiscover(Unit unit); + + /// Called when a Unit becomes inaccessible. + /// + /// @param unit + /// The Unit interface object representing the unit that has just become inaccessible. + /// + /// @note + /// This function INCLUDES the state of Flag::CompleteMapInformation. + /// + /// @see onUnitHide + virtual void onUnitEvade(Unit unit); + + /// Called when a previously invisible unit becomes visible. + /// + /// @param unit + /// The Unit interface object representing the unit that has just become visible. + /// + /// @note + /// This function EXCLUDES the state of Flag::CompleteMapInformation. + /// + /// @see onUnitDiscover + virtual void onUnitShow(Unit unit); + + /// Called just as a visible unit is becoming invisible. + /// + /// @param unit + /// The Unit interface object representing the unit that is about to go out of scope. + /// + /// @note + /// This function EXCLUDES the state of Flag::CompleteMapInformation. + /// + /// @see onUnitEvade + virtual void onUnitHide(Unit unit); + + /// Called when any unit is created. + /// + /// @param unit + /// The Unit interface object representing the unit that has just been created. + /// + /// @note + /// Due to the internal workings of Broodwar, this function excludes Zerg morphing and + /// the construction of structures over a @Geyser . + /// + /// @see onUnitMorph + virtual void onUnitCreate(Unit unit); + + /// Called when a unit is removed from the game either through death or other means. + /// + /// @param unit + /// Unit object representing the unit that has just been destroyed or otherwise completely + /// removed from the game. + /// + /// @note + /// When a @Drone morphs into an @Extractor, the @Drone is removed from the game and the + /// @Geyser morphs into an @Extractor. + /// + /// @note + /// If a unit is visible and destroyed, then onUnitHide is called just before this. + virtual void onUnitDestroy(Unit unit); + + /// Called when a unit changes its UnitType. For example, when a @Drone transforms into a + /// @Hatchery, a @SiegeTank uses @SiegeMode , or a @Geyser receives a @Refinery . + /// + /// @param unit + /// Unit object representing the unit that had its UnitType change. + /// + /// @note + /// This is NOT called if the unit type changes to or from UnitTypes::Unknown. + virtual void onUnitMorph(Unit unit); + + /// Called when a unit changes ownership. This occurs when the @Protoss ability @MindControl + /// is used, or if a unit changes ownership in @UseMapSettings . + /// + /// @param unit + /// Unit interface object pertaining to the unit that has just changed ownership. + virtual void onUnitRenegade(Unit unit); + + /// Called when the state of the Broodwar game is saved to file. + /// + /// @param gameName + /// A String object containing the file name that the game was saved as. + virtual void onSaveGame(std::string gameName); + + /// Called when the state of a unit changes from incomplete to complete. + /// + /// @param unit + /// The Unit object representing the Unit that has just finished training or constructing. + virtual void onUnitComplete(Unit unit); + }; + + /// TournamentModule is a virtual class that is intended to be implemented or inherited by a + /// custom Tournament class. Like AIModule, the Broodwar interface is guaranteed to be + /// initialized if any of these predefined interface functions are invoked by BWAPI. + /// + /// @note + /// The TournamentModule is to be implemented by Tournament Modules ONLY. A standard AI module + /// should never implement it. The Tournament Module is invoked only if it is explicitly + /// defined in the configuration file. Tournament Modules also contain an AI Module interface + /// so that it can monitor the time an AI module spent during its calls using + /// Game::getLastEventTime. + class TournamentModule + { + public: + TournamentModule(); + virtual ~TournamentModule(); + + /// This function regulates the functions involving game settings that an AI module is + /// allowed to execute. For example, if the tournament forbids the enabling of + /// Flag::CompleteMapInformation, then this function can deny the request. + /// + /// @param actionType + /// An ActionID containing the action that the AI module is requesting. + /// + /// @param parameter + /// An optional parameter that pertains to certain action requests. For example, if + /// \p actionType is Tournament::ActionID::SendText, then \p parameter is a pointer to a + /// null-terminated character array containing the message. If \p actionType is + /// Tournament::ActionID::SetLocalSpeed, then parameter is a pointer to an integer. + virtual bool onAction(BWAPI::Tournament::ActionID actionType, void *parameter = nullptr); + + /// This function is called if the current player is chosen to advertise the BWAPI revision. + /// When tournament mode is enabled, to reduce spam, only one bot sends the revision message. + /// The bot that is chosen depends on its player ID. Only one of the bots can call this + /// function during a tournament game. + virtual void onFirstAdvertisement(); + }; +} diff --git a/bwapi4-includes/BWAPI/ArithmaticFilter.h b/bwapi4-includes/BWAPI/ArithmaticFilter.h new file mode 100644 index 0000000..e69de29 diff --git a/bwapi4-includes/BWAPI/BestFilter.h b/bwapi4-includes/BWAPI/BestFilter.h new file mode 100644 index 0000000..d1648fd --- /dev/null +++ b/bwapi4-includes/BWAPI/BestFilter.h @@ -0,0 +1,58 @@ +#pragma once +#include +#include "ComparisonFilter.h" + +namespace BWAPI +{ + /// The BestFilter is used to compare two objects with each other. Each function object compares + /// two of the same object and returns the most desirable one. + /// + /// @note: A function object should return one of the two given parameters, never nullptr. Both + /// parameters being given should never be nullptr. + template + class BestFilter + { + private: + std::function<_PARAM(_PARAM,_PARAM)> pred; + public: + // Constructor + template + BestFilter(const _T &predicate) : pred(predicate) + {}; + + // Assignment + template + BestFilter<_PARAM> &operator =(const _T &other) + { + this->pred = other; + return *this; + }; + + // Bitwise operators + template + inline BestFilter<_PARAM> operator &&(const _T &other) const + { + return [=](_PARAM p1, _PARAM p2)->_PARAM{ return other( (*this)(p1, p2) ); }; + }; + + // call + inline _PARAM operator()(const _PARAM &p1, const _PARAM &p2) const + { + return this->pred(p1, p2); + }; + + }; + + template + BestFilter<_PARAM> Lowest(const CompareFilter<_PARAM,int> &filter) + { + return [=](_PARAM p1, _PARAM p2)->_PARAM{ return filter(p2) < filter(p1) ? p2 : p1; }; + }; + template + BestFilter<_PARAM> Highest(const CompareFilter<_PARAM,int> &filter) + { + return [=](_PARAM p1, _PARAM p2)->_PARAM{ return filter(p2) > filter(p1) ? p2 : p1; }; + }; + +} + diff --git a/bwapi4-includes/BWAPI/Bullet.h b/bwapi4-includes/BWAPI/Bullet.h new file mode 100644 index 0000000..7ff00c0 --- /dev/null +++ b/bwapi4-includes/BWAPI/Bullet.h @@ -0,0 +1,167 @@ +#pragma once +#include + +namespace BWAPI +{ + // Forward declarations + class PlayerInterface; + typedef PlayerInterface *Player; + class BulletType; + + class BulletInterface; + typedef BulletInterface *Bullet; + + /// An interface object representing a bullet or missile spawned from an attack. + /// + /// The Bullet interface allows you to detect bullets, missiles, and other types + /// of non-melee attacks or special abilities that would normally be visible through + /// human eyes (A lurker spike or a Queen's flying parasite), allowing quicker reaction + /// to unavoidable consequences. + /// + /// For example, ordering medics to restore units that are about to receive a lockdown + /// to compensate for latency and minimize its effects. You can't know entirely which unit + /// will be receiving a lockdown unless you can detect the lockdown missile using the + /// Bullet class. + /// + /// Bullet objects are re-used after they are destroyed, however their ID is updated when it + /// represents a new Bullet. + /// + /// If Flag::CompleteMapInformation is disabled, then a Bullet is accessible if and only if + /// it is visible. Otherwise if Flag::CompleteMapInformation is enabled, then all Bullets + /// in the game are accessible. + /// @see Game::getBullets, BulletInterface::exists + class BulletInterface : public Interface + { + protected: + virtual ~BulletInterface() {}; + public: + /// Retrieves a unique identifier for the current Bullet. + /// + /// @returns + /// An integer value containing the identifier. + virtual int getID() const = 0; + + /// Checks if the Bullet exists in the view of the BWAPI player. + /// + /// @retval true If the bullet exists or is visible. + /// @retval false If the bullet was destroyed or has gone out of scope. + /// + /// If Flag::CompleteMapInformation is disabled, and a Bullet is not visible, then the + /// return value will be false regardless of the Bullet's true existence. This is because + /// absolutely no state information on invisible enemy bullets is made available to the AI. + /// + /// If Flag::CompleteMapInformation is enabled, then this function is accurate for all + /// Bullet information. + /// @see isVisible, UnitInterface::exists + virtual bool exists() const = 0; + + /// Retrieves the Player interface that owns the Bullet. + /// + /// @retval nullptr If the Player object for this Bullet is inaccessible. + /// + /// @returns + /// The owning Player interface object. + virtual Player getPlayer() const = 0; + + /// Retrieves the type of this Bullet. + /// + /// @retval BulletTypes::Unknown if the Bullet is inaccessible. + /// + /// @returns + /// A BulletType representing the Bullet's type. + virtual BulletType getType() const = 0; + + /// Retrieves the Unit interface that the Bullet spawned from. + /// + /// @retval nullptr If the source can not be identified or is inaccessible. + /// + /// @returns + /// The owning Unit interface object. + /// @see getTarget + virtual Unit getSource() const = 0; + + /// Retrieves the Bullet's current position. + /// + /// @retval Positions::Unknown If the Bullet is inaccessible. + /// + /// @returns + /// A Position containing the Bullet's current coordinates. + /// @see getTargetPosition + virtual Position getPosition() const = 0; + + /// Retrieve's the direction the Bullet is facing. If the angle is 0, then the Bullet is + /// facing right. + /// + /// @retval 0.0 If the bullet is inaccessible. + /// + /// @returns + /// A double representing the direction the Bullet is facing. + virtual double getAngle() const = 0; + + /// Retrieves the X component of the Bullet's velocity, measured in pixels per frame. + /// + /// @retval 0.0 if the Bullet is inaccessible. + /// + /// @returns + /// A double representing the number of pixels moved on the X axis per frame. + /// + /// @see getVelocityY, getAngle + virtual double getVelocityX() const = 0; + + /// Retrieves the Y component of the Bullet's velocity, measured in pixels per frame. + /// + /// @retval 0.0 if the Bullet is inaccessible. + /// + /// @returns + /// A double representing the number of pixels moved on the Y axis per frame. + /// + /// @see getVelocityX, getAngle + virtual double getVelocityY() const = 0; + + /// Retrieves the Unit interface that the Bullet is heading to. + /// + /// @retval nullptr If the Bullet's target Unit is inaccessible, the Bullet is targetting the + /// ground, or if the Bullet itself is inaccessible. + /// + /// @returns + /// The target Unit interface object, if one exists. + /// @see getTargetPosition, getSource + virtual Unit getTarget() const = 0; + + /// Retrieves the target position that the Bullet is heading to. + /// + /// @retval Positions::Unknown If the bullet is inaccessible. + /// + /// @returns + /// A Position indicating where the Bullet is headed. + /// @see getTarget, getPosition + virtual Position getTargetPosition() const = 0; + + /// Retrieves the timer that indicates the Bullet's life span. + /// + /// Bullets are not permanent objects, so they will often have a limited life span. + /// This life span is measured in frames. Normally a Bullet will reach its target + /// before being removed. + /// + /// @retval 0 If the Bullet is inaccessible. + /// + /// @returns + /// An integer representing the remaining number of frames until the Bullet self-destructs. + virtual int getRemoveTimer() const = 0; + + /// Retrieves the visibility state of the Bullet. + /// + /// @param player (optional) + /// If this parameter is specified, then the Bullet's visibility to the given player is + /// checked. If this parameter is omitted, then a default value of nullptr is used, which + /// will check if the BWAPI player has vision of the Bullet. + /// + /// @note If \c player is nullptr and Broodwar->self() is also nullptr, then the visibility of + /// the Bullet is determined by checking if at least one other player has vision of the + /// Bullet. + /// + /// @retval true If the Bullet is visible to the specified player. + /// @retval false If the Bullet is not visible to the specified player. + virtual bool isVisible(Player player = nullptr) const = 0; + }; +} \ No newline at end of file diff --git a/bwapi4-includes/BWAPI/BulletType.h b/bwapi4-includes/BWAPI/BulletType.h new file mode 100644 index 0000000..00ee493 --- /dev/null +++ b/bwapi4-includes/BWAPI/BulletType.h @@ -0,0 +1,120 @@ +#pragma once +#include + +namespace BWAPI +{ + namespace BulletTypes + { + /// Enumeration of bullet types + namespace Enum + { + /// Enumeration of bullet types + enum Enum + { + Melee = 0, + + Fusion_Cutter_Hit = 141, + Gauss_Rifle_Hit, + C_10_Canister_Rifle_Hit, + Gemini_Missiles, + Fragmentation_Grenade, + Longbolt_Missile, + Unused_Lockdown, + ATS_ATA_Laser_Battery, + Burst_Lasers, + Arclite_Shock_Cannon_Hit, + EMP_Missile, + Dual_Photon_Blasters_Hit, + Particle_Beam_Hit, + Anti_Matter_Missile, + Pulse_Cannon, + Psionic_Shockwave_Hit, + Psionic_Storm, + Yamato_Gun, + Phase_Disruptor, + STA_STS_Cannon_Overlay, + Sunken_Colony_Tentacle, + Venom_Unused, + Acid_Spore, + Plasma_Drip_Unused, + Glave_Wurm, + Seeker_Spores, + Queen_Spell_Carrier, + Plague_Cloud, + Consume, + Ensnare, + Needle_Spine_Hit, + Invisible, + + Optical_Flare_Grenade = 201, + Halo_Rockets, + Subterranean_Spines, + Corrosive_Acid_Shot, + Corrosive_Acid_Hit, + Neutron_Flare, + + None = 209, + Unknown, + MAX + }; + } + } + class BulletType : public Type + { + public: + /// @copydoc Type::Type(int) + BulletType(int id = BulletTypes::Enum::None); + }; + + /// Namespace containing bullet types + namespace BulletTypes + { + /// Retrieves the set of all the BulletTypes. + /// + /// @returns Set of BulletTypes. + const BulletType::const_set& allBulletTypes(); + +#ifdef BWAPI_DECL +#undef BWAPI_DECL +#endif +#define BWAPI_DECL(x) /** x */ extern const BulletType x + BWAPI_DECL(Melee); + BWAPI_DECL(Fusion_Cutter_Hit); + BWAPI_DECL(Gauss_Rifle_Hit); + BWAPI_DECL(C_10_Canister_Rifle_Hit); + BWAPI_DECL(Gemini_Missiles); + BWAPI_DECL(Fragmentation_Grenade); + BWAPI_DECL(Longbolt_Missile); + BWAPI_DECL(ATS_ATA_Laser_Battery); + BWAPI_DECL(Burst_Lasers); + BWAPI_DECL(Arclite_Shock_Cannon_Hit); + BWAPI_DECL(EMP_Missile); + BWAPI_DECL(Dual_Photon_Blasters_Hit); + BWAPI_DECL(Particle_Beam_Hit); + BWAPI_DECL(Anti_Matter_Missile); + BWAPI_DECL(Pulse_Cannon); + BWAPI_DECL(Psionic_Shockwave_Hit); + BWAPI_DECL(Psionic_Storm); + BWAPI_DECL(Yamato_Gun); + BWAPI_DECL(Phase_Disruptor); + BWAPI_DECL(STA_STS_Cannon_Overlay); + BWAPI_DECL(Sunken_Colony_Tentacle); + BWAPI_DECL(Acid_Spore); + BWAPI_DECL(Glave_Wurm); + BWAPI_DECL(Seeker_Spores); + BWAPI_DECL(Queen_Spell_Carrier); + BWAPI_DECL(Plague_Cloud); + BWAPI_DECL(Consume); + BWAPI_DECL(Ensnare); + BWAPI_DECL(Needle_Spine_Hit); + BWAPI_DECL(Invisible); + BWAPI_DECL(Optical_Flare_Grenade); + BWAPI_DECL(Halo_Rockets); + BWAPI_DECL(Subterranean_Spines); + BWAPI_DECL(Corrosive_Acid_Shot); + BWAPI_DECL(Neutron_Flare); + BWAPI_DECL(None); + BWAPI_DECL(Unknown); +#undef BWAPI_DECL + }; +} diff --git a/bwapi4-includes/BWAPI/Bulletset.h b/bwapi4-includes/BWAPI/Bulletset.h new file mode 100644 index 0000000..819992e --- /dev/null +++ b/bwapi4-includes/BWAPI/Bulletset.h @@ -0,0 +1,18 @@ +#pragma once +#include + +namespace BWAPI +{ + // Forward Declarations + class BulletInterface; + typedef BulletInterface *Bullet; + + class Bulletset : public Vectorset + { + public: + Bulletset(size_t initialSize = 16); + Bulletset(const Bulletset &other); + Bulletset(Bulletset &&other); + }; +} + diff --git a/bwapi4-includes/BWAPI/Client.h b/bwapi4-includes/BWAPI/Client.h new file mode 100644 index 0000000..480931d --- /dev/null +++ b/bwapi4-includes/BWAPI/Client.h @@ -0,0 +1,17 @@ +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include \ No newline at end of file diff --git a/bwapi4-includes/BWAPI/Client/BulletData.h b/bwapi4-includes/BWAPI/Client/BulletData.h new file mode 100644 index 0000000..25e41e3 --- /dev/null +++ b/bwapi4-includes/BWAPI/Client/BulletData.h @@ -0,0 +1,23 @@ +#pragma once + +namespace BWAPI +{ + struct BulletData + { + int id; + int player; + int type; + int source; + int positionX; + int positionY; + double angle; + double velocityX; + double velocityY; + int target; + int targetPositionX; + int targetPositionY; + int removeTimer; + bool exists; + bool isVisible[9]; + }; +} diff --git a/bwapi4-includes/BWAPI/Client/BulletImpl.h b/bwapi4-includes/BWAPI/Client/BulletImpl.h new file mode 100644 index 0000000..48ca297 --- /dev/null +++ b/bwapi4-includes/BWAPI/Client/BulletImpl.h @@ -0,0 +1,33 @@ +#pragma once +#include +#include "BulletData.h" +#include + +namespace BWAPI +{ + class PlayerInterface; + typedef PlayerInterface *Player; + + class BulletImpl : public BulletInterface + { + private: + const BulletData* self; + int index; + public: + + BulletImpl(int index); + virtual int getID() const override; + virtual bool exists() const override; + virtual Player getPlayer() const override; + virtual BulletType getType() const override; + virtual Unit getSource() const override; + virtual Position getPosition() const override; + virtual double getAngle() const override; + virtual double getVelocityX() const override; + virtual double getVelocityY() const override; + virtual Unit getTarget() const override; + virtual Position getTargetPosition() const override; + virtual int getRemoveTimer() const override; + virtual bool isVisible(Player player = nullptr) const override; + }; +} diff --git a/bwapi4-includes/BWAPI/Client/Client.h b/bwapi4-includes/BWAPI/Client/Client.h new file mode 100644 index 0000000..d6a5e81 --- /dev/null +++ b/bwapi4-includes/BWAPI/Client/Client.h @@ -0,0 +1,34 @@ +#pragma once +#include +#include "GameData.h" +#include "GameImpl.h" +#include "ForceImpl.h" +#include "PlayerImpl.h" +#include "UnitImpl.h" +#include "GameTable.h" + + +namespace BWAPI +{ + class Client + { + public: + Client(); + ~Client(); + + bool isConnected(); + bool connect(); + void disconnect(); + void update(); + + GameData *data; + private: + HANDLE pipeObjectHandle; + HANDLE mapFileHandle; + HANDLE gameTableFileHandle; + GameTable *gameTable; + + bool connected; + }; + extern Client BWAPIClient; +} diff --git a/bwapi4-includes/BWAPI/Client/Command.h b/bwapi4-includes/BWAPI/Client/Command.h new file mode 100644 index 0000000..e0d0f88 --- /dev/null +++ b/bwapi4-includes/BWAPI/Client/Command.h @@ -0,0 +1,23 @@ +#pragma once +#include "CommandType.h" + +namespace BWAPIC +{ + struct Command + { + Command() + : type( CommandType::None ) + , value1( 0 ) + , value2( 0 ) + { } + Command(CommandType::Enum _commandType, int _value1=0, int _value2=0) + : type( _commandType ) + , value1( _value1 ) + , value2( _value2 ) + { } + + CommandType::Enum type; + int value1; + int value2; + }; +} diff --git a/bwapi4-includes/BWAPI/Client/CommandType.h b/bwapi4-includes/BWAPI/Client/CommandType.h new file mode 100644 index 0000000..25a33e9 --- /dev/null +++ b/bwapi4-includes/BWAPI/Client/CommandType.h @@ -0,0 +1,33 @@ +#pragma once +/** + * Used in UnitCommand + */ + +namespace BWAPIC +{ + namespace CommandType + { + enum Enum + { + None, + SetScreenPosition, + PingMinimap, + EnableFlag, + Printf, + SendText, + PauseGame, + ResumeGame, + LeaveGame, + RestartGame, + SetLocalSpeed, + SetLatCom, + SetGui, + SetFrameSkip, + SetMap, + SetAllies, + SetVision, + SetCommandOptimizerLevel, + SetRevealAll + }; + } +} \ No newline at end of file diff --git a/bwapi4-includes/BWAPI/Client/Event.h b/bwapi4-includes/BWAPI/Client/Event.h new file mode 100644 index 0000000..7abfccc --- /dev/null +++ b/bwapi4-includes/BWAPI/Client/Event.h @@ -0,0 +1,14 @@ +#pragma once + +#include +#include + +namespace BWAPIC +{ + struct Event + { + BWAPI::EventType::Enum type; + int v1; + int v2; + }; +} \ No newline at end of file diff --git a/bwapi4-includes/BWAPI/Client/ForceData.h b/bwapi4-includes/BWAPI/Client/ForceData.h new file mode 100644 index 0000000..6480914 --- /dev/null +++ b/bwapi4-includes/BWAPI/Client/ForceData.h @@ -0,0 +1,9 @@ +#pragma once + +namespace BWAPI +{ + struct ForceData + { + char name[32]; + }; +} diff --git a/bwapi4-includes/BWAPI/Client/ForceImpl.h b/bwapi4-includes/BWAPI/Client/ForceImpl.h new file mode 100644 index 0000000..8426893 --- /dev/null +++ b/bwapi4-includes/BWAPI/Client/ForceImpl.h @@ -0,0 +1,23 @@ +#pragma once +#include +#include "ForceData.h" +#include + +namespace BWAPI +{ + class Game; + class PlayerInterface; + typedef PlayerInterface *Player; + + class ForceImpl : public ForceInterface + { + private: + const ForceData* self; + int id; + public: + ForceImpl(int id); + virtual int getID() const override; + virtual std::string getName() const override; + virtual Playerset getPlayers() const override; + }; +} \ No newline at end of file diff --git a/bwapi4-includes/BWAPI/Client/GameData.h b/bwapi4-includes/BWAPI/Client/GameData.h new file mode 100644 index 0000000..95078f6 --- /dev/null +++ b/bwapi4-includes/BWAPI/Client/GameData.h @@ -0,0 +1,163 @@ +#pragma once + +#include "UnitCommand.h" +#include "ForceData.h" +#include "PlayerData.h" +#include "RegionData.h" +#include "UnitData.h" +#include "BulletData.h" +#include "Event.h" +#include "Command.h" +#include "Shape.h" +namespace BWAPIC +{ + struct Position + { + Position() {x=0;y=0;} + int x; + int y; + }; +} +namespace BWAPI +{ + struct unitFinder + { + int unitIndex; + int searchValue; + }; + struct GameData + { + //revision and debug will stay at the top of struct so they don't move in memory from revision to revision. + int revision; + bool isDebug; + + int instanceID; + int botAPM_noselects; + int botAPM_selects; + + //forces + int forceCount; + ForceData forces[5]; + + //players + int playerCount; + PlayerData players[12]; + + //units + int initialUnitCount; + UnitData units[10000]; + + //unit table + int unitArray[1700]; + + //bullets + BulletData bullets[100]; + + // nuke dots + int nukeDotCount; + BWAPIC::Position nukeDots[200]; + + int gameType; + int latency; + int latencyFrames; + int latencyTime; + int remainingLatencyFrames; + int remainingLatencyTime; + bool hasLatCom; + bool hasGUI; + int replayFrameCount; + int frameCount; + int elapsedTime; + int countdownTimer; + int fps; + double averageFPS; + + // user input + int mouseX; + int mouseY; + bool mouseState[M_MAX]; + bool keyState[K_MAX]; + int screenX; + int screenY; + + bool flags[BWAPI::Flag::Max]; + + // map + int mapWidth; + int mapHeight; + char mapFileName[261]; //size based on broodwar memory + char mapPathName[261]; //size based on broodwar memory + char mapName[33]; //size based on broodwar memory + char mapHash[41]; + + //tile data + int getGroundHeight[256][256]; + bool isWalkable[1024][1024]; + bool isBuildable[256][256]; + bool isVisible[256][256]; + bool isExplored[256][256]; + bool hasCreep[256][256]; + bool isOccupied[256][256]; + + unsigned short mapTileRegionId[256][256]; + unsigned short mapSplitTilesMiniTileMask[5000]; + unsigned short mapSplitTilesRegion1[5000]; + unsigned short mapSplitTilesRegion2[5000]; + + int regionCount; + RegionData regions[5000]; + + // start locations + int startLocationCount; + BWAPIC::Position startLocations[8]; + + // match mode + bool isInGame; + bool isMultiplayer; + bool isBattleNet; + bool isPaused; + bool isReplay; + + //selected units + int selectedUnitCount; + int selectedUnits[12]; + + // players + int self; + int enemy; + int neutral; + + static const int MAX_EVENTS = 10000; + static const int MAX_EVENT_STRINGS = 1000; + static const int MAX_STRINGS = 20000; + static const int MAX_SHAPES = 20000; + static const int MAX_COMMANDS = 20000; + static const int MAX_UNIT_COMMANDS = 20000; + + //events from server to client + int eventCount; + BWAPIC::Event events[MAX_EVENTS]; + + //strings used in events + int eventStringCount; + char eventStrings[MAX_EVENT_STRINGS][256]; + + //strings (used in shapes and commands) + int stringCount; + char strings[MAX_STRINGS][256]; + + //shapes, commands, unitCommands, from client to server + int shapeCount; + BWAPIC::Shape shapes[MAX_SHAPES]; + + int commandCount; + BWAPIC::Command commands[MAX_COMMANDS]; + + int unitCommandCount; + BWAPIC::UnitCommand unitCommands[MAX_UNIT_COMMANDS]; + + int unitSearchSize; + unitFinder xUnitSearch[1700*2]; + unitFinder yUnitSearch[1700*2]; + }; +} diff --git a/bwapi4-includes/BWAPI/Client/GameImpl.h b/bwapi4-includes/BWAPI/Client/GameImpl.h new file mode 100644 index 0000000..0350562 --- /dev/null +++ b/bwapi4-includes/BWAPI/Client/GameImpl.h @@ -0,0 +1,205 @@ +#pragma once +#include +#include "GameData.h" +#include "Client.h" +#include "Shape.h" +#include "Command.h" +#include "UnitCommand.h" +#include "ForceImpl.h" +#include "PlayerImpl.h" +#include "RegionImpl.h" +#include "UnitImpl.h" +#include "BulletImpl.h" +#include +#include + +#include +#include +#include +#include +#include + +namespace BWAPI +{ + class ForceInterface; + typedef ForceInterface *Force; + class PlayerInterface; + typedef PlayerInterface *Player; + + class GameImpl : public Game + { + private : + int addShape(const BWAPIC::Shape &s); + int addString(const char* text); + int addText(BWAPIC::Shape &s, const char* text); + int addCommand(const BWAPIC::Command &c); + void processInterfaceEvents(); + void clearAll(); + + GameData* data; + std::vector forceVector; + std::vector playerVector; + std::vector unitVector; + std::vector bulletVector; + RegionImpl *regionArray[5000]; + + Forceset forces; + Playerset playerSet; + Unitset accessibleUnits;//all units that are accessible (and definitely alive) + //notDestroyedUnits - accessibleUnits = all units that may or may not be alive (status unknown) + Unitset minerals; + Unitset geysers; + Unitset neutralUnits; + Unitset staticMinerals; + Unitset staticGeysers; + Unitset staticNeutralUnits; + Bulletset bullets; + Position::set nukeDots; + Unitset selectedUnits; + Unitset pylons; + Regionset regionsList; + + TilePosition::set startLocations; + std::list< Event > events; + bool flagEnabled[2]; + Player thePlayer; + Player theEnemy; + Player theNeutral; + Playerset _allies; + Playerset _enemies; + Playerset _observers; + mutable Error lastError; + int textSize; + + public : + Event makeEvent(BWAPIC::Event e); + int addUnitCommand(BWAPIC::UnitCommand& c); + bool inGame; + GameImpl(GameData* data); + void onMatchStart(); + void onMatchEnd(); + void onMatchFrame(); + const GameData* getGameData() const; + Unit _unitFromIndex(int index); + + virtual const Forceset& getForces() const override; + virtual const Playerset& getPlayers() const override; + virtual const Unitset& getAllUnits() const override; + virtual const Unitset& getMinerals() const override; + virtual const Unitset& getGeysers() const override; + virtual const Unitset& getNeutralUnits() const override; + + virtual const Unitset& getStaticMinerals() const override; + virtual const Unitset& getStaticGeysers() const override; + virtual const Unitset& getStaticNeutralUnits() const override; + + virtual const Bulletset& getBullets() const override; + virtual const Position::set& getNukeDots() const override; + virtual const std::list< Event>& getEvents() const override; + + virtual Force getForce(int forceID) const override; + virtual Player getPlayer(int playerID) const override; + virtual Unit getUnit(int unitID) const override; + virtual Unit indexToUnit(int unitIndex) const override; + virtual Region getRegion(int regionID) const override; + + virtual GameType getGameType() const override; + virtual int getLatency() const override; + virtual int getFrameCount() const override; + virtual int getReplayFrameCount() const override; + virtual int getFPS() const override; + virtual double getAverageFPS() const override; + virtual BWAPI::Position getMousePosition() const override; + virtual bool getMouseState(MouseButton button) const override; + virtual bool getKeyState(Key key) const override; + virtual BWAPI::Position getScreenPosition() const override; + virtual void setScreenPosition(int x, int y) override; + virtual void pingMinimap(int x, int y) override; + + virtual bool isFlagEnabled(int flag) const override; + virtual void enableFlag(int flag) override; + virtual Unitset getUnitsInRectangle(int left, int top, int right, int bottom, const UnitFilter &pred = nullptr) const override; + virtual Unit getClosestUnitInRectangle(Position center, const UnitFilter &pred = nullptr, int left = 0, int top = 0, int right = 999999, int bottom = 999999) const override; + virtual Unit getBestUnit(const BestUnitFilter &best, const UnitFilter &pred, Position center = Positions::None, int radius = 999999) const override; + virtual Error getLastError() const override; + virtual bool setLastError(BWAPI::Error e = Errors::None) const override; + + virtual int mapWidth() const override; + virtual int mapHeight() const override; + virtual std::string mapFileName() const override; + virtual std::string mapPathName() const override; + virtual std::string mapName() const override; + virtual std::string mapHash() const override; + + virtual bool isWalkable(int x, int y) const override; + virtual int getGroundHeight(int x, int y) const override; + virtual bool isBuildable(int x, int y, bool includeBuildings = false) const override; + virtual bool isVisible(int x, int y) const override; + virtual bool isExplored(int x, int y) const override; + virtual bool hasCreep(int x, int y) const override; + virtual bool hasPowerPrecise(int x, int y, UnitType unitType = UnitTypes::None ) const override; + + virtual bool canBuildHere(TilePosition position, UnitType type, Unit builder = nullptr, bool checkExplored = false) override; + virtual bool canMake(UnitType type, Unit builder = nullptr) const override; + virtual bool canResearch(TechType type, Unit unit = nullptr, bool checkCanIssueCommandType = true) override; + virtual bool canUpgrade(UpgradeType type, Unit unit = nullptr, bool checkCanIssueCommandType = true) override; + virtual const TilePosition::set& getStartLocations() const override; + + virtual void vPrintf(const char* format, va_list arg) override; + virtual void vSendTextEx(bool toAllies, const char *format, va_list arg) override; + + virtual bool isInGame() const override; + virtual bool isMultiplayer() const override; + virtual bool isBattleNet() const override; + virtual bool isPaused() const override; + virtual bool isReplay() const override; + + virtual void pauseGame() override; + virtual void resumeGame() override; + virtual void leaveGame() override; + virtual void restartGame() override; + virtual void setLocalSpeed(int speed = -1) override; + virtual bool issueCommand(const Unitset& units, UnitCommand command) override; + virtual const Unitset& getSelectedUnits() const override; + virtual Player self() const override; + virtual Player enemy() const override; + virtual Player neutral() const override; + virtual Playerset& allies() override; + virtual Playerset& enemies() override; + virtual Playerset& observers() override; + + virtual void setTextSize(Text::Size::Enum size = Text::Size::Default) override; + virtual void vDrawText(CoordinateType::Enum ctype, int x, int y, const char *format, va_list arg) override; + virtual void drawBox(CoordinateType::Enum ctype, int left, int top, int right, int bottom, Color color, bool isSolid = false) override; + virtual void drawTriangle(CoordinateType::Enum ctype, int ax, int ay, int bx, int by, int cx, int cy, Color color, bool isSolid = false) override; + virtual void drawCircle(CoordinateType::Enum ctype, int x, int y, int radius, Color color, bool isSolid = false) override; + virtual void drawEllipse(CoordinateType::Enum ctype, int x, int y, int xrad, int yrad, Color color, bool isSolid = false) override; + virtual void drawDot(CoordinateType::Enum ctype, int x, int y, Color color) override; + virtual void drawLine(CoordinateType::Enum ctype, int x1, int y1, int x2, int y2, Color color) override; + + virtual int getLatencyFrames() const override; + virtual int getLatencyTime() const override; + virtual int getRemainingLatencyFrames() const override; + virtual int getRemainingLatencyTime() const override; + virtual int getRevision() const override; + virtual bool isDebug() const override; + virtual bool isLatComEnabled() const override; + virtual void setLatCom(bool isEnabled) override; + virtual bool isGUIEnabled() const override; + virtual void setGUI(bool enabled) override; + virtual int getInstanceNumber() const override; + virtual int getAPM(bool includeSelects = false) const override; + virtual bool setMap(const char *mapFileName) override; + virtual void setFrameSkip(int frameSkip) override; + virtual bool hasPath(Position source, Position destination) const override; + virtual bool setAlliance(BWAPI::Player player, bool allied = true, bool alliedVictory = true) override; + virtual bool setVision(BWAPI::Player player, bool enabled = true) override; + virtual int elapsedTime() const override; + virtual void setCommandOptimizationLevel(int level) override; + virtual int countdownTimer() const override; + virtual const Regionset &getAllRegions() const override; + virtual BWAPI::Region getRegionAt(int x, int y) const override; + virtual int getLastEventTime() const override; + virtual bool setRevealAll(bool reveal = true) override; + }; +} diff --git a/bwapi4-includes/BWAPI/Client/GameTable.h b/bwapi4-includes/BWAPI/Client/GameTable.h new file mode 100644 index 0000000..14a0863 --- /dev/null +++ b/bwapi4-includes/BWAPI/Client/GameTable.h @@ -0,0 +1,30 @@ +#pragma once + +namespace BWAPI +{ + struct GameInstance + { + GameInstance() + : serverProcessID(0) + , isConnected(false) + , lastKeepAliveTime(0) + {}; + GameInstance(unsigned int servID, bool connected, unsigned int lastAliveTime) + : serverProcessID(servID) + , isConnected(connected) + , lastKeepAliveTime(lastAliveTime) + {}; + + unsigned int serverProcessID; + bool isConnected; + //time_t lastKeepAliveTime; + unsigned int lastKeepAliveTime; + }; + struct GameTable + { + GameTable() + {} + static const int MAX_GAME_INSTANCES = 8; + GameInstance gameInstances[MAX_GAME_INSTANCES]; + }; +} \ No newline at end of file diff --git a/bwapi4-includes/BWAPI/Client/PlayerData.h b/bwapi4-includes/BWAPI/Client/PlayerData.h new file mode 100644 index 0000000..073d991 --- /dev/null +++ b/bwapi4-includes/BWAPI/Client/PlayerData.h @@ -0,0 +1,59 @@ +#pragma once + +#include +#include +#include + +namespace BWAPI +{ + struct PlayerData + { + char name[25]; + int race; + int type; + int force; + bool isAlly[12]; + bool isEnemy[12]; + bool isNeutral; + int startLocationX; + int startLocationY; + bool isVictorious; + bool isDefeated; + bool leftGame; + bool isParticipating; + + int minerals; + int gas; + int gatheredMinerals; + int gatheredGas; + int repairedMinerals; + int repairedGas; + int refundedMinerals; + int refundedGas; + int supplyTotal[3]; + int supplyUsed[3]; + + int allUnitCount[UnitTypes::Enum::MAX]; + int visibleUnitCount[UnitTypes::Enum::MAX]; + int completedUnitCount[UnitTypes::Enum::MAX]; + int deadUnitCount[UnitTypes::Enum::MAX]; + int killedUnitCount[UnitTypes::Enum::MAX]; + + int upgradeLevel[UpgradeTypes::Enum::MAX]; + bool hasResearched[TechTypes::Enum::MAX]; + bool isResearching[TechTypes::Enum::MAX]; + bool isUpgrading[UpgradeTypes::Enum::MAX]; + + int color; + + int totalUnitScore; + int totalKillScore; + int totalBuildingScore; + int totalRazingScore; + int customScore; + + int maxUpgradeLevel[UpgradeTypes::Enum::MAX]; + bool isResearchAvailable[TechTypes::Enum::MAX]; + bool isUnitAvailable[UnitTypes::Enum::MAX]; + }; +} diff --git a/bwapi4-includes/BWAPI/Client/PlayerImpl.h b/bwapi4-includes/BWAPI/Client/PlayerImpl.h new file mode 100644 index 0000000..7df3194 --- /dev/null +++ b/bwapi4-includes/BWAPI/Client/PlayerImpl.h @@ -0,0 +1,75 @@ +#pragma once +#include +#include "PlayerData.h" +#include + +#include + +namespace BWAPI +{ + class ForceInterface; + typedef ForceInterface *Force; + + class PlayerImpl : public PlayerInterface + { + private: + int id; + public: + PlayerData* self; + Unitset units; + void clear(); + PlayerImpl(int id); + virtual int getID() const override; + virtual std::string getName() const override; + virtual const Unitset &getUnits() const override; + virtual Race getRace() const override; + virtual PlayerType getType() const override; + virtual Force getForce() const override; + virtual bool isAlly(Player player) const override; + virtual bool isEnemy(Player player) const override; + virtual bool isNeutral() const override; + virtual TilePosition getStartLocation() const override; + virtual bool isVictorious() const override; + virtual bool isDefeated() const override; + virtual bool leftGame() const override; + + virtual int minerals() const override; + virtual int gas() const override; + virtual int gatheredMinerals() const override; + virtual int gatheredGas() const override; + virtual int repairedMinerals() const override; + virtual int repairedGas() const override; + virtual int refundedMinerals() const override; + virtual int refundedGas() const override; + virtual int spentMinerals() const override; + virtual int spentGas() const override; + + virtual int supplyTotal(Race race = Races::None) const override; + virtual int supplyUsed(Race race = Races::None) const override; + + virtual int allUnitCount(UnitType unit) const override; + virtual int visibleUnitCount(UnitType unit) const override; + virtual int completedUnitCount(UnitType unit) const override; + virtual int deadUnitCount(UnitType unit) const override; + virtual int killedUnitCount(UnitType unit) const override; + + virtual int getUpgradeLevel(UpgradeType upgrade) const override; + virtual bool hasResearched(TechType tech) const override; + virtual bool isResearching(TechType tech) const override; + virtual bool isUpgrading(UpgradeType upgrade) const override; + + virtual BWAPI::Color getColor() const override; + + virtual int getUnitScore() const override; + virtual int getKillScore() const override; + virtual int getBuildingScore() const override; + virtual int getRazingScore() const override; + virtual int getCustomScore() const override; + + virtual bool isObserver() const override; + + virtual int getMaxUpgradeLevel(UpgradeType upgrade) const override; + virtual bool isResearchAvailable(TechType tech) const override; + virtual bool isUnitAvailable(UnitType unit) const override; + }; +}; diff --git a/bwapi4-includes/BWAPI/Client/RegionData.h b/bwapi4-includes/BWAPI/Client/RegionData.h new file mode 100644 index 0000000..4cbc8b4 --- /dev/null +++ b/bwapi4-includes/BWAPI/Client/RegionData.h @@ -0,0 +1,25 @@ +#pragma once + +namespace BWAPI +{ + struct RegionData + { + int id; + int islandID; + int center_x; + int center_y; + int priority; + + // region boundary + int leftMost; + int rightMost; + int topMost; + int bottomMost; + + int neighborCount; + int neighbors[256]; + + bool isAccessible; + bool isHigherGround; + }; +}; diff --git a/bwapi4-includes/BWAPI/Client/RegionImpl.h b/bwapi4-includes/BWAPI/Client/RegionImpl.h new file mode 100644 index 0000000..bd3e3ea --- /dev/null +++ b/bwapi4-includes/BWAPI/Client/RegionImpl.h @@ -0,0 +1,39 @@ +#pragma once +#include +#include +#include + +#include + +namespace BWAPI +{ + class RegionImpl : public RegionInterface + { + private: + RegionData *self; + Regionset neighbors; + BWAPI::Region closestAccessibleRgn; + BWAPI::Region closestInaccessibleRgn; + public: + RegionImpl(int index); + void setNeighbors(); + virtual int getID() const override; + virtual int getRegionGroupID() const override; + virtual BWAPI::Position getCenter() const override; + virtual bool isHigherGround() const override; + virtual int getDefensePriority() const override; + virtual bool isAccessible() const override; + + virtual const Regionset &getNeighbors() const override; + + virtual int getBoundsLeft() const override; + virtual int getBoundsTop() const override; + virtual int getBoundsRight() const override; + virtual int getBoundsBottom() const override; + + virtual BWAPI::Region getClosestAccessibleRegion() const override; + virtual BWAPI::Region getClosestInaccessibleRegion() const override; + }; + +}; + diff --git a/bwapi4-includes/BWAPI/Client/Shape.h b/bwapi4-includes/BWAPI/Client/Shape.h new file mode 100644 index 0000000..6007fb5 --- /dev/null +++ b/bwapi4-includes/BWAPI/Client/Shape.h @@ -0,0 +1,48 @@ +#pragma once +#include "ShapeType.h" +#include + +namespace BWAPIC +{ + struct Shape + { + Shape() + :type(ShapeType::None) + ,ctype(BWAPI::CoordinateType::None) + ,x1(0) + ,y1(0) + ,x2(0) + ,y2(0) + ,extra1(0) + ,extra2(0) + ,color(0) + ,isSolid(false) + { + } + + Shape(ShapeType::Enum _shapeType, BWAPI::CoordinateType::Enum _ctype, int _x1, int _y1, int _x2, int _y2, int _extra1, int _extra2, int _color, bool _isSolid) + :type(_shapeType) + ,ctype(_ctype) + ,x1(_x1) + ,y1(_y1) + ,x2(_x2) + ,y2(_y2) + ,extra1(_extra1) + ,extra2(_extra2) + ,color(_color) + ,isSolid(_isSolid) + { + } + + ShapeType::Enum type; + BWAPI::CoordinateType::Enum ctype; + int x1; + int y1; + int x2; + int y2; + int extra1; + int extra2; + int color; + bool isSolid; + }; +} diff --git a/bwapi4-includes/BWAPI/Client/ShapeType.h b/bwapi4-includes/BWAPI/Client/ShapeType.h new file mode 100644 index 0000000..f5709e7 --- /dev/null +++ b/bwapi4-includes/BWAPI/Client/ShapeType.h @@ -0,0 +1,22 @@ +#pragma once +/** + * Used in UnitCommand + */ + +namespace BWAPIC +{ + namespace ShapeType + { + enum Enum + { + None, + Text, + Box, + Triangle, + Circle, + Ellipse, + Dot, + Line + }; + } +} \ No newline at end of file diff --git a/bwapi4-includes/BWAPI/Client/UnitCommand.h b/bwapi4-includes/BWAPI/Client/UnitCommand.h new file mode 100644 index 0000000..d62eb92 --- /dev/null +++ b/bwapi4-includes/BWAPI/Client/UnitCommand.h @@ -0,0 +1,20 @@ +#pragma once + +#include + +/** + * UnitOrder contains a single whole order + */ + +namespace BWAPIC +{ + struct UnitCommand + { + BWAPI::UnitCommandType type; + int unitIndex; + int targetIndex; + int x; + int y; + int extra; + }; +} \ No newline at end of file diff --git a/bwapi4-includes/BWAPI/Client/UnitData.h b/bwapi4-includes/BWAPI/Client/UnitData.h new file mode 100644 index 0000000..6df7fd4 --- /dev/null +++ b/bwapi4-includes/BWAPI/Client/UnitData.h @@ -0,0 +1,111 @@ +#pragma once + +namespace BWAPI +{ + struct UnitData + { + int clearanceLevel; + int id; + int player; + int type; + int positionX; + int positionY; + double angle; + double velocityX; + double velocityY; + int hitPoints; + int lastHitPoints; + int shields; + int energy; + int resources; + int resourceGroup; + + int killCount; + int acidSporeCount; + int scarabCount; + int spiderMineCount; + int groundWeaponCooldown; + int airWeaponCooldown; + int spellCooldown; + int defenseMatrixPoints; + + int defenseMatrixTimer; + int ensnareTimer; + int irradiateTimer; + int lockdownTimer; + int maelstromTimer; + int orderTimer; + int plagueTimer; + int removeTimer; + int stasisTimer; + int stimTimer; + + int buildType; + int trainingQueueCount; + int trainingQueue[5]; + int tech; + int upgrade; + int remainingBuildTime; + int remainingTrainTime; + int remainingResearchTime; + int remainingUpgradeTime; + int buildUnit; + + int target; + int targetPositionX; + int targetPositionY; + int order; + int orderTarget; + int orderTargetPositionX; + int orderTargetPositionY; + int secondaryOrder; + int rallyPositionX; + int rallyPositionY; + int rallyUnit; + int addon; + int nydusExit; + int powerUp; + + int transport; + int carrier; + int hatchery; + + bool exists; + bool hasNuke; + bool isAccelerating; + bool isAttacking; + bool isAttackFrame; + bool isBeingGathered; + bool isBlind; + bool isBraking; + bool isBurrowed; + int carryResourceType; + bool isCloaked; + bool isCompleted; + bool isConstructing; + bool isDetected; + bool isGathering; + bool isHallucination; + bool isIdle; + bool isInterruptible; + bool isInvincible; + bool isLifted; + bool isMorphing; + bool isMoving; + bool isParasited; + bool isSelected; + bool isStartingAttack; + bool isStuck; + bool isTraining; + bool isUnderStorm; + bool isUnderDarkSwarm; + bool isUnderDWeb; + bool isPowered; + bool isVisible[9]; + int buttonset; + + int lastAttackerPlayer; + bool recentlyAttacked; + int replayID; + }; +} diff --git a/bwapi4-includes/BWAPI/Client/UnitImpl.h b/bwapi4-includes/BWAPI/Client/UnitImpl.h new file mode 100644 index 0000000..374297d --- /dev/null +++ b/bwapi4-includes/BWAPI/Client/UnitImpl.h @@ -0,0 +1,242 @@ +#pragma once +#include +#include "UnitData.h" +#include + +namespace BWAPI +{ + class PlayerInterface; + typedef PlayerInterface *Player; + + class UnitImpl : public UnitInterface + { + private: + int id; + UnitType initialType; + int initialResources; + int initialHitPoints; + Position initialPosition; + int lastCommandFrame; + UnitCommand lastCommand; + public: + UnitData* self; + Unitset connectedUnits; + Unitset loadedUnits; + void clear(); + void saveInitialState(); + + UnitImpl(int id); + + virtual int getID() const override; + virtual bool exists() const override; + virtual int getReplayID() const override; + virtual Player getPlayer() const override; + virtual UnitType getType() const override; + virtual Position getPosition() const override; + virtual double getAngle() const override; + virtual double getVelocityX() const override; + virtual double getVelocityY() const override; + virtual int getHitPoints() const override; + virtual int getShields() const override; + virtual int getEnergy() const override; + virtual int getResources() const override; + virtual int getResourceGroup() const override; + + virtual int getLastCommandFrame() const override; + virtual UnitCommand getLastCommand() const override; + virtual BWAPI::Player getLastAttackingPlayer() const override; + + virtual UnitType getInitialType() const override; + virtual Position getInitialPosition() const override; + virtual TilePosition getInitialTilePosition() const override; + virtual int getInitialHitPoints() const override; + virtual int getInitialResources() const override; + + virtual int getKillCount() const override; + virtual int getAcidSporeCount() const override; + virtual int getInterceptorCount() const override; + virtual int getScarabCount() const override; + virtual int getSpiderMineCount() const override; + virtual int getGroundWeaponCooldown() const override; + virtual int getAirWeaponCooldown() const override; + virtual int getSpellCooldown() const override; + virtual int getDefenseMatrixPoints() const override; + + virtual int getDefenseMatrixTimer() const override; + virtual int getEnsnareTimer() const override; + virtual int getIrradiateTimer() const override; + virtual int getLockdownTimer() const override; + virtual int getMaelstromTimer() const override; + virtual int getOrderTimer() const override; + virtual int getPlagueTimer() const override; + virtual int getRemoveTimer() const override; + virtual int getStasisTimer() const override; + virtual int getStimTimer() const override; + + virtual UnitType getBuildType() const override; + virtual UnitType::set getTrainingQueue() const override; + virtual TechType getTech() const override; + virtual UpgradeType getUpgrade() const override; + virtual int getRemainingBuildTime() const override; + virtual int getRemainingTrainTime() const override; + virtual int getRemainingResearchTime() const override; + virtual int getRemainingUpgradeTime() const override; + virtual Unit getBuildUnit() const override; + + virtual Unit getTarget() const override; + virtual Position getTargetPosition() const override; + virtual Order getOrder() const override; + virtual Unit getOrderTarget() const override; + virtual Position getOrderTargetPosition() const override; + virtual Order getSecondaryOrder() const override; + virtual Position getRallyPosition() const override; + virtual Unit getRallyUnit() const override; + virtual Unit getAddon() const override; + virtual Unit getNydusExit() const override; + virtual Unit getPowerUp() const override; + + virtual Unit getTransport() const override; + virtual Unitset getLoadedUnits() const override; + virtual Unit getCarrier() const override; + virtual Unitset getInterceptors() const override; + virtual Unit getHatchery() const override; + virtual Unitset getLarva() const override; + + virtual bool hasNuke() const override; + virtual bool isAccelerating() const override; + virtual bool isAttackFrame() const override; + virtual bool isAttacking() const override; + virtual bool isBeingGathered() const override; + virtual bool isBeingHealed() const override; + virtual bool isBlind() const override; + virtual bool isBraking() const override; + virtual bool isBurrowed() const override; + virtual bool isCarryingGas() const override; + virtual bool isCarryingMinerals() const override; + virtual bool isCloaked() const override; + virtual bool isCompleted() const override; + virtual bool isConstructing() const override; + virtual bool isDetected() const override; + virtual bool isGatheringGas() const override; + virtual bool isGatheringMinerals() const override; + virtual bool isHallucination() const override; + virtual bool isIdle() const override; + virtual bool isInterruptible() const override; + virtual bool isInvincible() const override; + virtual bool isLifted() const override; + virtual bool isMorphing() const override; + virtual bool isMoving() const override; + virtual bool isParasited() const override; + virtual bool isSelected() const override; + virtual bool isStartingAttack() const override; + virtual bool isStuck() const override; + virtual bool isTraining() const override; + virtual bool isUnderAttack() const override; + virtual bool isUnderDarkSwarm() const override; + virtual bool isUnderDisruptionWeb() const override; + virtual bool isUnderStorm() const override; + virtual bool isPowered() const override; + virtual bool isVisible(Player player = nullptr) const override; + virtual bool isTargetable() const override; + + virtual bool canCommand() const override; + virtual bool canCommandGrouped(bool checkCommandibility = true) const override; + virtual bool canTargetUnit(Unit targetUnit, bool checkCommandibility = true) const override; + + virtual bool canAttack(bool checkCommandibility = true) const override; + virtual bool canAttack(PositionOrUnit target, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canAttackGrouped(bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const override; + virtual bool canAttackGrouped(PositionOrUnit target, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const override; + virtual bool canAttackMove(bool checkCommandibility = true) const override; + virtual bool canAttackMoveGrouped(bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const override; + virtual bool canAttackUnit(bool checkCommandibility = true) const override; + virtual bool canAttackUnit(Unit targetUnit, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canAttackUnitGrouped(bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const override; + virtual bool canAttackUnitGrouped(Unit targetUnit, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const override; + virtual bool canBuild(bool checkCommandibility = true) const override; + virtual bool canBuild(UnitType uType, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canBuild(UnitType uType, BWAPI::TilePosition tilePos, bool checkTargetUnitType = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canBuildAddon(bool checkCommandibility = true) const override; + virtual bool canBuildAddon(UnitType uType, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canTrain(bool checkCommandibility = true) const override; + virtual bool canTrain(UnitType uType, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canMorph(bool checkCommandibility = true) const override; + virtual bool canMorph(UnitType uType, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canResearch(bool checkCommandibility = true) const override; + virtual bool canResearch(TechType type, bool checkCanIssueCommandType = true) const override; + virtual bool canUpgrade(bool checkCommandibility = true) const override; + virtual bool canUpgrade(UpgradeType type, bool checkCanIssueCommandType = true) const override; + virtual bool canSetRallyPoint(bool checkCommandibility = true) const override; + virtual bool canSetRallyPoint(PositionOrUnit target, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canSetRallyPosition(bool checkCommandibility = true) const override; + virtual bool canSetRallyUnit(bool checkCommandibility = true) const override; + virtual bool canSetRallyUnit(Unit targetUnit, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canMove(bool checkCommandibility = true) const override; + virtual bool canMoveGrouped(bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const override; + virtual bool canPatrol(bool checkCommandibility = true) const override; + virtual bool canPatrolGrouped(bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const override; + virtual bool canFollow(bool checkCommandibility = true) const override; + virtual bool canFollow(Unit targetUnit, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canGather(bool checkCommandibility = true) const override; + virtual bool canGather(Unit targetUnit, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canReturnCargo(bool checkCommandibility = true) const override; + virtual bool canHoldPosition(bool checkCommandibility = true) const override; + virtual bool canStop(bool checkCommandibility = true) const override; + virtual bool canRepair(bool checkCommandibility = true) const override; + virtual bool canRepair(Unit targetUnit, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canBurrow(bool checkCommandibility = true) const override; + virtual bool canUnburrow(bool checkCommandibility = true) const override; + virtual bool canCloak(bool checkCommandibility = true) const override; + virtual bool canDecloak(bool checkCommandibility = true) const override; + virtual bool canSiege(bool checkCommandibility = true) const override; + virtual bool canUnsiege(bool checkCommandibility = true) const override; + virtual bool canLift(bool checkCommandibility = true) const override; + virtual bool canLand(bool checkCommandibility = true) const override; + virtual bool canLand(TilePosition target, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canLoad(bool checkCommandibility = true) const override; + virtual bool canLoad(Unit targetUnit, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canUnloadWithOrWithoutTarget(bool checkCommandibility = true) const override; + virtual bool canUnloadAtPosition(Position targDropPos, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canUnload(bool checkCommandibility = true) const override; + virtual bool canUnload(Unit targetUnit, bool checkCanTargetUnit = true, bool checkPosition = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canUnloadAll(bool checkCommandibility = true) const override; + virtual bool canUnloadAllPosition(bool checkCommandibility = true) const override; + virtual bool canUnloadAllPosition(Position targDropPos, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canRightClick(bool checkCommandibility = true) const override; + virtual bool canRightClick(PositionOrUnit target, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canRightClickGrouped(bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const override; + virtual bool canRightClickGrouped(PositionOrUnit target, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const override; + virtual bool canRightClickPosition(bool checkCommandibility = true) const override; + virtual bool canRightClickPositionGrouped(bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const override; + virtual bool canRightClickUnit(bool checkCommandibility = true) const override; + virtual bool canRightClickUnit(Unit targetUnit, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canRightClickUnitGrouped(bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const override; + virtual bool canRightClickUnitGrouped(Unit targetUnit, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const override; + virtual bool canHaltConstruction(bool checkCommandibility = true) const override; + virtual bool canCancelConstruction(bool checkCommandibility = true) const override; + virtual bool canCancelAddon(bool checkCommandibility = true) const override; + virtual bool canCancelTrain(bool checkCommandibility = true) const override; + virtual bool canCancelTrainSlot(bool checkCommandibility = true) const override; + virtual bool canCancelTrainSlot(int slot, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canCancelMorph(bool checkCommandibility = true) const override; + virtual bool canCancelResearch(bool checkCommandibility = true) const override; + virtual bool canCancelUpgrade(bool checkCommandibility = true) const override; + virtual bool canUseTechWithOrWithoutTarget(bool checkCommandibility = true) const override; + virtual bool canUseTechWithOrWithoutTarget(BWAPI::TechType tech, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canUseTech(BWAPI::TechType tech, PositionOrUnit target = nullptr, bool checkCanTargetUnit = true, bool checkTargetsType = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canUseTechWithoutTarget(BWAPI::TechType tech, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canUseTechUnit(BWAPI::TechType tech, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canUseTechUnit(BWAPI::TechType tech, Unit targetUnit, bool checkCanTargetUnit = true, bool checkTargetsUnits = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canUseTechPosition(BWAPI::TechType tech, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canUseTechPosition(BWAPI::TechType tech, Position target, bool checkTargetsPositions = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canPlaceCOP(bool checkCommandibility = true) const override; + virtual bool canPlaceCOP(TilePosition target, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + + virtual bool canIssueCommandType(BWAPI::UnitCommandType ct, bool checkCommandibility = true) const override; + virtual bool canIssueCommandTypeGrouped(BWAPI::UnitCommandType ct, bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const override; + virtual bool canIssueCommand(UnitCommand command, bool checkCanUseTechPositionOnPositions = true, bool checkCanUseTechUnitOnUnits = true, bool checkCanBuildUnitType = true, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const override; + virtual bool canIssueCommandGrouped(UnitCommand command, bool checkCanUseTechPositionOnPositions = true, bool checkCanUseTechUnitOnUnits = true, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const override; + + virtual bool issueCommand(UnitCommand command) override; + }; +} diff --git a/bwapi4-includes/BWAPI/Color.h b/bwapi4-includes/BWAPI/Color.h new file mode 100644 index 0000000..4589332 --- /dev/null +++ b/bwapi4-includes/BWAPI/Color.h @@ -0,0 +1,209 @@ +#pragma once +#include + +namespace BWAPI +{ + /// The Color object is used in drawing routines to specify the color to use. + /// + /// @note Starcraft uses a 256 color palette for rendering. Thus, the colors available are + /// limited to this palette. + class Color : public Type + { + public: + /// A constructor that uses the color at the specified palette index. + /// + /// @param id + /// The index of the color in the 256-color palette. + Color(int id = 0); + + /// A constructor that uses the color index in the palette that is closest to the given rgb + /// values. On its first call, the colors in the palette will be sorted for fast indexing. + /// + /// @note This function computes the distance of the RGB values and may not be accurate. + /// + /// @param red + /// The amount of red. + /// @param green + /// The amount of green. + /// @param blue + /// The amount of blue. + Color(int red, int green, int blue); + + /// Retrieves the red component of the color. + /// + /// @returns integer containing the value of the red component. + int red() const; + + /// Retrieves the green component of the color. + /// + /// @returns integer containing the value of the green component. + int green() const; + + /// Retrieves the blue component of the color. + /// + /// @returns integer containing the value of the blue component. + int blue() const; + }; + + /// Namespace containing known colors. + namespace Colors + { + /// The default color for Player 1. + extern const Color Red; + + /// The default color for Player 2. + extern const Color Blue; + + /// The default color for Player 3. + extern const Color Teal; + + /// The default color for Player 4. + extern const Color Purple; + + /// The default color for Player 5. + extern const Color Orange; + + /// The default color for Player 6. + extern const Color Brown; + + /// The default color for Player 7. + extern const Color White; + + /// The default color for Player 8. + extern const Color Yellow; + + /// The alternate color for Player 7 on Ice tilesets. + extern const Color Green; + + /// The default color for Neutral (Player 12). + extern const Color Cyan; + + /// The color black + extern const Color Black; + + /// The color grey + extern const Color Grey; + } + + /// Namespace containing text formatting codes. Such codes are used in calls to Game::drawText, + /// Game::printf, and Broodwar::operator<< + namespace Text + { + // Enumeration of text formatting codes + enum Enum + { + /// Uses the previous color that was specified before the current one. + Previous = 1, + + /// Uses the default blueish color. This color is used in standard game messages. + Default = 2, + + /// A solid yellow. This yellow is used in notifications and is also the default color when + /// printing text to Broodwar. + Yellow = 3, + + /// A bright white. This is used for timers. + White = 4, + + /// A dark grey. This color code will override all color formatting that follows. + Grey = 5, + + /// A deep red. This color code is used for error messages. + Red = 6, + + /// A solid green. This color is used for sent messages and resource counters. + Green = 7, + + /// A type of red. This color is used to color the name of the red player. + BrightRed = 8, + + /// This code hides all text and formatting that follows. + Invisible = 11, + + /// A deep blue. This color is used to color the name of the blue player. + Blue = 14, + + /// A teal color. This color is used to color the name of the teal player. + Teal = 15, + + /// A deep purple. This color is used to color the name of the purple player. + Purple = 16, + + /// A solid orange. This color is used to color the name of the orange player. + Orange = 17, + + /// An alignment directive that aligns the text to the right side of the screen. + Align_Right = 18, + + /// An alignment directive that aligns the text to the center of the screen. + Align_Center = 19, + + /// @copydoc Invisible + Invisible2 = 20, + + /// A dark brown. This color is used to color the name of the brown player. + Brown = 21, + + /// A dirty white. This color is used to color the name of the white player. + PlayerWhite = 22, + + /// A deep yellow. This color is used to color the name of the yellow player. + PlayerYellow = 23, + + /// A dark green. This color is used to color the name of the green player. + DarkGreen = 24, + + /// A bright yellow. + LightYellow = 25, + + /// A cyan color. Similar to Default. + Cyan = 26, + + /// A tan color. + Tan = 27, + + /// A dark blueish color. + GreyBlue = 28, + + /// A type of Green. + GreyGreen = 29, + + /// A different type of Cyan. + GreyCyan = 30, + + /// A bright blue color. + Turquoise = 31 + }; + + /// Namespace containing text sizes. + namespace Size + { + /// Enumeration of available text sizes + enum Enum + { + /// The smallest text size in the game. + Small, + + /// The standard text size, used for most things in the game such as chat messages. + Default, + + /// A larger text size. This size is used for the in-game countdown timer seen in @CTF and @UMS game types. + Large, + + /// The largest text size in the game. + Huge + }; + } + + /// Standard output stream operator for text formatting codes. This is used to correctly + /// format the codes for output. + /// + /// @param out + /// Reference to destination output stream. + /// @param t + /// Reference to the Text formatting code to insert into the output stream. + /// + /// @returns Reference to the \p out parameter that was passed in. + std::ostream &operator << (std::ostream &out, const Text::Enum &t); + } +} diff --git a/bwapi4-includes/BWAPI/ComparisonFilter.h b/bwapi4-includes/BWAPI/ComparisonFilter.h new file mode 100644 index 0000000..3f743d9 --- /dev/null +++ b/bwapi4-includes/BWAPI/ComparisonFilter.h @@ -0,0 +1,92 @@ +#pragma once +// Prevent warnings if someone includes windows.h +#ifdef max +#undef max +#endif + +#include +#include + +#include "UnaryFilter.h" + +#define BWAPI_COMPARE_FILTER_OP(op) UnaryFilter operator op(const RType &cmp) const \ + { return [=](PType v)->bool{ return (*this)(v) op cmp; }; } + +#define BWAPI_ARITHMATIC_FILTER_OP(op) template \ + CompareFilter > operator op(const T &other) const \ + { return [=](PType v)->int{ return (*this)(v) op other(v); }; } \ + CompareFilter > operator op(RType other) const \ + { return [=](PType v)->int{ return (*this)(v) op other; }; } + +namespace BWAPI +{ + /// The CompareFilter is a container in which a stored function predicate returns a value. + /// Arithmetic and bitwise operators will return a new CompareFilter that applies the operation + /// to the result of the original functor. If any relational operators are used, then it creates + /// a UnaryFilter that returns the result of the operation. + /// + /// @tparam PType + /// The parameter type, which is the type passed into the functor. + /// @tparam RType (optional) + /// The functor's return type. It is int by default. + /// @tparam Container (optional) + /// Storage container for the function predicate. It is std::function by default. + template < typename PType, typename RType=int, class Container = std::function > + class CompareFilter + { + private: + Container pred; + public: + // ctor + template + CompareFilter(const T &predicate) : pred(predicate) {} + + // Default copy/move ctor/assign and dtor + + // Comparison operators + BWAPI_COMPARE_FILTER_OP(==); + BWAPI_COMPARE_FILTER_OP(!=); + BWAPI_COMPARE_FILTER_OP(<=); + BWAPI_COMPARE_FILTER_OP(>=); + BWAPI_COMPARE_FILTER_OP(<); + BWAPI_COMPARE_FILTER_OP(>); + + // Arithmetic operators + BWAPI_ARITHMATIC_FILTER_OP(+); + BWAPI_ARITHMATIC_FILTER_OP(-); + BWAPI_ARITHMATIC_FILTER_OP(|); + BWAPI_ARITHMATIC_FILTER_OP(&); + BWAPI_ARITHMATIC_FILTER_OP(*); + BWAPI_ARITHMATIC_FILTER_OP(^); + + // Division + template + CompareFilter > operator /(const T &other) const + { + return [=](PType v)->int{ int rval = other(v); + return rval == 0 ? std::numeric_limits::max() : (*this)(v) / rval; + }; + }; + + // Modulus + template + CompareFilter > operator %(const T &other) const + { + return [=](PType v)->int{ int rval = other(v); + return rval == 0 ? 0 : (*this)(v) % rval; + }; + }; + + // call + inline RType operator()(PType u) const + { + return pred(u); + }; + + inline bool isValid() const + { + return (bool)pred; + }; + }; +} + diff --git a/bwapi4-includes/BWAPI/ConstVectorset.h b/bwapi4-includes/BWAPI/ConstVectorset.h new file mode 100644 index 0000000..7938791 --- /dev/null +++ b/bwapi4-includes/BWAPI/ConstVectorset.h @@ -0,0 +1,364 @@ +#pragma once +#include +#include +#include +#include + +#include "Vectorset_iterator.h" + +namespace BWAPI +{ + template + class Vectorset; + + /// The Vectorset is a class template designed specifically for trivial classes or PODs and + /// performance. It mimics the usage of various stl containers (specifically the Vector and Set) + /// in order to replace them. The Vectorset is designed for BWAPI usage and is recommended, + /// especially if stl containers are causing a bottleneck in your bot's code. + /// + /// @warning The Vectorset should only be used with objects that have a trivial destructor and + /// trivial copy constructor. Objects in the Vectorset should not do any memory management + /// or the behaviour will be undefined. Use with caution. + /// + /// @note The Vectorset will only free memory when the object is destroyed. + /// + /// @see std::vector, std::set + template + class ConstVectorset + { +#ifndef SWIG + static_assert( +#ifdef _MSC_VER + std::has_trivial_copy::value && + std::has_trivial_copy_constructor::value && + std::has_trivial_destructor::value, +#else + std::is_trivially_copyable::value && + std::is_trivially_constructible::value && + std::is_trivially_destructible::value, +#endif + "Vectorset can only be used with classes that have a trivial destructor and trivial copy constructor."); +#endif + + private: + ConstVectorset(); + public: + /// The iterator is used to traverse the elements in the set. It is used the same way as in + /// the stl containers. + typedef BWAPI::VSetIterator iterator; + typedef std::reverse_iterator reverse_iterator; + + // ----------------------------------------------------------------- Constructors + /// This constructor uses an existing array of objects and copies them into the vector. + /// The Vectorset will allocate only enough memory to copy the array's contents. + /// + /// @param pArray + /// Pointer to an array of objects of type T. + /// @param arrSize + /// The number of elements contained in the given array. + /// + /// @note Duplicate entries are not removed. + ConstVectorset(const void *pArray, size_t arrSize = 0) + : pStartArr( (T*)pArray ) + , pEndArr( (T*)pArray + arrSize ) + {}; + + ConstVectorset(const ConstVectorset &other) + : pStartArr(other.pStartArr) + , pEndArr(other.pEndArr) + {} + + // ----------------------------------------------------------------- Operators + /// Creates a new Vectorset containing all elements of the current Vectorset with all elements + /// of the other Vectorset appended on to it. + /// + /// @param other + /// The other Vectorset of the same type to use in combination. + /// + /// @returns A new Vectorset containing the contents of both this and other. + /// + /// @note Duplicate entries are not removed. + /// + /// @see operator| + Vectorset operator +(const ConstVectorset &other) const + { + Vectorset vcopy(this->size() + other.size()); + vcopy.push_back(*this); + vcopy.push_back(other); + return vcopy; + }; + Vectorset operator +(const T &val) const + { + Vectorset vcopy(this->size() + 1); + vcopy.push_back(*this); + vcopy.push_back(val); + return vcopy; + }; + + /// Creates a new Vectorset containing all elements of the current Vectorset and all elements + /// of the other Vectorset with duplicates removed. + /// + /// @param other + /// The other Vectorset of the same type to use in combination. + /// + /// @returns A new Vectorset containing the contents of both this and other. + Vectorset operator |(const ConstVectorset &other) const + { + Vectorset vcopy(this->size() + other.size()); + vcopy.push_back(*this); + vcopy.insert(other); + return vcopy; + }; + Vectorset operator |(const T &val) const + { + Vectorset vcopy(this->size() + 1); + vcopy.push_back(*this); + vcopy.insert(val); + return vcopy; + }; + + /// Compares this Vectorset with another Vectorset of the same type. + /// + /// @param other + /// A Vectorset of the same type to use for comparison. + /// + /// @retval true if the other Vectorset is exactly the same as this one. + /// @retval false if at least one element in this Vectorset is not found in the other, or if + /// they are not in the exact same positions. + /// + /// @note This simply calls memcmp. + bool operator ==(const ConstVectorset &other) const + { + if ( this->empty() && other.empty() ) + return true; + + if ( this->size() != other.size() ) + return true; + + return memcmp( this->pStartArr, other.pStartArr, this->size()*sizeof(T) ) == 0; + }; + + /// Retrieves a pointer to the raw data in the Vectorset. + /// + /// @note Vectorset data is simply an array. + /// + /// @returns A pointer to the Vectorset's array data. + inline operator void*() const + { + return this->pStartArr; + }; + + /// Used as a macro to check if the Vectorset is empty. + /// + /// @retval true if the Vectorset is not empty. + /// @retval false if the Vectorset is empty. + inline operator bool() const + { + return !this->empty(); + }; + + /// Array indexing operator. + /// + /// @TODO Needs to be modified + /// + /// @param index + /// The array index in the Vectorset to retrieve the value from. + inline T operator [](unsigned int index) const + { + if ( index < this->size() ) + return this->pStartArr[index]; + return pStartArr[0]; + }; + + // ----------------------------------------------------------------- Custom const functions + /// This function checks if an element exists in the Vectorset. + /// + /// @param element + /// The value to search for in the Vectorset. + /// + /// @retval true if the element is in the Vectorset. + /// @retval false if the element was not found. + bool exists(const T &element) const + { + return this->find(element) != this->end(); + }; + + /// This macro is used to choose a random value from a Vectorset. It returns a default T + /// value if the Vectorset is empty. + /// + /// @TODO needs to be modified + /// + /// @note This function calls the rand() function. A call to srand() should be used for + /// initialization. + /// + /// @see rand() + T rand() const + { + size_t size = this->size(); + switch ( size ) + { + case 0: + return T(); + case 1: + return this->pStartArr[0]; + case 2: + return this->pStartArr[::rand()%2]; + case 4: + return this->pStartArr[::rand()%4]; + case 8: + return this->pStartArr[::rand()%8]; + case 16: + return this->pStartArr[::rand()%16]; + case 32: + return this->pStartArr[::rand()%32]; + case 64: + return this->pStartArr[::rand()%64]; + case 128: + return this->pStartArr[::rand()%128]; + case 256: + return this->pStartArr[::rand()%256]; + case 512: + return this->pStartArr[::rand()%512]; + case 1024: + return this->pStartArr[::rand()%1024]; + case 2048: + return this->pStartArr[::rand()%2048]; + } + return this->pStartArr[::rand()%size]; + }; + + /// Iterates the Vectorset and retrieves the best entry using two callback procedures. The + /// first returning the value to compare, the second being a binary comparison. + /// + /// @param cmpValue + /// A functor taking one argument, T, and returning a value to compare. + /// + /// @param cmpProc + /// A functor taking two values, (the ones returned by cmpValue), and returns a boolean + /// indicating that the first value passed in is the new best value. + /// + /// @retval NULL If the Vectorset is empty. + /// @returns A T representing the best in the Vectorset. + template < typename _V, typename _C > + T getBest(const _V &cmpValue, const _C &cmpProc) const + { + // Return if empty + if ( this->empty() ) + return NULL; + + // retrieve a value as the placeholder for the "best" + T best = this->front(); + int bestVal = cmpValue(best); + + // Iterate all (remaining) elements + for ( auto i = this->begin()+1; i != this->end(); ++i ) + { + // Retrieve new value + int newVal = cmpValue(*i); + + // Set as new best if new value > best + if ( cmpProc(newVal, bestVal) ) + { + bestVal = newVal; + best = *i; + } + } + + return best; + }; + /// @copydoc getBest + /// @see getBest + template < typename _V > + T most(const _V &cmpValue) const + { + return this->getBest( std::forward<_V>(cmpValue), [](const int &v1, const int &v2)->bool{ return v1 > v2; } ); + }; + /// @copydoc getBest + /// @see getBest + template < typename _V > + T least(const _V &cmpValue) const + { + return this->getBest( std::forward<_V>(cmpValue), [](const int &v1, const int &v2)->bool{ return v1 < v2; } ); + }; + + /// Calculates a total by applying a functor to each element and adding what the functor + /// returns. + /// + /// @param valProc + /// A unary functor that takes T as a parameter and returns the integer used to add to + /// the total. + /// + /// @returns An integer representing the sum of results from \p valProc applied to every + /// element in the Vectorset. + template < typename _V > + int total(const _V &valProc) const + { + int sum = 0; + for ( auto i = this->begin(); i != this->end(); ++i ) + sum += valProc(*i); + return sum; + }; + // ----------------------------------------------------------------- stl spinoff const functions + /// Retrieves the number of elements currently in the Vectorset. + /// + /// @returns The number of elements contained in this Vectorset. + /// + /// @note For efficiency it is recommended to use empty() to check if the Vectorset has 0 + /// elements. + /// + /// @see empty + inline size_t size() const + { + return ((size_t)this->pEndArr - (size_t)this->pStartArr)/sizeof(T); + }; + + /// Checks if the Vectorset is empty. + /// + /// @retval true if the Vectorset is empty. + /// @retval false if the Vectorset contains elements. + inline bool empty() const + { + return this->pEndArr == this->pStartArr; + }; + + // iterators + inline iterator begin() const + { + return this->pStartArr; + }; + inline reverse_iterator rbegin() const + { + return this->pEndArr - 1; + }; + inline iterator end() const + { + return this->pEndArr; + }; + inline reverse_iterator rend() const + { + return this->pStartArr - 1; + }; + inline T front() const + { + return *this->begin(); + }; + inline T back() const + { + return *this->rbegin(); + }; + + // ----------------------------------------------------------------- stl macros + inline iterator find(const T &value) const + { + return std::find(this->begin(), this->end(), value); + }; + + // ----------------------------------------------------------------- + protected: + // Variables + T *pStartArr; // ptr to beginning of array + T *pEndArr; // ptr to last element + 1 + }; + +} + diff --git a/bwapi4-includes/BWAPI/Constants.h b/bwapi4-includes/BWAPI/Constants.h new file mode 100644 index 0000000..b5821df --- /dev/null +++ b/bwapi4-includes/BWAPI/Constants.h @@ -0,0 +1,6 @@ +#pragma once +namespace BWAPI +{ + /** Used for converting between TilePosition coordinates and Position coordinates. */ + #define TILE_SIZE 32 +} diff --git a/bwapi4-includes/BWAPI/CoordinateType.h b/bwapi4-includes/BWAPI/CoordinateType.h new file mode 100644 index 0000000..b222490 --- /dev/null +++ b/bwapi4-includes/BWAPI/CoordinateType.h @@ -0,0 +1,14 @@ +#pragma once +namespace BWAPI +{ + namespace CoordinateType + { + enum Enum + { + None = 0, /**< A default value for uninitialized coordinate types. */ + Screen = 1, /**< (0,0) corresponds to the top left corner of the screen. */ + Map = 2, /**< (0,0) corresponds to the top left corner of the map. */ + Mouse = 3, /**< (0,0) corresponds to the tip of the mouse . */ + }; + } +} diff --git a/bwapi4-includes/BWAPI/DamageType.h b/bwapi4-includes/BWAPI/DamageType.h new file mode 100644 index 0000000..25d1d60 --- /dev/null +++ b/bwapi4-includes/BWAPI/DamageType.h @@ -0,0 +1,52 @@ +#pragma once +#include + +namespace BWAPI +{ + namespace DamageTypes + { + /// Enumeration of damage types + namespace Enum + { + /// Enumeration of damage types + enum Enum + { + Independent, + Explosive, + Concussive, + Normal, + Ignore_Armor, + None, + Unknown, + MAX + }; + } + } + class DamageType : public Type + { + public: + /// @copydoc Type::Type(int) + DamageType(int id = DamageTypes::Enum::None); + }; + /// Namespace containing damage types + namespace DamageTypes + { + /// Retrieves the set of all the DamageTypes. + /// + /// @returns Set of DamageTypes. + const DamageType::const_set& allDamageTypes(); + +#ifdef BWAPI_DECL +#undef BWAPI_DECL +#endif +#define BWAPI_DECL(x) /** x */ extern const DamageType x + BWAPI_DECL(Independent); + BWAPI_DECL(Explosive); + BWAPI_DECL(Concussive); + BWAPI_DECL(Normal); + BWAPI_DECL(Ignore_Armor); + BWAPI_DECL(None); + BWAPI_DECL(Unknown); +#undef BWAPI_DECL + } +} diff --git a/bwapi4-includes/BWAPI/Error.h b/bwapi4-includes/BWAPI/Error.h new file mode 100644 index 0000000..9248e72 --- /dev/null +++ b/bwapi4-includes/BWAPI/Error.h @@ -0,0 +1,103 @@ +#pragma once +#include +#include + +namespace BWAPI +{ + class UnitType; + + namespace Errors + { + /// Enumeration of Error types + namespace Enum + { + /// Enumeration of Error types + enum Enum + { + Unit_Does_Not_Exist, + Unit_Not_Visible, + Unit_Not_Owned, + Unit_Busy, + Incompatible_UnitType, + Incompatible_TechType, + Incompatible_State, + Already_Researched, + Fully_Upgraded, + Currently_Researching, + Currently_Upgrading, + Insufficient_Minerals, + Insufficient_Gas, + Insufficient_Supply, + Insufficient_Energy, + Insufficient_Tech, + Insufficient_Ammo, + Insufficient_Space, + Invalid_Tile_Position, + Unbuildable_Location, + Unreachable_Location, + Out_Of_Range, + Unable_To_Hit, + Access_Denied, + File_Not_Found, + Invalid_Parameter, + None, + Unknown, + MAX + }; + }; + }; + + /// The Error object is generally used to determine why certain functions in BWAPI have failed. + /// + /// For example, you may not have enough resources to construct a unit. + /// @see Game::getLastError, Game::setLastError + class Error : public Type + { + public: + /// @copydoc Type::Type(int) + Error(int id = Errors::Enum::None); + }; + + /// Namespace containing error codes + namespace Errors + { + /// Retrieves the set of all the error codes. + /// + /// @returns Set of error types. + const Error::const_set& allErrors(); + +#ifdef BWAPI_DECL +#undef BWAPI_DECL +#endif +#define BWAPI_DECL(x) /** x */ extern const Error x + BWAPI_DECL(Unit_Does_Not_Exist); + BWAPI_DECL(Unit_Not_Visible); + BWAPI_DECL(Unit_Not_Owned); + BWAPI_DECL(Unit_Busy); + BWAPI_DECL(Incompatible_UnitType); + BWAPI_DECL(Incompatible_TechType); + BWAPI_DECL(Incompatible_State); + BWAPI_DECL(Already_Researched); + BWAPI_DECL(Fully_Upgraded); + BWAPI_DECL(Currently_Researching); + BWAPI_DECL(Currently_Upgrading); + BWAPI_DECL(Insufficient_Minerals); + BWAPI_DECL(Insufficient_Gas); + BWAPI_DECL(Insufficient_Supply); + BWAPI_DECL(Insufficient_Energy); + BWAPI_DECL(Insufficient_Tech); + BWAPI_DECL(Insufficient_Ammo); + BWAPI_DECL(Insufficient_Space); + BWAPI_DECL(Invalid_Tile_Position); + BWAPI_DECL(Unbuildable_Location); + BWAPI_DECL(Unreachable_Location); + BWAPI_DECL(Out_Of_Range); + BWAPI_DECL(Unable_To_Hit); + BWAPI_DECL(Access_Denied); + BWAPI_DECL(File_Not_Found); + BWAPI_DECL(Invalid_Parameter); + BWAPI_DECL(None); + BWAPI_DECL(Unknown); +#undef BWAPI_DECL + } +} diff --git a/bwapi4-includes/BWAPI/Event.h b/bwapi4-includes/BWAPI/Event.h new file mode 100644 index 0000000..b1f6dac --- /dev/null +++ b/bwapi4-includes/BWAPI/Event.h @@ -0,0 +1,64 @@ +#pragma once +#include +#include +#include + +#include + +namespace BWAPI +{ + // Forward Declarations + class PlayerInterface; + typedef PlayerInterface *Player; + + class Event + { + public: + Event(); + ~Event(); + Event(const Event& other); + Event(Event&& other); + Event& operator=(const Event& other); + Event& operator=(Event &&other); + bool operator==(const Event& other) const; + static Event MatchStart(); + static Event MatchEnd(bool isWinner); + static Event MatchFrame(); + static Event MenuFrame(); + static Event SendText(const char* text = nullptr); + static Event ReceiveText(Player player, const char* text = nullptr); + static Event PlayerLeft(Player player); + static Event NukeDetect(Position target); + static Event UnitDiscover(Unit unit); + static Event UnitEvade(Unit unit); + static Event UnitShow(Unit unit); + static Event UnitHide(Unit unit); + static Event UnitCreate(Unit unit); + static Event UnitDestroy(Unit unit); + static Event UnitMorph(Unit unit); + static Event UnitRenegade(Unit unit); + static Event SaveGame(const char* gameName = nullptr); + static Event UnitComplete(Unit unit); + EventType::Enum getType() const; + Position getPosition() const; + const std::string& getText() const; + Unit getUnit() const; + Player getPlayer() const; + bool isWinner() const; + + Event& setType(EventType::Enum type); + Event& setPosition(Position position); + Event& setText(const char* text); + Event& setUnit(Unit unit); + Event& setPlayer(Player player); + Event& setWinner(bool isWinner); + //static Event TriggerAction(); + private: + Position position; + std::string *text; + Unit unit; + Player player; + EventType::Enum type; + bool winner; + }; +} \ No newline at end of file diff --git a/bwapi4-includes/BWAPI/EventType.h b/bwapi4-includes/BWAPI/EventType.h new file mode 100644 index 0000000..f9c09fe --- /dev/null +++ b/bwapi4-includes/BWAPI/EventType.h @@ -0,0 +1,30 @@ +#pragma once +namespace BWAPI +{ + namespace EventType + { + enum Enum + { + MatchStart, + MatchEnd, + MatchFrame, + MenuFrame, + SendText, + ReceiveText, + PlayerLeft, + NukeDetect, + UnitDiscover, + UnitEvade, + UnitShow, + UnitHide, + UnitCreate, + UnitDestroy, + UnitMorph, + UnitRenegade, + SaveGame, + UnitComplete, + //TriggerAction, + None + }; + } +} diff --git a/bwapi4-includes/BWAPI/ExplosionType.h b/bwapi4-includes/BWAPI/ExplosionType.h new file mode 100644 index 0000000..2c2d664 --- /dev/null +++ b/bwapi4-includes/BWAPI/ExplosionType.h @@ -0,0 +1,89 @@ +#pragma once +#include + +namespace BWAPI +{ + namespace ExplosionTypes + { + /// Enumeration of explosion types + namespace Enum + { + /// Enumeration of explosion types + enum Enum + { + None = 0, + Normal, + Radial_Splash, + Enemy_Splash, + Lockdown, + Nuclear_Missile, + Parasite, + Broodlings, + EMP_Shockwave, + Irradiate, + Ensnare, + Plague, + Stasis_Field, + Dark_Swarm, + Consume, + Yamato_Gun, + Restoration, + Disruption_Web, + Corrosive_Acid, + Mind_Control, + Feedback, + Optical_Flare, + Maelstrom, + Unused, + Air_Splash, + Unknown, + MAX + }; + }; + }; + class ExplosionType : public Type + { + public: + /// @copydoc Type::Type(int) + ExplosionType(int id = ExplosionTypes::Enum::None); + }; + /// Namespace containing explosion types + namespace ExplosionTypes + { + /// Retrieves the set of all ExplosionTypes. + /// + /// @returns Set of ExplosionTypes. + const ExplosionType::const_set& allExplosionTypes(); + +#ifdef BWAPI_DECL +#undef BWAPI_DECL +#endif +#define BWAPI_DECL(x) /** x */ extern const ExplosionType x + BWAPI_DECL(None); + BWAPI_DECL(Normal); + BWAPI_DECL(Radial_Splash); + BWAPI_DECL(Enemy_Splash); + BWAPI_DECL(Lockdown); + BWAPI_DECL(Nuclear_Missile); + BWAPI_DECL(Parasite); + BWAPI_DECL(Broodlings); + BWAPI_DECL(EMP_Shockwave); + BWAPI_DECL(Irradiate); + BWAPI_DECL(Ensnare); + BWAPI_DECL(Plague); + BWAPI_DECL(Stasis_Field); + BWAPI_DECL(Dark_Swarm); + BWAPI_DECL(Consume); + BWAPI_DECL(Yamato_Gun); + BWAPI_DECL(Restoration); + BWAPI_DECL(Disruption_Web); + BWAPI_DECL(Corrosive_Acid); + BWAPI_DECL(Mind_Control); + BWAPI_DECL(Feedback); + BWAPI_DECL(Optical_Flare); + BWAPI_DECL(Maelstrom); + BWAPI_DECL(Air_Splash); + BWAPI_DECL(Unknown); +#undef BWAPI_DECL + } +} diff --git a/bwapi4-includes/BWAPI/Filters.h b/bwapi4-includes/BWAPI/Filters.h new file mode 100644 index 0000000..32a462d --- /dev/null +++ b/bwapi4-includes/BWAPI/Filters.h @@ -0,0 +1,194 @@ +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include + +namespace BWAPI +{ + // forwards + class PlayerInterface; + typedef PlayerInterface *Player; + class UnitType; + class UnitInterface; + typedef UnitInterface *Unit; + + // typedefs + typedef UnaryFilter UnitFilter; + typedef UnaryFilter PtrUnitFilter; + typedef BestFilter BestUnitFilter; + typedef CompareFilter PtrIntCompareUnitFilter; + + namespace Filter + { + // presets + extern const PtrUnitFilter IsTransport; + + extern const PtrUnitFilter CanProduce; + extern const PtrUnitFilter CanAttack; + extern const PtrUnitFilter CanMove; + extern const PtrUnitFilter IsFlyer; + extern const PtrUnitFilter IsFlying; + extern const PtrUnitFilter RegeneratesHP; + extern const PtrUnitFilter IsSpellcaster; + extern const PtrUnitFilter HasPermanentCloak; + extern const PtrUnitFilter IsOrganic; + extern const PtrUnitFilter IsMechanical; + extern const PtrUnitFilter IsRobotic; + extern const PtrUnitFilter IsDetector; + extern const PtrUnitFilter IsResourceContainer; + extern const PtrUnitFilter IsResourceDepot; + extern const PtrUnitFilter IsRefinery; + extern const PtrUnitFilter IsWorker; + extern const PtrUnitFilter RequiresPsi; + extern const PtrUnitFilter RequiresCreep; + extern const PtrUnitFilter IsBurrowable; + extern const PtrUnitFilter IsCloakable; + extern const PtrUnitFilter IsBuilding; + extern const PtrUnitFilter IsAddon; + extern const PtrUnitFilter IsFlyingBuilding; + extern const PtrUnitFilter IsNeutral; + extern const PtrUnitFilter IsHero; + extern const PtrUnitFilter IsPowerup; + extern const PtrUnitFilter IsBeacon; + extern const PtrUnitFilter IsFlagBeacon; + extern const PtrUnitFilter IsSpecialBuilding; + extern const PtrUnitFilter IsSpell; + extern const PtrUnitFilter ProducesLarva; + extern const PtrUnitFilter IsMineralField; + extern const PtrUnitFilter IsCritter; + extern const PtrUnitFilter CanBuildAddon; + + extern const PtrIntCompareUnitFilter HP; + extern const PtrIntCompareUnitFilter MaxHP; + extern const PtrIntCompareUnitFilter HP_Percent; + + extern const PtrIntCompareUnitFilter Shields; + extern const PtrIntCompareUnitFilter MaxShields; + extern const PtrIntCompareUnitFilter Shields_Percent; + + extern const PtrIntCompareUnitFilter Energy; + extern const PtrIntCompareUnitFilter MaxEnergy; + extern const PtrIntCompareUnitFilter Energy_Percent; + + extern const PtrIntCompareUnitFilter Armor; + extern const CompareFilter ArmorUpgrade; + + extern const PtrIntCompareUnitFilter MineralPrice; + extern const PtrIntCompareUnitFilter GasPrice; + extern const PtrIntCompareUnitFilter BuildTime; + + extern const PtrIntCompareUnitFilter SupplyRequired; + extern const PtrIntCompareUnitFilter SupplyProvided; + + extern const PtrIntCompareUnitFilter SpaceRequired; + extern const PtrIntCompareUnitFilter SpaceRemaining; + extern const PtrIntCompareUnitFilter SpaceProvided; + + extern const PtrIntCompareUnitFilter BuildScore; + extern const PtrIntCompareUnitFilter DestroyScore; + + extern const CompareFilter TopSpeed; + extern const PtrIntCompareUnitFilter SightRange; + extern const PtrIntCompareUnitFilter WeaponCooldown; + extern const CompareFilter SizeType; + + extern const CompareFilter GroundWeapon; + extern const CompareFilter AirWeapon; + + extern const CompareFilter GetType; + extern const CompareFilter GetRace; + extern const CompareFilter GetPlayer; + + extern const PtrIntCompareUnitFilter Resources; + extern const PtrIntCompareUnitFilter ResourceGroup; + extern const PtrIntCompareUnitFilter AcidSporeCount; + extern const PtrIntCompareUnitFilter InterceptorCount; + extern const PtrIntCompareUnitFilter ScarabCount; + extern const PtrIntCompareUnitFilter SpiderMineCount; + extern const PtrIntCompareUnitFilter MaxWeaponCooldown; + extern const PtrIntCompareUnitFilter SpellCooldown; + + extern const PtrIntCompareUnitFilter DefenseMatrixPoints; + extern const PtrIntCompareUnitFilter DefenseMatrixTime; + extern const PtrIntCompareUnitFilter EnsnareTime; + extern const PtrIntCompareUnitFilter IrradiateTime; + extern const PtrIntCompareUnitFilter LockdownTime; + extern const PtrIntCompareUnitFilter MaelstromTime; + extern const PtrIntCompareUnitFilter OrderTime; + extern const PtrIntCompareUnitFilter PlagueTimer; + extern const PtrIntCompareUnitFilter RemoveTime; + extern const PtrIntCompareUnitFilter StasisTime; + extern const PtrIntCompareUnitFilter StimTime; + extern const CompareFilter BuildType; + extern const PtrIntCompareUnitFilter RemainingBuildTime; + extern const PtrIntCompareUnitFilter RemainingTrainTime; + extern const CompareFilter Target; + extern const CompareFilter CurrentOrder; + extern const CompareFilter SecondaryOrder; + extern const CompareFilter OrderTarget; + extern const PtrIntCompareUnitFilter GetLeft; + extern const PtrIntCompareUnitFilter GetTop; + extern const PtrIntCompareUnitFilter GetRight; + extern const PtrIntCompareUnitFilter GetBottom; + + extern const PtrUnitFilter Exists; + extern const PtrUnitFilter IsAttacking; + extern const PtrUnitFilter IsBeingConstructed; + extern const PtrUnitFilter IsBeingGathered; + extern const PtrUnitFilter IsBeingHealed; + extern const PtrUnitFilter IsBlind; + extern const PtrUnitFilter IsBraking; + extern const PtrUnitFilter IsBurrowed; + extern const PtrUnitFilter IsCarryingGas; + extern const PtrUnitFilter IsCarryingMinerals; + extern const PtrUnitFilter IsCarryingSomething; + extern const PtrUnitFilter IsCloaked; + extern const PtrUnitFilter IsCompleted; + extern const PtrUnitFilter IsConstructing; + extern const PtrUnitFilter IsDefenseMatrixed; + extern const PtrUnitFilter IsDetected; + extern const PtrUnitFilter IsEnsnared; + extern const PtrUnitFilter IsFollowing; + extern const PtrUnitFilter IsGatheringGas; + extern const PtrUnitFilter IsGatheringMinerals; + extern const PtrUnitFilter IsHallucination; + extern const PtrUnitFilter IsHoldingPosition; + extern const PtrUnitFilter IsIdle; + extern const PtrUnitFilter IsInterruptible; + extern const PtrUnitFilter IsInvincible; + extern const PtrUnitFilter IsIrradiated; + extern const PtrUnitFilter IsLifted; + extern const PtrUnitFilter IsLoaded; + extern const PtrUnitFilter IsLockedDown; + extern const PtrUnitFilter IsMaelstrommed; + extern const PtrUnitFilter IsMorphing; + extern const PtrUnitFilter IsMoving; + extern const PtrUnitFilter IsParasited; + extern const PtrUnitFilter IsPatrolling; + extern const PtrUnitFilter IsPlagued; + extern const PtrUnitFilter IsRepairing; + extern const PtrUnitFilter IsResearching; + extern const PtrUnitFilter IsSieged; + extern const PtrUnitFilter IsStartingAttack; + extern const PtrUnitFilter IsStasised; + extern const PtrUnitFilter IsStimmed; + extern const PtrUnitFilter IsStuck; + extern const PtrUnitFilter IsTraining; + extern const PtrUnitFilter IsUnderAttack; + extern const PtrUnitFilter IsUnderDarkSwarm; + extern const PtrUnitFilter IsUnderDisruptionWeb; + extern const PtrUnitFilter IsUnderStorm; + extern const PtrUnitFilter IsPowered; + extern const PtrUnitFilter IsVisible; + + extern const PtrUnitFilter IsEnemy; + extern const PtrUnitFilter IsAlly; + extern const PtrUnitFilter IsOwned; + } +} + diff --git a/bwapi4-includes/BWAPI/Flag.h b/bwapi4-includes/BWAPI/Flag.h new file mode 100644 index 0000000..4b80255 --- /dev/null +++ b/bwapi4-includes/BWAPI/Flag.h @@ -0,0 +1,18 @@ +#pragma once +namespace BWAPI +{ + namespace Flag + { + enum Enum + { + /** Enable to get information about all units on the map, not just the visible units. */ + CompleteMapInformation = 0, + + /** Enable to get information from the user (what units are selected, chat messages the user enters, + * etc) */ + UserInput = 1, + + Max + }; + } +} diff --git a/bwapi4-includes/BWAPI/Force.h b/bwapi4-includes/BWAPI/Force.h new file mode 100644 index 0000000..307a550 --- /dev/null +++ b/bwapi4-includes/BWAPI/Force.h @@ -0,0 +1,63 @@ +#pragma once +#include +#include + +namespace BWAPI +{ + // Forward Declarations + class Playerset; + + class ForceInterface; + typedef ForceInterface *Force; + + /// The Force class is used to get information about each force in a match. Normally this is + /// considered a team. + /// + /// @note It is not called a team because players on the same force do not necessarily need + /// to be allied at the beginning of a match. + class ForceInterface : public Interface + { + protected: + virtual ~ForceInterface() {}; + public : + /// Retrieves the unique ID that represents this Force. + /// + /// @returns + /// An integer containing the ID for the Force. + virtual int getID() const = 0; + + /// Retrieves the name of the Force. + /// + /// @returns + /// A std::string object containing the name of the force. + /// + /// Example usage: + /// @code + /// BWAPI::Force myForce = BWAPI::Broodwar->self()->getForce(); + /// if ( myForce->getName() == "Observers" ) + /// BWAPI::Broodwar << "Looks like we're observing a match." << std::endl; + /// @endcode + /// + /// @note Don't forget to use std::string::c_str() when passing this parameter to + /// Game::sendText and other variadic functions. + virtual std::string getName() const = 0; + + /// Retrieves the set of players that belong to this Force. + /// + /// @returns + /// A Playerset object containing the players that are part of this Force. + /// + /// Example usage: + /// @code + /// // Get the enemy force, but make sure we have an enemy + /// BWAPI::Force myEnemyForce = BWAPI::Broodwar->enemy() ? BWAPI::Broodwar->enemy()->getForce() : nullptr; + /// if ( myEnemyForce != nullptr ) + /// { + /// Broodwar << "The allies of my enemy are..." << std::endl; + /// for ( auto i = myEnemyForce.begin(); i != myEnemyForce.end(); ++i ) + /// Broodwar << " - " << i->getName() << std::endl; + /// } + /// @endcode + virtual Playerset getPlayers() const = 0; + }; +} diff --git a/bwapi4-includes/BWAPI/Forceset.h b/bwapi4-includes/BWAPI/Forceset.h new file mode 100644 index 0000000..8f7866a --- /dev/null +++ b/bwapi4-includes/BWAPI/Forceset.h @@ -0,0 +1,25 @@ +#pragma once +#include + +namespace BWAPI +{ + // Forward Declarations + class ForceInterface; + typedef ForceInterface *Force; + class Playerset; + + /// A container that holds a group of Forces. + /// + /// @see BWAPI::Force, BWAPI::Vectorset + class Forceset : public Vectorset + { + public: + Forceset(size_t initialSize = 5); + Forceset(const Forceset &other); + Forceset(Forceset &&other); + + /// @copydoc ForceInterface::getPlayers + Playerset getPlayers() const; + }; +} + diff --git a/bwapi4-includes/BWAPI/Game.h b/bwapi4-includes/BWAPI/Game.h new file mode 100644 index 0000000..ced6d21 --- /dev/null +++ b/bwapi4-includes/BWAPI/Game.h @@ -0,0 +1,1531 @@ +#pragma once +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +namespace BWAPI +{ + // Forward Declarations + class Bulletset; + class Color; + class Event; + class ForceInterface; + typedef ForceInterface *Force; + class Forceset; + class GameType; + class PlayerInterface; + typedef PlayerInterface *Player; + class Playerset; + class Race; + + class RegionInterface; + typedef RegionInterface *Region; + + class Regionset; + class TechType; + class UnitCommand; + class Unitset; + class UpgradeType; + + /// The abstract Game class is implemented by BWAPI and is the primary means of obtaining all + /// game state information from Starcraft Broodwar. Game state information includes all units, + /// resources, players, forces, bullets, terrain, fog of war, regions, etc. + class Game : public Interface + { + protected: + virtual ~Game() {}; + public : + /// Retrieves the set of all teams/forces. Forces are commonly seen in @UMS game types and + /// some others such as @TvB and the team versions of game types. + /// + /// @returns Forceset containing all forces in the game. + virtual const Forceset& getForces() const = 0; + + /// Retrieves the set of all players in the match. This includes the neutral player, which + /// owns all the resources and critters by default. + /// + /// @returns Playerset containing all players in the game. + virtual const Playerset& getPlayers() const = 0; + + /// Retrieves the set of all accessible units. If Flag::CompleteMapInformation is enabled, + /// then the set also includes units that are not visible to the player. + /// + /// @note Units that are inside refineries are not included in this set. + /// + /// @returns Unitset containing all known units in the game. + virtual const Unitset& getAllUnits() const = 0; + + /// Retrieves the set of all accessible @minerals in the game. + /// + /// @returns Unitset containing @minerals + virtual const Unitset& getMinerals() const = 0; + + /// Retrieves the set of all accessible @geysers in the game. + /// + /// @returns Unitset containing @geysers + virtual const Unitset& getGeysers() const = 0; + + /// Retrieves the set of all accessible neutral units in the game. This includes @minerals, + /// @geysers, and @critters. + /// + /// @returns Unitset containing all neutral units. + virtual const Unitset& getNeutralUnits() const = 0; + + /// Retrieves the set of all @minerals that were available at the beginning of the game. + /// + /// @note This set includes resources that have been mined out or are inaccessible. + /// + /// @returns Unitset containing static @minerals + virtual const Unitset& getStaticMinerals() const = 0; + + /// Retrieves the set of all @geysers that were available at the beginning of the game. + /// + /// @note This set includes resources that are inaccessible. + /// + /// @returns Unitset containing static @geysers + virtual const Unitset& getStaticGeysers() const = 0; + + /// Retrieves the set of all units owned by the neutral player (resources, critters, etc.) + /// that were available at the beginning of the game. + /// + /// @note This set includes units that are inaccessible. + /// + /// @returns Unitset containing static neutral units + virtual const Unitset& getStaticNeutralUnits() const = 0; + + /// Retrieves the set of all accessible bullets. + /// + /// @returns Bulletset containing all accessible Bullet objects. + virtual const Bulletset& getBullets() const = 0; + + /// Retrieves the set of all accessible @Nuke dots. + /// + /// @note Nuke dots are the red dots painted by a @Ghost when using the nuclear strike ability. + /// + /// @returns Set of Positions giving the coordinates of nuke locations. + virtual const Position::set& getNukeDots() const = 0; + + /// Retrieves the list of all unhandled game events. + /// + /// @returns std::list containing Event objects. + virtual const std::list< Event >& getEvents() const = 0; + + /// Retrieves the Force interface object associated with a given identifier. + /// + /// @param forceID + /// The identifier for the Force object. + /// + /// @returns Force interface object mapped to the given \p forceID. + /// @retval nullptr if the given identifier is invalid. + virtual Force getForce(int forceID) const = 0; + + /// Retrieves the Player interface object associated with a given identifier. + /// + /// @param playerID + /// The identifier for the Player object. + /// + /// @returns Player interface object mapped to the given \p playerID. + /// @retval nullptr if the given identifier is invalid. + virtual Player getPlayer(int playerID) const = 0; + + /// Retrieves the Unit interface object associated with a given identifier. + /// + /// @param unitID + /// The identifier for the Unit object. + /// + /// @returns Unit interface object mapped to the given \p unitID. + /// @retval nullptr if the given identifier is invalid. + virtual Unit getUnit(int unitID) const = 0; + + /// Retrieves a Unit interface object from a given unit index. The value given as an index + /// maps directly to Broodwar's unit array index and matches the index found in replay files. + /// In order to use this function, CompleteMapInformation must be enabled. + /// + /// @param unitIndex + /// The unitIndex to identify the Unit with. A valid index is 0 <= unitIndex & 0x7FF < 1700. + /// + /// @returns Unit interface object that matches the given \p unitIndex. + /// @retval nullptr if the given index is invalid. + virtual Unit indexToUnit(int unitIndex) const = 0; + + /// Retrieves the Region interface object associated with a given identifier. + /// + /// @param regionID + /// The identifier for the Region object. + /// + /// @returns Region interface object mapped to the given \p regionID. + /// @retval nullptr if the given ID is invalid. + virtual Region getRegion(int regionID) const = 0; + + /// Retrieves the GameType of the current game. + /// + /// @returns GameType indicating the rules of the match. + /// @see GameType + virtual GameType getGameType() const = 0; + + /// Retrieves the current latency setting that the game is set to. Latency indicates the delay + /// between issuing a command and having it processed. + /// + /// @returns The latency setting of the game, which is of Latency::Enum. + /// @todo Change return type to Latency::Enum without breaking everything. + virtual int getLatency() const = 0; + + /// Retrieves the number of logical frames since the beginning of the match. If the game is + /// paused, then getFrameCount will not increase. + /// + /// @returns Number of logical frames that have elapsed since the game started as an integer. + virtual int getFrameCount() const = 0; + + /// Retrieves the maximum number of logical frames that have been recorded in a replay. If + /// the game is not a replay, then the value returned is undefined. + /// + /// @returns The number of logical frames that the replay contains. + virtual int getReplayFrameCount() const = 0; + + /// Retrieves the logical frame rate of the game in frames per second (FPS). + /// + /// Example: + /// @code + /// BWAPI::Broodwar->setLocalSpeed(0); + /// + /// // Log and display the best logical FPS seen in the game + /// static int bestFPS = 0; + /// bestFPS = std::max(bestFPS, BWAPI::Broodwar->getFPS()); + /// BWAPI::Broodwar->drawTextScreen(BWAPI::Positions::Origin, "%cBest: %d GFPS\nCurrent: %d GFPS", BWAPI::Text::White, bestFPS, BWAPI::Broodwar->getFPS()); + /// @endcode + /// @returns Logical frames per second that the game is currently running at as an integer. + /// @see getAverageFPS + virtual int getFPS() const = 0; + + /// Retrieves the average logical frame rate of the game in frames per second (FPS). + /// + /// @returns Average logical frames per second that the game is currently running at as a + /// double. + /// @see getFPS + virtual double getAverageFPS() const = 0; + + /// Retrieves the position of the user's mouse on the screen, in Position coordinates. + /// + /// @returns Position indicating the location of the mouse. + /// @retval Positions::Unknown if Flag::UserInput is disabled. + virtual Position getMousePosition() const = 0; + + /// Retrieves the state of the given mouse button. + /// + /// @param button + /// A MouseButton enum member indicating which button on the mouse to check. + /// + /// @return A bool indicating the state of the given \p button. true if the button was pressed + /// and false if it was not. + /// @retval false always if Flag::UserInput is disabled. + virtual bool getMouseState(MouseButton button) const = 0; + + /// Retrieves the state of the given keyboard key. + /// + /// @param key + /// A Key enum member indicating which key on the keyboard to check. + /// + /// @return A bool indicating the state of the given \p key. true if the key was pressed + /// and false if it was not. + /// @retval false always if Flag::UserInput is disabled. + virtual bool getKeyState(Key key) const = 0; + + /// Retrieves the top left position of the viewport from the top left corner of the map, in + /// pixels. + /// + /// @returns Position containing the coordinates of the top left corner of the game's viewport. + /// @retval Positions::Unknown always if Flag::UserInput is disabled. + /// @see setScreenPosition + virtual BWAPI::Position getScreenPosition() const = 0; + + /// Moves the top left corner of the viewport to the provided position relative to the map's + /// origin (top left (0,0)). + /// + /// @param x + /// The x coordinate to move the screen to, in pixels. + /// @param y + /// The y coordinate to move the screen to, in pixels. + /// @see getScreenPosition + virtual void setScreenPosition(int x, int y) = 0; + /// @overload + void setScreenPosition(BWAPI::Position p); + + /// Pings the minimap at the given position. Minimap pings are visible to allied players. + /// + /// @param x + /// The x coordinate to ping at, in pixels, from the map's origin (left). + /// @param y + /// The y coordinate to ping at, in pixels, from the map's origin (top). + virtual void pingMinimap(int x, int y) = 0; + /// @overload + void pingMinimap(BWAPI::Position p); + + /// Checks if the state of the given flag is enabled or not. + /// + /// @note Flags may only be enabled at the start of the match during the AIModule::onStart + /// callback. + /// + /// @param flag + /// The Flag::Enum entry describing the flag's effects on BWAPI. + /// @returns true if the given \p flag is enabled, false if the flag is disabled. + /// @todo Take Flag::Enum as parameter instead of int + virtual bool isFlagEnabled(int flag) const = 0; + + /// Enables the state of a given flag. + /// + /// @note Flags may only be enabled at the start of the match during the AIModule::onStart + /// callback. + /// + /// @param flag + /// The Flag::Enum entry describing the flag's effects on BWAPI. + /// @todo Take Flag::Enum as parameter instead of int + virtual void enableFlag(int flag) = 0; + + /// Retrieves the set of accessible units that are on a given build tile. + /// + /// @param tileX + /// The X position, in tiles. + /// @param tileY + /// The Y position, in tiles. + /// @param pred (optional) + /// A function predicate that indicates which units are included in the returned set. + /// + /// @returns A Unitset object consisting of all the units that have any part of them on the + /// given build tile. + Unitset getUnitsOnTile(int tileX, int tileY, const UnitFilter &pred = nullptr) const; + /// @overload + Unitset getUnitsOnTile(BWAPI::TilePosition tile, const UnitFilter &pred = nullptr) const; + + /// Retrieves the set of accessible units that are in a given rectangle. + /// + /// @param left + /// The X coordinate of the left position of the bounding box, in pixels. + /// @param top + /// The Y coordinate of the top position of the bounding box, in pixels. + /// @param right + /// The X coordinate of the right position of the bounding box, in pixels. + /// @param bottom + /// The Y coordinate of the bottom position of the bounding box, in pixels. + /// @param pred (optional) + /// A function predicate that indicates which units are included in the returned set. + /// + /// @returns A Unitset object consisting of all the units that have any part of them within the + /// given rectangle bounds. + virtual Unitset getUnitsInRectangle(int left, int top, int right, int bottom, const UnitFilter &pred = nullptr) const = 0; + /// @overload + Unitset getUnitsInRectangle(BWAPI::Position topLeft, BWAPI::Position bottomRight, const UnitFilter &pred = nullptr) const; + + /// Retrieves the set of accessible units that are within a given radius of a position. + /// + /// @param x + /// The x coordinate of the center, in pixels. + /// @param y + /// The y coordinate of the center, in pixels. + /// @param radius + /// The radius from the center, in pixels, to include units. + /// @param pred (optional) + /// A function predicate that indicates which units are included in the returned set. + /// + /// @returns A Unitset object consisting of all the units that have any part of them within the + /// given radius from the center position. + Unitset getUnitsInRadius(int x, int y, int radius, const UnitFilter &pred = nullptr) const; + /// @overload + Unitset getUnitsInRadius(BWAPI::Position center, int radius, const UnitFilter &pred = nullptr) const; + + /// Retrieves the closest unit to center that matches the criteria of the callback pred within + /// an optional radius. + /// + /// @param center + /// The position to start searching for the closest unit. + /// @param pred (optional) + /// The UnitFilter predicate to determine which units should be included. This includes + /// all units by default. + /// @param radius (optional) + /// The radius to search in. If omitted, the entire map will be searched. + /// + /// @returns The desired unit that is closest to center. + /// @retval nullptr If a suitable unit was not found. + /// + /// @see getBestUnit, UnitFilter + Unit getClosestUnit(Position center, const UnitFilter &pred = nullptr, int radius = 999999) const; + + /// Retrieves the closest unit to center that matches the criteria of the callback pred within + /// an optional rectangle. + /// + /// @param center + /// The position to start searching for the closest unit. + /// @param pred (optional) + /// The UnitFilter predicate to determine which units should be included. This includes + /// all units by default. + /// @param left (optional) + /// The left position of the rectangle. This value is 0 by default. + /// @param top (optional) + /// The top position of the rectangle. This value is 0 by default. + /// @param right (optional) + /// The right position of the rectangle. This value includes the entire map width by default. + /// @param bottom (optional) + /// The bottom position of the rectangle. This value includes the entire map height by default. + /// + /// @see UnitFilter + virtual Unit getClosestUnitInRectangle(Position center, const UnitFilter &pred = nullptr, int left = 0, int top = 0, int right = 999999, int bottom = 999999) const = 0; + + /// Compares all units with pred to determine which of them is the best. All units are checked. + /// If center and radius are specified, then it will check all units that are within the radius + /// of the position. + /// + /// @param best + /// A BestUnitFilter that determines which parameters should be considered when calculating + /// which units are better than others. + /// @param pred + /// A UnitFilter that determines which units to include in calculations. + /// @param center (optional) + /// The position to use in the search. If omitted, then the entire map is searched. + /// @param radius (optional) + /// The distance from \p center to search for units. If omitted, then the entire map is + /// searched. + /// + /// @returns The desired unit that best matches the given criteria. + /// @retval nullptr if a suitable unit was not found. + /// + /// @see getClosestUnit, BestUnitFilter, UnitFilter + virtual Unit getBestUnit(const BestUnitFilter &best, const UnitFilter &pred, Position center = Positions::Origin, int radius = 999999) const = 0; + + /// Returns the last error that was set using setLastError. If a function call in BWAPI has + /// failed, you can use this function to retrieve the reason it failed. + /// + /// @returns Error type containing the reason for failure. + /// + /// @see setLastError, Errors + virtual Error getLastError() const = 0; + + /// Sets the last error so that future calls to getLastError will return the value that was + /// set. + /// + /// @param e (optional) + /// The error code to set. If omitted, then the last error will be cleared. + /// + /// @retval true If the type passed was Errors::None, clearing the last error. + /// @retval false If any other error type was passed. + /// @see getLastError, Errors + virtual bool setLastError(BWAPI::Error e = Errors::None) const = 0; + + /// Retrieves the width of the map in build tile units. + /// + /// @returns Width of the map in tiles. + /// @see mapHeight + virtual int mapWidth() const = 0; + + /// Retrieves the height of the map in build tile units. + /// + /// @returns Height of the map in tiles. + /// @see mapHeight + virtual int mapHeight() const = 0; + + /// Retrieves the file name of the currently loaded map. + /// @TODO: Note on campaign files. + /// + /// @returns Map file name as std::string object. + /// + /// @see mapPathName, mapName + virtual std::string mapFileName() const = 0; + + /// Retrieves the full path name of the currently loaded map. + /// @TODO: Note on campaign files. + /// + /// @returns Map file name as std::string object. + /// + /// @see mapFileName, mapName + virtual std::string mapPathName() const = 0; + + /// Retrieves the title of the currently loaded map. + /// + /// @returns Map title as std::string object. + /// + /// @see mapFileName, mapPathName + virtual std::string mapName() const = 0; + + /// Calculates the SHA-1 hash of the currently loaded map file. + /// + /// @returns std::string object containing SHA-1 hash. + /// + /// @note Campaign maps will return a hash of their internal map chunk components(.chk), while + /// standard maps will return a hash of their entire map archive (.scm,.scx). + /// @TODO: Note on replays. + virtual std::string mapHash() const = 0; + + /// Checks if the given mini-tile position is walkable. + /// + /// @note This function only checks if the static terrain is walkable. Its current occupied + /// state is excluded from this check. To see if the space is currently occupied or not, then + /// see #getUnitsInRectangle . + /// + /// @param walkX + /// The x coordinate of the mini-tile, in mini-tile units (8 pixels). + /// @param walkY + /// The y coordinate of the mini-tile, in mini-tile units (8 pixels). + /// + /// @returns true if the mini-tile is walkable and false if it is impassable for ground units. + virtual bool isWalkable(int walkX, int walkY) const = 0; + /// @overload + bool isWalkable(BWAPI::WalkPosition position) const; + + /// Returns the ground height at the given tile position. + /// + /// @param tileX + /// X position to query, in tiles + /// @param tileY + /// Y position to query, in tiles + /// + /// @returns The tile height as an integer. Possible values are: + /// - 0: Low ground + /// - 1: Low ground doodad + /// - 2: High ground + /// - 3: High ground doodad + /// - 4: Very high ground + /// - 5: Very high ground doodad + /// . + virtual int getGroundHeight(int tileX, int tileY) const = 0; + /// @overload + int getGroundHeight(TilePosition position) const; + + /// Checks if a given tile position is buildable. This means that, if all other requirements + /// are met, a structure can be placed on this tile. This function uses static map data. + /// + /// @param tileX + /// The x value of the tile to check. + /// @param tileY + /// The y value of the tile to check. + /// @param includeBuildings (optional) + /// If this is true, then this function will also check if any visible structures are + /// occupying the space. If this value is false, then it only checks the static map data + /// for tile buildability. This value is false by default. + /// + /// @returns boolean identifying if the given tile position is buildable (true) or not (false). + /// If \p includeBuildings was provided, then it will return false if a structure is currently + /// occupying the tile. + virtual bool isBuildable(int tileX, int tileY, bool includeBuildings = false) const = 0; + /// @overload + bool isBuildable(TilePosition position, bool includeBuildings = false) const; + + /// Checks if a given tile position is visible to the current player. + /// + /// @param tileX + /// The x value of the tile to check. + /// @param tileY + /// The y value of the tile to check. + /// + /// @returns boolean identifying the visibility of the tile. If the given tile is visible, then + /// the value is true. If the given tile is concealed by the fog of war, then this value will + /// be false. + virtual bool isVisible(int tileX, int tileY) const = 0; + /// @overload + bool isVisible(TilePosition position) const; + + /// Checks if a given tile position has been explored by the player. An explored tile position + /// indicates that the player has seen the location at some point in the match, partially + /// revealing the fog of war for the remainder of the match. + /// + /// @param tileX + /// The x tile coordinate to check. + /// @param tileY + /// The y tile coordinate to check. + /// + /// @retval true If the player has explored the given tile position (partially revealed fog). + /// @retval false If the tile position was never explored (completely black fog). + /// + /// @see isVisible + virtual bool isExplored(int tileX, int tileY) const = 0; + /// @overload + bool isExplored(TilePosition position) const; + + /// Checks if the given tile position has @Zerg creep on it. + /// + /// @param tileX + /// The x tile coordinate to check. + /// @param tileY + /// The y tile coordinate to check. + /// + /// @retval true If the given tile has creep on it. + /// @retval false If the given tile does not have creep, or if it is concealed by the fog of war. + virtual bool hasCreep(int tileX, int tileY) const = 0; + /// @overload + bool hasCreep(TilePosition position) const; + + /// Checks if the given pixel position is powered by an owned @Protoss_Pylon for an optional + /// unit type. + /// + /// @param x + /// The x pixel coordinate to check. + /// @param y + /// The y pixel coordinate to check. + /// @param unitType (optional) + /// Checks if the given UnitType requires power or not. If ommitted, then it will assume + /// that the position requires power for any unit type. + /// + /// @retval true if the type at the given position will have power. + /// @retval false if the type at the given position will be unpowered. + virtual bool hasPowerPrecise(int x, int y, UnitType unitType = UnitTypes::None ) const = 0; + /// @overload + bool hasPowerPrecise(Position position, UnitType unitType = UnitTypes::None) const; + + /// Checks if the given tile position if powered by an owned @Protoss_Pylon for an optional + /// unit type. + /// + /// @param tileX + /// The x tile coordinate to check. + /// @param tileY + /// The y tile coordinate to check. + /// @param unitType (optional) + /// Checks if the given UnitType will be powered if placed at the given tile position. If + /// omitted, then only the immediate tile position is checked for power, and the function + /// will assume that the location requires power for any unit type. + /// + /// @retval true if the type at the given tile position will receive power. + /// @retval false if the type will be unpowered at the given tile position. + bool hasPower(int tileX, int tileY, UnitType unitType = UnitTypes::None) const; + /// @overload + bool hasPower(TilePosition position, UnitType unitType = UnitTypes::None) const; + /// @overload + bool hasPower(int tileX, int tileY, int tileWidth, int tileHeight, UnitType unitType = UnitTypes::None) const; + /// @overload + bool hasPower(TilePosition position, int tileWidth, int tileHeight, UnitType unitType = UnitTypes::None) const; + + /// Checks if the given unit type can be built at the given build tile position. This function + /// checks for creep, power, and resource distance requirements in addition to the tiles' + /// buildability and possible units obstructing the build location. + /// + /// @param position + /// Indicates the tile position that the top left corner of the structure is intended to go. + /// @param type + /// The UnitType to check for. + /// @param builder (optional) + /// The intended unit that will build the structure. If specified, then this function will + /// also check if there is a path to the build site and exclude the builder from the set of + /// units that may be blocking the build site. + /// @param checkExplored (optional) + /// If this parameter is true, it will also check if the target position has been explored + /// by the current player. This value is false by default, ignoring the explored state of + /// the build site. + /// + /// @returns true indicating that the structure can be placed at the given tile position, and + /// false if something may be obstructing the build location. + virtual bool canBuildHere(TilePosition position, UnitType type, Unit builder = nullptr, bool checkExplored = false) = 0; + + /// Checks all the requirements in order to make a given unit type for the current player. + /// These include resources, supply, technology tree, availability, and required units. + /// + /// @param type + /// The UnitType to check. + /// @param builder (optional) + /// The Unit that will be used to build/train the provided unit \p type. If this value is + /// nullptr or excluded, then the builder will be excluded in the check. + /// + /// @returns true indicating that the type can be made. If \p builder is provided, then it is + /// only true if \p builder can make the \p type. Otherwise it will return false, indicating + /// that the unit type can not be made. + virtual bool canMake(UnitType type, Unit builder = nullptr) const = 0; + + /// Checks all the requirements in order to research a given technology type for the current + /// player. These include resources, technology tree, availability, and required units. + /// + /// @param type + /// The TechType to check. + /// @param unit (optional) + /// The Unit that will be used to research the provided technology \p type. If this value is + /// nullptr or excluded, then the unit will be excluded in the check. + /// @param checkCanIssueCommandType (optional) + /// @todo fill this in + /// + /// @returns true indicating that the type can be researched. If \p unit is provided, then it is + /// only true if \p unit can research the \p type. Otherwise it will return false, indicating + /// that the technology can not be researched. + virtual bool canResearch(TechType type, Unit unit = nullptr, bool checkCanIssueCommandType = true) = 0; + + /// Checks all the requirements in order to upgrade a given upgrade type for the current + /// player. These include resources, technology tree, availability, and required units. + /// + /// @param type + /// The UpgradeType to check. + /// @param unit (optional) + /// The Unit that will be used to upgrade the provided upgrade \p type. If this value is + /// nullptr or excluded, then the unit will be excluded in the check. + /// @param checkCanIssueCommandType (optional) + /// @todo fill this in + /// + /// @returns true indicating that the type can be upgraded. If \p unit is provided, then it is + /// only true if \p unit can upgrade the \p type. Otherwise it will return false, indicating + /// that the upgrade can not be upgraded. + virtual bool canUpgrade(UpgradeType type, Unit unit = nullptr, bool checkCanIssueCommandType = true) = 0; + + /// Retrieves the set of all starting locations for the current map. A starting location is + /// essentially a candidate for a player's spawn point. + /// + /// @returns A TilePosition::set containing all the TilePosition objects that indicate a start + /// location. + /// @see PlayerInterface::getStartLocation + virtual const TilePosition::set& getStartLocations() const = 0; + + /// Prints text to the screen as a notification. This function allows text formatting using + /// Text::Enum members. The behaviour of this function is the same as printf, located in + /// header cstdio. + /// + /// @note That text printed through this function is not seen by other players or in replays. + /// + /// @param format + /// Text formatting. See printf for more information. Refrain from passing non-constant + /// strings directly in this parameter. + /// @param ... + /// The arguments that will be formatted using the given text formatting. + /// + /// @see Text::Enum + void printf(const char *format, ...); + + /// @copydoc printf + /// + /// This function is intended to forward an already-existing argument list. + /// + /// @param args + /// The argument list that will be formatted. + /// + /// @see printf + virtual void vPrintf(const char *format, va_list args) = 0; + + /// Sends a text message to all other players in the game. The behaviour of this function is + /// the same as printf, located in header cstdio. + /// + /// @note In a single player game this function can be used to execute cheat codes. + /// + /// @param format + /// Text formatting. See printf for more information. Refrain from passing non-constant + /// strings directly in this parameter. + /// @see sendTextEx + void sendText(const char *format, ...); + + /// @copydoc sendText + /// + /// This function is intended to forward an already-existing argument list. + /// + /// @param args + /// The argument list that will be formatted. + /// + /// @see sendText + void vSendText(const char *format, va_list args); + + /// An extended version of Game::sendText which allows messages to be forwarded to allies. + /// The behaviour of this function is the same as printf, located in header cstdio. + /// + /// @param toAllies + /// If this parameter is set to true, then the message is only sent to allied players, + /// otherwise it will be sent to all players. + /// @param format + /// Text formatting. See printf for more information. Refrain from passing non-constant + /// strings directly in this parameter. + /// @see sendText + void sendTextEx(bool toAllies, const char *format, ...); + + /// @copydoc sendTextEx + /// + /// This function is intended to forward an already-existing argument list. + /// + /// @param args + /// The argument list that will be formatted. + /// + /// @see sendTextEx + virtual void vSendTextEx(bool toAllies, const char *format, va_list args) = 0; + + /// Checks if the current client is inside a game. + /// + /// @returns true if the client is in a game, and false if it is not. + virtual bool isInGame() const = 0; + + /// Checks if the current client is inside a multiplayer game. + /// + /// @returns true if the client is in a multiplayer game, and false if it is a single player + /// game, a replay, or some other state. + virtual bool isMultiplayer() const = 0; + + /// Checks if the client is in a game that was created through the Battle.net multiplayer + /// gaming service. + /// + /// @returns true if the client is in a multiplayer Battle.net game and false if it is not. + virtual bool isBattleNet() const = 0; + + /// Checks if the current game is paused. While paused, AIModule::onFrame will still be called. + /// + /// @returns true if the game is paused and false otherwise + /// @see pauseGame, resumeGame + virtual bool isPaused() const = 0; + + /// Checks if the client is watching a replay. + /// + /// @returns true if the client is watching a replay and false otherwise + virtual bool isReplay() const = 0; + + /// Pauses the game. While paused, AIModule::onFrame will still be called. + /// @see resumeGame + virtual void pauseGame() = 0; + + /// Resumes the game from a paused state. + /// @see pauseGame + virtual void resumeGame() = 0; + + /// Leaves the current game by surrendering and enters the post-game statistics/score screen. + virtual void leaveGame() = 0; + + /// Restarts the match. Works the same as if the match was restarted from the in-game menu + /// (F10). This option is only available in single player games. + /// @todo return a bool indicating success, document error code for invalid state + virtual void restartGame() = 0; + + /// Sets the number of milliseconds Broodwar spends in each frame. The default values are as + /// follows: + /// - Fastest: 42ms/frame + /// - Faster: 48ms/frame + /// - Fast: 56ms/frame + /// - Normal: 67ms/frame + /// - Slow: 83ms/frame + /// - Slower: 111ms/frame + /// - Slowest: 167ms/frame + /// + /// @note Specifying a value of 0 will not guarantee that logical frames are executed as fast + /// as possible. If that is the intention, use this in combination with #setFrameSkip. + /// + /// @bug Changing this value will cause the execution of @UMS scenario triggers to glitch. + /// This will only happen in campaign maps and custom scenarios (non-melee). + /// + /// @param speed + /// The time spent per frame, in milliseconds. A value of 0 indicates that frames are + /// executed immediately with no delay. Negative values will restore the default value + /// as listed above. + /// + /// @see setFrameSkip, getFPS + virtual void setLocalSpeed(int speed) = 0; + + /// Issues a given command to a set of units. This function automatically splits the set into + /// groups of 12 and issues the same command to each of them. If a unit is not capable of + /// executing the command, then it is simply ignored. + /// + /// @param units + /// A Unitset containing all the units to issue the command for. + /// @param command + /// A UnitCommand object containing relevant information about the command to be issued. + /// The Unit interface object associated with the command will be ignored. + /// + /// @returns true if any one of the units in the Unitset were capable of executing the + /// command, and false if none of the units were capable of executing the command. + virtual bool issueCommand(const Unitset& units, UnitCommand command) = 0; + + /// Retrieves the set of units that are currently selected by the user outside of BWAPI. This + /// function requires that Flag::UserInput be enabled. + /// + /// @returns A Unitset containing the user's selected units. If Flag::UserInput is disabled, + /// then this set is always empty. + /// + /// @see enableFlag + virtual const Unitset& getSelectedUnits() const = 0; + + /// Retrieves the player object that BWAPI is controlling. + /// + /// @returns Pointer to Player interface object representing the current player. + /// @retval nullptr if the current game is a replay. + /// + /// Example usage + /// @code + /// void ExampleAIModule::onStart() + /// { + /// if ( BWAPI::Broodwar->self() ) + /// BWAPI::Broodwar->sendText("Hello, my name is %s.", BWAPI::Broodwar->self()->getName().c_str()); + /// } + /// @endcode + virtual Player self() const = 0; + + /// Retrieves the Player interface that represents the enemy player. If there is more than one + /// enemy, and that enemy is destroyed, then this function will still retrieve the same, + /// defeated enemy. If you wish to handle multiple opponents, see the Game::enemies function. + /// + /// @returns Player interface representing an enemy player. + /// @retval nullptr If there is no enemy or the current game is a replay. + /// @see enemies + virtual Player enemy() const = 0; + + /// Retrieves the Player interface object representing the neutral player. The neutral player + /// owns all the resources and critters on the map by default. + /// + /// @returns Player interface indicating the neutral player. + virtual Player neutral() const = 0; + + /// Retrieves a set of all the current player's remaining allies. + /// + /// @returns Playerset containing all allied players. + virtual Playerset& allies() = 0; + + /// Retrieves a set of all the current player's remaining enemies. + /// + /// @returns Playerset containing all enemy players. + virtual Playerset& enemies() = 0; + + /// Retrieves a set of all players currently observing the game. An observer is defined + /// typically in a @UMS game type as not having any impact on the game. This means an + /// observer cannot start with any units, and cannot have any active trigger actions that + /// create units for it. + /// + /// @returns Playerset containing all currently active observer players + virtual Playerset& observers() = 0; + + /// Sets the size of the text for all calls to drawText following this one. + /// + /// @param size (optional) + /// The size of the text. This value is one of Text::Size::Enum. If this value is omitted, + /// then a default value of Text::Size::Default is used. + /// + /// Example usage + /// @code + /// void ExampleAIModule::onFrame() + /// { + /// // Centers the name of the player in the upper middle of the screen + /// BWAPI::Broodwar->setTextSize(BWAPI::Text::Size::Large); + /// BWAPI::Broodwar->drawTextScreen(BWAPI::Positions::Origin, "%c%c%s", + /// BWAPI::Text::Align_Center, + /// BWAPI::Text::Green, + /// BWAPI::Broodwar->self()->getName().c_str() ); + /// BWAPI::Broodwar->setTextSize(); // Set text size back to default + /// } + /// @endcode + /// @see Text::Size::Enum + virtual void setTextSize(Text::Size::Enum size = Text::Size::Default) = 0; + + /// Draws text on the screen at the given coordinates. Text can be drawn in different colors + /// or formatted using the Text::Enum members. + /// + /// @param ctype + /// The coordinate type. Indicates the relative position to draw the shape. + /// @param x + /// The x coordinate, in pixels, relative to ctype. + /// @param y + /// The y coordinate, in pixels, relative to ctype. + /// @param format + /// The string formatting portion. This is the same as printf style formatting. + /// @param arg + /// Arglist containing the intermediate list of arguments to format before finally sending + /// the string to Broodwar. + virtual void vDrawText(CoordinateType::Enum ctype, int x, int y, const char *format, va_list arg) = 0; + /// @overload + void drawText(CoordinateType::Enum ctype, int x, int y, const char *format, ...); + /// @overload + void drawTextMap(int x, int y, const char *format, ...); + /// @overload + void drawTextMap(Position p, const char *format, ...); + /// @overload + void drawTextMouse(int x, int y, const char *format, ...); + /// @overload + void drawTextMouse(Position p, const char *format, ...); + /// @overload + void drawTextScreen(int x, int y, const char *format, ...); + /// @overload + void drawTextScreen(Position p, const char *format, ...); + + /// Draws a rectangle on the screen with the given color. + /// + /// @param ctype + /// The coordinate type. Indicates the relative position to draw the shape. + /// @param left + /// The x coordinate, in pixels, relative to ctype, of the left edge of the rectangle. + /// @param top + /// The y coordinate, in pixels, relative to ctype, of the top edge of the rectangle. + /// @param right + /// The x coordinate, in pixels, relative to ctype, of the right edge of the rectangle. + /// @param bottom + /// The y coordinate, in pixels, relative to ctype, of the bottom edge of the rectangle. + /// @param color + /// The color of the rectangle. + /// @param isSolid (optional) + /// If true, then the shape will be filled and drawn as a solid, otherwise it will be drawn + /// as an outline. If omitted, this value will default to false. + virtual void drawBox(CoordinateType::Enum ctype, int left, int top, int right, int bottom, Color color, bool isSolid = false) = 0; + /// @overload + void drawBoxMap(int left, int top, int right, int bottom, Color color, bool isSolid = false); + /// @overload + void drawBoxMap(Position leftTop, Position rightBottom, Color color, bool isSolid = false); + /// @overload + void drawBoxMouse(int left, int top, int right, int bottom, Color color, bool isSolid = false); + /// @overload + void drawBoxMouse(Position leftTop, Position rightBottom, Color color, bool isSolid = false); + /// @overload + void drawBoxScreen(int left, int top, int right, int bottom, Color color, bool isSolid = false); + /// @overload + void drawBoxScreen(Position leftTop, Position rightBottom, Color color, bool isSolid = false); + + /// Draws a triangle on the screen with the given color. + /// + /// @param ctype + /// The coordinate type. Indicates the relative position to draw the shape. + /// @param ax + /// The x coordinate, in pixels, relative to ctype, of the first point. + /// @param ay + /// The y coordinate, in pixels, relative to ctype, of the first point. + /// @param bx + /// The x coordinate, in pixels, relative to ctype, of the second point. + /// @param by + /// The y coordinate, in pixels, relative to ctype, of the second point. + /// @param cx + /// The x coordinate, in pixels, relative to ctype, of the third point. + /// @param cy + /// The y coordinate, in pixels, relative to ctype, of the third point. + /// @param color + /// The color of the triangle. + /// @param isSolid (optional) + /// If true, then the shape will be filled and drawn as a solid, otherwise it will be drawn + /// as an outline. If omitted, this value will default to false. + virtual void drawTriangle(CoordinateType::Enum ctype, int ax, int ay, int bx, int by, int cx, int cy, Color color, bool isSolid = false) = 0; + /// @overload + void drawTriangleMap(int ax, int ay, int bx, int by, int cx, int cy, Color color, bool isSolid = false); + /// @overload + void drawTriangleMap(Position a, Position b, Position c, Color color, bool isSolid = false); + /// @overload + void drawTriangleMouse(int ax, int ay, int bx, int by, int cx, int cy, Color color, bool isSolid = false); + /// @overload + void drawTriangleMouse(Position a, Position b, Position c, Color color, bool isSolid = false); + /// @overload + void drawTriangleScreen(int ax, int ay, int bx, int by, int cx, int cy, Color color, bool isSolid = false); + /// @overload + void drawTriangleScreen(Position a, Position b, Position c, Color color, bool isSolid = false); + + /// Draws a circle on the screen with the given color. + /// + /// @param ctype + /// The coordinate type. Indicates the relative position to draw the shape. + /// @param x + /// The x coordinate, in pixels, relative to ctype. + /// @param y + /// The y coordinate, in pixels, relative to ctype. + /// @param radius + /// The radius of the circle, in pixels. + /// @param color + /// The color of the circle. + /// @param isSolid (optional) + /// If true, then the shape will be filled and drawn as a solid, otherwise it will be drawn + /// as an outline. If omitted, this value will default to false. + virtual void drawCircle(CoordinateType::Enum ctype, int x, int y, int radius, Color color, bool isSolid = false) = 0; + /// @overload + void drawCircleMap(int x, int y, int radius, Color color, bool isSolid = false); + /// @overload + void drawCircleMap(Position p, int radius, Color color, bool isSolid = false); + /// @overload + void drawCircleMouse(int x, int y, int radius, Color color, bool isSolid = false); + /// @overload + void drawCircleMouse(Position p, int radius, Color color, bool isSolid = false); + /// @overload + void drawCircleScreen(int x, int y, int radius, Color color, bool isSolid = false); + /// @overload + void drawCircleScreen(Position p, int radius, Color color, bool isSolid = false); + + /// Draws an ellipse on the screen with the given color. + /// + /// @param ctype + /// The coordinate type. Indicates the relative position to draw the shape. + /// @param x + /// The x coordinate, in pixels, relative to ctype. + /// @param y + /// The y coordinate, in pixels, relative to ctype. + /// @param xrad + /// The x radius of the ellipse, in pixels. + /// @param yrad + /// The y radius of the ellipse, in pixels. + /// @param color + /// The color of the ellipse. + /// @param isSolid (optional) + /// If true, then the shape will be filled and drawn as a solid, otherwise it will be drawn + /// as an outline. If omitted, this value will default to false. + virtual void drawEllipse(CoordinateType::Enum ctype, int x, int y, int xrad, int yrad, Color color, bool isSolid = false) = 0; + /// @overload + void drawEllipseMap(int x, int y, int xrad, int yrad, Color color, bool isSolid = false); + /// @overload + void drawEllipseMap(Position p, int xrad, int yrad, Color color, bool isSolid = false); + /// @overload + void drawEllipseMouse(int x, int y, int xrad, int yrad, Color color, bool isSolid = false); + /// @overload + void drawEllipseMouse(Position p, int xrad, int yrad, Color color, bool isSolid = false); + /// @overload + void drawEllipseScreen(int x, int y, int xrad, int yrad, Color color, bool isSolid = false); + /// @overload + void drawEllipseScreen(Position p, int xrad, int yrad, Color color, bool isSolid = false); + + /// Draws a dot on the map or screen with a given color. + /// + /// @param ctype + /// The coordinate type. Indicates the relative position to draw the shape. + /// @param x + /// The x coordinate, in pixels, relative to ctype. + /// @param y + /// The y coordinate, in pixels, relative to ctype. + /// @param color + /// The color of the dot. + virtual void drawDot(CoordinateType::Enum ctype, int x, int y, Color color) = 0; + /// @overload + void drawDotMap(int x, int y, Color color); + /// @overload + void drawDotMap(Position p, Color color); + /// @overload + void drawDotMouse(int x, int y, Color color); + /// @overload + void drawDotMouse(Position p, Color color); + /// @overload + void drawDotScreen(int x, int y, Color color); + /// @overload + void drawDotScreen(Position p, Color color); + + /// Draws a line on the map or screen with a given color. + /// + /// @param ctype + /// The coordinate type. Indicates the relative position to draw the shape. + /// @param x1 + /// The starting x coordinate, in pixels, relative to ctype. + /// @param y1 + /// The starting y coordinate, in pixels, relative to ctype. + /// @param x2 + /// The ending x coordinate, in pixels, relative to ctype. + /// @param y2 + /// The ending y coordinate, in pixels, relative to ctype. + /// @param color + /// The color of the line. + virtual void drawLine(CoordinateType::Enum ctype, int x1, int y1, int x2, int y2, Color color) = 0; + /// @overload + void drawLineMap(int x1, int y1, int x2, int y2, Color color); + /// @overload + void drawLineMap(Position a, Position b, Color color); + /// @overload + void drawLineMouse(int x1, int y1, int x2, int y2, Color color); + /// @overload + void drawLineMouse(Position a, Position b, Color color); + /// @overload + void drawLineScreen(int x1, int y1, int x2, int y2, Color color); + /// @overload + void drawLineScreen(Position a, Position b, Color color); + + /// Retrieves the maximum delay, in number of frames, between a command being issued and the + /// command being executed by Broodwar. + /// + /// @note In Broodwar, latency is used to keep the game synchronized between players without + /// introducing lag. + /// + /// @returns Difference in frames between commands being sent and executed. + /// @see getLatencyTime, getRemainingLatencyFrames + virtual int getLatencyFrames() const = 0; + + /// Retrieves the maximum delay, in milliseconds, between a command being issued and the + /// command being executed by Broodwar. + /// + /// @returns Difference in milliseconds between commands being sent and executed. + /// @see getLatencyFrames, getRemainingLatencyTime + virtual int getLatencyTime() const = 0; + + /// Retrieves the number of frames it will take before a command sent in the current frame + /// will be executed by the game. + /// + /// @returns Number of frames until a command is executed if it were sent in the current + /// frame. + /// @see getRemainingLatencyTime, getLatencyFrames + virtual int getRemainingLatencyFrames() const = 0; + + /// Retrieves the number of milliseconds it will take before a command sent in the current + /// frame will be executed by Broodwar. + /// + /// @returns Amount of time, in milliseconds, until a command is executed if it were sent in + /// the current frame. + /// @see getRemainingLatencyFrames, getLatencyTime + virtual int getRemainingLatencyTime() const = 0; + + /// Retrieves the current revision of BWAPI. + /// + /// @returns The revision number of the current BWAPI interface. + /// + /// @threadsafe + virtual int getRevision() const = 0; + + /// Retrieves the debug state of the BWAPI build. + /// + /// @returns true if the BWAPI module is a DEBUG build, and false if it is a RELEASE build. + /// + /// @threadsafe + virtual bool isDebug() const = 0; + + /// Checks the state of latency compensation. + /// + /// @returns true if latency compensation is enabled, false if it is disabled. + /// @see setLatCom + virtual bool isLatComEnabled() const = 0; + + /// Changes the state of latency compensation. Latency compensation modifies the state of + /// BWAPI's representation of units to reflect the implications of issuing a command + /// immediately after the command was performed, instead of waiting consecutive frames for the + /// results. Latency compensation is enabled by default. + /// + /// @param isEnabled + /// Set whether the latency compensation feature will be enabled (true) or disabled (false). + /// + /// @see isLatComEnabled. + virtual void setLatCom(bool isEnabled) = 0; + + /// Checks if the GUI is enabled. The GUI includes all drawing functions of BWAPI, as well + /// as screen updates from Broodwar. + /// + /// @retval true If the GUI is enabled, and everything is visible + /// @retval false If the GUI is disabled and drawing functions are rejected + /// + /// @see setGUI + virtual bool isGUIEnabled() const = 0; + + /// Sets the rendering state of the Starcraft GUI. This typically gives Starcraft a very + /// low graphical frame rate and disables all drawing functionality in BWAPI. + /// + /// @param enabled + /// A boolean value that determines the state of the GUI. Passing false to this function + /// will disable the GUI, and true will enable it. + /// + /// Example Usage: + /// @code + /// void ExampleAIModule::onStart() + /// { // Make our bot run thousands of games as fast as possible! + /// Broodwar->setLocalSpeed(0); + /// Broodwar->setGUI(false); + /// } + /// @endcode + /// + /// @see isGUIEnabled + virtual void setGUI(bool enabled) = 0; + + /// Retrieves the Starcraft instance number recorded by BWAPI to identify which Starcraft + /// instance an AI module belongs to. This only applies to users running multiple instances + /// of Starcraft. + /// + /// @returns + /// An integer value representing the instance number. + /// + /// @threadsafe + virtual int getInstanceNumber() const = 0; + + /// Retrieves the Actions Per Minute (APM) that the bot is producing. + /// + /// @param includeSelects (optional) + /// If true, the return value will include selections as individual commands, otherwise + /// it will exclude selections. This value is false by default. + /// + /// @returns The number of actions that the bot has executed per minute, on average. + virtual int getAPM(bool includeSelects = false) const = 0; + + /// Changes the map to the one specified. Once restarted, the game will load the map that was + /// provided. Changes do not take effect unless the game is restarted. + /// + /// @param mapFileName + /// A string containing the path and file name to the desired map. + /// + /// @retval true if the function succeeded and has changed the map. + /// @retval false if the function failed, does not have permission from the tournament module, + /// failed to find the map specified, or received an invalid parameter. + virtual bool setMap(const char *mapFileName) = 0; + /// @overload + bool setMap(const std::string &mapFileName); + + /// Sets the number of graphical frames for every logical frame. This allows the game to run + /// more logical frames per graphical frame, increasing the speed at which the game runs. + /// + /// @param frameSkip + /// Number of graphical frames per logical frame. If this value is 0 or less, then it will + /// default to 1. + virtual void setFrameSkip(int frameSkip) = 0; + + /// Checks if there is a path from source to destination. This only checks if the source + /// position is connected to the destination position. This function does not check if all + /// units can actually travel from source to destination. Because of this limitation, it has + /// an O(1) complexity, and cases where this limitation hinders gameplay is uncommon at best. + /// + /// @param source + /// The source position. + /// @param destination + /// The destination position. + /// + /// @retval true if there is a path between the two positions + /// @retval false if there is no path + virtual bool hasPath(Position source, Position destination) const = 0; + + /// Sets the alliance state of the current player with the target player. + /// + /// @param player + /// The target player to set alliance with. + /// @param allied (optional) + /// If true, the current player will ally the target player. If false, the current player + /// will make the target player an enemy. This value is true by default. + /// @param alliedVictory (optional) + /// Sets the state of "allied victory". If true, the game will end in a victory if all + /// allied players have eliminated their opponents. Otherwise, the game will only end if + /// no other players are remaining in the game. This value is true by default. + virtual bool setAlliance(BWAPI::Player player, bool allied = true, bool alliedVictory = true) = 0; + + /// In a game, this function sets the vision of the current BWAPI player with the target + /// player. In a replay, this function toggles the visibility of the target player. + /// + /// @param player + /// The target player to toggle vision. + /// @param enabled (optional) + /// The vision state. If true, and in a game, the current player will enable shared vision + /// with the target player, otherwise it will unshare vision. If in a replay, the vision + /// of the target player will be shown, otherwise the target player will be hidden. This + /// value is true by default. + virtual bool setVision(BWAPI::Player player, bool enabled = true) = 0; + + /// Retrieves current amount of time in seconds that the game has elapsed. + /// + /// @returns Time, in seconds, that the game has elapsed as an integer. + virtual int elapsedTime() const = 0; + + /// Sets the command optimization level. Command optimization is a feature in BWAPI that tries + /// to reduce the APM of the bot by grouping or eliminating unnecessary game actions. For + /// example, suppose the bot told 24 @Zerglings to @Burrow. At command optimization level 0, + /// BWAPI is designed to select each Zergling to burrow individually, which costs 48 actions. + /// With command optimization level 1, it can perform the same behaviour using only 4 actions. + /// The command optimizer also reduces the amount of bytes used for each action if it can + /// express the same action using a different command. For example, Right_Click uses less + /// bytes than Move. + /// + /// @param level + /// An integer representation of the aggressiveness for which commands are optimized. A + /// lower level means less optimization, and a higher level means more optimization. The + /// values for level are as follows: + /// - 0: No optimization. + /// - 1: Some optimization. + /// - Is not detected as a hack. + /// - Does not alter behaviour. + /// - Units performing the following actions are grouped and ordered 12 at a time: + /// - Attack_Unit + /// - Morph (@Larva only) + /// - Hold_Position + /// - Stop + /// - Follow + /// - Gather + /// - Return_Cargo + /// - Repair + /// - Burrow + /// - Unburrow + /// - Cloak + /// - Decloak + /// - Siege + /// - Unsiege + /// - Right_Click_Unit + /// - Halt_Construction + /// - Cancel_Train (@Carrier and @Reaver only) + /// - Cancel_Train_Slot (@Carrier and @Reaver only) + /// - Cancel_Morph (for non-buildings only) + /// - Use_Tech + /// - Use_Tech_Unit + /// . + /// - The following order transformations are applied to allow better grouping: + /// - Attack_Unit becomes Right_Click_Unit if the target is an enemy + /// - Move becomes Right_Click_Position + /// - Gather becomes Right_Click_Unit if the target contains resources + /// - Set_Rally_Position becomes Right_Click_Position for buildings + /// - Set_Rally_Unit becomes Right_Click_Unit for buildings + /// - Use_Tech_Unit with Infestation becomes Right_Click_Unit if the target is valid + /// . + /// . + /// - 2: More optimization by grouping structures. + /// - Includes the optimizations made by all previous levels. + /// - May be detected as a hack by some replay utilities. + /// - Does not alter behaviour. + /// - Units performing the following actions are grouped and ordered 12 at a time: + /// - Attack_Unit (@Turrets, @Photon_Cannons, @Sunkens, @Spores) + /// - Train + /// - Morph + /// - Set_Rally_Unit + /// - Lift + /// - Cancel_Construction + /// - Cancel_Addon + /// - Cancel_Train + /// - Cancel_Train_Slot + /// - Cancel_Morph + /// - Cancel_Research + /// - Cancel_Upgrade + /// . + /// . + /// - 3: Extensive optimization + /// - Includes the optimizations made by all previous levels. + /// - Units may behave or move differently than expected. + /// - Units performing the following actions are grouped and ordered 12 at a time: + /// - Attack_Move + /// - Set_Rally_Position + /// - Move + /// - Patrol + /// - Unload_All + /// - Unload_All_Position + /// - Right_Click_Position + /// - Use_Tech_Position + /// . + /// . + /// - 4: Aggressive optimization + /// - Includes the optimizations made by all previous levels. + /// - Positions used in commands will be rounded to multiples of 32. + /// - @High_Templar and @Dark_Templar that merge into @Archons will be grouped and may + /// choose a different target to merge with. It will not merge with a target that + /// wasn't included. + /// . + /// . + /// + virtual void setCommandOptimizationLevel(int level) = 0; + + /// Returns the remaining countdown time. The countdown timer is used in @CTF and @UMS game + /// types. + /// + /// Example usage: + /// @code + /// void ExampleAIModule::onStart() + /// { + /// // Register a callback that only occurs once when the countdown timer reaches 0 + /// if ( BWAPI::Broodwar->getGameType() == BWAPI::GameTypes::Capture_The_Flag || + /// BWAPI::Broodwar->getGameType() == BWAPI::GameTypes::Team_Capture_The_Flag ) + /// { + /// BWAPI::Broodwar->registerEvent([](BWAPI::Game*){ BWAPI::Broodwar->sendText("Try to find my flag!"); }, // action + /// [](BWAPI::Game*){ return BWAPI::Broodwar->countdownTimer() == 0; }, // condition + /// 1); // times to run (once) + /// } + /// } + /// @endcode + /// + /// @returns Integer containing the time (in game seconds) on the countdown timer. + virtual int countdownTimer() const = 0; + + /// Retrieves the set of all regions on the map. + /// + /// @returns Regionset containing all map regions. + virtual const Regionset &getAllRegions() const = 0; + + /// Retrieves the region at a given position. + /// + /// @param x + /// The x coordinate, in pixels. + /// @param y + /// The y coordinate, in pixels. + /// + /// @returns Pointer to the Region interface at the given position. + virtual BWAPI::Region getRegionAt(int x, int y) const = 0; + /// @overload + BWAPI::Region getRegionAt(BWAPI::Position position) const; + + /// Retrieves the amount of time (in milliseconds) that has elapsed when running the last AI + /// module callback. This is used by tournament modules to penalize AI modules that use too + /// much processing time. + /// + /// @retval 0 When called from an AI module. + /// @returns Time in milliseconds spent in last AI module call. + virtual int getLastEventTime() const = 0; + + /// Sets the state of the fog of war when watching a replay. + /// + /// @param reveal (optional) + /// The state of the reveal all flag. If false, all fog of war will be enabled. If true, + /// then the fog of war will be revealed. It is true by default. + virtual bool setRevealAll(bool reveal = true) = 0; + + /// Retrieves a basic build position just as the default Computer AI would. This allows users + /// to find simple build locations without relying on external libraries. + /// + /// @param type + /// A valid UnitType representing the unit type to accomodate space for. + /// @param desiredPosition + /// A valid TilePosition containing the desired placement position. + /// @param maxRange (optional) + /// The maximum distance (in tiles) to build from \p desiredPosition. + /// @param creep (optional) + /// A special boolean value that changes the behaviour of @Creep_Colony placement. + /// + /// @retval TilePositions::Invalid If a build location could not be found within \p maxRange. + /// @returns + /// A TilePosition containing the location that the structure should be constructed at. + TilePosition getBuildLocation(UnitType type, TilePosition desiredPosition, int maxRange = 64, bool creep = false) const; + + /// Calculates the damage received for a given player. It can be understood as the damage from + /// \p fromType to \p toType. Does not include shields in calculation. Includes upgrades if + /// players are provided. + /// + /// @param fromType + /// The unit type that will be dealing the damage. + /// @param toType + /// The unit type that will be receiving the damage. + /// @param fromPlayer (optional) + /// The player owner of the given type that will be dealing the damage. If omitted, then + /// no player will be used to calculate the upgrades for \p fromType. + /// @param toPlayer (optional) + /// The player owner of the type that will be receiving the damage. If omitted, then this + /// parameter will default to Broodwar->self(). + /// + /// @returns The amount of damage that fromType would deal to toType. + /// @see getDamageTo + int getDamageFrom(UnitType fromType, UnitType toType, Player fromPlayer = nullptr, Player toPlayer = nullptr) const; + + /// Calculates the damage dealt for a given player. It can be understood as the damage to + /// \p toType from \p fromType. Does not include shields in calculation. Includes upgrades if + /// players are provided. + /// + /// @note This function is nearly the same as #getDamageFrom. The only difference is that + /// the last parameter is intended to default to Broodwar->self(). + /// + /// @param toType + /// The unit type that will be receiving the damage. + /// @param fromType + /// The unit type that will be dealing the damage. + /// @param toPlayer (optional) + /// The player owner of the type that will be receiving the damage. If omitted, then + /// no player will be used to calculate the upgrades for \p toType. + /// @param fromPlayer (optional) + /// The player owner of the given type that will be dealing the damage. If omitted, then + /// this parameter will default to Broodwar->self(). + /// + /// @returns The amount of damage that fromType would deal to toType. + /// @see getDamageFrom + int getDamageTo(UnitType toType, UnitType fromType, Player toPlayer = nullptr, Player fromPlayer = nullptr) const; + }; + + extern Game *BroodwarPtr; + + /// Broodwar wrapper + class GameWrapper + { + private: + std::ostringstream ss; + public: + /// definition of ostream_manipulator type for convenience + typedef std::ostream& (*ostream_manipulator)(std::ostream&); + + /// Member access operator to retain the original Broodwar-> behaviour. + Game *operator ->() const; + + /// Output stream operator for printing text to Broodwar. Using this operator invokes + /// Game::printf when a newline character is encountered. + template < class T > + GameWrapper &operator <<(const T &in) + { + // Pass whatever into the stream + ss << in; + return *this; + }; + /// @overload + GameWrapper &operator <<( const ostream_manipulator &fn ); + + /// Flushes the Broodwar stream, printing all text in the stream to the screen. + void flush(); + }; + + /// The primary Game interface, used to access any Game information or perform Game actions + extern GameWrapper Broodwar; + +} + diff --git a/bwapi4-includes/BWAPI/GameType.h b/bwapi4-includes/BWAPI/GameType.h new file mode 100644 index 0000000..d08d80c --- /dev/null +++ b/bwapi4-includes/BWAPI/GameType.h @@ -0,0 +1,73 @@ +#pragma once +#include + +namespace BWAPI +{ + namespace GameTypes + { + /// Enumeration of game types + namespace Enum + { + /// Enumeration of game types + enum Enum + { + None = 0, + Custom, // Warcraft III + Melee, + Free_For_All, + One_on_One, + Capture_The_Flag, + Greed, + Slaughter, + Sudden_Death, + Ladder, + Use_Map_Settings, + Team_Melee, + Team_Free_For_All, + Team_Capture_The_Flag, + Unknown_0x0E, + Top_vs_Bottom, + Iron_Man_Ladder, // Warcraft II + + Pro_Gamer_League = 32, // Not valid + Unknown, + MAX + }; + }; + }; + class GameType : public Type + { + public: + /// @copydoc Type::Type(int) + GameType(int id = GameTypes::Enum::None); + }; + /// Namespace containing game types + namespace GameTypes + { + /// Retrieves the set of all the valid GameTypes. + /// + /// @returns Set of available GameTypes. + const GameType::const_set& allGameTypes(); + +#ifdef BWAPI_DECL +#undef BWAPI_DECL +#endif +#define BWAPI_DECL(x) /** x */ extern const GameType x + BWAPI_DECL(Melee); + BWAPI_DECL(Free_For_All); + BWAPI_DECL(One_on_One); + BWAPI_DECL(Capture_The_Flag); + BWAPI_DECL(Greed); + BWAPI_DECL(Slaughter); + BWAPI_DECL(Sudden_Death); + BWAPI_DECL(Ladder); + BWAPI_DECL(Use_Map_Settings); + BWAPI_DECL(Team_Melee); + BWAPI_DECL(Team_Free_For_All); + BWAPI_DECL(Team_Capture_The_Flag); + BWAPI_DECL(Top_vs_Bottom); + BWAPI_DECL(None); + BWAPI_DECL(Unknown); +#undef BWAPI_DECL + } +} diff --git a/bwapi4-includes/BWAPI/Input.h b/bwapi4-includes/BWAPI/Input.h new file mode 100644 index 0000000..f753cd0 --- /dev/null +++ b/bwapi4-includes/BWAPI/Input.h @@ -0,0 +1,247 @@ +#pragma once +namespace BWAPI +{ + enum MouseButton + { + M_LEFT = 0, + M_RIGHT, + M_MIDDLE, + M_MAX, + }; + + enum Key + { + K_LBUTTON = 0x01, + K_RBUTTON, + K_CANCEL, + K_MBUTTON, + K_XBUTTON1, + K_XBUTTON2, + __UNDEFINED_7, + K_BACK, + K_TAB, + __RESERVED_A, + __RESERVED_B, + K_CLEAR, + K_RETURN, + __UNDEFINED_E, + __UNDEFINED_F, + K_SHIFT, + K_CONTROL, + K_MENU, + K_PAUSE, + K_CAPITAL, + K_KANA, + K_UNDEFINED_16, + K_JUNJA, + K_FINAL, + K_KANJI, + __UNDEFINED_1A, + K_ESCAPE, + K_CONVERT, + K_NONCONVERT, + K_ACCEPT, + K_MODECHANGE, + K_SPACE, + K_PRIOR, + K_NEXT, + K_END, + K_HOME, + K_LEFT, + K_UP, + K_RIGHT, + K_DOWN, + K_SELECT, + K_PRINT, + K_EXECUTE, + K_SNAPSHOT, + K_INSERT, + K_DELETE, + K_HELP, + K_0, + K_1, + K_2, + K_3, + K_4, + K_5, + K_6, + K_7, + K_8, + K_9, + __UNDEFINED_3A, + __UNDEFINED_3B, + __UNDEFINED_3C, + __UNDEFINED_3D, + __UNDEFINED_3E, + __UNDEFINED_3F, + __UNDEFINED_40, + K_A, + K_B, + K_C, + K_D, + K_E, + K_F, + K_G, + K_H, + K_I, + K_J, + K_K, + K_L, + K_M, + K_N, + K_O, + K_P, + K_Q, + K_R, + K_S, + K_T, + K_U, + K_V, + K_W, + K_X, + K_Y, + K_Z, + K_LWIN, + K_RWIN, + K_APPS, + __RESERVED_5E, + K_SLEEP, + K_NUMPAD0, + K_NUMPAD1, + K_NUMPAD2, + K_NUMPAD3, + K_NUMPAD4, + K_NUMPAD5, + K_NUMPAD6, + K_NUMPAD7, + K_NUMPAD8, + K_NUMPAD9, + K_MULTIPLY, + K_ADD, + K_SEPARATOR, + K_SUBTRACT, + K_DECIMAL, + K_DIVIDE, + K_F1, + K_F2, + K_F3, + K_F4, + K_F5, + K_F6, + K_F7, + K_F8, + K_F9, + K_F10, + K_F11, + K_F12, + K_F13, + K_F14, + K_F15, + K_F16, + K_F17, + K_F18, + K_F19, + K_F20, + K_F21, + K_F22, + K_F23, + K_F24, + __UNASSIGNED_88, + __UNASSIGNED_89, + __UNASSIGNED_8A, + __UNASSIGNED_8B, + __UNASSIGNED_8C, + __UNASSIGNED_8D, + __UNASSIGNED_8E, + __UNASSIGNED_8F, + K_NUMLOCK, + K_SCROLL, + + K_OEM_NEC_EQUAL, + K_OEM_FJ_JISHO, + K_OEM_FJ_MASSHOU, + K_OEM_FJ_TOUROKU, + K_OEM_FJ_LOYA, + __UNASSIGNED_97, + __UNASSIGNED_98, + __UNASSIGNED_99, + __UNASSIGNED_9A, + __UNASSIGNED_9B, + __UNASSIGNED_9C, + __UNASSIGNED_9D, + __UNASSIGNED_9E, + __UNASSIGNED_9F, + K_LSHIFT, + K_RSHIFT, + K_LCONTROL, + K_RCONTROL, + K_LMENU, + K_RMENU, + K_BROWSER_BACK, + K_BROWSER_FORWARD, + K_BROWSER_REFRESH, + K_BROWSER_STOP, + K_BROWSER_SEARCH, + K_BROWSER_FAVORITES, + K_BROWSER_HOME, + K_VOLUME_MUTE, + K_VOLUME_DOWN, + K_VOLUME_UP, + K_MEDIA_NEXT_TRACK, + K_MEDIA_PREV_TRACK, + K_MEDIA_STOP, + K_MEDIA_PLAY_PAUSE, + K_LAUNCH_MAIL, + K_LAUNCH_MEDIA_SELECT, + K_LAUNCH_APP1, + K_LAUNCH_APP2, + __RESERVED_B8, + __RESERVED_B9, + K_OEM_1, + K_OEM_PLUS, + K_OEM_COMMA, + K_OEM_MINUS, + K_OEM_PERIOD, + K_OEM_2, + K_OEM_3, + + K_OEM_4 = 0xDB, + K_OEM_5, + K_OEM_6, + K_OEM_7, + K_OEM_8, + __RESERVED_E0, + K_OEM_AX, + K_OEM_102, + K_ICO_HELP, + K_ICO_00, + K_PROCESSKEY, + K_ICO_CLEAR, + K_PACKET, + __UNASSIGNED_E8, + K_OEM_RESET, + K_OEM_JUMP, + K_OEM_PA1, + K_OEM_PA2, + K_OEM_PA3, + K_OEM_WSCTRL, + K_OEM_CUSEL, + K_OEM_ATTN, + K_OEM_FINISH, + K_OEM_COPY, + K_OEM_AUTO, + K_OEM_ENLW, + K_OEM_BACKTAB, + + K_ATTN, + K_CRSEL, + K_EXSEL, + K_EREOF, + K_PLAY, + K_ZOOM, + K_NONAME, + K_PA1, + K_OEM_CLEAR, + K_MAX + }; +} \ No newline at end of file diff --git a/bwapi4-includes/BWAPI/Interface.h b/bwapi4-includes/BWAPI/Interface.h new file mode 100644 index 0000000..6708fbb --- /dev/null +++ b/bwapi4-includes/BWAPI/Interface.h @@ -0,0 +1,131 @@ +#pragma once +#include +#include + +#include + +namespace BWAPI +{ + /// This generalized class allows the application of features that are common to all interface + /// classes. + template < typename T > + class Interface + { + protected: + // default ctor + Interface() {}; + // dtor + virtual ~Interface() + {}; + + std::map clientInfo; + std::list< InterfaceEvent > interfaceEvents; + + friend class GameImpl; + + // Function manages events and updates it for the given frame + void updateEvents() + { + auto e = interfaceEvents.begin(); + while ( e != interfaceEvents.end() ) + { + if ( e->isFinished() ) + { + e = interfaceEvents.erase(e); + } + else + { + e->execute(static_cast(this)); + ++e; + } + } + }; + public: + /// Retrieves a pointer or value at an index that was stored for this interface using + /// setClientInfo. + /// + /// @param key + /// The key containing the value to retrieve. Default is 0. + /// + /// @retval nullptr if index is out of bounds. + /// @returns The client info at the given index. + /// @see setClientInfo + void *getClientInfo(int key = 0) const + { + // Retrieve iterator to element at index + auto result = this->clientInfo.find(key); + + // Return a default value if not found + if ( result == this->clientInfo.end() ) + return nullptr; + + // return the desired value + return result->second; + }; + + template + CT getClientInfo(int key = 0) const + { + return (CT)(int)this->getClientInfo(key); + }; + + /// Associates one or more pointers or values with any BWAPI interface. + /// + /// This client information is managed entirely by the AI module. It is not modified by BWAPI. + /// @warning If a pointer to allocated memory is used, then the AI module is responsible for + /// deallocating the memory when the game ends. + /// + /// If client info at the given index has already been set, then it will be overwritten. + /// + /// @param clientInfo + /// The data to associate with this interface. + /// @param key + /// The key to use for this data. Default is 0. + /// + /// @see getClientInfo + template < typename V > + void setClientInfo(const V &clientInfo, int key = 0) + { + this->clientInfo[key] = (void*)clientInfo; + }; + + /// Registers an event and associates it with the current Interface object. Events can be used + /// to automate tasks (like train X @Marines until Y of them have been created by the given + /// @Barracks) or to create user-defined callbacks. + /// + /// @param action + /// The action callback to be executed when the event conditions are true. It is of type + /// void fn(T *inst) where fn is the function name and inst is a pointer to the instance of + /// the object performing the action. + /// @param condition (optional) + /// The condition callback which will return true if the action is intended to be executed. + /// It is of type bool fn(T *inst) where fn is the function name and inst is a pointer to the + /// instance of the object performing the check. The condition will always be true if omitted. + /// @param timesToRun (optional) + /// The number of times to execute the action before the event is removed. If the value is + /// negative, then the event will never be removed. The value will be -1 if omitted, causing + /// the event to execute regularly. + /// @param framesToCheck (optional) + /// The number of frames to skip between checks. If this value is 0, then a condition check is + /// made once per frame. If this value is 1, then the condition for this event is only checked + /// every other frame. This value is 0 by default, meaning the event's condition is checked + /// every frame. + void registerEvent(const std::function &action, const std::function &condition = nullptr, int timesToRun = -1, int framesToCheck = 0) + { + interfaceEvents.push_back( InterfaceEvent(action,condition,timesToRun,framesToCheck) ); + }; + /// @overload + void registerEvent(const InterfaceEvent &evt) + { + interfaceEvents.push_back( evt ); + }; + /// @overload + void registerEvent(InterfaceEvent &&evt) + { + interfaceEvents.push_back( std::move(evt) ); + }; + + }; + + +} diff --git a/bwapi4-includes/BWAPI/InterfaceEvent.h b/bwapi4-includes/BWAPI/InterfaceEvent.h new file mode 100644 index 0000000..dd2ec76 --- /dev/null +++ b/bwapi4-includes/BWAPI/InterfaceEvent.h @@ -0,0 +1,142 @@ +#pragma once +#include + +namespace BWAPI +{ + template < typename T > + class InterfaceEvent + { + public: + // default ctor + InterfaceEvent() + : condProc(nullptr) + , execProc(nullptr) + , runCount(0) + , runFreq(0) + , step(0) + {}; + + // expected ctor + InterfaceEvent(const std::function &action, const std::function &condition = nullptr, int timesToRun = -1, int framesToCheck = 0) + : condProc( condition ) + , execProc( action ) + , runFreq( framesToCheck ) + , runCount( timesToRun ) + , step( framesToCheck ) + {}; + // copy ctor + InterfaceEvent(const InterfaceEvent &other) + : condProc( other.condProc ) + , execProc( other.execProc ) + , runFreq( other.runFreq ) + , runCount( other.runCount ) + , step( other.step ) + {}; + // move ctor + InterfaceEvent(InterfaceEvent &&other) + : condProc( std::move(other.condProc) ) + , execProc( std::move(other.execProc) ) + , runFreq( std::move(other.runFreq) ) + , runCount( std::move(other.runCount) ) + , step( std::move(other.step) ) + {}; + // copy assignment + InterfaceEvent &operator =(InterfaceEvent other) + { + swap(*this, other); + return *this; + }; + // move assignment + InterfaceEvent &operator =(InterfaceEvent &&other) + { + swap(*this, other); + return *this; + }; + + // dtor + virtual ~InterfaceEvent() + {}; + + /// Checks if the event has finished its execution and is marked for removal. + /// + /// @retval true If the event has completed all runs and/or is marked for removal. + /// @retval false If the event should continue execution. + bool isFinished() + { + return this->runCount == 0; + }; + + /// Marks the event for removal. + void removeEvent() + { + this->runCount = 0; + }; + + friend void swap(InterfaceEvent &a, InterfaceEvent &b); + + protected: + template < typename U > + friend class Interface; + + // Function that runs the event, checkings its conditions and running its action, then + // decrementing the run count. + bool execute(T *instance) + { + // condition check + if ( !this->isConditionMet(instance) ) + return false; + + // There must be an exec proc! + if ( !this->execProc ) + return false; + + // execute + this->execProc(instance); + + // Decrement run count (-1 being infinite) + if ( this->runCount > 0 ) + --this->runCount; + return true; + }; + + // Function to check if the condition associated with the event is true. Includes frame and + // run count checking. + bool isConditionMet(T *instance) + { + // Validity check + if ( this->isFinished() ) + return false; + + // Frame check + --step; + if ( step > 0 ) + return false; + this->step = this->runFreq; + + // Conditional check + if ( this->condProc ) + return this->condProc(instance); + return true; // always run if there is no conditional function + }; + + private: + // Data members + std::function condProc; + std::function execProc; + int runFreq; // Frequency of runs, in frames (0 means every frame, 1 means every other frame) + int runCount; // Number of times that the action can occur (-1 being infinite) + int step; // Current step. Executes when reaches 0, then reset to runFreq. + }; + + // Note: This is down here to prevent intellisense errors + template + inline void swap(InterfaceEvent &a, InterfaceEvent &b) + { + std::swap(a.condProc, b.condProc); + std::swap(a.execProc, b.execProc); + std::swap(a.runFreq, b.runFreq); + std::swap(a.runCount, b.runCount); + std::swap(a.step, b.step); + }; + +} diff --git a/bwapi4-includes/BWAPI/Latency.h b/bwapi4-includes/BWAPI/Latency.h new file mode 100644 index 0000000..0202aa7 --- /dev/null +++ b/bwapi4-includes/BWAPI/Latency.h @@ -0,0 +1,17 @@ +#pragma once +namespace BWAPI +{ + namespace Latency + { + enum Enum + { + SinglePlayer = 2, + LanLow = 5, + LanMedium = 7, + LanHigh = 9, + BattlenetLow = 14, + BattlenetMedium = 19, + BattlenetHigh = 24 + }; + } +} diff --git a/bwapi4-includes/BWAPI/Order.h b/bwapi4-includes/BWAPI/Order.h new file mode 100644 index 0000000..5b8558b --- /dev/null +++ b/bwapi4-includes/BWAPI/Order.h @@ -0,0 +1,391 @@ +#pragma once +#include + +namespace BWAPI +{ + namespace Orders + { + /// Enumeration of unit orders + namespace Enum + { + /// Enumeration of unit orders + enum Enum + { + Die, + Stop, + Guard, + PlayerGuard, + TurretGuard, + BunkerGuard, + Move, + ReaverStop, + Attack1, + Attack2, + AttackUnit, + AttackFixedRange, + AttackTile, + Hover, + AttackMove, + InfestedCommandCenter, + UnusedNothing, + UnusedPowerup, + TowerGuard, + TowerAttack, + VultureMine, + StayInRange, + TurretAttack, + Nothing, + Unused_24, + DroneStartBuild, + DroneBuild, + CastInfestation, + MoveToInfest, + InfestingCommandCenter, + PlaceBuilding, + PlaceProtossBuilding, + CreateProtossBuilding, + ConstructingBuilding, + Repair, + MoveToRepair, + PlaceAddon, + BuildAddon, + Train, + RallyPointUnit, + RallyPointTile, + ZergBirth, + ZergUnitMorph, + ZergBuildingMorph, + IncompleteBuilding, + IncompleteMorphing, + BuildNydusExit, + EnterNydusCanal, + IncompleteWarping, + Follow, + Carrier, + ReaverCarrierMove, + CarrierStop, + CarrierAttack, + CarrierMoveToAttack, + CarrierIgnore2, + CarrierFight, + CarrierHoldPosition, + Reaver, + ReaverAttack, + ReaverMoveToAttack, + ReaverFight, + ReaverHoldPosition, + TrainFighter, + InterceptorAttack, + ScarabAttack, + RechargeShieldsUnit, + RechargeShieldsBattery, + ShieldBattery, + InterceptorReturn, + DroneLand, + BuildingLand, + BuildingLiftOff, + DroneLiftOff, + LiftingOff, + ResearchTech, + Upgrade, + Larva, + SpawningLarva, + Harvest1, + Harvest2, + MoveToGas, + WaitForGas, + HarvestGas, + ReturnGas, + MoveToMinerals, + WaitForMinerals, + MiningMinerals, + Harvest3, + Harvest4, + ReturnMinerals, + Interrupted, + EnterTransport, + PickupIdle, + PickupTransport, + PickupBunker, + Pickup4, + PowerupIdle, + Sieging, + Unsieging, + WatchTarget, + InitCreepGrowth, + SpreadCreep, + StoppingCreepGrowth, + GuardianAspect, + ArchonWarp, + CompletingArchonSummon, + HoldPosition, + QueenHoldPosition, + Cloak, + Decloak, + Unload, + MoveUnload, + FireYamatoGun, + MoveToFireYamatoGun, + CastLockdown, + Burrowing, + Burrowed, + Unburrowing, + CastDarkSwarm, + CastParasite, + CastSpawnBroodlings, + CastEMPShockwave, + NukeWait, + NukeTrain, + NukeLaunch, + NukePaint, + NukeUnit, + CastNuclearStrike, + NukeTrack, + InitializeArbiter, + CloakNearbyUnits, + PlaceMine, + RightClickAction, + SuicideUnit, + SuicideLocation, + SuicideHoldPosition, + CastRecall, + Teleport, + CastScannerSweep, + Scanner, + CastDefensiveMatrix, + CastPsionicStorm, + CastIrradiate, + CastPlague, + CastConsume, + CastEnsnare, + CastStasisField, + CastHallucination, + Hallucination2, + ResetCollision, + ResetHarvestCollision, + Patrol, + CTFCOPInit, + CTFCOPStarted, + CTFCOP2, + ComputerAI, + AtkMoveEP, + HarassMove, + AIPatrol, + GuardPost, + RescuePassive, + Neutral, + ComputerReturn, + InitializePsiProvider, + SelfDestructing, + Critter, + HiddenGun, + OpenDoor, + CloseDoor, + HideTrap, + RevealTrap, + EnableDoodad, + DisableDoodad, + WarpIn, + Medic, + MedicHeal, + HealMove, + MedicHoldPosition, + MedicHealToIdle, + CastRestoration, + CastDisruptionWeb, + CastMindControl, + DarkArchonMeld, + CastFeedback, + CastOpticalFlare, + CastMaelstrom, + JunkYardDog, + Fatal, + None, + Unknown, + MAX + }; + } + } + /// An Order (Order type) represents a Unit's current action and can be retrieved with + /// UnitInterface::getOrder. It can also be used to identify the current state of the unit during + /// command execution (gathering minerals can consist of Orders::MoveToMinerals, + /// Orders::WaitForMinerals, Orders::MiningMinerals, etc.). + /// + /// @see UnitInterface::getOrder + class Order : public Type + { + public: + /// @copydoc Type::Type(int) + Order(int id = Orders::Enum::None); + }; + /// Namespace containing unit orders + namespace Orders + { + /// Retrieves the set of all the Orders. + /// + /// @returns Set of all Order types. + const Order::const_set& allOrders(); + +#ifdef BWAPI_DECL +#undef BWAPI_DECL +#endif +#define BWAPI_DECL(x) /** x */ extern const Order x + BWAPI_DECL(Die); + BWAPI_DECL(Stop); + BWAPI_DECL(Guard); + BWAPI_DECL(PlayerGuard); + BWAPI_DECL(TurretGuard); + BWAPI_DECL(BunkerGuard); + BWAPI_DECL(Move); + BWAPI_DECL(AttackUnit); + BWAPI_DECL(AttackTile); + BWAPI_DECL(Hover); + BWAPI_DECL(AttackMove); + BWAPI_DECL(InfestedCommandCenter); + BWAPI_DECL(UnusedNothing); + BWAPI_DECL(UnusedPowerup); + BWAPI_DECL(TowerGuard); + BWAPI_DECL(VultureMine); + BWAPI_DECL(Nothing); + BWAPI_DECL(CastInfestation); + BWAPI_DECL(InfestingCommandCenter); + BWAPI_DECL(PlaceBuilding); + BWAPI_DECL(CreateProtossBuilding); + BWAPI_DECL(ConstructingBuilding); + BWAPI_DECL(Repair); + BWAPI_DECL(PlaceAddon); + BWAPI_DECL(BuildAddon); + BWAPI_DECL(Train); + BWAPI_DECL(RallyPointUnit); + BWAPI_DECL(RallyPointTile); + BWAPI_DECL(ZergBirth); + BWAPI_DECL(ZergUnitMorph); + BWAPI_DECL(ZergBuildingMorph); + BWAPI_DECL(IncompleteBuilding); + BWAPI_DECL(BuildNydusExit); + BWAPI_DECL(EnterNydusCanal); + BWAPI_DECL(Follow); + BWAPI_DECL(Carrier); + BWAPI_DECL(ReaverCarrierMove); + BWAPI_DECL(CarrierIgnore2); + BWAPI_DECL(Reaver); + BWAPI_DECL(TrainFighter); + BWAPI_DECL(InterceptorAttack); + BWAPI_DECL(ScarabAttack); + BWAPI_DECL(RechargeShieldsUnit); + BWAPI_DECL(RechargeShieldsBattery); + BWAPI_DECL(ShieldBattery); + BWAPI_DECL(InterceptorReturn); + BWAPI_DECL(BuildingLand); + BWAPI_DECL(BuildingLiftOff); + BWAPI_DECL(DroneLiftOff); + BWAPI_DECL(LiftingOff); + BWAPI_DECL(ResearchTech); + BWAPI_DECL(Upgrade); + BWAPI_DECL(Larva); + BWAPI_DECL(SpawningLarva); + BWAPI_DECL(Harvest1); + BWAPI_DECL(Harvest2); + BWAPI_DECL(MoveToGas); + BWAPI_DECL(WaitForGas); + BWAPI_DECL(HarvestGas); + BWAPI_DECL(ReturnGas); + BWAPI_DECL(MoveToMinerals); + BWAPI_DECL(WaitForMinerals); + BWAPI_DECL(MiningMinerals); + BWAPI_DECL(Harvest3); + BWAPI_DECL(Harvest4); + BWAPI_DECL(ReturnMinerals); + BWAPI_DECL(Interrupted); + BWAPI_DECL(EnterTransport); + BWAPI_DECL(PickupIdle); + BWAPI_DECL(PickupTransport); + BWAPI_DECL(PickupBunker); + BWAPI_DECL(Pickup4); + BWAPI_DECL(PowerupIdle); + BWAPI_DECL(Sieging); + BWAPI_DECL(Unsieging); + BWAPI_DECL(InitCreepGrowth); + BWAPI_DECL(SpreadCreep); + BWAPI_DECL(StoppingCreepGrowth); + BWAPI_DECL(GuardianAspect); + BWAPI_DECL(ArchonWarp); + BWAPI_DECL(CompletingArchonSummon); + BWAPI_DECL(HoldPosition); + BWAPI_DECL(Cloak); + BWAPI_DECL(Decloak); + BWAPI_DECL(Unload); + BWAPI_DECL(MoveUnload); + BWAPI_DECL(FireYamatoGun); + BWAPI_DECL(CastLockdown); + BWAPI_DECL(Burrowing); + BWAPI_DECL(Burrowed); + BWAPI_DECL(Unburrowing); + BWAPI_DECL(CastDarkSwarm); + BWAPI_DECL(CastParasite); + BWAPI_DECL(CastSpawnBroodlings); + BWAPI_DECL(CastEMPShockwave); + BWAPI_DECL(NukeWait); + BWAPI_DECL(NukeTrain); + BWAPI_DECL(NukeLaunch); + BWAPI_DECL(NukePaint); + BWAPI_DECL(NukeUnit); + BWAPI_DECL(CastNuclearStrike); + BWAPI_DECL(NukeTrack); + BWAPI_DECL(CloakNearbyUnits); + BWAPI_DECL(PlaceMine); + BWAPI_DECL(RightClickAction); + BWAPI_DECL(CastRecall); + BWAPI_DECL(Teleport); + BWAPI_DECL(CastScannerSweep); + BWAPI_DECL(Scanner); + BWAPI_DECL(CastDefensiveMatrix); + BWAPI_DECL(CastPsionicStorm); + BWAPI_DECL(CastIrradiate); + BWAPI_DECL(CastPlague); + BWAPI_DECL(CastConsume); + BWAPI_DECL(CastEnsnare); + BWAPI_DECL(CastStasisField); + BWAPI_DECL(CastHallucination); + BWAPI_DECL(Hallucination2); + BWAPI_DECL(ResetCollision); + BWAPI_DECL(Patrol); + BWAPI_DECL(CTFCOPInit); + BWAPI_DECL(CTFCOPStarted); + BWAPI_DECL(CTFCOP2); + BWAPI_DECL(ComputerAI); + BWAPI_DECL(AtkMoveEP); + BWAPI_DECL(HarassMove); + BWAPI_DECL(AIPatrol); + BWAPI_DECL(GuardPost); + BWAPI_DECL(RescuePassive); + BWAPI_DECL(Neutral); + BWAPI_DECL(ComputerReturn); + BWAPI_DECL(SelfDestructing); + BWAPI_DECL(Critter); + BWAPI_DECL(HiddenGun); + BWAPI_DECL(OpenDoor); + BWAPI_DECL(CloseDoor); + BWAPI_DECL(HideTrap); + BWAPI_DECL(RevealTrap); + BWAPI_DECL(EnableDoodad); + BWAPI_DECL(DisableDoodad); + BWAPI_DECL(WarpIn); + BWAPI_DECL(Medic); + BWAPI_DECL(MedicHeal); + BWAPI_DECL(HealMove); + BWAPI_DECL(MedicHealToIdle); + BWAPI_DECL(CastRestoration); + BWAPI_DECL(CastDisruptionWeb); + BWAPI_DECL(CastMindControl); + BWAPI_DECL(DarkArchonMeld); + BWAPI_DECL(CastFeedback); + BWAPI_DECL(CastOpticalFlare); + BWAPI_DECL(CastMaelstrom); + BWAPI_DECL(JunkYardDog); + BWAPI_DECL(Fatal); + BWAPI_DECL(None); + BWAPI_DECL(Unknown); +#undef BWAPI_DECL + }; +} diff --git a/bwapi4-includes/BWAPI/Player.h b/bwapi4-includes/BWAPI/Player.h new file mode 100644 index 0000000..71006e4 --- /dev/null +++ b/bwapi4-includes/BWAPI/Player.h @@ -0,0 +1,592 @@ +#pragma once +#include + +#include +#include +#include +#include +#include + +namespace BWAPI +{ + // Forwards + class Color; + class ForceInterface; + typedef ForceInterface *Force; + class PlayerType; + class TechType; + class Unitset; + class UpgradeType; + class WeaponType; + + struct PlayerData; + + class PlayerInterface; + typedef PlayerInterface *Player; + + /// The Player represents a unique controller in the game. Each player in a match will have his + /// or her own player instance. There is also a neutral player which owns all the neutral units + /// (such as mineral patches and vespene geysers). + /// + /// @see Playerset, PlayerType, Race + class PlayerInterface : public Interface + { + protected: + virtual ~PlayerInterface() {}; + public : + /// Retrieves a unique ID that represents the player. + /// + /// @returns + /// An integer representing the ID of the player. + virtual int getID() const = 0; + + /// Retrieves the name of the player. + /// + /// @returns + /// A std::string object containing the player's name. + /// + /// @note Don't forget to use std::string::c_str() when passing this parameter to + /// Game::sendText and other variadic functions. + /// + /// Example usage: + /// @code + /// BWAPI::Player myEnemy = BWAPI::Broodwar->enemy(); + /// if ( myEnemy != nullptr ) // Make sure there is an enemy! + /// BWAPI::Broodwar->sendText("Prepare to be crushed, %s!", myEnemy->getName().c_str()); + /// @endcode + virtual std::string getName() const = 0; + + /// Retrieves the set of all units that the player owns. This also includes incomplete units. + /// + /// @returns Reference to a Unitset containing the units. + /// + /// @note This does not include units that are loaded into transports, @Bunkers, @Refineries, + /// @Assimilators, or @Extractors. + /// + /// Example usage: + /// @code + /// Unitset myUnits = BWAPI::Broodwar->self()->getUnits(); + /// for ( auto u = myUnits.begin(); u != myUnits.end(); ++u ) + /// { + /// // Do something with your units + /// } + /// @endcode + virtual const Unitset &getUnits() const = 0; + + /// Retrieves the race of the player. This allows you to change strategies against different + /// races, or generalize some commands for yourself. + /// + /// @retval Races::Unknown If the player chose Races::Random when the game started and they + /// have not been seen. + /// + /// @returns + /// The Race that the player is using. + /// + /// Example usage: + /// @code + /// if ( BWAPI::Broodwar->enemy() ) + /// { + /// BWAPI::Race enemyRace = BWAPI::Broodwar->enemy()->getRace(); + /// if ( enemyRace == Races::Zerg ) + /// BWAPI::Broodwar->sendText("Do you really think you can beat me with a zergling rush?"); + /// } + /// @endcode + virtual Race getRace() const = 0; + + /// Retrieves the player's controller type. This allows you to distinguish betweeen computer + /// and human players. + /// + /// @returns + /// The PlayerType that identifies who is controlling a player. + /// + /// @note Other players using BWAPI will be treated as a human player and return + /// PlayerTypes::Player. + /// + /// @code + /// if ( BWAPI::Broodwar->enemy() ) + /// { + /// if ( BWAPI::Broodwar->enemy()->getType() == PlayerTypes::Computer ) + /// BWAPI::Broodwar << "Looks like something I can abuse!" << std::endl; + /// } + /// @endcode + virtual PlayerType getType() const = 0; + + /// Retrieves the player's force. A force is the team that the player is playing on. This is + /// only used in non-melee game types. + /// + /// @returns + /// The Force object that the player is part of. + virtual Force getForce() const = 0; + + /// Checks if this player is allied to the specified player. + /// + /// @param player + /// The player to check alliance with. + /// + /// @retval true if this player is allied with \p player . + /// @retval false if this player is not allied with \p player. + /// + /// @note This function will also return false if this player is neutral or an observer, or + /// if \p player is neutral or an observer. + /// + /// @see isEnemy + virtual bool isAlly(Player player) const = 0; + + /// Checks if this player is unallied to the specified player. + /// + /// @param player + /// The player to check alliance with. + /// + /// @retval true if this player is allied with \p player . + /// @retval false if this player is not allied with \p player . + /// + /// @note This function will also return false if this player is neutral or an observer, or if + /// \p player is neutral or an observer. + /// + /// @see isAlly + virtual bool isEnemy(Player player) const = 0; + + /// Checks if this player is the neutral player. + /// + /// @retval true if this player is the neutral player. + /// @retval false if this player is any other player. + virtual bool isNeutral() const = 0; + + /// Retrieve's the player's starting location. + /// + /// @returns + /// A TilePosition containing the position of the start location. + /// + /// @retval TilePositions::None if the player does not have a start location. + /// @retval TilePositions::Unknown if an error occured while trying to retrieve the start + /// location. + /// + /// @see Game::getStartLocations, Game::getLastError + virtual TilePosition getStartLocation() const = 0; + + /// Checks if the player has achieved victory. + /// + /// @returns true if this player has achieved victory, otherwise false + virtual bool isVictorious() const = 0; + + /// Checks if the player has been defeated. + /// + /// @returns true if the player is defeated, otherwise false + virtual bool isDefeated() const = 0; + + /// Checks if the player has left the game. + /// + /// @returns true if the player has left the game, otherwise false + virtual bool leftGame() const = 0; + + /// Retrieves the current amount of minerals/ore that this player has. + /// + /// @note This function will return 0 if the player is inaccessible. + /// + /// @returns Amount of minerals that the player currently has for spending. + virtual int minerals() const = 0; + + /// Retrieves the current amount of vespene gas that this player has. + /// + /// @note This function will return 0 if the player is inaccessible. + /// + /// @returns Amount of gas that the player currently has for spending. + virtual int gas() const = 0; + + /// Retrieves the cumulative amount of minerals/ore that this player has gathered since the + /// beginning of the game, including the amount that the player starts the game with (if any). + /// + /// @note This function will return 0 if the player is inaccessible. + /// + /// @returns Cumulative amount of minerals that the player has gathered. + virtual int gatheredMinerals() const = 0; + + /// Retrieves the cumulative amount of vespene gas that this player has gathered since the + /// beginning of the game, including the amount that the player starts the game with (if any). + /// + /// @note This function will return 0 if the player is inaccessible. + /// + /// @returns Cumulative amount of gas that the player has gathered. + virtual int gatheredGas() const = 0; + + /// Retrieves the cumulative amount of minerals/ore that this player has spent on repairing + /// units since the beginning of the game. This function only applies to @Terran players. + /// + /// @note This function will return 0 if the player is inaccessible. + /// + /// @returns Cumulative amount of minerals that the player has spent repairing. + virtual int repairedMinerals() const = 0; + + /// Retrieves the cumulative amount of vespene gas that this player has spent on repairing + /// units since the beginning of the game. This function only applies to @Terran players. + /// + /// @note This function will return 0 if the player is inaccessible. + /// + /// @returns Cumulative amount of gas that the player has spent repairing. + virtual int repairedGas() const = 0; + + /// Retrieves the cumulative amount of minerals/ore that this player has gained from refunding + /// (cancelling) units and structures. + /// + /// @note This function will return 0 if the player is inaccessible. + /// + /// @returns Cumulative amount of minerals that the player has received from refunds. + virtual int refundedMinerals() const = 0; + + /// Retrieves the cumulative amount of vespene gas that this player has gained from refunding + /// (cancelling) units and structures. + /// + /// @note This function will return 0 if the player is inaccessible. + /// + /// @returns Cumulative amount of gas that the player has received from refunds. + virtual int refundedGas() const = 0; + + /// Retrieves the cumulative amount of minerals/ore that this player has spent, excluding + /// repairs. + /// + /// @note This function will return 0 if the player is inaccessible. + /// + /// @returns Cumulative amount of minerals that the player has spent. + virtual int spentMinerals() const = 0; + + /// Retrieves the cumulative amount of vespene gas that this player has spent, excluding + /// repairs. + /// + /// @note This function will return 0 if the player is inaccessible. + /// + /// @returns Cumulative amount of gas that the player has spent. + virtual int spentGas() const = 0; + + /// Retrieves the total amount of supply the player has available for unit control. + /// + /// @note In Starcraft programming, the managed supply values are double than what they appear + /// in the game. The reason for this is because @Zerglings use 0.5 visible supply. + /// + /// @note In Starcraft, the supply for each race is separate. Having a @Pylon and an @Overlord + /// will not give you 32 supply. It will instead give you 16 @Protoss supply and 16 @Zerg + /// supply. + /// + /// @param race (optional) + /// The race to query the total supply for. If this is omitted, then the player's current + /// race will be used. + /// + /// @returns The total supply available for this player and the given \p race. + /// + /// Example usage: + /// @code + /// if ( BWAPI::Broodwar->self()->supplyUsed() + 8 >= BWAPI::Broodwar->self()->supplyTotal() ) + /// { + /// // Construct pylons, supply depots, or overlords + /// } + /// @endcode + /// @see supplyUsed + virtual int supplyTotal(Race race = Races::None) const = 0; + + /// Retrieves the current amount of supply that the player is using for unit control. + /// + /// @param race (optional) + /// The race to query the used supply for. If this is omitted, then the player's current + /// race will be used. + /// + /// @returns The supply that is in use for this player and the given \p race. + /// @see supplyTotal + virtual int supplyUsed(Race race = Races::None) const = 0; + + /// Retrieves the total number of units that the player has. If the information about the + /// player is limited, then this function will only return the number of visible units. + /// + /// @param unit (optional) + /// The unit type to query. UnitType macros are accepted. If this parameter is omitted, + /// then it will use UnitTypes::AllUnits by default. + /// + /// @returns The total number of units of the given type that the player owns. + /// @see visibleUnitCount, completedUnitCount, incompleteUnitCount + virtual int allUnitCount(UnitType unit = UnitTypes::AllUnits) const = 0; + + /// Retrieves the total number of strictly visible units that the player has, even if + /// information on the player is unrestricted. + /// + /// @param unit (optional) + /// The unit type to query. UnitType macros are accepted. If this parameter is omitted, + /// then it will use UnitTypes::AllUnits by default. + /// + /// @returns The total number of units of the given type that the player owns, and is visible + /// to the BWAPI player. + /// @see allUnitCount, completedUnitCount, incompleteUnitCount + virtual int visibleUnitCount(UnitType unit = UnitTypes::AllUnits) const = 0; + + /// Retrieves the number of completed units that the player has. If the information about the + /// player is limited, then this function will only return the number of visible completed + /// units. + /// + /// @param unit (optional) + /// The unit type to query. UnitType macros are accepted. If this parameter is omitted, + /// then it will use UnitTypes::AllUnits by default. + /// + /// @returns The number of completed units of the given type that the player owns. + /// + /// Example usage: + /// @code + /// bool obtainNextUpgrade(BWAPI::UpgradeType upgType) + /// { + /// BWAPI::Player self = BWAPI::Broodwar->self(); + /// int maxLvl = self->getMaxUpgradeLevel(upgType); + /// int currentLvl = self->getUpgradeLevel(upgType); + /// if ( !self->isUpgrading(upgType) && currentLvl < maxLvl && + /// self->completedUnitCount(upgType.whatsRequired(currentLvl+1)) > 0 && + /// self->completedUnitCount(upgType.whatUpgrades()) > 0 ) + /// return self->getUnits().upgrade(upgType); + /// return false; + /// } + /// @endcode + /// + /// @see allUnitCount, visibleUnitCount, incompleteUnitCount + virtual int completedUnitCount(UnitType unit = UnitTypes::AllUnits) const = 0; + + /// Retrieves the number of incomplete units that the player has. If the information about the + /// player is limited, then this function will only return the number of visible incomplete + /// units. + /// + /// @note This function is a macro for allUnitCount() - completedUnitCount(). + /// + /// @param unit (optional) + /// The unit type to query. UnitType macros are accepted. If this parameter is omitted, + /// then it will use UnitTypes::AllUnits by default. + /// + /// @returns The number of incomplete units of the given type that the player owns. + /// @see allUnitCount, visibleUnitCount, completedUnitCount + int incompleteUnitCount(UnitType unit = UnitTypes::AllUnits) const; + + /// Retrieves the number units that have died for this player. + /// + /// @param unit (optional) + /// The unit type to query. UnitType macros are accepted. If this parameter is omitted, + /// then it will use UnitTypes::AllUnits by default. + /// + /// @returns The total number of units that have died throughout the game. + virtual int deadUnitCount(UnitType unit = UnitTypes::AllUnits) const = 0; + + /// Retrieves the number units that the player has killed. + /// + /// @param unit (optional) + /// The unit type to query. UnitType macros are accepted. If this parameter is omitted, + /// then it will use UnitTypes::AllUnits by default. + /// + /// @returns The total number of units that the player has killed throughout the game. + virtual int killedUnitCount(UnitType unit = UnitTypes::AllUnits) const = 0; + + /// Retrieves the current upgrade level that the player has attained for a given upgrade type. + /// + /// @param upgrade + /// The UpgradeType to query. + /// + /// @returns The number of levels that the \p upgrade has been upgraded for this player. + /// + /// Example usage: + /// @code + /// bool obtainNextUpgrade(BWAPI::UpgradeType upgType) + /// { + /// BWAPI::Player self = BWAPI::Broodwar->self(); + /// int maxLvl = self->getMaxUpgradeLevel(upgType); + /// int currentLvl = self->getUpgradeLevel(upgType); + /// if ( !self->isUpgrading(upgType) && currentLvl < maxLvl && + /// self->completedUnitCount(upgType.whatsRequired(currentLvl+1)) > 0 && + /// self->completedUnitCount(upgType.whatUpgrades()) > 0 ) + /// return self->getUnits().upgrade(upgType); + /// return false; + /// } + /// @endcode + /// + /// @see UnitInterface::upgrade, getMaxUpgradeLevel + virtual int getUpgradeLevel(UpgradeType upgrade) const = 0; + + /// Checks if the player has already researched a given technology. + /// + /// @param tech + /// The TechType to query. + /// + /// @returns true if the player has obtained the given \p tech, or false if they have not + /// @see isResearching, UnitInterface::research, isResearchAvailable + virtual bool hasResearched(TechType tech) const = 0; + + /// Checks if the player is researching a given technology type. + /// + /// @param tech + /// The TechType to query. + /// + /// @returns true if the player is currently researching the \p tech, or false otherwise + /// @see UnitInterface::research, hasResearched + virtual bool isResearching(TechType tech) const = 0; + + /// Checks if the player is upgrading a given upgrade type. + /// + /// @param upgrade + /// The upgrade type to query. + /// + /// @returns true if the player is currently upgrading the given \p upgrade, false otherwise + /// + /// Example usage: + /// @code + /// bool obtainNextUpgrade(BWAPI::UpgradeType upgType) + /// { + /// BWAPI::Player self = BWAPI::Broodwar->self(); + /// int maxLvl = self->getMaxUpgradeLevel(upgType); + /// int currentLvl = self->getUpgradeLevel(upgType); + /// if ( !self->isUpgrading(upgType) && currentLvl < maxLvl && + /// self->completedUnitCount(upgType.whatsRequired(currentLvl+1)) > 0 && + /// self->completedUnitCount(upgType.whatUpgrades()) > 0 ) + /// return self->getUnits().upgrade(upgType); + /// return false; + /// } + /// @endcode + /// + /// @see UnitInterface::upgrade + virtual bool isUpgrading(UpgradeType upgrade) const = 0; + + /// Retrieves the color value of the current player. + /// + /// @returns Color object that represents the color of the current player. + virtual BWAPI::Color getColor() const = 0; + + /// Retrieves the control code character that changes the color of text messages to represent + /// this player. + /// + /// @returns character code to use for text in Broodwar. + char getTextColor() const; + + /// Retrieves the maximum amount of energy that a unit type will have, taking the player's + /// energy upgrades into consideration. + /// + /// @param unit + /// The UnitType to retrieve the maximum energy for. + /// + /// @returns Maximum amount of energy that the given unit type can have. + int maxEnergy(UnitType unit) const; + + /// Retrieves the top speed of a unit type, taking the player's speed upgrades into + /// consideration. + /// + /// @param unit + /// The UnitType to retrieve the top speed for. + /// + /// @returns Top speed of the provided unit type for this player. + double topSpeed(UnitType unit) const; + + /// Retrieves the maximum weapon range of a weapon type, taking the player's weapon upgrades + /// into consideration. + /// + /// @param weapon + /// The WeaponType to retrieve the maximum range for. + /// + /// @returns Maximum range of the given weapon type for units owned by this player. + int weaponMaxRange(WeaponType weapon) const; + + /// Retrieves the sight range of a unit type, taking the player's sight range upgrades into + /// consideration. + /// + /// @param unit + /// The UnitType to retrieve the sight range for. + /// + /// @returns Sight range of the provided unit type for this player. + int sightRange(UnitType unit) const; + + /// Retrieves the weapon cooldown of a unit type, taking the player's attack speed upgrades + /// into consideration. + /// + /// @param unit + /// The UnitType to retrieve the damage cooldown for. + /// + /// @returns Weapon cooldown of the provided unit type for this player. + int weaponDamageCooldown(UnitType unit) const; + + /// Calculates the armor that a given unit type will have, including upgrades. + /// + /// @param unit + /// The unit type to calculate armor for, using the current player's upgrades. + /// + /// @returns The amount of armor that the unit will have with the player's upgrades. + int armor(UnitType unit) const; + + /// Calculates the damage that a given weapon type can deal, including upgrades. + /// + /// @param wpn + /// The weapon type to calculate for. + /// + /// @returns The amount of damage that the weapon deals with this player's upgrades. + int damage(WeaponType wpn) const; + + /// Retrieves the total unit score, as seen in the end-game score screen. + /// + /// @returns The player's unit score. + virtual int getUnitScore() const = 0; + + /// Retrieves the total kill score, as seen in the end-game score screen. + /// + /// @returns The player's kill score. + virtual int getKillScore() const = 0; + + /// Retrieves the total building score, as seen in the end-game score screen. + /// + /// @returns The player's building score. + virtual int getBuildingScore() const = 0; + + /// Retrieves the total razing score, as seen in the end-game score screen. + /// + /// @returns The player's razing score. + virtual int getRazingScore() const = 0; + + /// Retrieves the player's custom score. This score is used in @UMS game types. + /// + /// @returns The player's custom score. + virtual int getCustomScore() const = 0; + + /// Checks if the player is an observer player, typically in a @UMS observer game. An observer + /// player does not participate in the game. + /// + /// @returns true if the player is observing, or false if the player is capable of playing in + /// the game. + virtual bool isObserver() const = 0; + + /// Retrieves the maximum upgrades available specific to the player. This value is only + /// different from UpgradeType::maxRepeats in @UMS games. + /// + /// @param upgrade + /// The UpgradeType to retrieve the maximum upgrade level for. + /// + /// @returns Maximum upgrade level of the given \p upgrade type. + /// + /// Example usage: + /// @code + /// bool obtainNextUpgrade(BWAPI::UpgradeType upgType) + /// { + /// BWAPI::Player self = BWAPI::Broodwar->self(); + /// int maxLvl = self->getMaxUpgradeLevel(upgType); + /// int currentLvl = self->getUpgradeLevel(upgType); + /// if ( !self->isUpgrading(upgType) && currentLvl < maxLvl && + /// self->completedUnitCount(upgType.whatsRequired(currentLvl+1)) > 0 && + /// self->completedUnitCount(upgType.whatUpgrades()) > 0 ) + /// return self->getUnits().upgrade(upgType); + /// return false; + /// } + /// @endcode + virtual int getMaxUpgradeLevel(UpgradeType upgrade) const = 0; + + /// Checks if a technology can be researched by the player. Certain technologies may be + /// disabled in @UMS game types. + /// + /// @param tech + /// The TechType to query. + /// + /// @returns true if the \p tech type is available to the player for research. + virtual bool isResearchAvailable(TechType tech) const = 0; + + /// Checks if a unit type can be created by the player. Certain unit types may be disabled in + /// @UMS game types. + /// + /// @param unit + /// The UnitType to check. + /// + /// @returns true if the \p unit type is available to the player. + virtual bool isUnitAvailable(UnitType unit) const = 0; + }; +}; diff --git a/bwapi4-includes/BWAPI/PlayerType.h b/bwapi4-includes/BWAPI/PlayerType.h new file mode 100644 index 0000000..3a370aa --- /dev/null +++ b/bwapi4-includes/BWAPI/PlayerType.h @@ -0,0 +1,65 @@ +#pragma once +#include + +namespace BWAPI +{ + namespace PlayerTypes + { + /// Enumeration of player types (player controllers) + namespace Enum + { + /// Enumeration of player types (player controllers) + enum Enum + { + None = 0, + Computer, + Player, + RescuePassive, + RescueActive, + EitherPreferComputer, + EitherPreferHuman, + Neutral, + Closed, + Observer, + PlayerLeft, + ComputerLeft, + Unknown, + MAX + }; + }; + }; + class PlayerType : public Type + { + public: + /// @copydoc Type::Type(int) + PlayerType(int id = PlayerTypes::Enum::None); + + bool isLobbyType() const; + bool isGameType() const; + }; + /// Namespace containing player types (player controllers) + namespace PlayerTypes + { + /// Retrieves the set of all the PlayerTypes. + /// + /// @returns Set consisting of all valid PlayerTypes. + const PlayerType::const_set& allPlayerTypes(); + +#ifdef BWAPI_DECL +#undef BWAPI_DECL +#endif +#define BWAPI_DECL(x) /** x */ extern const PlayerType x + BWAPI_DECL(None); + BWAPI_DECL(Computer); + BWAPI_DECL(Player); + BWAPI_DECL(RescuePassive); + BWAPI_DECL(EitherPreferComputer); + BWAPI_DECL(EitherPreferHuman); + BWAPI_DECL(Neutral); + BWAPI_DECL(Closed); + BWAPI_DECL(PlayerLeft); + BWAPI_DECL(ComputerLeft); + BWAPI_DECL(Unknown); +#undef BWAPI_DECL + } +} diff --git a/bwapi4-includes/BWAPI/Playerset.h b/bwapi4-includes/BWAPI/Playerset.h new file mode 100644 index 0000000..914a1b8 --- /dev/null +++ b/bwapi4-includes/BWAPI/Playerset.h @@ -0,0 +1,47 @@ +#pragma once +#include + +#include +#include + +namespace BWAPI +{ + // Forward Declarations + class PlayerInterface; + typedef PlayerInterface *Player; + class Unitset; + + class Playerset : public Vectorset + { + public: + Playerset(size_t initialSize = 16); + Playerset(const Playerset &other); + Playerset(Playerset &&other); + + /// Returns the set of all units that every + /// player in this set owns. + /// + /// @returns Unitset containing Playerset's units + /// @see PlayerInterface::getUnits + Unitset getUnits() const; + + /// Returns the list of races that each player + /// in the set is. + /// + /// @returns Race::set containing Playerset's races + /// @see PlayerInterface::getRace + Race::set getRaces() const; + + /// Sets the alliance status with all players + /// contained in the Playerset. + /// + /// @param allies Set to true to set the player + /// to allied, or false for enemy. + /// @param alliedVictory Set to true to turn on + /// allied victory, or false to disable it + /// @see Game::setAlliance + void setAlliance(bool allies = true, bool alliedVictory = true); + + }; +} + diff --git a/bwapi4-includes/BWAPI/Position.h b/bwapi4-includes/BWAPI/Position.h new file mode 100644 index 0000000..1fc8f28 --- /dev/null +++ b/bwapi4-includes/BWAPI/Position.h @@ -0,0 +1,266 @@ +#pragma once +#include +#include +#include +#include + +#include + +#ifndef _MAKE_POSITION_TEMPLATE + +#ifdef SWIG +#define _MAKE_POSITION_TEMPLATE(_n,_t,_s) typedef BWAPI::Point<_t,_s> _n; +#else +#define _MAKE_POSITION_TEMPLATE(_n,_t,_s) typedef BWAPI::Point<_t,_s> _n; \ + namespace _n ## s \ + { const _n Invalid(32000/_s,32000/_s); \ + const _n None(32000/_s,32032/_s); \ + const _n Unknown(32000/_s,32064/_s); \ + const _n Origin(0,0); \ + } +#endif + +#define _OPERATOR_OP_PT(op) Point operator op (const Point &pos) const \ + { return Point(this->x op pos.x, this->y op pos.y); }; \ + Point &operator op ## = (const Point &pos) \ + { this->x op ## = pos.x; this->y op ## = pos.y; \ + return *this; }; + +#define _OPERATOR_OP_VAL(op) Point operator op (const _T &val) const \ + { return Point(this->x op val, this->y op val); }; \ + Point &operator op ## = (const _T &val) \ + { this->x op ## = val; this->y op ## = val; \ + return *this; }; + +#define _OPERATOR_OP_VAL_CHK(op) Point operator op (const _T &val) const \ + { if ( val == 0 ) return Point(32000/__Scale,32000/__Scale); \ + return Point(this->x op val, this->y op val); }; \ + Point &operator op ## = (const _T &val) \ + { if ( val == 0 ) { this->x = 32000/__Scale; this->y = 32000/__Scale; } \ + else { this->x op ## = val; this->y op ## = val; } \ + return *this; }; + +#endif + +namespace BWAPI +{ + // Declaration + template + class Point; + + // Restrictions (no division by 0 or types too small to contain map positions) + template class Point<_T, 0> {}; + template class Point {}; + template class Point {}; + template class Point {}; + + // ------------------------------------------------------ Point template ---------------- + template + class Point + { + public: + typedef Vectorset< Point<_T,__Scale> > set; + + // Constructors + Point(_T _x = 0, _T _y = 0) : x(_x), y(_y) {}; + template Point(const Point<_NT, __Scale> &pt) : x( (_T)pt.x ), y( (_T)pt.y ) {}; + +#pragma warning( push ) +#pragma warning( disable: 4723 ) + // Conversion constructor + template explicit Point(const Point<_NT, __NScale> &pt) + : x( (_T)(__NScale > __Scale ? pt.x*(__NScale/__Scale) : pt.x/(__Scale/__NScale)) ) + , y( (_T)(__NScale > __Scale ? pt.y*(__NScale/__Scale) : pt.y/(__Scale/__NScale)) ) { }; +#pragma warning( pop ) + + // Conversion restriction constructor + template Point(const Point<_NT, 0> &pt) : x(0), y(0) {}; + + // Operators + operator bool() const { return this->isValid(); }; + + bool operator == (const Point<_T,__Scale> &pos) const + { + return std::tie(this->x, this->y) == std::tie(pos.x, pos.y); + }; + bool operator != (const Point<_T,__Scale> &pos) const + { + return !(*this == pos); + }; + + bool operator < (const Point<_T,__Scale> &position) const + { + return std::tie(this->x, this->y) < std::tie(position.x, position.y); + }; + + _OPERATOR_OP_PT(+) + _OPERATOR_OP_PT(-) + + _OPERATOR_OP_VAL(*) + _OPERATOR_OP_VAL(&) + _OPERATOR_OP_VAL(|) + _OPERATOR_OP_VAL(^) + + _OPERATOR_OP_VAL_CHK(/) + _OPERATOR_OP_VAL_CHK(%) + + /// Ouput stream operator overload. Outputs the Point in the format "(x,y)" without + /// quotations. + /// + /// @param out + /// Output stream. + /// @param pt + /// Point to output. + /// @returns Output stream \p out. + friend std::ostream &operator << (std::ostream &out, const Point<_T,__Scale> &pt) + { + return out << '(' << pt.x << ',' << pt.y << ')'; + }; + + /// Input stream operator overload. Reads the input in the form "x y" without quotations. + /// The x and y values are read as type T(typically int or float) and stored into pt. + /// + /// @param in + /// The input stream. + /// @param pt + /// The receiving variable. + /// @returns Input stream \p in. + friend std::istream &operator >> (std::istream &in, Point<_T,__Scale> &pt) + { + return in >> pt.x >> pt.y; + }; + + /// Checks if this point is within the game's map bounds. + /// + /// @note If the Broodwar pointer is not initialized, this function will check validity + /// against the largest (256x256) map size. + /// + /// @retval true If it is a valid position and on the map/playing field. + /// @retval false If this is not a valid position. + /// + /// @see makeValid + bool isValid() const; + + /// Checks if this point is within the game's map bounds, if not, then it will set the x and y + /// values to be within map bounds. (Example: If x is less than 0, then x is set to 0) + /// + /// @note If the Broodwar pointer is not initialized, this function will check validity + /// against the largest (256x256) map size. + /// + /// @returns A reference to itself. + /// @see isValid + Point &makeValid(); + + /// Gets an accurate distance measurement from this point to the given position. + /// + /// @note This function impedes performance. In most cases you should use getApproxDistance. + /// + /// @param position + /// The target position to get the distance to. + /// + /// @returns A double representing the distance between this point and \p position. + /// @see getApproxDistance + double getDistance(const Point<_T,__Scale> &position) const + { + return ((*this) - position).getLength(); + }; + + /// Gets the length of this point from the top left corner of the map. + /// + /// @note This function impedes performance. In most cases you should use getApproxDistance. + /// + /// @returns A double representing the length of this point from (0,0). + /// @see getApproxDistance + double getLength() const + { + double x = (double)this->x; + double y = (double)this->y; + return sqrt(x * x + y * y); + }; + + /// Retrieves the approximate distance using an algorithm from Starcraft: Broodwar. + /// + /// @note This function is desired because it uses the same "imperfect" algorithm used in + /// Broodwar, so that calculations will be consistent with the game. It is also optimized + /// for performance. + /// + /// @param position + /// The target point to measure the distance to. + /// + /// @returns An integer representing the distance between this point and \p position. + /// @see getDistance + int getApproxDistance(const Point<_T,__Scale> &position) const + { + unsigned int min = abs((int)(this->x - position.x)); + unsigned int max = abs((int)(this->y - position.y)); + if ( max < min ) + std::swap(min, max); + + if ( min < (max >> 2) ) + return max; + + unsigned int minCalc = (3*min) >> 3; + return (minCalc >> 5) + minCalc + max - (max >> 4) - (max >> 6); + }; + + /// Sets the maximum x and y values. If the current x or y values exceed the given maximum, + /// then values are set to the maximum. + /// + /// @param max_x + /// Maximum x value. + /// @param max_y + /// Maximum y value. + /// + /// @returns A reference to itself. + /// @see setMin + Point &setMax(_T max_x, _T max_y) + { + if ( x > max_x ) + x = max_x; + if ( y > max_y ) + y = max_y; + return *this; + }; + /// @overload + Point &setMax(const Point<_T,__Scale> &max) + { + this->setMax(max.x, max.y); + return *this; + }; + + /// Sets the minimum x and y values. If the current x or y values are below the given minimum, + /// then values are set to the minimum. + /// + /// @param min_x + /// Minimum x value. + /// @param min_y + /// Minimum y value. + /// + /// @returns A reference to itself. + /// @see setMax + Point &setMin(_T min_x, _T min_y) + { + if ( x < min_x ) + x = min_x; + if ( y < min_y ) + y = min_y; + return *this; + }; + /// @overload + Point &setMin(const Point<_T,__Scale> &min) + { + this->setMin(min.x, min.y); + return *this; + }; + + /// The x and y members for this class. + /// + /// Simply reference these members when retrieving a position's x and y values. + _T x, y; + }; + + _MAKE_POSITION_TEMPLATE(WalkPosition,int,8) + _MAKE_POSITION_TEMPLATE(Position,int,1) + _MAKE_POSITION_TEMPLATE(TilePosition,int,32) +} + diff --git a/bwapi4-includes/BWAPI/PositionUnit.h b/bwapi4-includes/BWAPI/PositionUnit.h new file mode 100644 index 0000000..d50ef2c --- /dev/null +++ b/bwapi4-includes/BWAPI/PositionUnit.h @@ -0,0 +1,45 @@ +#pragma once +#include + +namespace BWAPI +{ + class UnitInterface; + typedef UnitInterface *Unit; + + /// PositionOrUnit is a class that is either a Position OR a Unit. The purpose of this class is + /// to reduce interface overhead by combining two commonly passed values into one, and to allow + /// more function overloads with little effort. + class PositionOrUnit + { + public: + // constructors + PositionOrUnit(Unit unit = nullptr); + PositionOrUnit(Position pos); + + // operators + PositionOrUnit &operator =(Unit pUnit); + PositionOrUnit &operator =(Position pos); + + // members (unit) + bool isUnit() const; + Unit getUnit() const; + + // members (position) + bool isPosition() const; + Position getPosition() const; + private: + union + { + struct + { + int x, y; + } position; + struct + { + Unit pUnit; + int y; + } unit; + }; + }; + +} diff --git a/bwapi4-includes/BWAPI/Race.h b/bwapi4-includes/BWAPI/Race.h new file mode 100644 index 0000000..397a3d3 --- /dev/null +++ b/bwapi4-includes/BWAPI/Race.h @@ -0,0 +1,104 @@ +#pragma once +#include + +namespace BWAPI +{ + class UnitType; + + namespace Races + { + /// Enumeration of races + namespace Enum + { + /// Enumeration of races + enum Enum + { + Zerg = 0, + Terran, + Protoss, + Other, + Unused, + Select, + Random, + None, + Unknown, + MAX + }; + }; + } + + /// The Race object is used to get information about a particular race. For example, the default + /// worker and supply provider UnitType. + /// + /// As you should already know, Starcraft has three races: @Terran , @Protoss , and @Zerg . + /// @see UnitType::getRace, PlayerInterface::getRace + class Race : public Type + { + public: + /// @copydoc Type::Type(int) + Race(int id = Races::Enum::None); + + /// Retrieves the default worker type for this Race. + /// + /// @note In Starcraft, workers are the units that are used to construct structures. + /// + /// @returns UnitType of the worker that this race uses. + UnitType getWorker() const; + + /// Retrieves the default resource center UnitType that is used to create expansions for + /// this Race. + /// + /// @note In Starcraft, the center is the very first structure of the Race's technology + /// tree. Also known as its base of operations or resource depot. + /// + /// @returns UnitType of the center that this race uses. + UnitType getCenter() const; + + /// Retrieves the default structure UnitType for this Race that is used to harvest gas from + /// @Geysers . + /// + /// @note In Starcraft, you must first construct a structure over a @Geyser in order to + /// begin harvesting Vespene Gas. + /// + /// @returns UnitType of the structure used to harvest gas. + UnitType getRefinery() const; + + /// Retrieves the default transport UnitType for this race that is used to transport ground + /// units across the map. + /// + /// @note In Starcraft, transports will allow you to carry ground units over unpassable + /// terrain. + /// + /// @returns UnitType for transportation. + UnitType getTransport() const; + + /// Retrieves the default supply provider UnitType for this race that is used to construct + /// units. + /// + /// @note In Starcraft, training, morphing, or warping in units requires that the player + /// has sufficient supply available for their Race. + /// + /// @returns UnitType that provides the player with supply. + UnitType getSupplyProvider() const; + }; + /// Namespace containing all races + namespace Races + { + /// Retrieves the set of all races. + /// + /// @returns Race::set containing all the Race types. + const Race::const_set& allRaces(); + +#ifdef BWAPI_DECL +#undef BWAPI_DECL +#endif +#define BWAPI_DECL(x) /** x */ extern const Race x + BWAPI_DECL(Zerg); + BWAPI_DECL(Terran); + BWAPI_DECL(Protoss); + BWAPI_DECL(Random); + BWAPI_DECL(None); + BWAPI_DECL(Unknown); +#undef BWAPI_DECL + } +} diff --git a/bwapi4-includes/BWAPI/Region.h b/bwapi4-includes/BWAPI/Region.h new file mode 100644 index 0000000..a2aaf79 --- /dev/null +++ b/bwapi4-includes/BWAPI/Region.h @@ -0,0 +1,129 @@ +#pragma once +#include +#include +#include +#include + +namespace BWAPI +{ + class Regionset; + class Unitset; + + class RegionInterface; + typedef RegionInterface *Region; + + /// Region objects are created by Starcraft: Broodwar to contain several tiles with the same + /// properties, and create a node in pathfinding and other algorithms. Regions may not contain + /// detailed information, but have a sufficient amount of data to identify general chokepoints, + /// accessibility to neighboring terrain, be used in general pathing algorithms, and used as + /// nodes to rally units to. + /// + /// Most parameters that are available are explicitly assigned by Broodwar itself. + /// + /// @see Game::getAllRegions, Game::getRegionAt, UnitInterface::getRegion + class RegionInterface : public Interface + { + protected: + virtual ~RegionInterface() {}; + public: + /// Retrieves a unique identifier for this region. + /// + /// @note This identifier is explicitly assigned by Broodwar. + /// + /// @returns An integer that represents this region. + /// @see Game::getRegion + virtual int getID() const = 0; + + /// Retrieves a unique identifier for a group of regions that are all connected and accessible + /// by each other. That is, all accessible regions will have the same group ID. This function + /// is generally used to check if a path is available between two points in constant time. + /// + /// @note This identifier is explicitly assigned by Broodwar. + /// + /// @returns An integer that represents the group of regions that this one is attached to. + virtual int getRegionGroupID() const = 0; + + /// Retrieves the center of the region. This position is used as the node of the region. + /// + /// @returns A Position indicating the center location of the Region, in pixels. + virtual BWAPI::Position getCenter() const = 0; + + /// Checks if this region is part of higher ground. Higher ground may be used in strategic + /// placement of units and structures. + /// + /// @returns true if this region is part of strategic higher ground, and false otherwise. + virtual bool isHigherGround() const = 0; + + /// Retrieves a value that represents the strategic advantage of this region relative to other + /// regions. A value of 2 may indicate a possible choke point, and a value of 3 indicates a + /// signficant strategic position. + /// + /// @note This value is explicitly assigned by Broodwar. + /// + /// @returns An integer indicating this region's strategic potential. + virtual int getDefensePriority() const = 0; + + /// Retrieves the state of accessibility of the region. The region is considered accessible + /// if it can be accessed by ground units. + /// + /// @returns true if ground units can traverse this region, and false if the tiles in this + /// region are inaccessible or unwalkable. + virtual bool isAccessible() const = 0; + + /// Retrieves the set of neighbor Regions that this one is connected to. + /// + /// @returns A reference to a Regionset containing the neighboring Regions. + virtual const Regionset &getNeighbors() const = 0; + + /// Retrieves the approximate left boundary of the region. + /// + /// @returns The x coordinate, in pixels, of the approximate left boundary of the region. + virtual int getBoundsLeft() const = 0; + + /// Retrieves the approximate top boundary of the region. + /// + /// @returns The y coordinate, in pixels, of the approximate top boundary of the region. + virtual int getBoundsTop() const = 0; + + /// Retrieves the approximate right boundary of the region. + /// + /// @returns The x coordinate, in pixels, of the approximate right boundary of the region. + virtual int getBoundsRight() const = 0; + + /// Retrieves the approximate bottom boundary of the region. + /// + /// @returns The y coordinate, in pixels, of the approximate bottom boundary of the region. + virtual int getBoundsBottom() const = 0; + + /// Retrieves the closest accessible neighbor region. + /// + /// @returns The closest Region that is accessible. + virtual BWAPI::Region getClosestAccessibleRegion() const = 0; + + /// Retrieves the closest inaccessible neighbor region. + /// + /// @returns The closest Region that is inaccessible. + virtual BWAPI::Region getClosestInaccessibleRegion() const = 0; + + /// Retrieves the center-to-center distance between two regions. + /// + /// @param other + /// The target Region to calculate distance to. + /// @returns The integer distance from this Region to \p other. + int getDistance(BWAPI::Region other) const; + + /// Retrieves a Unitset containing all the units that are in this region. Also has the ability + /// to filter the units before the creation of the Unitset. + /// + /// @param pred (optional) + /// If this parameter is used, it is a UnitFilter or function predicate that will retrieve + /// only the units whose attributes match the given criteria. If omitted, then a default + /// value of nullptr is used, in which case there is no filter. + /// + /// @returns A Unitset containing all units in this region that have met the requirements + /// of \p pred. + /// + /// @see UnitFilter + Unitset getUnits(const UnitFilter &pred = nullptr) const; + }; +}; diff --git a/bwapi4-includes/BWAPI/Regionset.h b/bwapi4-includes/BWAPI/Regionset.h new file mode 100644 index 0000000..5d68756 --- /dev/null +++ b/bwapi4-includes/BWAPI/Regionset.h @@ -0,0 +1,28 @@ +#pragma once +#include +#include +#include + +namespace BWAPI +{ + // Forward Declarations + class RegionInterface; + typedef RegionInterface *Region; + + class Unitset; + + class Regionset : public Vectorset + { + public: + Regionset(size_t initialSize = 16); + Regionset(const Regionset &other); + Regionset(Regionset &&other); + + /// @copydoc RegionInterface::getCenter + Position getCenter() const; + + /// @copydoc RegionInterface::getUnits + Unitset getUnits(const UnitFilter &pred = nullptr) const; + }; +} + diff --git a/bwapi4-includes/BWAPI/TechType.h b/bwapi4-includes/BWAPI/TechType.h new file mode 100644 index 0000000..b538dd5 --- /dev/null +++ b/bwapi4-includes/BWAPI/TechType.h @@ -0,0 +1,185 @@ +#pragma once +#include +#include + +namespace BWAPI +{ + class WeaponType; + class Order; + class Race; + + namespace TechTypes + { + /// Enumeration of Tech Types + namespace Enum + { + /// Enumeration of Tech Types + enum Enum + { + Stim_Packs = 0, + Lockdown, + EMP_Shockwave, + Spider_Mines, + Scanner_Sweep, + Tank_Siege_Mode, + Defensive_Matrix, + Irradiate, + Yamato_Gun, + Cloaking_Field, + Personnel_Cloaking, + Burrowing, + Infestation, + Spawn_Broodlings, + Dark_Swarm, + Plague, + Consume, + Ensnare, + Parasite, + Psionic_Storm, + Hallucination, + Recall, + Stasis_Field, + Archon_Warp, + Restoration, + Disruption_Web, + Unused_26, + Mind_Control, + Dark_Archon_Meld, + Feedback, + Optical_Flare, + Maelstrom, + Lurker_Aspect, + Unused_33, + Healing, + + None = 44, + Nuclear_Strike, + Unknown, + MAX + }; + }; + } + /// The TechType (or Technology Type, also referred to as an Ability) represents a Unit's ability + /// which can be researched with UnitInterface::research or used with UnitInterface::useTech. In order for a Unit + /// to use its own specialized ability, it must first be available and researched. + class TechType : public Type + { + public: + /// @copydoc Type::Type(int) + TechType(int id = TechTypes::Enum::None); + + /// Retrieves the race that is required to research or use the TechType. + /// + /// @note There is an exception where @Infested_Kerrigan can use @Psi_Storm. This does not + /// apply to the behavior of this function. + /// + /// @returns Race object indicating which race is designed to use this technology type. + Race getRace() const; + + /// Retrieves the mineral cost of researching this technology. + /// + /// @returns Amount of minerals needed in order to research this technology. + int mineralPrice() const; + + /// Retrieves the vespene gas cost of researching this technology. + /// + /// @returns Amount of vespene gas needed in order to research this technology. + int gasPrice() const; + + /// Retrieves the number of frames needed to research the tech type. + /// + /// @returns The time, in frames, it will take for the research to complete. + /// @see UnitInterface::getRemainingResearchTime + int researchTime() const; + + /// Retrieves the amount of energy needed to use this TechType as an ability. + /// + /// @returns Energy cost of the ability. + /// @see UnitInterface::getEnergy + int energyCost() const; + + /// Retrieves the UnitType that can research this technology. + /// + /// @returns UnitType that is able to research the technology in the game. + /// @retval UnitTypes::None If the technology/ability is either provided for free or never + /// available. + UnitType whatResearches() const; + + /// Retrieves the Weapon that is attached to this tech type. A technology's WeaponType + /// is used to indicate the range and behaviour of the ability when used by a Unit. + /// + /// @returns WeaponType containing information about the ability's behavior. + /// @retval WeaponTypes::None If there is no corresponding WeaponType. + WeaponType getWeapon() const; + + /// Checks if this ability can be used on other units. + /// + /// @returns true if the ability can be used on other units, and false if it can not. + bool targetsUnit() const; + + /// Checks if this ability can be used on the terrain (ground). + /// + /// @returns true if the ability can be used on the terrain. + bool targetsPosition() const; + + /// Retrieves the set of all UnitTypes that are capable of using this ability. + /// + /// @returns Set of UnitTypes that can use this ability when researched. + const UnitType::const_set& whatUses() const; + + /// Retrieves the Order that a Unit uses when using this ability. + /// + /// @returns Order representing the action a Unit uses to perform this ability + Order getOrder() const; + }; + /// Namespace containing tech types + namespace TechTypes + { + /// Retrieves the set of all the TechTypes. + /// + /// @returns Set of all available TechTypes. + const TechType::const_set& allTechTypes(); + +#ifdef BWAPI_DECL +#undef BWAPI_DECL +#endif +#define BWAPI_DECL(x) /** x */ extern const TechType x + BWAPI_DECL(Stim_Packs); + BWAPI_DECL(Lockdown); + BWAPI_DECL(EMP_Shockwave); + BWAPI_DECL(Spider_Mines); + BWAPI_DECL(Scanner_Sweep); + BWAPI_DECL(Tank_Siege_Mode); + BWAPI_DECL(Defensive_Matrix); + BWAPI_DECL(Irradiate); + BWAPI_DECL(Yamato_Gun); + BWAPI_DECL(Cloaking_Field); + BWAPI_DECL(Personnel_Cloaking); + BWAPI_DECL(Burrowing); + BWAPI_DECL(Infestation); + BWAPI_DECL(Spawn_Broodlings); + BWAPI_DECL(Dark_Swarm); + BWAPI_DECL(Plague); + BWAPI_DECL(Consume); + BWAPI_DECL(Ensnare); + BWAPI_DECL(Parasite); + BWAPI_DECL(Psionic_Storm); + BWAPI_DECL(Hallucination); + BWAPI_DECL(Recall); + BWAPI_DECL(Stasis_Field); + BWAPI_DECL(Archon_Warp); + BWAPI_DECL(Restoration); + BWAPI_DECL(Disruption_Web); + BWAPI_DECL(Mind_Control); + BWAPI_DECL(Dark_Archon_Meld); + BWAPI_DECL(Feedback); + BWAPI_DECL(Optical_Flare); + BWAPI_DECL(Maelstrom); + BWAPI_DECL(Lurker_Aspect); + BWAPI_DECL(Healing); + BWAPI_DECL(None); + BWAPI_DECL(Nuclear_Strike); + BWAPI_DECL(Unknown); +#undef BWAPI_DECL + }; +} diff --git a/bwapi4-includes/BWAPI/TournamentAction.h b/bwapi4-includes/BWAPI/TournamentAction.h new file mode 100644 index 0000000..86d1e2f --- /dev/null +++ b/bwapi4-includes/BWAPI/TournamentAction.h @@ -0,0 +1,25 @@ +#pragma once + +namespace BWAPI +{ + namespace Tournament + { + enum ActionID + { + EnableFlag, + PauseGame, + ResumeGame, + LeaveGame, + SetLocalSpeed, + SetTextSize, + SetLatCom, + SetGUI, + SetMap, + SetFrameSkip, + Printf, + SendText, + SetCommandOptimizationLevel + }; + + }; +}; diff --git a/bwapi4-includes/BWAPI/Type.h b/bwapi4-includes/BWAPI/Type.h new file mode 100644 index 0000000..d080963 --- /dev/null +++ b/bwapi4-includes/BWAPI/Type.h @@ -0,0 +1,172 @@ +#pragma once +#include +#include +#include +#include + +#include + +namespace BWAPI +{ + // @TODO Get rid of this eventually. + template + class Typeset : public Vectorset + { + public: + // Constructors + Typeset() : Vectorset() {}; + // copy ctor + Typeset(const Typeset &other) : Vectorset( other ) {}; + Typeset(const ConstVectorset &other) : Vectorset( other ) {}; + + // move ctor + Typeset(Typeset &&other) : Vectorset( std::forward< Typeset >(other) ) {}; + // type ctor + Typeset(const T &val) : Vectorset() { this->push_back(val); }; + // array ctor + Typeset(const T *pArray, size_t size) : Vectorset(pArray, size) {}; + Typeset(const int *pArray, size_t size) : Vectorset((const T*)pArray, size) {}; + + ~Typeset() {}; + + // Operators (adding elements) + Typeset operator |(const T &val) const + { + Typeset newset(*this); + newset.insert(val); + return newset; + }; + Typeset &operator |=(const T &val) + { + this->insert(val); + return *this; + }; + Typeset &operator |=(const Typeset &val) + { + this->insert(val); + return *this; + }; + }; + + /// Base superclass for all BWAPI Types. + template + class Type + { + protected: + /// Primitive storage unit for the type identifier (t id) + int tid; + + /// Array of strings containing the type names. + static const std::string typeNames[UnknownId+1]; + + typedef std::unordered_map typeMapT; + + private: + static typeMapT typeMapInit() + { + typeMapT result(UnknownId+1); + for ( int i = 0; i < UnknownId + 1; ++i ) // include unknown + { + std::string n( typeNames[i] ); + + // erase-remove idiom, eliminates spaces and underscores from the string + n.erase( std::remove_if(n.begin(), n.end(), [](char const &c){ return isspace(c) || c == '_'; }), n.end() ); + + // Make lowercase + std::transform(n.begin(), n.end(), n.begin(), ::tolower); + + result.insert( typeMapT::value_type(n, T(i)) ); + } + return result; + } + + public: + /// Expected type constructor. If the type is an invalid type, then it becomes Types::Unknown. + /// A type is invalid if its value is less than 0 or greater than Types::Unknown. + /// + /// @param id (optional) + /// The id that corresponds to this type. It is typically an integer value that corresponds + /// to an internal Broodwar type. If the given id is invalid, then it becomes Types::Unknown. + /// If it is omitted, then it becomes Types::None. + explicit Type(int id) : tid( id < 0 || id > UnknownId ? UnknownId : id ) {}; + + /// The set that contains the current type. + typedef Typeset set; + + /// The constant set that contains the current type. + typedef ConstVectorset const_set; + + /// Conversion/convenience operator to convert this type to its primitive type. + inline operator int() const { return this->tid; }; + + /// Retrieves this type's identifier. + /// + /// @returns An integer representation of this type. + inline int getID() const { return this->tid; }; + + /// Checks if the current type has a valid identifier. The purpose of this function is to + /// prevent buffer overflows if a type has been handled improperly. + /// + /// A type is valid if it is between 0 and Unknown (inclusive). + /// + /// @returns true If this type is valid and false otherwise. + inline bool isValid() const { return this->tid >= 0 && this->tid <= UnknownId; }; + + /// Retrieves the variable name of the type. + /// + /// @returns Reference to std::string object containing the name. + inline const std::string &getName() const + { + return typeNames[this->isValid() ? this->tid : UnknownId]; + }; + + /// @copydoc Type::getName + inline const std::string &toString() const + { + return this->getName(); + }; + + /// Retrieves the variable name of the type as a c-style string. Meant to be a convenience + /// member. + /// + /// @returns Pointer to constant c-style string containing the name. + inline const char *c_str() const + { + return this->getName().c_str(); + }; + + /// Output stream operator overload. Allows printing of the type without calling + /// Type::getName. + friend inline std::ostream &operator << (std::ostream &out, const Type &t) + { + return out << t.getName(); + }; + + /// Searches for the type associated with the given string and returns it. + /// + /// @param name + /// A string containing the name of the type. + /// + /// @returns The type that resolves to the given name. + static T getType(std::string name) + { + // Mapping of strings to types + static const typeMapT typeMap( typeMapInit() ); + + // erase-remove idiom, eliminates spaces and underscores from the string to search + name.erase( std::remove_if(name.begin(), name.end(), [](char const &c){ return isspace(c) || c == '_'; }), name.end() ); + + // Make lowercase + std::transform(name.begin(), name.end(), name.begin(), ::tolower); + + // Find the type + auto it = typeMap.find(name); + if ( it != typeMap.end() ) + return it->second; + + // Return unknown if it wasn't found + return T(UnknownId); + }; + }; + +} diff --git a/bwapi4-includes/BWAPI/UnaryFilter.h b/bwapi4-includes/BWAPI/UnaryFilter.h new file mode 100644 index 0000000..267381d --- /dev/null +++ b/bwapi4-includes/BWAPI/UnaryFilter.h @@ -0,0 +1,68 @@ +#pragma once +#include + +namespace BWAPI +{ + /// UnaryFilter allows for logical functor combinations. + /// + /// @code + /// Unit myUnit; + /// // The following two if statements are equivalent + /// if ( myUnit->getType().isWorker() && myUnit->isCompleted() && myUnit->isIdle() ) + /// {} + /// + /// if ( (IsWorker && IsCompleted && IsIdle)(myUnit) ) + /// {} + /// @endcode + /// + /// @tparam PType + /// The type being passed into the predicate, which will be of type bool(PType). + /// @tparam Container (optional) + /// Storage container for the function predicate. It is std::function by default. + template > + class UnaryFilter + { + private: + Container pred; + public: + // ctor + template < typename T > + UnaryFilter(const T &predicate) : pred(predicate) {} + + // Default copy/move ctor/assign and dtor + + // logical operators + template + inline UnaryFilter > operator &&(const T& other) const + { + return [=](PType v){ return (*this)(v) && other(v); }; + }; + + template + inline UnaryFilter > operator ||(const T& other) const + { + return [=](PType v){ return (*this)(v) || other(v); }; + }; + + inline UnaryFilter > operator !() const + { + if ( !this->pred ) + return nullptr; + return [=](PType v){ return !(*this)(v); }; + }; + + // call + inline bool operator()(PType v) const + { + return pred(v); + }; + + // operator bool + inline bool isValid() const + { + return (bool)pred; + }; + + }; + +} diff --git a/bwapi4-includes/BWAPI/Unit.h b/bwapi4-includes/BWAPI/Unit.h new file mode 100644 index 0000000..13b5648 --- /dev/null +++ b/bwapi4-includes/BWAPI/Unit.h @@ -0,0 +1,2004 @@ +#pragma once +#include +#include +#include +#include +#include +#include + +namespace BWAPI +{ + // Forwards + class PlayerInterface; + typedef PlayerInterface *Player; + class Order; + class TechType; + class UpgradeType; + + class RegionInterface; + typedef RegionInterface *Region; + + class UnitCommand; + class UnitCommandType; + class Unitset; + class WeaponType; + + class UnitInterface; + typedef UnitInterface *Unit; + + /// The Unit class is used to get information about individual units as well as issue orders to units. Each + /// unit in the game has a unique Unit object, and Unit objects are not deleted until the end of the match + /// (so you don't need to worry about unit pointers becoming invalid). + /// + /// Every Unit in the game is either accessible or inaccessible. To determine if an AI can access a + /// particular unit, BWAPI checks to see if Flag::CompleteMapInformation is enabled. So there are two cases + /// to consider - either the flag is enabled, or it is disabled: + /// + /// If Flag::CompleteMapInformation is disabled, then a unit is accessible if and only if it is visible. + /// @note Some properties of visible enemy units will not be made available to the AI (such as the + /// contents of visible enemy dropships). If a unit is not visible, UnitInterface::exists will return false, + /// regardless of whether or not the unit exists. This is because absolutely no state information on + /// invisible enemy units is made available to the AI. To determine if an enemy unit has been destroyed, the + /// AI must watch for AIModule::onUnitDestroy messages from BWAPI, which is only called for visible units + /// which get destroyed. + /// + /// If Flag::CompleteMapInformation is enabled, then all units that exist in the game are accessible, and + /// UnitInterface::exists is accurate for all units. Similarly AIModule::onUnitDestroy messages are generated for all + /// units that get destroyed, not just visible ones. + /// + /// If a Unit is not accessible, then only the getInitial__ functions will be available to the AI. + /// However for units that were owned by the player, getPlayer and getType will continue to work for units + /// that have been destroyed. + class UnitInterface : public Interface + { + protected: + virtual ~UnitInterface() {}; + public: + /// Retrieves a unique identifier for this unit. + /// + /// @returns An integer containing the unit's identifier. + /// + /// @see getReplayID + virtual int getID() const = 0; + + /// Checks if the Unit exists in the view of the BWAPI player. + /// + /// This is used primarily to check if BWAPI has access to a specific unit, or if the + /// unit is alive. This function is more general and would be synonymous to an isAlive + /// function if such a function were necessary. + /// + /// @retval true If the unit exists on the map and is visible according to BWAPI. + /// @retval false If the unit is not accessible or the unit is dead. + /// + /// In the event that this function returns false, there are two cases to consider: + /// 1. You own the unit. This means the unit is dead. + /// 2. Another player owns the unit. This could either mean that you don't have access + /// to the unit or that the unit has died. You can specifically identify dead units + /// by polling onUnitDestroy. + /// + /// @see isVisible, isCompleted + virtual bool exists() const = 0; + + /// Retrieves the unit identifier for this unit as seen in replay data. + /// + /// @note This is only available if Flag::CompleteMapInformation is enabled. + /// + /// @returns An integer containing the replay unit identifier. + /// + /// @see getID + virtual int getReplayID() const = 0; + + /// Retrieves the player that owns this unit. + /// + /// @retval Game::neutral() If the unit is a neutral unit or inaccessible. + /// + /// @returns The owning Player interface object. + virtual Player getPlayer() const = 0; + + /// Retrieves the unit's type. + /// + /// @retval UnitTypes::Unknown if this unit is inaccessible or cannot be determined. + /// @returns A UnitType objects representing the unit's type. + /// + /// @see getInitialType + virtual UnitType getType() const = 0; + + /// Retrieves the unit's position from the upper left corner of the map in pixels. + /// + /// @retval Positions::Unknown if this unit is inaccessible. + /// + /// @returns Position object representing the unit's current position. + /// + /// @see getTilePosition, getInitialPosition + virtual Position getPosition() const = 0; + + /// Retrieves the unit's build position from the upper left corner of the map in tiles. + /// + /// @note: This tile position is the tile that is at the top left corner of the structure. + /// + /// @retval TilePositions::Unknown if this unit is inaccessible. + /// + /// @returns TilePosition object representing the unit's current tile position. + /// + /// @see getPosition, getInitialTilePosition + TilePosition getTilePosition() const; + + /// Retrieves the unit's facing direction in radians. + /// + /// @note A value of 0.0 means the unit is facing east. + /// + /// @returns A double with the angle measure in radians. + virtual double getAngle() const = 0; + + /// Retrieves the x component of the unit's velocity, measured in pixels per frame. + /// + /// @returns A double that represents the velocity's x component. + /// + /// @see getVelocityY + virtual double getVelocityX() const = 0; + + /// Retrieves the y component of the unit's velocity, measured in pixels per frame. + /// + /// @returns A double that represents the velocity's y component. + /// + /// @see getVelocityX + virtual double getVelocityY() const = 0; + + /// Retrieves the Region that the center of the unit is in. + /// + /// @retval nullptr If the unit is inaccessible. + /// + /// @returns The Region object that contains this unit. + /// + /// Example + /// @code + /// Unitset myUnits = Broodwar->self()->getUnits(); + /// for ( auto u = myUnits.begin(); u != myUnits.end(); ++u ) + /// { + /// if ( u->isFlying() && u->isUnderAttack() ) // implies exists and isCompleted + /// { + /// Region r = u->getRegion(); + /// if ( r ) + /// u->move(r->getClosestInaccessibleRegion()); // Retreat to inaccessible region + /// } + /// } + /// @endcode + /// @implies exists + BWAPI::Region getRegion() const; + + /// Retrieves the X coordinate of the unit's left boundary, measured in pixels from the left + /// side of the map. + /// + /// @returns An integer representing the position of the left side of the unit. + /// + /// @see getTop, getRight, getBottom + int getLeft() const; + + /// Retrieves the Y coordinate of the unit's top boundary, measured in pixels from the top of + /// the map. + /// + /// @returns An integer representing the position of the top side of the unit. + /// + /// @see getLeft, getRight, getBottom + int getTop() const; + + /// Retrieves the X coordinate of the unit's right boundary, measured in pixels from the left + /// side of the map. + /// + /// @returns An integer representing the position of the right side of the unit. + /// + /// @see getLeft, getTop, getBottom + int getRight() const; + + /// Retrieves the Y coordinate of the unit's bottom boundary, measured in pixels from the top + /// of the map. + /// + /// @returns An integer representing the position of the bottom side of the unit. + /// + /// @see getLeft, getTop, getRight + int getBottom() const; + + /// Retrieves the unit's current Hit Points (HP) as seen in the game. + /// + /// @returns An integer representing the amount of hit points a unit currently has. + /// + /// @note In Starcraft, a unit usually dies when its HP reaches 0. It is possible however, to + /// have abnormal HP values in the Use Map Settings game type and as the result of a hack over + /// Battle.net. Such values include units that have 0 HP (can't be killed conventionally) + /// or even negative HP (death in one hit). + /// + /// @see UnitType::maxHitPoints, getShields, getInitialHitPoints + virtual int getHitPoints() const = 0; + + /// Retrieves the unit's current Shield Points (Shields) as seen in the game. + /// + /// @returns An integer representing the amount of shield points a unit currently has. + /// + /// @see UnitType::maxShields, getHitPoints + virtual int getShields() const = 0; + + /// Retrieves the unit's current Energy Points (Energy) as seen in the game. + /// + /// @returns An integer representing the amount of energy points a unit currently has. + /// + /// @note Energy is required in order for units to use abilities. + /// + /// @see UnitType::maxEnergy + virtual int getEnergy() const = 0; + + /// Retrieves the resource amount from a resource container, such as a Mineral Field and + /// Vespene Geyser. If the unit is inaccessible, then the last known resource amount is + /// returned. + /// + /// @returns An integer representing the last known amount of resources remaining in this + /// resource. + /// + /// @see getInitialResources + virtual int getResources() const = 0; + + /// Retrieves a grouping index from a resource container. Other resource containers of the + /// same value are considered part of one expansion location (group of resources that are + /// close together). + /// + /// @note This grouping method is explicitly determined by Starcraft itself and is used only + /// by the internal AI. + /// + /// @returns An integer with an identifier between 0 and 250 that determine which resources + /// are grouped together to form an expansion. + virtual int getResourceGroup() const = 0; + + /// Retrieves the distance between this unit and a target. + /// + /// @note Distance is calculated from the edge of this unit, using Starcraft's own distance + /// algorithm. + /// + /// @param target + /// A Position or a Unit to calculate the distance to. If it is a unit, then it will + /// calculate the distance to the edge of the target unit. + /// + /// @returns An integer representation of the number of pixels between this unit and the + /// \p target. + int getDistance(PositionOrUnit target) const; + + /// Using data provided by Starcraft, checks if there is a path available from this unit to + /// the given target. + /// + /// @note This function only takes into account the terrain data, and does not include + /// buildings when determining if a path is available. However, the complexity of this + /// function is constant ( O(1) ), and no extensive calculations are necessary. + /// + /// @note If the current unit is an air unit, then this function will always return true. + /// + /// @param target + /// A Position or a Unit that is used to determine if this unit has a path to the target. + /// + /// @retval true If there is a path between this unit and the target. + /// @retval false If the target is on a different piece of land than this one (such as an + /// island). + bool hasPath(PositionOrUnit target) const; + + /// Retrieves the frame number that sent the last successful command. + /// + /// @note This value is comparable to Game::getFrameCount. + /// + /// @returns The frame number that sent the last successfully processed command to BWAPI. + /// @see Game::getFrameCount, getLastCommand + virtual int getLastCommandFrame() const = 0; + + /// Retrieves the last successful command that was sent to BWAPI. + /// + /// @returns A UnitCommand object containing information about the command that was processed. + /// @see getLastCommandFrame + virtual UnitCommand getLastCommand() const = 0; + + /// Retrieves the Player that last attacked this unit. + /// + /// @returns Player interface object representing the player that last attacked this unit. + /// @retval nullptr If this unit was not attacked. + /// @implies exists() + virtual BWAPI::Player getLastAttackingPlayer() const = 0; + + /// Retrieves the initial type of the unit. This is the type that the unit starts as in the + /// beginning of the game. This is used to access the types of static neutral units such as + /// mineral fields when they are not visible. + /// + /// @returns UnitType of this unit as it was when it was created. + /// @retval UnitTypes::Unknown if this unit was not a static neutral unit in the beginning of + /// the game. + virtual UnitType getInitialType() const = 0; + + /// Retrieves the initial position of this unit. This is the position that the unit starts at + /// in the beginning of the game. This is used to access the positions of static neutral units + /// such as mineral fields when they are not visible. + /// + /// @returns Position indicating the unit's initial position when it was created. + /// @retval Positions::Unknown if this unit was not a static neutral unit in the beginning of + /// the game. + virtual Position getInitialPosition() const = 0; + + /// Retrieves the initial build tile position of this unit. This is the tile position that the + /// unit starts at in the beginning of the game. This is used to access the tile positions of + /// static neutral units such as mineral fields when they are not visible. The build tile + /// position corresponds to the upper left corner of the unit. + /// + /// @returns TilePosition indicating the unit's initial tile position when it was created. + /// @retval TilePositions::Unknown if this unit was not a static neutral unit in the beginning of + /// the game. + virtual TilePosition getInitialTilePosition() const = 0; + + /// Retrieves the amount of hit points that this unit started off with at the beginning of the + /// game. The unit must be neutral. + /// + /// @returns Number of hit points that this unit started with. + /// @retval 0 if this unit was not a neutral unit at the beginning of the game. + /// + /// @note: It is possible for the unit's initial hit points to differ from the maximum hit + /// points. + /// + /// @see Game::getStaticNeutralUnits + virtual int getInitialHitPoints() const = 0; + + /// Retrieves the amount of resources contained in the unit at the beginning of the game. The + /// unit must be a neutral resource container. + /// + /// @returns Amount of resources that this unit started with. + /// @retval 0 if this unit was not a neutral unit at the beginning of the game, or if this + /// unit does not contain resources. It is possible that the unit simply contains 0 resources. + /// + /// @see Game::getStaticNeutralUnits + virtual int getInitialResources() const = 0; + + /// Retrieves the number of units that this unit has killed in total. + /// + /// @note The maximum amount of recorded kills per unit is 255. + /// + /// @returns integer indicating this unit's kill count. + virtual int getKillCount() const = 0; + + /// Retrieves the number of acid spores that this unit is inflicted with. + /// + /// @returns Number of acid spores on this unit. + virtual int getAcidSporeCount() const = 0; + + /// Retrieves the number of interceptors that this unit manages. This function is only for the + /// @Carrier. + /// + /// @returns Number of interceptors in this unit. + virtual int getInterceptorCount() const = 0; + + /// Retrieves the number of scarabs that this unit has for use. This function is only for the + /// @Reaver. + /// + /// @returns Number of scarabs this unit has ready. + virtual int getScarabCount() const = 0; + + /// Retrieves the amount of @mines this unit has available. This function is only for the + /// @Vulture. + /// + /// @returns Number of spider mines available for placement. + virtual int getSpiderMineCount() const = 0; + + /// Retrieves the unit's ground weapon cooldown. This value decreases every frame, until it + /// reaches 0. When the value is 0, this indicates that the unit is capable of using its ground + /// weapon, otherwise it must wait until it reaches 0. + /// + /// @note This value will vary, because Starcraft adds an additional random value between + /// (-1) and (+2) to the unit's weapon cooldown. + /// + /// @returns Number of frames needed for the unit's ground weapon to become available again. + virtual int getGroundWeaponCooldown() const = 0; + + /// Retrieves the unit's air weapon cooldown. This value decreases every frame, until it + /// reaches 0. When the value is 0, this indicates that the unit is capable of using its air + /// weapon, otherwise it must wait until it reaches 0. + /// + /// @note This value will vary, because Starcraft adds an additional random value between + /// (-1) and (+2) to the unit's weapon cooldown. + /// + /// @returns Number of frames needed for the unit's air weapon to become available again. + virtual int getAirWeaponCooldown() const = 0; + + /// Retrieves the unit's ability cooldown. This value decreases every frame, until it + /// reaches 0. When the value is 0, this indicates that the unit is capable of using one of + /// its special abilities, otherwise it must wait until it reaches 0. + /// + /// @note This value will vary, because Starcraft adds an additional random value between + /// (-1) and (+2) to the unit's ability cooldown. + /// + /// @returns Number of frames needed for the unit's abilities to become available again. + virtual int getSpellCooldown() const = 0; + + /// Retrieves the amount of hit points remaining on the @matrix created by a @Science_Vessel. + /// The @matrix ability starts with 250 hit points when it is used. + /// + /// @returns Number of hit points remaining on this unit's @matrix. + /// + /// @see getDefenseMatrixTimer, isDefenseMatrixed + virtual int getDefenseMatrixPoints() const = 0; + + /// Retrieves the time, in frames, that the @matrix will remain active on the current unit. + /// + /// @returns Number of frames remaining until the effect is removed. + /// + /// @see getDefenseMatrixPoints, isDefenseMatrixed + virtual int getDefenseMatrixTimer() const = 0; + + /// Retrieves the time, in frames, that @ensnare will remain active on the current unit. + /// + /// @returns Number of frames remaining until the effect is removed. + /// + /// @see isEnsnared + virtual int getEnsnareTimer() const = 0; + + /// Retrieves the time, in frames, that @irradiate will remain active on the current unit. + /// + /// @returns Number of frames remaining until the effect is removed. + /// + /// @see isIrradiated + virtual int getIrradiateTimer() const = 0; + + /// Retrieves the time, in frames, that @lockdown will remain active on the current unit. + /// + /// @returns Number of frames remaining until the effect is removed. + /// + /// @see isLockdowned + virtual int getLockdownTimer() const = 0; + + /// Retrieves the time, in frames, that @maelstrom will remain active on the current unit. + /// + /// @returns Number of frames remaining until the effect is removed. + /// + /// @see isMaelstrommed + virtual int getMaelstromTimer() const = 0; + + // TODO: add doc (I think I forget what this is for exactly?) + virtual int getOrderTimer() const = 0; + + /// Retrieves the time, in frames, that @plague will remain active on the current unit. + /// + /// @returns Number of frames remaining until the effect is removed. + /// + /// @see isPlagued + virtual int getPlagueTimer() const = 0; + + /// Retrieves the time, in frames, until this temporary unit is destroyed or removed. This is + /// used to determine the remaining time for the following units that were created by abilities: + /// - @hallucination + /// - @broodling + /// - @swarm + /// - @dweb + /// - @scanner + /// . + /// Once this value reaches 0, the unit is destroyed. + virtual int getRemoveTimer() const = 0; + + /// Retrieves the time, in frames, that @stasis will remain active on the current unit. + /// + /// @returns Number of frames remaining until the effect is removed. + /// + /// @see isPlagued + virtual int getStasisTimer() const = 0; + + /// Retrieves the time, in frames, that @stim will remain active on the current unit. + /// + /// @returns Number of frames remaining until the effect is removed. + /// + /// @see isPlagued + virtual int getStimTimer() const = 0; + + /// Retrieves the building type that a @worker is about to construct. If the unit is morphing + /// or is an incomplete structure, then this returns the UnitType that it will become when + /// it has completed morphing/constructing. + /// + /// @returns UnitType indicating the type that a @worker is about to construct, or an + /// incomplete unit will be when completed. + virtual UnitType getBuildType() const = 0; + + /// Retrieves the list of units queued up to be trained. + /// + /// @returns a UnitType::set containing all the types that are in this factory's training + /// queue. + /// @see train, cancelTrain, isTraining + virtual UnitType::set getTrainingQueue() const = 0; + + /// Retrieves the technology that this unit is currently researching. + /// + /// @returns TechType indicating the technology being researched by this unit. + /// @retval TechTypes::None if this unit is not researching anything. + /// + /// @see research, cancelResearch, isResearching, getRemainingResearchTime + virtual TechType getTech() const = 0; + + /// Retrieves the upgrade that this unit is currently upgrading. + /// + /// @return UpgradeType indicating the upgrade in progress by this unit. + /// @retval UpgradeTypes::None if this unit is not upgrading anything. + /// + /// @see upgrade, cancelUpgrade, isUpgrading, getRemainingUpgradeTime + virtual UpgradeType getUpgrade() const = 0; + + /// Retrieves the remaining build time for a unit or structure that is being trained or + /// constructed. + /// + /// @returns Number of frames remaining until the unit's completion. + virtual int getRemainingBuildTime() const = 0; + + /** Returns the remaining time of the unit that is currently being trained. If the unit is a Hatchery, + * Lair, or Hive, this returns the amount of time until the next larva spawns, or 0 if the unit already + * has 3 larva. */ + virtual int getRemainingTrainTime() const = 0; + + /** Returns the amount of time until the unit is done researching its current tech. If the unit is not + * researching anything, 0 is returned. + * \see UnitInterface::research, UnitInterface::cancelResearch, UnitInterface::isResearching, UnitInterface::getTech. */ + virtual int getRemainingResearchTime() const = 0; + + /** Returns the amount of time until the unit is done upgrading its current upgrade. If the unit is not + * upgrading anything, 0 is returned. + * \see UnitInterface::upgrade, UnitInterface::cancelUpgrade, UnitInterface::isUpgrading, UnitInterface::getUpgrade. */ + virtual int getRemainingUpgradeTime() const = 0; + + /** If the unit is an SCV that is constructing a building, this will return the building it is + * constructing. If the unit is a Terran building that is being constructed, this will return the SCV + * that is constructing it. */ + virtual Unit getBuildUnit() const = 0; + + /** Generally returns the appropriate target unit after issuing an order that accepts a target unit + * (i.e. attack, repair, gather, follow, etc.). To check for a target that has been acquired + * automatically (without issuing an order) see getOrderTarget. */ + virtual Unit getTarget() const = 0; + + /** Returns the target position the unit is moving to (provided a valid path to the target position + * exists). */ + virtual Position getTargetPosition() const = 0; + + // TODO: add doc + virtual Order getOrder() const = 0; + virtual Order getSecondaryOrder() const = 0; + + /** This is usually set when the low level unit AI acquires a new target automatically. For example if + * an enemy probe comes in range of your marine, the marine will start attacking it, and getOrderTarget + * will be set in this case, but not getTarget. */ + virtual Unit getOrderTarget() const = 0; + + /** Returns the target position for the units order. For example for the move order getTargetPosition + * returns the end of the units path but this returns the location the unit is trying to move to. */ + virtual Position getOrderTargetPosition() const = 0; + + /** Returns the position the building is rallied to. If the building does not produce units, + * Positions::None is returned. + * \see UnitInterface::setRallyPoint, UnitInterface::getRallyUnit. */ + virtual Position getRallyPosition() const = 0; + + /** Returns the unit the building is rallied to. If the building is not rallied to any unit, NULL is + * returned. + * \see UnitInterface::setRallyPoint, UnitInterface::getRallyPosition. */ + virtual Unit getRallyUnit() const = 0; + + /// Retrieves the add-on that is attached to this unit. + /// + /// @returns Unit interface that represents the add-on that is attached to this unit. + /// @retval nullptr if this unit does not have an add-on. + virtual Unit getAddon() const = 0; + + /// Retrieves the @Nydus_Canal that is attached to this one. Every @Nydus_Canal can place a + /// "Nydus Exit" which, when connected, can be travelled through by @Zerg units. + /// + /// @returns Unit interface representing the @Nydus_Canal connected to this one. + /// @retval nullptr if the unit is not a @Nydus_Canal, is not owned, or has not placed a Nydus + /// Exit. + virtual Unit getNydusExit() const = 0; + + /// Retrieves the power-up that the worker unit is holding. Power-ups are special units such + /// as the @Flag in the @CTF game type, which can be picked up by worker units. + /// + /// @note If your bot is strictly melee/1v1, then this method is not necessary. + /// + /// @returns The Unit interface object that represents the power-up. + /// @retval nullptr If the unit is not carrying anything. + /// + /// Example + /// @code + /// BWAPI::Unitset myUnits = BWAPI::Broodwar->self()getUnits(); + /// for ( auto u = myUnits.begin(); u != myUnits.end(); ++u ) + /// { + /// // If we are carrying a flag + /// if ( u->getPowerUp() && u->getPowerUp()->getType() == BWAPI::UnitTypes::Powerup_Flag ) + /// u->move( u->getClosestUnit(BWAPI::Filter::IsFlagBeacon && BWAPI::Filter::IsOwned) ); // return it to our flag beacon to score + /// } + /// @endcode + /// @implies getType().isWorker(), isCompleted() + virtual Unit getPowerUp() const = 0; + + /// Retrieves the @Transport or @Bunker unit that has this unit loaded inside of it. + /// + /// @returns Unit interface object representing the @Transport containing this unit. + /// @retval nullptr if this unit is not in a @Transport. + virtual Unit getTransport() const = 0; + + /// Retrieves the set of units that are contained within this @Bunker or @Transport . + /// + /// @returns A Unitset object containing all of the units that are loaded inside of the + /// current unit. + virtual Unitset getLoadedUnits() const = 0; + + /// Retrieves the remaining unit-space available for @Bunker s and transports. + /// + /// @returns The number of spots available to transport a unit. + /// + /// @see getLoadedUnits + int getSpaceRemaining() const; + + /// Retrieves the parent @Carrier that owns this @Interceptor. + /// + /// @returns The parent @Carrier unit that has ownership of this one. + /// @retval nullptr if the current unit is not an @Interceptor. + virtual Unit getCarrier() const = 0; + + /// Retrieves the set of @Interceptors controlled by this unit. This is intended for @Carriers. + /// + /// @returns Unitset containing @Interceptor units owned by this one. + virtual Unitset getInterceptors() const = 0; + + /// Retrieves the parent @Hatchery, @Lair, or @Hive that owns this particular unit. This is + /// intended for @Larvae. + /// + /// @returns Hatchery unit that has ownership of this larva. + /// @retval nullptr if the current unit is not a @Larva or has no parent. + virtual Unit getHatchery() const = 0; + + /// Retrieves the set of @Larvae that were spawned by this unit. Only @Hatcheries, @Lairs, and + /// @Hives are capable of spawning @Larvae. This is like clicking the "Select Larva" button + /// and getting the selection of @Larvae. + /// + /// @returns Unitset containing @Larva units owned by this unit. The set will be empty if + /// there are none. + virtual Unitset getLarva() const = 0; + + /// Retrieves the set of all units in a given radius of the current unit. + /// + /// Takes into account this unit's dimensions. Can optionally specify a filter that is composed using + /// BWAPI Filter semantics to include only specific units (such as only ground units, etc.) + /// + /// @param radius + /// The radius, in pixels, to search for units. + /// @param pred (optional) + /// The composed function predicate to include only specific (desired) units in the set. Defaults to + /// nullptr, which means no filter. + /// + /// @returns A Unitset containing the set of units that match the given criteria. + /// + /// Example usage: + /// @code + /// // Get main building closest to start location. + /// BWAPI::Unit pMain = BWAPI::Broodwar->getClosestUnit( BWAPI::Broodwar->self()->getStartLocation(), BWAPI::Filter::IsResourceDepot ); + /// if ( pMain ) // check if pMain is valid + /// { + /// // Get sets of resources and workers + /// BWAPI::Unitset myResources = pMain->getUnitsInRadius(1024, BWAPI::Filter::IsMineralField); + /// if ( !myResources.empty() ) // check if we have resources nearby + /// { + /// BWAPI::Unitset myWorkers = pMain->getUnitsInRadius(512, BWAPI::Filter::IsWorker && BWAPI::Filter::IsIdle && BWAPI::Filter::IsOwned ); + /// while ( !myWorkers.empty() ) // make sure we command all nearby idle workers, if any + /// { + /// for ( auto u = myResources.begin(); u != myResources.end() && !myWorkers.empty(); ++u ) + /// { + /// myWorkers.back()->gather(*u); + /// myWorkers.pop_back(); + /// } + /// } + /// } // myResources not empty + /// } // pMain != nullptr + /// @endcode + /// + /// @see getClosestUnit, getUnitsInWeaponRange, Game::getUnitsInRadius, Game::getUnitsInRectangle + Unitset getUnitsInRadius(int radius, const UnitFilter &pred = nullptr) const; + + /** Returns the set of units within weapon range of this unit. */ + Unitset getUnitsInWeaponRange(WeaponType weapon, const UnitFilter &pred = nullptr) const; + + // @TODO + Unit getClosestUnit(const UnitFilter &pred = nullptr, int radius = 999999) const; + + /// Checks if the current unit is housing a @Nuke. This is only available for @Silos. + /// + /// @returns true if this unit has a @Nuke ready, and false if there is no @Nuke. + virtual bool hasNuke() const = 0; + + /// Checks if the current unit is accelerating. + /// + /// @returns true if this unit is accelerating, and false otherwise + virtual bool isAccelerating() const = 0; + + /// Checks if this unit is currently attacking something. + /// + /// @returns true if this unit is attacking another unit, and false if it is not. + virtual bool isAttacking() const = 0; + + /// Checks if this unit is currently playing an attack animation. Issuing commands while this + /// returns true may interrupt the unit's next attack sequence. + /// + /// @returns true if this unit is currently running an attack frame, and false if interrupting + /// the unit is feasible. + /// + /// @note This function is only available to some unit types, specifically those that play + /// special animations when they attack. + virtual bool isAttackFrame() const = 0; + + /// Checks if the current unit is being constructed. This is mostly applicable to Terran + /// structures which require an SCV to be constructing a structure. + /// + /// @retval true if this is either a Protoss structure, Zerg structure, or Terran structure + /// being constructed by an attached SCV. + /// @retval false if this is either completed, not a structure, or has no SCV constructing it + /// + /// @see UnitInterface::build, UnitInterface::cancelConstruction, UnitInterface::haltConstruction, UnitInterface::isConstructing + bool isBeingConstructed() const; + + /// Checks this @Mineral_Field or @Refinery is currently being gathered from. + /// + /// @returns true if this unit is a resource container and being harvested by a worker, and + /// false otherwise + virtual bool isBeingGathered() const = 0; + + /// Checks if this unit is currently being healed by a @Medic or repaired by a @SCV. + /// + /// @returns true if this unit is being healed, and false otherwise. + virtual bool isBeingHealed() const = 0; + + /// Checks if this unit is currently blinded by a @Medic 's @Optical_Flare ability. Blinded + /// units have reduced sight range and cannot detect other units. + /// + /// @returns true if this unit is blind, and false otherwise + virtual bool isBlind() const = 0; + + /// Checks if the current unit is slowing down to come to a stop. + /// + /// @returns true if this unit is breaking, false if it has stopped or is still moving at full + /// speed. + virtual bool isBraking() const = 0; + + /// Checks if the current unit is burrowed, either using the @Burrow ability, or is an armed + /// @Spider_Mine . + /// + /// @returns true if this unit is burrowed, and false otherwise + /// @see burrow, unburrow + virtual bool isBurrowed() const = 0; + + /// Checks if this worker unit is carrying some vespene gas. + /// + /// @returns true if this is a worker unit carrying vespene gas, and false if it is either + /// not a worker, or not carrying gas. + /// + /// Example + /// @code + /// BWAPI::Unitset myUnits = BWAPI::Broodwar->self()->getUnits(); + /// for ( auto u = myUnits.begin(); u != myUnits.end(); ++u ) + /// { + /// if ( u->isIdle() && (u->isCarryingGas() || u->isCarryingMinerals()) ) + /// u->returnCargo(); + /// } + /// @endcode + /// @implies isCompleted(), getType().isWorker() + /// @see returnCargo, isGatheringGas, isCarryingMinerals + virtual bool isCarryingGas() const = 0; + + /// Checks if this worker unit is carrying some minerals. + /// + /// @returns true if this is a worker unit carrying minerals, and false if it is either + /// not a worker, or not carrying minerals. + /// + /// Example + /// @code + /// BWAPI::Unitset myUnits = BWAPI::Broodwar->self()->getUnits(); + /// for ( auto u = myUnits.begin(); u != myUnits.end(); ++u ) + /// { + /// if ( u->isIdle() && (u->isCarryingGas() || u->isCarryingMinerals()) ) + /// u->returnCargo(); + /// } + /// @endcode + /// @implies isCompleted(), getType().isWorker() + /// @see returnCargo, isGatheringMinerals, isCarryingMinerals + virtual bool isCarryingMinerals() const = 0; + + /// Checks if this unit is currently @cloaked. + /// + /// @returns true if this unit is cloaked, and false if it is visible. + /// @see cloak, decloak + virtual bool isCloaked() const = 0; + + /// Checks if this unit has finished being constructed, trained, morphed, or warped in, and can + /// now receive orders. + /// + /// @returns true if this unit is completed, and false if it is under construction or inaccessible. + virtual bool isCompleted() const = 0; + + /** Returns true when a unit has been issued an order to build a structure and is moving to the build + * location. Also returns true for Terran SCVs while they construct a building. + * \see UnitInterface::build, UnitInterface::cancelConstruction, UnitInterface::haltConstruction, UnitInterface::isBeingConstructed. */ + virtual bool isConstructing() const = 0; + + /// Checks if this unit has the @matrix effect. + /// + /// @returns true if the @matrix ability was used on this unit, and false otherwise. + bool isDefenseMatrixed() const; + + /// Checks if this unit is visible or revealed by a detector unit. If this is false and + /// #isVisible is true, then the unit is only partially visible and requires a detector in + /// order to be targetted. + /// + /// @returns true if this unit is detected, and false if it needs a detector unit nearby in + /// order to see it. + /// @implies isVisible + virtual bool isDetected() const = 0; + + /// Checks if the @Queen ability @Ensnare has been used on this unit. + /// + /// @returns true if the unit is ensnared, and false if it is not + bool isEnsnared() const; + + /// This macro function checks if this unit is in the air. That is, the unit is either a flyer + /// or a flying building. + /// + /// @returns true if this unit is in the air, and false if it is on the ground + /// @see UnitType::isFlyer, UnitInterface::isLifted + bool isFlying() const; + + /// Checks if this unit is following another unit. When a unit is following another unit, it + /// simply moves where the other unit does, and does not attack enemies when it is following. + /// + /// @returns true if this unit is following another unit, and false if it is not + /// @implies isCompleted + /// @see follow, getTarget + bool isFollowing() const; + + /// Checks if this unit is currently gathering gas. That is, the unit is either moving to a + /// refinery, waiting to enter a refinery, harvesting from the refinery, or returning gas to a + /// resource depot. + /// + /// @returns true if this unit is harvesting gas, and false if it is not + /// @implies isCompleted, getType().isWorker() + /// @see isCarryingGas + virtual bool isGatheringGas() const = 0; + + /// Checks if this unit is currently harvesting minerals. That is, the unit is either moving + /// to a @mineral_field, waiting to mine, mining minerals, or returning minerals to a resource + /// depot. + /// + /// @returns true if this unit is gathering minerals, and false if it is not + /// @implies isCompleted, getType().isWorker() + /// @see isCarryingMinerals + virtual bool isGatheringMinerals() const = 0; + + /// Checks if this unit is a hallucination. Hallucinations are created by the @High_Templar + /// using the @Hallucination ability. Enemy hallucinations are unknown if + /// Flag::CompleteMapInformation is disabled. Hallucinations have a time limit until they are + /// destroyed (see UnitInterface::getRemoveTimer). + /// + /// @returns true if the unit is a hallucination and false otherwise. + /// @see getRemoveTimer + virtual bool isHallucination() const = 0; + + /** Returns true if the unit is holding position + * \see UnitInterface::holdPosition. */ + /// @todo may currently be wrong + bool isHoldingPosition() const; + + /// Checks if this unit is not doing anything. This function is particularly useful when + /// checking for units that aren't doing any tasks. + /// + /// @code + /// BWAPI::Unitset myUnits = BWAPI::Broodwar->self()->getUnits(); + /// for ( auto u = myUnits.begin(); u != myUnits.end(); ++u ) + /// { + /// // Order idle worker to gather from closest mineral field + /// if ( u->getType().isWorker() && u->isIdle() ) + /// u->gather( u->getClosestUnit( BWAPI::Filter::IsMineralField ) ); + /// } + /// @endcode + /// + /// @returns true if this unit is idle, and false if this unit is performing any action, such + /// as moving or attacking + /// @implies isCompleted + /// @see UnitInterface::stop + virtual bool isIdle() const = 0; + + /** Returns true if the unit can be interrupted. */ + virtual bool isInterruptible() const = 0; + + /// Checks the invincibility state for this unit. + /// + /// @returns true if this unit is currently invulnerable, and false if it is vulnerable + virtual bool isInvincible() const = 0; + + /// Checks if the target unit can immediately be attacked by this unit in the current frame. + /// + /// @param target + /// The target unit to use in this check. + /// + /// @returns true if \p target is within weapon range of this unit's appropriate weapon, and + /// false otherwise. + /// @retval false if \p target is invalid, inaccessible, too close, too far, or this unit does + /// not have a weapon that can attack \p target. + bool isInWeaponRange(Unit target) const; + + /// Checks if this unit is irradiated by a @Science_Vessel 's @Irradiate ability. + /// + /// @returns true if this unit is irradiated, and false otherwise + /// + /// Example usage: + /// @code + /// BWAPI::Unitset myUnits = BWAPI::Broodwar->self()->getUnits(); + /// for ( auto u = myUnits.begin(); u != myUnits.end(); ++u ) + /// { + /// if ( u->isIrradiated() && u->getIrradiateTimer > 50 && BWAPI::Broodwar->self()->hasResearched(BWAPI::TechTypes::Restoration) ) + /// { + /// BWAPI::Unit medic = u->getClosestUnit( BWAPI::Filter::GetType == BWAPI::UnitTypes::Terran_Medic && + /// BWAPI::Filter::Energy >= BWAPI::TechTypes::Restoration.energyCost() ); + /// if ( medic ) + /// medic->useTech(BWAPI::TechTypes::Restoration, *u); + /// } + /// } + /// @endcode + /// @see getIrradiateTimer + bool isIrradiated() const; + + /// Checks if this unit is a @Terran building and lifted off the ground. This function + /// generally implies this->getType().isBuilding() and this->isCompleted() both return true. + /// + /// @returns true if this unit is a @Terran structure lifted off the ground. + /// @implies isCompleted, getType().isFlyingBuilding() + /// @see isFlying + virtual bool isLifted() const = 0; + + /// Checks if this unit is currently loaded into another unit such as a @Transport. + /// + /// @returns true if this unit is loaded in another one, and false otherwise + /// @implies isCompleted + /// @see load, unload, unloadAll + bool isLoaded() const; + + /// Checks if this unit is currently @locked by a @Ghost. + /// + /// @returns true if this unit is locked down, and false otherwise + /// @see getLockdownTimer + bool isLockedDown() const; + + /// Checks if this unit has been @Maelstrommed by a @Dark_Archon. + /// + /// @returns true if this unit is maelstrommed, and false otherwise + /// @see getMaelstromTimer + bool isMaelstrommed() const; + + /// Finds out if the current unit is morphing or not. Zerg units and structures often have + /// the ability to morph into different types of units. This function allows you to identify + /// when this process is occurring. + /// + /// @retval true if the unit is currently morphing. + /// @retval false if the unit is not morphing + /// + /// @see UnitInterface::morph, UnitInterface::cancelMorph, UnitInterface::getBuildType, UnitInterface::getRemainingBuildTime + virtual bool isMorphing() const = 0; + + /// Checks if this unit is currently moving. + /// + /// @returns true if this unit is moving, and false if it is not + /// @see stop + virtual bool isMoving() const = 0; + + /// Checks if this unit has been parasited by some other player. + /// + /// @returns true if this unit is inflicted with @parasite, and false if it is clean + virtual bool isParasited() const = 0; + + /// Checks if this unit is patrolling between two positions. + /// + /// @returns true if this unit is patrolling and false if it is not + /// @see patrol + bool isPatrolling() const; + + /// Checks if this unit has been been @plagued by a @defiler. + /// + /// @returns true if this unit is inflicted with @plague and is taking damage, and false if it + /// is clean + /// @see getPlagueTimer + bool isPlagued() const; + + /// Checks if this unit is repairing or moving to @repair another unit. This is only applicable + /// to @SCVs. + /// + /// @returns true if this unit is currently repairing or moving to @repair another unit, and + /// false if it is not + bool isRepairing() const; + + /** Returns true if the unit is a building that is researching tech. See TechTypes for the complete list + * of available techs in Broodwar. + * \see UnitInterface::research, UnitInterface::cancelResearch, UnitInterface::getTech, UnitInterface::getRemainingResearchTime. */ + bool isResearching() const; + + /** Returns true if the unit has been selected by the user via the starcraft GUI. Only available if you + * enable Flag::UserInput during AIModule::onStart. + * \see Game::getSelectedUnits. */ + virtual bool isSelected() const = 0; + + /// Checks if this unit is currently @sieged. This is only applicable to @Siege_Tanks. + /// + /// @returns true if the unit is in siege mode, and false if it is either not in siege mode or + /// not a @Siege_Tank + /// @see siege, unsiege + bool isSieged() const; + + /** Returns true if the unit is starting to attack. + * \see UnitInterface::attack, UnitInterface::getGroundWeaponCooldown, UnitInterface::getAirWeaponCooldown. */ + virtual bool isStartingAttack() const = 0; + + /** Returns true if the unit has been stasised by a Protoss Arbiter. + * \see UnitInterface::getStasisTimer. */ + /// Checks if this unit is inflicted with @Stasis by an @Arbiter. + /// + /// @returns true if this unit is locked in a @Stasis and is unable to move, and false if it + /// is free. + /// + /// @note This function does not necessarily imply that the unit is invincible, since there + /// is a feature in the @UMS game type that allows stasised units to be vulnerable. + /// + /// @see getStasisTimer + bool isStasised() const; + + /** Returns true if the unit is currently stimmed. + * \see UnitInterface::getStimTimer. */ + bool isStimmed() const; + + /// Checks if this unit is currently trying to resolve a collision by randomly moving around. + /// + /// @returns true if this unit is currently stuck and trying to resolve a collision, and false + /// if this unit is free + virtual bool isStuck() const = 0; + + /** Returns true if the unit is training units (i.e. a Barracks training Marines). + * \see UnitInterface::train, UnitInterface::getTrainingQueue, UnitInterface::cancelTrain, UnitInterface::getRemainingTrainTime. */ + virtual bool isTraining() const = 0; + + /// Checks if the current unit is being attacked. Has a small delay before this returns false + /// again when the unit is no longer being attacked. + /// + /// @returns true if this unit has been attacked within the past few frames, and false + /// if it has not + virtual bool isUnderAttack() const = 0; + + /// Checks if this unit is under the cover of a @Dark_Swarm. + /// + /// @returns true if this unit is protected by a @Dark_Swarm, and false if it is not + virtual bool isUnderDarkSwarm() const = 0; + + /// Checks if this unit is currently being affected by a @Disruption_Web. + /// + /// @returns true if this unit is under the effects of @Disruption_Web. + virtual bool isUnderDisruptionWeb() const = 0; + + /// Checks if this unit is currently taking damage from a @Psi_Storm. + /// + /// @returns true if this unit is losing hit points from a @Psi_Storm, and false otherwise. + virtual bool isUnderStorm() const = 0; + + /// Checks if this unit has power. Most structures are powered by default, but @Protoss + /// structures require a @Pylon to be powered and functional. + /// + /// @returns true if this unit has power or is inaccessible, and false if this unit is + /// unpowered. + virtual bool isPowered() const = 0; + + /** Returns true if the unit is a building that is upgrading. See UpgradeTypes for the complete list + * of available upgrades in Broodwar. + * \see UnitInterface::upgrade, UnitInterface::cancelUpgrade, UnitInterface::getUpgrade, UnitInterface::getRemainingUpgradeTime. */ + bool isUpgrading() const; + + /** Returns true if the unit is visible. If the CompleteMapInformation? cheat flag is enabled, existing + * units hidden by the fog of war will be accessible, but isVisible will still return false. + * \see UnitInterface::exists. */ + virtual bool isVisible(Player player = nullptr) const = 0; + + /// Performs some cheap checks to attempt to quickly detect whether the unit is unable to + /// be targetted as the target unit of an unspecified command. + /// + /// @retval true if BWAPI was unable to determine whether the unit can be a target. + /// @retval false if an error occurred and the unit can not be a target. + /// + /// @see Game::getLastError, UnitInterface::canTargetUnit + virtual bool isTargetable() const = 0; + + /// This function issues a command to the unit(s), however it is used for interfacing only, + /// and is recommended to use one of the more specific command functions when writing an AI. + /// + /// @param command + /// A UnitCommand containing command parameters such as the type, position, target, etc. + /// + /// @returns true if the command was passed to Broodwar, and false if BWAPI determined that + /// the command would fail. + /// @note There is a small chance for a command to fail after it has been passed to Broodwar. + /// + /// @see UnitCommandTypes, Game::getLastError, UnitInterface::canIssueCommand + virtual bool issueCommand(UnitCommand command) = 0; + + /// Orders the unit(s) to attack move to the specified position or attack the specified unit. + /// + /// @param target + /// A Position or a Unit to designate as the target. If a Position is used, the unit will + /// perform an Attack Move command. + /// @param shiftQueueCommand + /// If this value is true, then the order will be queued instead of immediately executed. + /// + /// @returns true if the command was passed to Broodwar, and false if BWAPI determined that + /// the command would fail. + /// @note There is a small chance for a command to fail after it has been passed to Broodwar. + /// + /// @note A @Medic will use Heal Move instead of attack. + /// + /// @see Game::getLastError, UnitInterface::canAttack + bool attack(PositionOrUnit target, bool shiftQueueCommand = false); + + /// Orders the worker unit(s) to construct a structure at a target position. + /// + /// @param type + /// The UnitType to build. + /// @param target + /// A TilePosition to specify the build location, specifically the upper-left corner of the + /// location. If the target is not specified, then the function call will be redirected to + /// the train command. + /// + /// @returns true if the command was passed to Broodwar, and false if BWAPI determined that + /// the command would fail. + /// @note There is a small chance for a command to fail after it has been passed to Broodwar. + /// + /// @note You must have sufficient resources and meet the necessary requirements in order to + /// build a structure. + /// + /// @see Game::getLastError, UnitInterface::train, UnitInterface::cancelConstruction, UnitInterface::canBuild + bool build(UnitType type, TilePosition target = TilePositions::None); + + /// Orders the @Terran structure(s) to construct an add-on. + /// + /// @param type + /// The add-on UnitType to construct. + /// + /// @returns true if the command was passed to Broodwar, and false if BWAPI determined that + /// the command would fail. + /// @note There is a small chance for a command to fail after it has been passed to Broodwar. + /// + /// @note You must have sufficient resources and meet the necessary requirements in order to + /// build a structure. + /// + /// @see Game::getLastError, UnitInterface::build, UnitInterface::cancelAddon, UnitInterface::canBuildAddon + bool buildAddon(UnitType type); + + /// Orders the unit(s) to add a UnitType to its training queue, or morphs into the UnitType if + /// it is @Zerg. + /// + /// @param type + /// The UnitType to train. + /// + /// @returns true if the command was passed to Broodwar, and false if BWAPI determined that + /// the command would fail. + /// @note There is a small chance for a command to fail after it has been passed to Broodwar. + /// + /// @note You must have sufficient resources, supply, and meet the necessary requirements in + /// order to train a unit. + /// @note This command is also used for training @Interceptors and @Scarabs. + /// @note If you call this using a @Hatchery, @Lair, or @Hive, then it will automatically + /// pass the command to one of its @Larvae. + /// + /// @see Game::getLastError, UnitInterface::build, UnitInterface::morph, UnitInterface::cancelTrain, UnitInterface::isTraining, + /// UnitInterface::canTrain + bool train(UnitType type = UnitTypes::None); + + /// Orders the unit(s) to morph into a different UnitType. + /// + /// @param type + /// The UnitType to morph into. + /// + /// @returns true if the command was passed to Broodwar, and false if BWAPI determined that + /// the command would fail. + /// @note There is a small chance for a command to fail after it has been passed to Broodwar. + /// + /// @see Game::getLastError, UnitInterface::build, UnitInterface::morph, UnitInterface::canMorph + bool morph(UnitType type); + + /** Orders the unit to research the given tech type. + * \see UnitInterface::cancelResearch, UnitInterface::Unit#isResearching, UnitInterface::getRemainingResearchTime, UnitInterface::getTech, + * UnitInterface::canResearch. */ + bool research(TechType tech); + + /** Orders the unit to upgrade the given upgrade type. + * \see UnitInterface::cancelUpgrade, UnitInterface::Unit#isUpgrading, UnitInterface::getRemainingUpgradeTime, UnitInterface::getUpgrade, + * UnitInterface::canUpgrade. */ + bool upgrade(UpgradeType upgrade); + + /** Orders the unit to set its rally position to the specified position or unit. + * \see UnitInterface::getRallyPosition, UnitInterface::getRallyUnit, UnitInterface::canSetRallyPoint, UnitInterface::canSetRallyPosition, + * UnitInterface::canSetRallyUnit. */ + bool setRallyPoint(PositionOrUnit target); + + /** Orders the unit to move from its current position to the specified position. + * \see UnitInterface::isMoving, UnitInterface::canMove. */ + bool move(Position target, bool shiftQueueCommand = false); + + /** Orders the unit to patrol between its current position and the specified position. + * \see UnitInterface::isPatrolling, UnitInterface::canPatrol. */ + bool patrol(Position target, bool shiftQueueCommand = false); + + /** Orders the unit to hold its position. + * \see UnitInterface::canHoldPosition. */ + bool holdPosition(bool shiftQueueCommand = false); + + /** Orders the unit to stop. + * \see UnitInterface::canStop. */ + bool stop(bool shiftQueueCommand = false); + + /** Orders the unit to follow the specified unit. + * \see UnitInterface::isFollowing, UnitInterface::canFollow. */ + bool follow(Unit target, bool shiftQueueCommand = false); + + /** Orders the unit to gather the specified unit (must be mineral or refinery type). + * \see UnitInterface::isGatheringGas, UnitInterface::isGatheringMinerals, UnitInterface::canGather. */ + bool gather(Unit target, bool shiftQueueCommand = false); + + /** Orders the unit to return its cargo to a nearby resource depot such as a Command Center. Only + * workers that are carrying minerals or gas can be ordered to return cargo. + * \see UnitInterface::isCarryingGas, UnitInterface::isCarryingMinerals, UnitInterface::canReturnCargo. */ + bool returnCargo(bool shiftQueueCommand = false); + + /** Orders the unit to repair the specified unit. Only Terran SCVs can be ordered to repair, and the + * target must be a mechanical Terran unit or building. + * \see UnitInterface::isRepairing, UnitInterface::canRepair. */ + bool repair(Unit target, bool shiftQueueCommand = false); + + /** Orders the unit to burrow. Either the unit must be a Zerg Lurker, or the unit must be a Zerg ground + * unit and burrow tech must be researched. + * \see: UnitInterface::unburrow, UnitInterface::isBurrowed, UnitInterface::canBurrow. */ + bool burrow(); + + /** Orders the burrowed unit to unburrow. + * \see: UnitInterface::burrow, UnitInterface::isBurrowed, UnitInterface::canUnburrow. */ + bool unburrow(); + + /** Orders the unit to cloak. + * \see: UnitInterface::decloak, UnitInterface::isCloaked, UnitInterface::canCloak. */ + bool cloak(); + + /** Orders the unit to decloak. + * \see: UnitInterface::cloak, UnitInterface::isCloaked, UnitInterface::canDecloak. */ + bool decloak(); + + /** Orders the unit to siege. Note: unit must be a Terran siege tank. + * \see UnitInterface::unsiege, UnitInterface::isSieged, UnitInterface::canSiege. */ + bool siege(); + + /** Orders the unit to unsiege. Note: unit must be a Terran siege tank. + * \see: UnitInterface::unsiege, UnitInterface::isSieged, UnitInterface::canUnsiege. */ + bool unsiege(); + + /** Orders the unit to lift. Note: unit must be a Terran building that can be lifted. + * \see UnitInterface::land, UnitInterface::isLifted, UnitInterface::canLift. */ + bool lift(); + + /** Orders the unit to land. Note: unit must be a Terran building that is currently lifted. + * \see UnitInterface::lift, UnitInterface::isLifted, UnitInterface::canLand. */ + bool land(TilePosition target); + + /** Orders the unit to load the target unit. + * \see UnitInterface::unload, UnitInterface::unloadAll, UnitInterface::getLoadedUnits, Unit:isLoaded. */ + bool load(Unit target, bool shiftQueueCommand = false); + + /** Orders the unit to unload the target unit. Unit should be a Terran Dropship, Protoss Shuttle, + * Zerg Overlord, or a Terran Bunker. + * \see UnitInterface::load, UnitInterface::unloadAll, UnitInterface::getLoadedUnits, Unit:isLoaded, UnitInterface::canUnload, + * UnitInterface::canUnloadAtPosition. */ + bool unload(Unit target); + + /** Orders the unit to unload all loaded units at the unit's current position. Unit should be a + * Terran Dropship, Protoss Shuttle, or Zerg Overlord, or a Terran Bunker. + * \see UnitInterface::load, UnitInterface::unload, UnitInterface::unloadAll, UnitInterface::getLoadedUnits, Unit:isLoaded, + * UnitInterface::canUnloadAll, UnitInterface::canUnloadAtPosition. */ + bool unloadAll(bool shiftQueueCommand = false); + + /** Orders the unit to unload all loaded units at the specified location. Unit should be a Terran + * Dropship, Protoss Shuttle, or Zerg Overlord (but not a Terran Bunker). + * \see UnitInterface::load, UnitInterface::unload, UnitInterface::unloadAll, UnitInterface::getLoadedUnits, Unit:isLoaded, + * Unit:canUnloadAllPosition, UnitInterface::canUnloadAtPosition. */ + bool unloadAll(Position target, bool shiftQueueCommand = false); + + /** Works like the right click in the GUI. + * \see UnitInterface::canRightClick, UnitInterface::canRightClickPosition, UnitInterface::canRightClickUnit. */ + bool rightClick(PositionOrUnit target, bool shiftQueueCommand = false); + + /// Orders a @SCV to stop constructing a structure. This leaves the structure in an incomplete + /// state until it is either cancelled, razed, or completed by another @SCV. + /// + /// @returns true if the command was passed to Broodwar, and false if BWAPI determined that + /// the command would fail. + /// @note There is a small chance for a command to fail after it has been passed to Broodwar. + /// + /// @see isConstructing, canHaltConstruction + bool haltConstruction(); + + /// Orders this unit to cancel and refund itself from begin constructed. + /// + /// @returns true if the command was passed to Broodwar, and false if BWAPI determined that + /// the command would fail. + /// @note There is a small chance for a command to fail after it has been passed to Broodwar. + /// + /// @see isBeingConstructed, build, canCancelConstruction + bool cancelConstruction(); + + /// Orders this unit to cancel and refund an add-on that is being constructed. + /// + /// @returns true if the command was passed to Broodwar, and false if BWAPI determined that + /// the command would fail. + /// @note There is a small chance for a command to fail after it has been passed to Broodwar. + /// + /// @see canCancelAddon, buildAddon + bool cancelAddon(); + + /** Orders the unit to remove the specified unit from its training queue. + * \see UnitInterface::train, UnitInterface::cancelTrain, UnitInterface::isTraining, UnitInterface::getTrainingQueue. + * UnitInterface::canCancelTrain, UnitInterface::canCancelTrainSlot. */ + bool cancelTrain(int slot = -2); + + /// Orders this unit to cancel and refund a unit that is morphing. + /// + /// @returns true if the command was passed to Broodwar, and false if BWAPI determined that + /// the command would fail. + /// @note There is a small chance for a command to fail after it has been passed to Broodwar. + /// + /// @see morph, isMorphing, canCancelMorph + bool cancelMorph(); + + /// Orders this unit to cancel and refund a research that is in progress. + /// + /// @returns true if the command was passed to Broodwar, and false if BWAPI determined that + /// the command would fail. + /// @note There is a small chance for a command to fail after it has been passed to Broodwar. + /// + /// @see research, isResearching, getTech, canCancelResearch + bool cancelResearch(); + + /// Orderes this unit to cancel and refund an upgrade that is in progress. + /// + /// @returns true if the command was passed to Broodwar, and false if BWAPI determined that + /// the command would fail. + /// @note There is a small chance for a command to fail after it has been passed to Broodwar. + /// @see upgrade, isUpgrading, getUpgrade, canCancelUpgrade + bool cancelUpgrade(); + + /** Orders the unit to use a tech. The target may be a position, or a (non-null) unit, or + * nullptr (which means the tech does not target another position/unit, e.g. @Stim_Packs ). + * Returns true if it is a valid tech. + * \see UnitInterface::canUseTechWithOrWithoutTarget, UnitInterface::canUseTech, + * UnitInterface::canUseTechWithoutTarget, UnitInterface::canUseTechUnit, UnitInterface::canUseTechPosition. */ + bool useTech(TechType tech, PositionOrUnit target = nullptr); + + /// Moves a @Flag_Beacon to a different location. This is only used for @CTF or @UMS game + /// types. + /// + /// @param target + /// The target tile position to place the @Flag_Beacon. + /// + /// @returns true if the command was passed to Broodwar, and false if BWAPI determined that + /// the command would fail. + /// @note There is a small chance for a command to fail after it has been passed to Broodwar. + /// + /// @note This command is only available for the first 10 minutes of the game, as in Broodwar. + /// + /// @see canPlaceCOP + bool placeCOP(TilePosition target); + + /// Checks whether the unit is able to execute the given command. If you are calling this + /// function repeatedly (e.g. to generate a collection of valid commands), you can avoid + /// repeating the same kinds of checks by specifying false for some of the optional boolean + /// arguments. Make sure that the state hasn't changed since the check was done though + /// (eg a new frame/event, or a command issued). Also see the more specific functions. + /// + /// @param command + /// A UnitCommand to check. + /// @param checkCanUseTechPositionOnPositions + /// Only used if the command type is UnitCommandTypes::Enum::Use_Tech_Position. A boolean + /// for whether to perform cheap checks for whether the unit is unable to target any + /// positions using the command's TechType (i.e. regardless of what the other command + /// parameters are). You can set this to false if you know this check has already just been + /// performed. + /// @param checkCanUseTechUnitOnUnits + /// Only used if the command type is UnitCommandTypes::Enum::Use_Tech_Unit. A boolean for + /// whether to perform cheap checks for whether the unit is unable to target any units using + /// the command's TechType (i.e. regardless of what the other command parameters are). You + /// can set this to false if you know this check has already just been performed. + /// @param checkCanBuildUnitType + /// Only used if the command type is UnitCommandTypes::Build. A boolean for whether to + /// perform cheap checks for whether the unit is unable to build the specified UnitType + /// (i.e. regardless of what the other command parameters are). You can set this to false if + /// you know this check has already just been performed. + /// @param checkCanTargetUnit + /// Only used for command types that can target a unit. A boolean for whether to perform + /// UnitInterface::canTargetUnit as a check. You can set this to false if you know this check has + /// already just been performed. + /// @param checkCanIssueCommandType + /// A boolean for whether to perform UnitInterface::canIssueCommandType as a check. You can set this + /// to false if you know this check has already just been performed. + /// @param checkCommandibility + /// A boolean for whether to perform UnitInterface::canCommand as a check. You can set this to false + /// if you know this check has already just been performed. + /// + /// @retval true if BWAPI determined that the command is valid. + /// @retval false if an error occurred and the command is invalid. + /// + /// @see UnitCommandTypes, Game::getLastError, UnitInterface::canCommand, UnitInterface::canIssueCommandType, + /// UnitInterface::canTargetUnit + virtual bool canIssueCommand(UnitCommand command, bool checkCanUseTechPositionOnPositions = true, bool checkCanUseTechUnitOnUnits = true, bool checkCanBuildUnitType = true, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute the given command as part of a Unitset + /// (even if none of the units in the Unitset are able to execute the command individually). + /// The reason this function exists is because some commands are valid for an individual unit + /// but not for those individuals as a group (e.g. buildings, critters) and some commands are + /// only valid for a unit if it is commanded as part of a unit group, e.g.: + /// 1. attackMove/attackUnit for a Unitset, some of which can't attack, e.g. @High_Templar. + /// This is supported simply for consistency with BW's behaviour - you + /// could issue move command(s) individually instead. + /// 2. attackMove/move/patrol/rightClickPosition for air unit(s) + e.g. @Larva, as part of + /// the air stacking technique. This is supported simply for consistency with BW's + /// behaviour - you could issue move/patrol/rightClickPosition command(s) for them + /// individually instead. + /// + /// @note BWAPI allows the following special cases to command a unit individually (rather than + /// only allowing it to be commanded as part of a Unitset). These commands are not available + /// to a user in BW when commanding units individually, but BWAPI allows them for convenience: + /// - attackMove for @Medic, which is equivalent to Heal Move. + /// - holdPosition for burrowed @Lurker, for ambushes. + /// - stop for @Larva, to move it to a different side of the @Hatchery / @Lair / @Hive (e.g. + /// so that @Drones morphed later morph nearer to minerals/gas). + /// + /// @see UnitCommandTypes, Game::getLastError, UnitInterface::canIssueCommand, + /// UnitInterface::canCommandGrouped, UnitInterface::canIssueCommandTypeGrouped, UnitInterface::canTargetUnit + virtual bool canIssueCommandGrouped(UnitCommand command, bool checkCanUseTechPositionOnPositions = true, bool checkCanUseTechUnitOnUnits = true, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const = 0; + + /// Performs some cheap checks to attempt to quickly detect whether the unit is unable to + /// execute any commands (eg the unit is stasised). + /// + /// @retval true if BWAPI was unable to determine whether the unit can be commanded. + /// @retval false if an error occurred and the unit can not be commanded. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand + virtual bool canCommand() const = 0; + + /// Performs some cheap checks to attempt to quickly detect whether the unit is unable to + /// execute any commands as part of a Unitset (eg buildings, critters). + /// + /// @retval true if BWAPI was unable to determine whether the unit can be commanded grouped. + /// @retval false if an error occurred and the unit can not be commanded grouped. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommandGrouped, UnitInterface::canIssueCommand + virtual bool canCommandGrouped(bool checkCommandibility = true) const = 0; + + /// Performs some cheap checks to attempt to quickly detect whether the unit is unable to + /// execute the given command type (i.e. regardless of what other possible command parameters + /// could be). + /// + /// @param ct + /// A UnitCommandType. + /// @param checkCommandibility + /// A boolean for whether to perform UnitInterface::canCommand as a check. You can set this to false + /// if you know this check has already just been performed. + /// + /// @retval true if BWAPI was unable to determine whether the command type is invalid. + /// @retval false if an error occurred and the command type is invalid. + /// + /// @see UnitCommandTypes, Game::getLastError, UnitInterface::canIssueCommand + virtual bool canIssueCommandType(UnitCommandType ct, bool checkCommandibility = true) const = 0; + + /// Performs some cheap checks to attempt to quickly detect whether the unit is unable to + /// execute the given command type (i.e. regardless of what other possible command parameters + /// could be) as part of a Unitset. + /// + /// @param ct + /// A UnitCommandType. + /// @param checkCommandibilityGrouped + /// A boolean for whether to perform UnitInterface::canCommandGrouped as a check. You can set this + /// to false if you know this check has already just been performed. + /// @param checkCommandibility + /// A boolean for whether to perform UnitInterface::canCommand as a check. You can set this to false + /// if you know this check has already just been performed. + /// + /// @retval true if BWAPI was unable to determine whether the command type is invalid. + /// @retval false if an error occurred and the command type is invalid. + /// + /// @see UnitCommandTypes, Game::getLastError, UnitInterface::canIssueCommandGrouped + virtual bool canIssueCommandTypeGrouped(UnitCommandType ct, bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const = 0; + + /// Performs some cheap checks to attempt to quickly detect whether the unit is unable to + /// use the given unit as the target unit of an unspecified command. + /// + /// @param targetUnit + /// A target unit for an unspecified command. + /// @param checkCommandibility + /// A boolean for whether to perform UnitInterface::canCommand as a check. You can set this to false + /// if you know this check has already just been performed. + /// + /// @retval true if BWAPI was unable to determine whether the unit can target the given unit. + /// @retval false if an error occurred and the unit can not target the given unit. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::isTargetable + virtual bool canTargetUnit(Unit targetUnit, bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute an attack command to attack-move or attack a unit. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::attack, + /// UnitInterface::canAttackMove, UnitInterface::canAttackUnit + virtual bool canAttack(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute an attack command to attack-move or attack a (non-null) + /// unit. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::attack, + /// UnitInterface::canAttackMove, UnitInterface::canAttackUnit + virtual bool canAttack(PositionOrUnit target, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute an attack command to attack-move or attack a unit, + /// as part of a Unitset. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommandGrouped, UnitInterface::canAttack + virtual bool canAttackGrouped(bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute an attack command to attack-move or attack a + /// (non-null) unit, as part of a Unitset. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommandGrouped, UnitInterface::canAttack + virtual bool canAttackGrouped(PositionOrUnit target, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute an attack command to attack-move. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::attack + virtual bool canAttackMove(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute an attack command to attack-move, as part of a + /// Unitset. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommandGrouped, UnitInterface::canAttackMove + virtual bool canAttackMoveGrouped(bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute an attack command to attack a unit. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::attack + virtual bool canAttackUnit(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute an attack command to attack a unit. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::attack + virtual bool canAttackUnit(Unit targetUnit, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute an attack command to attack a unit, + /// as part of a Unitset. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommandGrouped, UnitInterface::canAttackUnit + virtual bool canAttackUnitGrouped(bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute an attack command to attack a unit, as part of + /// a Unitset. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommandGrouped, UnitInterface::canAttackUnit + virtual bool canAttackUnitGrouped(Unit targetUnit, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a build command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::build + virtual bool canBuild(bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a build command for the given + /// UnitType. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::build + virtual bool canBuild(UnitType uType, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a build command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::build + virtual bool canBuild(UnitType uType, BWAPI::TilePosition tilePos, bool checkTargetUnitType = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a buildAddon command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::buildAddon + virtual bool canBuildAddon(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a buildAddon command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::buildAddon + virtual bool canBuildAddon(UnitType uType, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a train command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::train + virtual bool canTrain(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a train command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::train + virtual bool canTrain(UnitType uType, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a morph command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::morph + virtual bool canMorph(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a morph command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::morph + virtual bool canMorph(UnitType uType, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a research command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::research + virtual bool canResearch(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a research command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::research + virtual bool canResearch(TechType type, bool checkCanIssueCommandType = true) const = 0; + + /// Cheap checks for whether the unit is able to execute an upgrade command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::upgrade + virtual bool canUpgrade(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute an upgrade command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::upgrade + virtual bool canUpgrade(UpgradeType type, bool checkCanIssueCommandType = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a setRallyPoint command to a + /// position or unit. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::setRallyPoint, + /// UnitInterface::canSetRallyPosition, UnitInterface::canSetRallyUnit. + virtual bool canSetRallyPoint(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a setRallyPoint command to a position + /// or (non-null) unit. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::setRallyPoint, + /// UnitInterface::canSetRallyPosition, UnitInterface::canSetRallyUnit. + virtual bool canSetRallyPoint(PositionOrUnit target, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a setRallyPoint command to a position. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::setRallyPoint + virtual bool canSetRallyPosition(bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a setRallyPoint command to a unit. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::setRallyPoint + virtual bool canSetRallyUnit(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a setRallyPoint command to a unit. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::setRallyPoint + virtual bool canSetRallyUnit(Unit targetUnit, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a move command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::move + virtual bool canMove(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a move command, as part of a Unitset. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommandGrouped, UnitInterface::canMove + virtual bool canMoveGrouped(bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a patrol command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::patrol + virtual bool canPatrol(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a patrol command, as part of a Unitset. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommandGrouped, UnitInterface::canPatrol + virtual bool canPatrolGrouped(bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a follow command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::follow + virtual bool canFollow(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a follow command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::follow + virtual bool canFollow(Unit targetUnit, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a gather command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::gather + virtual bool canGather(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a gather command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::gather + virtual bool canGather(Unit targetUnit, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a returnCargo command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::returnCargo + virtual bool canReturnCargo(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a holdPosition command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::holdPosition + virtual bool canHoldPosition(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a stop command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::stop + virtual bool canStop(bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a repair command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::repair + virtual bool canRepair(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a repair command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::repair + virtual bool canRepair(Unit targetUnit, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a burrow command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::burrow + virtual bool canBurrow(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute an unburrow command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::unburrow + virtual bool canUnburrow(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a cloak command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::cloak + virtual bool canCloak(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a decloak command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::decloak + virtual bool canDecloak(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a siege command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::siege + virtual bool canSiege(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute an unsiege command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::unsiege + virtual bool canUnsiege(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a lift command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::lift + virtual bool canLift(bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a land command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::land + virtual bool canLand(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a land command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::land + virtual bool canLand(TilePosition target, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a load command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::load + virtual bool canLoad(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a load command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::load + virtual bool canLoad(Unit targetUnit, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute an unload command or unloadAll at + /// current position command or unloadAll at a different position command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::unload, UnitInterface::unloadAll + virtual bool canUnloadWithOrWithoutTarget(bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute an unload command or unloadAll at + /// current position command or unloadAll at a different position command, for a given + /// position. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::unload, UnitInterface::unloadAll + virtual bool canUnloadAtPosition(Position targDropPos, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute an unload command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::unload + virtual bool canUnload(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute an unload command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::unload, UnitInterface::canUnloadAtPosition + virtual bool canUnload(Unit targetUnit, bool checkCanTargetUnit = true, bool checkPosition = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute an unloadAll command for the current position. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::unloadAll + virtual bool canUnloadAll(bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute an unloadAll command for a different + /// position. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::unloadAll + virtual bool canUnloadAllPosition(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute an unloadAll command for a different position. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::unloadAll + virtual bool canUnloadAllPosition(Position targDropPos, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a rightClick command to a position + /// or unit. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::rightClick, + /// UnitInterface::canRightClickPosition, UnitInterface::canRightClickUnit. + virtual bool canRightClick(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a rightClick command to a position or (non-null) + /// unit. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::rightClick, + /// UnitInterface::canRightClickPosition, UnitInterface::canRightClickUnit. + virtual bool canRightClick(PositionOrUnit target, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a rightClick command to a position + /// or unit, as part of a Unitset. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommandGrouped, UnitInterface::canRightClickUnit + virtual bool canRightClickGrouped(bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a rightClick command to a position or (non-null) + /// unit, as part of a Unitset. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommandGrouped, UnitInterface::canRightClickUnit + virtual bool canRightClickGrouped(PositionOrUnit target, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a rightClick command for a position. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::rightClick + virtual bool canRightClickPosition(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a rightClick command for a position, as part of + /// a Unitset. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommandGrouped, UnitInterface::canRightClick + virtual bool canRightClickPositionGrouped(bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a rightClick command to a unit. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::rightClick + virtual bool canRightClickUnit(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a rightClick command to a unit. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::rightClick + virtual bool canRightClickUnit(Unit targetUnit, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a rightClick command to a unit, as + /// part of a Unitset. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommandGrouped, UnitInterface::canRightClickUnit + virtual bool canRightClickUnitGrouped(bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a rightClick command to a unit, as part of a + /// Unitset. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommandGrouped, UnitInterface::canRightClickUnit + virtual bool canRightClickUnitGrouped(Unit targetUnit, bool checkCanTargetUnit = true, bool checkCanIssueCommandType = true, bool checkCommandibilityGrouped = true, bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a haltConstruction command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::haltConstruction + virtual bool canHaltConstruction(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a cancelConstruction command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::cancelConstruction + virtual bool canCancelConstruction(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a cancelAddon command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::cancelAddon + virtual bool canCancelAddon(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a cancelTrain command for any slot. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::cancelTrain + virtual bool canCancelTrain(bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a cancelTrain command for an + /// unspecified slot. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::cancelTrain + virtual bool canCancelTrainSlot(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a cancelTrain command for a specified slot. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::cancelTrain + virtual bool canCancelTrainSlot(int slot, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a cancelMorph command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::cancelMorph + virtual bool canCancelMorph(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a cancelResearch command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::cancelResearch + virtual bool canCancelResearch(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a cancelUpgrade command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::cancelUpgrade + virtual bool canCancelUpgrade(bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a useTech command without a target or + /// or a useTech command with a target position or a useTech command with a target unit. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::useTech + virtual bool canUseTechWithOrWithoutTarget(bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a useTech command without a target or + /// or a useTech command with a target position or a useTech command with a target unit, for a + /// given TechType. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::useTech + virtual bool canUseTechWithOrWithoutTarget(BWAPI::TechType tech, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a useTech command for a specified position or + /// unit (only specify nullptr if the TechType does not target another position/unit). + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::useTech, + /// UnitInterface::canUseTechWithoutTarget, UnitInterface::canUseTechUnit, UnitInterface::canUseTechPosition + virtual bool canUseTech(BWAPI::TechType tech, PositionOrUnit target = nullptr, bool checkCanTargetUnit = true, bool checkTargetsType = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a useTech command without a target. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::useTech + virtual bool canUseTechWithoutTarget(BWAPI::TechType tech, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a useTech command with an unspecified + /// target unit. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::useTech + virtual bool canUseTechUnit(BWAPI::TechType tech, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a useTech command with a target unit. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::useTech + virtual bool canUseTechUnit(BWAPI::TechType tech, Unit targetUnit, bool checkCanTargetUnit = true, bool checkTargetsUnits = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a useTech command with an unspecified target + /// position. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::useTech + virtual bool canUseTechPosition(BWAPI::TechType tech, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a useTech command with a target position. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::useTech + virtual bool canUseTechPosition(BWAPI::TechType tech, Position target, bool checkTargetsPositions = true, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + + /// Cheap checks for whether the unit is able to execute a placeCOP command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::placeCOP + virtual bool canPlaceCOP(bool checkCommandibility = true) const = 0; + + /// Checks whether the unit is able to execute a placeCOP command. + /// + /// @see Game::getLastError, UnitInterface::canIssueCommand, UnitInterface::placeCOP + virtual bool canPlaceCOP(TilePosition target, bool checkCanIssueCommandType = true, bool checkCommandibility = true) const = 0; + }; +} diff --git a/bwapi4-includes/BWAPI/UnitCommand.h b/bwapi4-includes/BWAPI/UnitCommand.h new file mode 100644 index 0000000..546e610 --- /dev/null +++ b/bwapi4-includes/BWAPI/UnitCommand.h @@ -0,0 +1,81 @@ +#pragma once +#include +#include + +namespace BWAPI +{ + // Forwards + class UnitType; + class TechType; + class UpgradeType; + class PositionOrUnit; + class UnitInterface; + typedef UnitInterface *Unit; + + class UnitCommand + { + public: + UnitCommand(); + UnitCommand(Unit _unit, UnitCommandType _type, Unit _target, int _x, int _y, int _extra); + + static UnitCommand attack(Unit unit, PositionOrUnit target, bool shiftQueueCommand = false); + static UnitCommand build(Unit unit, TilePosition target, UnitType type); + static UnitCommand buildAddon(Unit unit, UnitType type); + static UnitCommand train(Unit unit, UnitType type); + static UnitCommand morph(Unit unit, UnitType type); + static UnitCommand research(Unit unit, TechType tech); + static UnitCommand upgrade(Unit unit, UpgradeType upgrade); + static UnitCommand setRallyPoint(Unit unit, PositionOrUnit target); + static UnitCommand move(Unit unit, Position target, bool shiftQueueCommand = false); + static UnitCommand patrol(Unit unit, Position target, bool shiftQueueCommand = false); + static UnitCommand holdPosition(Unit unit, bool shiftQueueCommand = false); + static UnitCommand stop(Unit unit, bool shiftQueueCommand = false); + static UnitCommand follow(Unit unit, Unit target, bool shiftQueueCommand = false); + static UnitCommand gather(Unit unit, Unit target, bool shiftQueueCommand = false); + static UnitCommand returnCargo(Unit unit, bool shiftQueueCommand = false); + static UnitCommand repair(Unit unit, Unit target, bool shiftQueueCommand = false); + static UnitCommand burrow(Unit unit); + static UnitCommand unburrow(Unit unit); + static UnitCommand cloak(Unit unit); + static UnitCommand decloak(Unit unit); + static UnitCommand siege(Unit unit); + static UnitCommand unsiege(Unit unit); + static UnitCommand lift(Unit unit); + static UnitCommand land(Unit unit, TilePosition target); + static UnitCommand load(Unit unit, Unit target, bool shiftQueueCommand = false); + static UnitCommand unload(Unit unit, Unit target); + static UnitCommand unloadAll(Unit unit, bool shiftQueueCommand = false); + static UnitCommand unloadAll(Unit unit, Position target, bool shiftQueueCommand = false); + static UnitCommand rightClick(Unit unit, PositionOrUnit target, bool shiftQueueCommand = false); + static UnitCommand haltConstruction(Unit unit); + static UnitCommand cancelConstruction(Unit unit); + static UnitCommand cancelAddon(Unit unit); + static UnitCommand cancelTrain(Unit unit, int slot = -2); + static UnitCommand cancelMorph(Unit unit); + static UnitCommand cancelResearch(Unit unit); + static UnitCommand cancelUpgrade(Unit unit); + static UnitCommand useTech(Unit unit,TechType tech); + static UnitCommand useTech(Unit unit,TechType tech, PositionOrUnit target); + static UnitCommand placeCOP(Unit unit, TilePosition target); + + UnitCommandType getType() const; + Unit getUnit() const; + Unit getTarget() const; + Position getTargetPosition() const; + TilePosition getTargetTilePosition() const; + UnitType getUnitType() const; + TechType getTechType() const; + UpgradeType getUpgradeType() const; + int getSlot() const; + bool isQueued() const; + + bool operator==(const UnitCommand& other) const; + bool operator!=(const UnitCommand& other) const; + + Unit unit; + UnitCommandType type; + Unit target; + int x, y; + int extra; + }; +} \ No newline at end of file diff --git a/bwapi4-includes/BWAPI/UnitCommandType.h b/bwapi4-includes/BWAPI/UnitCommandType.h new file mode 100644 index 0000000..0be62fb --- /dev/null +++ b/bwapi4-includes/BWAPI/UnitCommandType.h @@ -0,0 +1,130 @@ +#pragma once +#include + +namespace BWAPI +{ + namespace UnitCommandTypes + { + /// Enumeration of unit command types + namespace Enum + { + /// Enumeration of unit command types + enum Enum + { + Attack_Move = 0, + Attack_Unit, + Build, + Build_Addon, + Train, + Morph, + Research, + Upgrade, + Set_Rally_Position, + Set_Rally_Unit, + Move, + Patrol, + Hold_Position, + Stop, + Follow, + Gather, + Return_Cargo, + Repair, + Burrow, + Unburrow, + Cloak, + Decloak, + Siege, + Unsiege, + Lift, + Land, + Load, + Unload, + Unload_All, + Unload_All_Position, + Right_Click_Position, + Right_Click_Unit, + Halt_Construction, + Cancel_Construction, + Cancel_Addon, + Cancel_Train, + Cancel_Train_Slot, + Cancel_Morph, + Cancel_Research, + Cancel_Upgrade, + Use_Tech, + Use_Tech_Position, + Use_Tech_Unit, + Place_COP, + None, + Unknown, + MAX + }; + }; + }; + class UnitCommandType : public Type + { + public: + /// @copydoc Type::Type(int) + UnitCommandType(int id = UnitCommandTypes::Enum::None); + }; + /// Namespace containing unit command types + namespace UnitCommandTypes + { + /// Retrieves the set of all UnitCommandTypes. + /// + /// @returns Set of UnitCommandTypes. + const UnitCommandType::const_set& allUnitCommandTypes(); + +#ifdef BWAPI_DECL +#undef BWAPI_DECL +#endif +#define BWAPI_DECL(x) /** x */ extern const UnitCommandType x + BWAPI_DECL(Attack_Move); + BWAPI_DECL(Attack_Unit); + BWAPI_DECL(Build); + BWAPI_DECL(Build_Addon); + BWAPI_DECL(Train); + BWAPI_DECL(Morph); + BWAPI_DECL(Research); + BWAPI_DECL(Upgrade); + BWAPI_DECL(Set_Rally_Position); + BWAPI_DECL(Set_Rally_Unit); + BWAPI_DECL(Move); + BWAPI_DECL(Patrol); + BWAPI_DECL(Hold_Position); + BWAPI_DECL(Stop); + BWAPI_DECL(Follow); + BWAPI_DECL(Gather); + BWAPI_DECL(Return_Cargo); + BWAPI_DECL(Repair); + BWAPI_DECL(Burrow); + BWAPI_DECL(Unburrow); + BWAPI_DECL(Cloak); + BWAPI_DECL(Decloak); + BWAPI_DECL(Siege); + BWAPI_DECL(Unsiege); + BWAPI_DECL(Lift); + BWAPI_DECL(Land); + BWAPI_DECL(Load); + BWAPI_DECL(Unload); + BWAPI_DECL(Unload_All); + BWAPI_DECL(Unload_All_Position); + BWAPI_DECL(Right_Click_Position); + BWAPI_DECL(Right_Click_Unit); + BWAPI_DECL(Halt_Construction); + BWAPI_DECL(Cancel_Construction); + BWAPI_DECL(Cancel_Addon); + BWAPI_DECL(Cancel_Train); + BWAPI_DECL(Cancel_Train_Slot); + BWAPI_DECL(Cancel_Morph); + BWAPI_DECL(Cancel_Research); + BWAPI_DECL(Cancel_Upgrade); + BWAPI_DECL(Use_Tech); + BWAPI_DECL(Use_Tech_Position); + BWAPI_DECL(Use_Tech_Unit); + BWAPI_DECL(Place_COP); + BWAPI_DECL(None); + BWAPI_DECL(Unknown); +#undef BWAPI_DECL + } +} diff --git a/bwapi4-includes/BWAPI/UnitSizeType.h b/bwapi4-includes/BWAPI/UnitSizeType.h new file mode 100644 index 0000000..b311fba --- /dev/null +++ b/bwapi4-includes/BWAPI/UnitSizeType.h @@ -0,0 +1,52 @@ +#pragma once +#include + +#define BWAPI_UNITSIZETYPEDEF(x) static const UnitSizeType x(Enum::x) /** ref x */ + +namespace BWAPI +{ + namespace UnitSizeTypes + { + /// Enumeration of unit size types + namespace Enum + { + /// Enumeration of unit size types + enum Enum + { + Independent = 0, + Small, + Medium, + Large, + None, + Unknown, + MAX + }; + }; + }; + class UnitSizeType : public Type + { + public: + /// @copydoc Type::Type(int) + UnitSizeType(int id = UnitSizeTypes::Enum::None); + }; + /// Namespace containing unit size types + namespace UnitSizeTypes + { + /// Retrieves the set of all UnitSizeTypes. + /// + /// @returns Set of all UnitSizeTypes. + const UnitSizeType::const_set& allUnitSizeTypes(); + +#ifdef BWAPI_DECL +#undef BWAPI_DECL +#endif +#define BWAPI_DECL(x) /** x */ extern const UnitSizeType x + BWAPI_DECL(Independent); + BWAPI_DECL(Small); + BWAPI_DECL(Medium); + BWAPI_DECL(Large); + BWAPI_DECL(None); + BWAPI_DECL(Unknown); +#undef BWAPI_DECL + } +} diff --git a/bwapi4-includes/BWAPI/UnitType.h b/bwapi4-includes/BWAPI/UnitType.h new file mode 100644 index 0000000..daa6abf --- /dev/null +++ b/bwapi4-includes/BWAPI/UnitType.h @@ -0,0 +1,1025 @@ +#pragma once +#include + +#include +#include + +namespace BWAPI +{ + // Forward Declarations + class TechType; + class UpgradeType; + class WeaponType; + class UnitSizeType; + class Race; + + namespace UnitTypes + { + /// Enumeration of unit types + namespace Enum + { + /// Enumeration of unit types + enum Enum + { + Terran_Marine = 0, + Terran_Ghost, + Terran_Vulture, + Terran_Goliath, + Terran_Goliath_Turret, + Terran_Siege_Tank_Tank_Mode, + Terran_Siege_Tank_Tank_Mode_Turret, + Terran_SCV, + Terran_Wraith, + Terran_Science_Vessel, + Hero_Gui_Montag, + Terran_Dropship, + Terran_Battlecruiser, + Terran_Vulture_Spider_Mine, + Terran_Nuclear_Missile, + Terran_Civilian, + Hero_Sarah_Kerrigan, + Hero_Alan_Schezar, + Hero_Alan_Schezar_Turret, + Hero_Jim_Raynor_Vulture, + Hero_Jim_Raynor_Marine, + Hero_Tom_Kazansky, + Hero_Magellan, + Hero_Edmund_Duke_Tank_Mode, + Hero_Edmund_Duke_Tank_Mode_Turret, + Hero_Edmund_Duke_Siege_Mode, + Hero_Edmund_Duke_Siege_Mode_Turret, + Hero_Arcturus_Mengsk, + Hero_Hyperion, + Hero_Norad_II, + Terran_Siege_Tank_Siege_Mode, + Terran_Siege_Tank_Siege_Mode_Turret, + Terran_Firebat, + Spell_Scanner_Sweep, + Terran_Medic, + Zerg_Larva, + Zerg_Egg, + Zerg_Zergling, + Zerg_Hydralisk, + Zerg_Ultralisk, + Zerg_Broodling, + Zerg_Drone, + Zerg_Overlord, + Zerg_Mutalisk, + Zerg_Guardian, + Zerg_Queen, + Zerg_Defiler, + Zerg_Scourge, + Hero_Torrasque, + Hero_Matriarch, + Zerg_Infested_Terran, + Hero_Infested_Kerrigan, + Hero_Unclean_One, + Hero_Hunter_Killer, + Hero_Devouring_One, + Hero_Kukulza_Mutalisk, + Hero_Kukulza_Guardian, + Hero_Yggdrasill, + Terran_Valkyrie, + Zerg_Cocoon, + Protoss_Corsair, + Protoss_Dark_Templar, + Zerg_Devourer, + Protoss_Dark_Archon, + Protoss_Probe, + Protoss_Zealot, + Protoss_Dragoon, + Protoss_High_Templar, + Protoss_Archon, + Protoss_Shuttle, + Protoss_Scout, + Protoss_Arbiter, + Protoss_Carrier, + Protoss_Interceptor, + Hero_Dark_Templar, + Hero_Zeratul, + Hero_Tassadar_Zeratul_Archon, + Hero_Fenix_Zealot, + Hero_Fenix_Dragoon, + Hero_Tassadar, + Hero_Mojo, + Hero_Warbringer, + Hero_Gantrithor, + Protoss_Reaver, + Protoss_Observer, + Protoss_Scarab, + Hero_Danimoth, + Hero_Aldaris, + Hero_Artanis, + Critter_Rhynadon, + Critter_Bengalaas, + Special_Cargo_Ship, + Special_Mercenary_Gunship, + Critter_Scantid, + Critter_Kakaru, + Critter_Ragnasaur, + Critter_Ursadon, + Zerg_Lurker_Egg, + Hero_Raszagal, + Hero_Samir_Duran, + Hero_Alexei_Stukov, + Special_Map_Revealer, + Hero_Gerard_DuGalle, + Zerg_Lurker, + Hero_Infested_Duran, + Spell_Disruption_Web, + Terran_Command_Center, + Terran_Comsat_Station, + Terran_Nuclear_Silo, + Terran_Supply_Depot, + Terran_Refinery, + Terran_Barracks, + Terran_Academy, + Terran_Factory, + Terran_Starport, + Terran_Control_Tower, + Terran_Science_Facility, + Terran_Covert_Ops, + Terran_Physics_Lab, + Unused_Terran1, + Terran_Machine_Shop, + Unused_Terran2, + Terran_Engineering_Bay, + Terran_Armory, + Terran_Missile_Turret, + Terran_Bunker, + Special_Crashed_Norad_II, + Special_Ion_Cannon, + Powerup_Uraj_Crystal, + Powerup_Khalis_Crystal, + Zerg_Infested_Command_Center, + Zerg_Hatchery, + Zerg_Lair, + Zerg_Hive, + Zerg_Nydus_Canal, + Zerg_Hydralisk_Den, + Zerg_Defiler_Mound, + Zerg_Greater_Spire, + Zerg_Queens_Nest, + Zerg_Evolution_Chamber, + Zerg_Ultralisk_Cavern, + Zerg_Spire, + Zerg_Spawning_Pool, + Zerg_Creep_Colony, + Zerg_Spore_Colony, + Unused_Zerg1, + Zerg_Sunken_Colony, + Special_Overmind_With_Shell, + Special_Overmind, + Zerg_Extractor, + Special_Mature_Chrysalis, + Special_Cerebrate, + Special_Cerebrate_Daggoth, + Unused_Zerg2, + Protoss_Nexus, + Protoss_Robotics_Facility, + Protoss_Pylon, + Protoss_Assimilator, + Unused_Protoss1, + Protoss_Observatory, + Protoss_Gateway, + Unused_Protoss2, + Protoss_Photon_Cannon, + Protoss_Citadel_of_Adun, + Protoss_Cybernetics_Core, + Protoss_Templar_Archives, + Protoss_Forge, + Protoss_Stargate, + Special_Stasis_Cell_Prison, + Protoss_Fleet_Beacon, + Protoss_Arbiter_Tribunal, + Protoss_Robotics_Support_Bay, + Protoss_Shield_Battery, + Special_Khaydarin_Crystal_Form, + Special_Protoss_Temple, + Special_XelNaga_Temple, + Resource_Mineral_Field, + Resource_Mineral_Field_Type_2, + Resource_Mineral_Field_Type_3, + Unused_Cave, + Unused_Cave_In, + Unused_Cantina, + Unused_Mining_Platform, + Unused_Independant_Command_Center, + Special_Independant_Starport, + Unused_Independant_Jump_Gate, + Unused_Ruins, + Unused_Khaydarin_Crystal_Formation, + Resource_Vespene_Geyser, + Special_Warp_Gate, + Special_Psi_Disrupter, + Unused_Zerg_Marker, + Unused_Terran_Marker, + Unused_Protoss_Marker, + Special_Zerg_Beacon, + Special_Terran_Beacon, + Special_Protoss_Beacon, + Special_Zerg_Flag_Beacon, + Special_Terran_Flag_Beacon, + Special_Protoss_Flag_Beacon, + Special_Power_Generator, + Special_Overmind_Cocoon, + Spell_Dark_Swarm, + Special_Floor_Missile_Trap, + Special_Floor_Hatch, + Special_Upper_Level_Door, + Special_Right_Upper_Level_Door, + Special_Pit_Door, + Special_Right_Pit_Door, + Special_Floor_Gun_Trap, + Special_Wall_Missile_Trap, + Special_Wall_Flame_Trap, + Special_Right_Wall_Missile_Trap, + Special_Right_Wall_Flame_Trap, + Special_Start_Location, + Powerup_Flag, + Powerup_Young_Chrysalis, + Powerup_Psi_Emitter, + Powerup_Data_Disk, + Powerup_Khaydarin_Crystal, + Powerup_Mineral_Cluster_Type_1, + Powerup_Mineral_Cluster_Type_2, + Powerup_Protoss_Gas_Orb_Type_1, + Powerup_Protoss_Gas_Orb_Type_2, + Powerup_Zerg_Gas_Sac_Type_1, + Powerup_Zerg_Gas_Sac_Type_2, + Powerup_Terran_Gas_Tank_Type_1, + Powerup_Terran_Gas_Tank_Type_2, + + None, + AllUnits, + Men, + Buildings, + Factories, + Unknown, + MAX + }; + + }; + } + /// The UnitType is used to get information about a particular type of unit, such as its cost, + /// build time, weapon, hit points, abilities, etc. + /// + /// @see UnitInterface::getType + class UnitType : public Type + { + public: + /// @copydoc Type::Type(int) + UnitType(int id = UnitTypes::Enum::None); + + /// Retrieves the Race that the unit type belongs to. + /// + /// @returns Race indicating the race that owns this unit type. + /// @retval Race::None indicating that the unit type does not belong to any particular race (a + /// critter for example). + Race getRace() const; + + /// Obtains the source unit type that is used to build or train this unit type, as well as the + /// amount of them that are required. + /// + /// @returns std::pair in which the first value is the UnitType that builds this unit type, and + /// the second value is the number of those types that are required (this value is 2 for + /// @Archons, and 1 for all other types). + /// @retval pair(UnitTypes::None,0) If this unit type cannot be made by the player. + const std::pair< UnitType, int > whatBuilds() const; + + /// Retrieves the immediate technology tree requirements to make this unit type. + /// + /// @returns std::map containing a UnitType to number mapping of UnitTypes required. + const std::map< UnitType, int >& requiredUnits() const; + + /// Identifies the required TechType in order to create certain units. + /// + /// @note The only unit that requires a technology is the @Lurker, which needs @Lurker_Aspect. + /// @returns TechType indicating the technology that must be researched in order to create this + /// unit type. + /// @retval TechTypes::None If creating this unit type does not require a technology to be + /// researched. + TechType requiredTech() const; + + /// Retrieves the cloaking technology associated with certain units. + /// + /// @returns TechType referring to the cloaking technology that this unit type uses as an + /// ability. + /// @retval TechTypes::None If this unit type does not have an active cloak ability. + TechType cloakingTech() const; + + /// Retrieves the set of abilities that this unit can use, provided it is available to you in + /// the game. + /// + /// @returns Set of TechTypes containing ability information. + const ConstVectorset& abilities() const; + + /// Retrieves the set of upgrades that this unit can use to enhance its fighting ability. + /// + /// @return Set of UpgradeTypes containing upgrade types that will impact this unit type. + const ConstVectorset& upgrades() const; + + /// Retrieves the upgrade type used to increase the armor of this unit type. For each upgrade, + /// this unit type gains +1 additional armor. + /// + /// @returns UpgradeType indicating the upgrade that increases this unit type's armor amount. + UpgradeType armorUpgrade() const; + + /// Retrieves the default maximum amount of hit points that this unit type can have. + /// + /// @note This value may not necessarily match the value seen in the @UMS game type. + /// + /// @returns Integer indicating the maximum amount of hit points for this unit type. + int maxHitPoints() const; + + /// Retrieves the default maximum amount of shield points that this unit type can have. + /// + /// @note This value may not necessarily match the value seen in the @UMS game type. + /// + /// @returns Integer indicating the maximum amount of shield points for this unit type. + /// @retval 0 If this unit type does not have shields. + int maxShields() const; + + /// Retrieves the maximum amount of energy this unit type can have by default. + /// + /// @returns Integer indicating the maximum amount of energy for this unit type. + /// @retval 0 If this unit does not gain energy for abilities. + int maxEnergy() const; + + /// Retrieves the default amount of armor that the unit type starts with, excluding upgrades. + /// + /// @note This value may not necessarily match the value seen in the @UMS game type. + /// + /// @returns The amount of armor the unit type has. + int armor() const; + + /// Retrieves the default mineral price of purchasing the unit. + /// + /// @note This value may not necessarily match the value seen in the @UMS game type. + /// + /// @returns Mineral cost of the unit. + int mineralPrice() const; + + /// Retrieves the default vespene gas price of purchasing the unit. + /// + /// @note This value may not necessarily match the value seen in the @UMS game type. + /// + /// @returns Vespene gas cost of the unit. + int gasPrice() const; + + /// Retrieves the default time, in frames, needed to train, morph, or build the unit. + /// + /// @note This value may not necessarily match the value seen in the @UMS game type. + /// + /// @returns Number of frames needed in order to build the unit. + /// @see UnitInterface::getRemainingBuildTime + int buildTime() const; + + /// Retrieves the amount of supply that this unit type will use when created. It will use the + /// supply pool that is appropriate for its Race. + /// + /// @note In Starcraft programming, the managed supply values are double than what they appear + /// in the game. The reason for this is because @Zerglings use 0.5 visible supply. + /// + /// @returns Integer containing the supply required to build this unit. + /// @see supplyProvided, PlayerInterface::supplyTotal, PlayerInterface::supplyUsed + int supplyRequired() const; + + /// Retrieves the amount of supply that this unit type produces for its appropriate Race's + /// supply pool. + /// + /// @note In Starcraft programming, the managed supply values are double than what they appear + /// in the game. The reason for this is because @Zerglings use 0.5 visible supply. + /// + /// @see supplyRequired, PlayerInterface::supplyTotal, PlayerInterface::supplyUsed + int supplyProvided() const; + + /// Retrieves the amount of space required by this unit type to fit inside a @Bunker or + /// @Transport. + /// + /// @returns Amount of space required by this unit type for transport. + /// @retval 255 If this unit type can not be transported. + /// @see spaceProvided + int spaceRequired() const; + + /// Retrieves the amount of space provided by this @Bunker or @Transport for unit + /// transportation. + /// + /// @returns The number of slots provided by this unit type. + /// @see spaceRequired + int spaceProvided() const; + + /// Retrieves the amount of score points awarded for constructing this unit type. This value is + /// used for calculating scores in the post-game score screen. + /// + /// @returns Number of points awarded for constructing this unit type. + /// @see destroyScore + int buildScore() const; + + /// Retrieves the amount of score points awarded for killing this unit type. This value is + /// used for calculating scores in the post-game score screen. + /// + /// @returns Number of points awarded for killing this unit type. + /// @see buildScore + int destroyScore() const; + + /// Retrieves the UnitSizeType of this unit, which is used in calculations along with weapon + /// damage types to determine the amount of damage that will be dealt to this type. + /// + /// @returns UnitSizeType indicating the conceptual size of the unit type. + /// @see WeaponType::damageType + UnitSizeType size() const; + + /// Retrieves the width of this unit type, in tiles. Used for determining the tile size of + /// structures. + /// + /// @returns Width of this unit type, in tiles. + int tileWidth() const; + + /// Retrieves the height of this unit type, in tiles. Used for determining the tile size of + /// structures. + /// + /// @returns Height of this unit type, in tiles. + int tileHeight() const; + + /// Retrieves the tile size of this unit type. Used for determining the tile size of + /// structures. + /// + /// @returns TilePosition containing the width (x) and height (y) of the unit type, in tiles. + TilePosition tileSize() const; + + /// Retrieves the distance from the center of the unit type to its left edge. + /// + /// @returns Distance to this unit type's left edge from its center, in pixels. + int dimensionLeft() const; + + /// Retrieves the distance from the center of the unit type to its top edge. + /// + /// @returns Distance to this unit type's top edge from its center, in pixels. + int dimensionUp() const; + + /// Retrieves the distance from the center of the unit type to its right edge. + /// + /// @returns Distance to this unit type's right edge from its center, in pixels. + int dimensionRight() const; + + /// Retrieves the distance from the center of the unit type to its bottom edge. + /// + /// @returns Distance to this unit type's bottom edge from its center, in pixels. + int dimensionDown() const; + + /// A macro for retrieving the width of the unit type, which is calculated using + /// dimensionLeft + dimensionRight + 1. + /// + /// @returns Width of the unit, in pixels. + int width() const; + + /// A macro for retrieving the height of the unit type, which is calculated using + /// dimensionUp + dimensionDown + 1. + /// + /// @returns Height of the unit, in pixels. + int height() const; + + /// Retrieves the range at which this unit type will start targeting enemy units. + /// + /// @returns Distance at which this unit type begins to seek out enemy units, in pixels. + int seekRange() const; + + /// Retrieves the sight range of this unit type. + /// + /// @returns Sight range of this unit type, measured in pixels. + int sightRange() const; + + /// Retrieves this unit type's weapon type used when attacking targets on the ground. + /// + /// @returns WeaponType used as this unit type's ground weapon. + /// @see maxGroundHits, airWeapon + WeaponType groundWeapon() const; + + /// Retrieves the maximum number of hits this unit can deal to a ground target using its + /// ground weapon. This value is multiplied by the ground weapon's damage to calculate the + /// unit type's damage potential. + /// + /// @returns Maximum number of hits given to ground targets. + /// @see groundWeapon, maxAirHits + int maxGroundHits() const; + + /// Retrieves this unit type's weapon type used when attacking targets in the air. + /// + /// @returns WeaponType used as this unit type's air weapon. + /// @see maxAirHits, groundWeapon + WeaponType airWeapon() const; + + /// Retrieves the maximum number of hits this unit can deal to a flying target using its + /// air weapon. This value is multiplied by the air weapon's damage to calculate the + /// unit type's damage potential. + /// + /// @returns Maximum number of hits given to air targets. + /// @see airWeapon, maxGroundHits + int maxAirHits() const; + + /// Retrieves this unit type's top movement speed with no upgrades. + /// + /// @note That some units have inconsistent movement and this value is sometimes an + /// approximation. + /// + /// @returns The approximate top speed, in pixels per frame, as a double. For liftable @Terran + /// structures, this function returns their movement speed while lifted. + double topSpeed() const; + + /** Returns how fast the unit can accelerate to its top speed. What units this quantity is measured in + * is currently unknown. */ + int acceleration() const; + + /** Related to how fast the unit can halt. What units this quantity is measured in is currently + * unknown. */ + int haltDistance() const; + + /** Related to how fast the unit can turn. What units this quantity is measured in is currently + * unknown. */ + int turnRadius() const; + + /** Returns true if the unit can train other units. For example, UnitTypes::Terran_Barracks.canProduce() + * will return true, while UnitTypes::Terran_Marine?.canProduce() will return false. This is also true + * for two non-building units: Protoss Carrier (can produce interceptors) and Protoss Reaver + * (can produce scarabs). */ + bool canProduce() const; + + /** Returns true if the unit can attack (either ground or air). Returns false for units that can only + * inflict damage via special abilities (such as Protoss High Templar). */ + bool canAttack() const; + + /** Returns true if the unit can move. Note that buildings will return false, even Terran buildings + * which can move once lifted. */ + bool canMove() const; + + /// Checks if this unit type is a flying unit. Flying units ignore ground pathing and + /// collisions. + /// + /// @returns true if this unit type is in the air by default, and false otherwise + bool isFlyer() const; + + /// Checks if this unit type can regenerate hit points. This generally applies to @Zerg units. + /// + /// @returns true if this unit type regenerates its hit points, and false otherwise. + bool regeneratesHP() const; + + /// Checks if this unit type has the capacity to store energy and use it for special abilities. + /// + /// @returns true if this unit type generates energy, and false if it does not have an energy + /// pool. + bool isSpellcaster() const; + + /// Checks if this unit type is permanently cloaked. This means the unit type is always + /// cloaked and requires a detector in order to see it. + /// + /// @returns true if this unit type is permanently cloaked, and false otherwise. + bool hasPermanentCloak() const; + + /// Checks if this unit type is invincible by default. Invincible units cannot be destroyed by + /// other units' attacks. + /// + /// @returns true if this unit type is invincible, and false if it is vulnerable to attacks. + bool isInvincible() const; + + /// Checks if this unit is an organic unit. The organic property is required for some abilities + /// such as @Heal. + /// + /// @returns true if this unit type has the organic property, and false otherwise. + bool isOrganic() const; + + /// Checks if this unit is mechanical. The mechanical property is required for some actions + /// such as @Repair. + /// + /// @returns true if this unit type has the mechanical property, and false otherwise. + bool isMechanical() const; + + /// Checks if this unit is robotic. The robotic property is @todo finish this + /// + /// @returns true if this unit type has the robotic property, and false otherwise. + bool isRobotic() const; + + /// Checks if this unit type is capable of detecting units that are cloaked or burrowed. + /// + /// @returns true if this unit type is a detector by default, false if it does not have this + /// property + bool isDetector() const; + + /// Checks if this unit type is capable of storing resources such as @minerals . Resources + /// are harvested from resource containers. + /// + /// @returns true if this unit type may contain resources that can be harvested, false + /// otherwise. + bool isResourceContainer() const; + + /// Checks if this unit type is a resource depot. Resource depots must be placed a certain + /// distance from resources. Resource depots are typically the main building for any + /// particular race. Workers will return resources to the nearest resource depot. + /// + /// Example: + /// @code + /// if ( BWAPI::Broodwar->self() ) + /// { + /// BWAPI::Unitset myUnits = BWAPI::Broodwar->self()->getUnits(); + /// for ( auto u = myUnits.begin(); u != myUnits.end(); ++u ) + /// { + /// if ( u->isIdle() && u->getType().isResourceDepot() ) + /// u->train( u->getType().getRace().getWorker() ); + /// } + /// } + /// @endcode + /// @returns true if the unit type is a resource depot, false if it is not. + bool isResourceDepot() const; + + /// Checks if this unit type is a refinery. A refinery is a structure that is placed on top of + /// a @geyser . Refinery types are @refinery , @extractor , and @assimilator. + /// + /// Example: + /// @code + /// if ( BWAPI::Broodwar->self() ) + /// { + /// BWAPI::Unitset myUnits = BWAPI::Broodwar->self()->getUnits(); + /// for ( auto u = myUnits.begin(); u != myUnits.end(); ++u ) + /// { + /// if ( u->getType().isRefinery() ) + /// { + /// int nWorkersAssigned = u->getClientInfo('work'); + /// if ( nWorkersAssigned < 3 ) + /// { + /// Unit pClosestIdleWorker = u->getClosestUnit(BWAPI::Filter::IsWorker && BWAPI::Filter::IsIdle); + /// if ( pClosestIdleWorker ) + /// { + /// // gather from the refinery (and check if successful) + /// if ( pClosestIdleWorker->gather(*u) ) + /// { + /// // set a back reference for when the unit is killed or re-assigned (code not provided) + /// pClosestIdleWorker->setClientInfo(*u, 'ref'); + /// + /// // Increment the number of workers assigned and associate it with the refinery + /// ++nWorkersAssigned; + /// u->setClientInfo(nWorkersAssigned, 'work'); + /// } + /// } + /// } // workers < 3 + /// } // isRefinery + /// } // for + /// } + /// @endcode + /// @returns true if this unit type is a refinery, and false if it is not. + bool isRefinery() const; + + /// Checks if this unit type is a worker unit. Worker units can harvest resources and build + /// structures. Worker unit types include the @SCV , @probe, and @drone. + /// + /// @returns true if this unit type is a worker, and false if it is not. + bool isWorker() const; + + /** Returns true for buildings that must be near a pylon to be constructed. */ + bool requiresPsi() const; + + /** Returns true for buildings that can only be built on zerg creep. */ + bool requiresCreep() const; + + /** Returns true for Zergling and Scourge. */ + bool isTwoUnitsInOneEgg() const; + + /** Returns true for Zerg Lurker and units that can burrow when burrow tech is researched. */ + bool isBurrowable() const; + + /** Returns true for units that can be cloaked - Terran Ghost and Terran Wraith. Does not include units + * which have permanent cloak (Protoss Observer and Protoss Dark Templar). */ + bool isCloakable() const; + + /** Returns true if the unit is a building (also true for mineral field and vespene geyser). */ + bool isBuilding() const; + + /** Returns true if the unit is an add-on, such as a Terran Comsat Station. */ + bool isAddon() const; + + /** Returns true for Terran buildings that can lift off (i.e. Barracks). */ + bool isFlyingBuilding() const; + + /** Returns true if the unit is neutral, such as a critter or mineral field. */ + bool isNeutral() const; + + /** Returns true if the unit is a Hero unit. */ + bool isHero() const; + + /** Returns true if the unit is a Powerup unit. */ + bool isPowerup() const; + + /** Returns true if the unit is a regular Beacon. */ + bool isBeacon() const; + + /** Returns true if the unit is a flag Beacon. */ + bool isFlagBeacon() const; + + /** Returns true if the unit is a special building. */ + bool isSpecialBuilding() const; + + /** Returns true if the unit is a spell unit. */ + bool isSpell() const; + + /** Returns true if the unit produces larva. */ + bool producesLarva() const; + + /** Returns true if the unit is one of the three mineral field types. */ + bool isMineralField() const; + + /// Checks if this unit type is a neutral critter. + /// + /// @returns true if this unit type is a critter, and false otherwise. + /// + /// Example usage: + /// @code + /// BWAPI::Position myBasePosition( BWAPI::Broodwar->self()->getStartLocation() ); + /// BWAPI::UnitSet unitsAroundTheBase = BWAPI::Broodwar->getUnitsInRadius(myBasePosition, 1024, !BWAPI::Filter::IsOwned && !BWAPI::Filter::IsParasited); + /// for ( auto u = unitsAroundTheBase.begin(); u != unitsAroundTheBase.end(); ++u ) + /// { + /// if ( u->getType().isCritter() && !u->isInvincible() ) + /// { + /// BWAPI::Unit myQueen = u->getClosestUnit(BWAPI::Filter::GetType == BWAPI::UnitTypes::Zerg_Queen && BWAPI::Filter::IsOwned); + /// if ( myQueen ) + /// myQueen->useTech(BWAPI::TechTypes::Parasite, *u); + /// } + /// } + /// @endcode + bool isCritter() const; + + /// Checks if this unit type is capable of constructing an add-on. An add-on is an extension + /// or attachment for @Terran structures, specifically the @Command_Center, @Factory, + /// @Starport, and @Science_Facility. + /// + /// @returns true if this unit type can construct an add-on, and false if it can not. + /// @see isAddon + bool canBuildAddon() const; + }; + + /// Namespace containing unit types + namespace UnitTypes + { + /// Retrieves the maximum unit width from the set of all units. + /// + /// @returns The maximum width of all units, in pixels. + int maxUnitWidth(); + + /// Retrieves the maximum unit height from the set of all units. + /// + /// @returns The maximum height of all units, in pixels. + int maxUnitHeight(); + + /// Retrieves the set of all unit types. + /// + /// @returns A constant set of all available unit types. + const UnitType::const_set& allUnitTypes(); + + /// Retrieves the set of all macro unit types. A macro type is a fake unit type, used by some + /// functions. These include #AllUnits, #Men, #Buildings, and #Factories. The purpose of these + /// types are to match the same ones used in Broodwar, also seen in the StarEdit map editor. + /// + /// @returns A constant set of all macro unit types. + const UnitType::const_set& allMacroTypes(); + +#ifdef BWAPI_DECL +#undef BWAPI_DECL +#endif +#define BWAPI_DECL(x) /** x.
@tl ## x @scc ## x @sen ## x @wik ## x */ extern const UnitType x + + BWAPI_DECL(Terran_Marine); + BWAPI_DECL(Terran_Ghost); + BWAPI_DECL(Terran_Vulture); + BWAPI_DECL(Terran_Goliath); + // goliath turret 4 + BWAPI_DECL(Terran_Siege_Tank_Tank_Mode); + // siege tank turret 6 + BWAPI_DECL(Terran_SCV); + BWAPI_DECL(Terran_Wraith); + BWAPI_DECL(Terran_Science_Vessel); + BWAPI_DECL(Hero_Gui_Montag); + BWAPI_DECL(Terran_Dropship); + BWAPI_DECL(Terran_Battlecruiser); + BWAPI_DECL(Terran_Vulture_Spider_Mine); + BWAPI_DECL(Terran_Nuclear_Missile); + BWAPI_DECL(Terran_Civilian); + BWAPI_DECL(Hero_Sarah_Kerrigan); + BWAPI_DECL(Hero_Alan_Schezar); + // alan turret 18 + BWAPI_DECL(Hero_Jim_Raynor_Vulture); + BWAPI_DECL(Hero_Jim_Raynor_Marine); + BWAPI_DECL(Hero_Tom_Kazansky); + BWAPI_DECL(Hero_Magellan); + BWAPI_DECL(Hero_Edmund_Duke_Tank_Mode); + // edmund duke turret 24 + BWAPI_DECL(Hero_Edmund_Duke_Siege_Mode); + // edmund duke turret siege mode 26 + BWAPI_DECL(Hero_Arcturus_Mengsk); + BWAPI_DECL(Hero_Hyperion); + BWAPI_DECL(Hero_Norad_II); + BWAPI_DECL(Terran_Siege_Tank_Siege_Mode); + // siege tank siege mode turret 31 + BWAPI_DECL(Terran_Firebat); + BWAPI_DECL(Spell_Scanner_Sweep); + BWAPI_DECL(Terran_Medic); + BWAPI_DECL(Zerg_Larva); + BWAPI_DECL(Zerg_Egg); + BWAPI_DECL(Zerg_Zergling); + BWAPI_DECL(Zerg_Hydralisk); + BWAPI_DECL(Zerg_Ultralisk); + BWAPI_DECL(Zerg_Broodling); + BWAPI_DECL(Zerg_Drone); + BWAPI_DECL(Zerg_Overlord); + BWAPI_DECL(Zerg_Mutalisk); + BWAPI_DECL(Zerg_Guardian); + BWAPI_DECL(Zerg_Queen); + BWAPI_DECL(Zerg_Defiler); + BWAPI_DECL(Zerg_Scourge); + BWAPI_DECL(Hero_Torrasque); + BWAPI_DECL(Hero_Matriarch); + BWAPI_DECL(Zerg_Infested_Terran); + BWAPI_DECL(Hero_Infested_Kerrigan); + BWAPI_DECL(Hero_Unclean_One); + BWAPI_DECL(Hero_Hunter_Killer); + BWAPI_DECL(Hero_Devouring_One); + BWAPI_DECL(Hero_Kukulza_Mutalisk); + BWAPI_DECL(Hero_Kukulza_Guardian); + BWAPI_DECL(Hero_Yggdrasill); + BWAPI_DECL(Terran_Valkyrie); + BWAPI_DECL(Zerg_Cocoon); + BWAPI_DECL(Protoss_Corsair); + BWAPI_DECL(Protoss_Dark_Templar); + BWAPI_DECL(Zerg_Devourer); + BWAPI_DECL(Protoss_Dark_Archon); + BWAPI_DECL(Protoss_Probe); + BWAPI_DECL(Protoss_Zealot); + BWAPI_DECL(Protoss_Dragoon); + BWAPI_DECL(Protoss_High_Templar); + BWAPI_DECL(Protoss_Archon); + BWAPI_DECL(Protoss_Shuttle); + BWAPI_DECL(Protoss_Scout); + BWAPI_DECL(Protoss_Arbiter); + BWAPI_DECL(Protoss_Carrier); + BWAPI_DECL(Protoss_Interceptor); + BWAPI_DECL(Hero_Dark_Templar); + BWAPI_DECL(Hero_Zeratul); + BWAPI_DECL(Hero_Tassadar_Zeratul_Archon); + BWAPI_DECL(Hero_Fenix_Zealot); + BWAPI_DECL(Hero_Fenix_Dragoon); + BWAPI_DECL(Hero_Tassadar); + BWAPI_DECL(Hero_Mojo); + BWAPI_DECL(Hero_Warbringer); + BWAPI_DECL(Hero_Gantrithor); + BWAPI_DECL(Protoss_Reaver); + BWAPI_DECL(Protoss_Observer); + BWAPI_DECL(Protoss_Scarab); + BWAPI_DECL(Hero_Danimoth); + BWAPI_DECL(Hero_Aldaris); + BWAPI_DECL(Hero_Artanis); + BWAPI_DECL(Critter_Rhynadon); + BWAPI_DECL(Critter_Bengalaas); + BWAPI_DECL(Special_Cargo_Ship); + BWAPI_DECL(Special_Mercenary_Gunship); + BWAPI_DECL(Critter_Scantid); + BWAPI_DECL(Critter_Kakaru); + BWAPI_DECL(Critter_Ragnasaur); + BWAPI_DECL(Critter_Ursadon); + BWAPI_DECL(Zerg_Lurker_Egg); + BWAPI_DECL(Hero_Raszagal); + BWAPI_DECL(Hero_Samir_Duran); + BWAPI_DECL(Hero_Alexei_Stukov); + BWAPI_DECL(Special_Map_Revealer); + BWAPI_DECL(Hero_Gerard_DuGalle); + BWAPI_DECL(Zerg_Lurker); + BWAPI_DECL(Hero_Infested_Duran); + BWAPI_DECL(Spell_Disruption_Web); + BWAPI_DECL(Terran_Command_Center); + BWAPI_DECL(Terran_Comsat_Station); + BWAPI_DECL(Terran_Nuclear_Silo); + BWAPI_DECL(Terran_Supply_Depot); + BWAPI_DECL(Terran_Refinery); + BWAPI_DECL(Terran_Barracks); + BWAPI_DECL(Terran_Academy); + BWAPI_DECL(Terran_Factory); + BWAPI_DECL(Terran_Starport); + BWAPI_DECL(Terran_Control_Tower); + BWAPI_DECL(Terran_Science_Facility); + BWAPI_DECL(Terran_Covert_Ops); + BWAPI_DECL(Terran_Physics_Lab); + // starbase 119 + BWAPI_DECL(Terran_Machine_Shop); + // repair bay 121 + BWAPI_DECL(Terran_Engineering_Bay); + BWAPI_DECL(Terran_Armory); + BWAPI_DECL(Terran_Missile_Turret); + BWAPI_DECL(Terran_Bunker); + BWAPI_DECL(Special_Crashed_Norad_II); + BWAPI_DECL(Special_Ion_Cannon); + BWAPI_DECL(Powerup_Uraj_Crystal); + BWAPI_DECL(Powerup_Khalis_Crystal); + BWAPI_DECL(Zerg_Infested_Command_Center); + BWAPI_DECL(Zerg_Hatchery); + BWAPI_DECL(Zerg_Lair); + BWAPI_DECL(Zerg_Hive); + BWAPI_DECL(Zerg_Nydus_Canal); + BWAPI_DECL(Zerg_Hydralisk_Den); + BWAPI_DECL(Zerg_Defiler_Mound); + BWAPI_DECL(Zerg_Greater_Spire); + BWAPI_DECL(Zerg_Queens_Nest); + BWAPI_DECL(Zerg_Evolution_Chamber); + BWAPI_DECL(Zerg_Ultralisk_Cavern); + BWAPI_DECL(Zerg_Spire); + BWAPI_DECL(Zerg_Spawning_Pool); + BWAPI_DECL(Zerg_Creep_Colony); + BWAPI_DECL(Zerg_Spore_Colony); + // unused zerg 1 145 + BWAPI_DECL(Zerg_Sunken_Colony); + BWAPI_DECL(Special_Overmind_With_Shell); + BWAPI_DECL(Special_Overmind); + BWAPI_DECL(Zerg_Extractor); + BWAPI_DECL(Special_Mature_Chrysalis); + BWAPI_DECL(Special_Cerebrate); + BWAPI_DECL(Special_Cerebrate_Daggoth); + // unused zerg 2 153 + BWAPI_DECL(Protoss_Nexus); + BWAPI_DECL(Protoss_Robotics_Facility); + BWAPI_DECL(Protoss_Pylon); + BWAPI_DECL(Protoss_Assimilator); + // unused protoss 1 158 + BWAPI_DECL(Protoss_Observatory); + BWAPI_DECL(Protoss_Gateway); + // unused protoss 2 161 + BWAPI_DECL(Protoss_Photon_Cannon); + BWAPI_DECL(Protoss_Citadel_of_Adun); + BWAPI_DECL(Protoss_Cybernetics_Core); + BWAPI_DECL(Protoss_Templar_Archives); + BWAPI_DECL(Protoss_Forge); + BWAPI_DECL(Protoss_Stargate); + BWAPI_DECL(Special_Stasis_Cell_Prison); + BWAPI_DECL(Protoss_Fleet_Beacon); + BWAPI_DECL(Protoss_Arbiter_Tribunal); + BWAPI_DECL(Protoss_Robotics_Support_Bay); + BWAPI_DECL(Protoss_Shield_Battery); + BWAPI_DECL(Special_Khaydarin_Crystal_Form); + BWAPI_DECL(Special_Protoss_Temple); + BWAPI_DECL(Special_XelNaga_Temple); + BWAPI_DECL(Resource_Mineral_Field); + BWAPI_DECL(Resource_Mineral_Field_Type_2); + BWAPI_DECL(Resource_Mineral_Field_Type_3); + // cave 179 + // cave-in 180 + // cantina 181 + // mining platform 182 + // independant command center 183 + BWAPI_DECL(Special_Independant_Starport); + // independant jump gate 185 + // ruins 186 + // unused khaydarin crystal formation 187 + BWAPI_DECL(Resource_Vespene_Geyser); + BWAPI_DECL(Special_Warp_Gate); + BWAPI_DECL(Special_Psi_Disrupter); + // zerg marker 191 + // terran marker 192 + // protoss marker 193 + BWAPI_DECL(Special_Zerg_Beacon); + BWAPI_DECL(Special_Terran_Beacon); + BWAPI_DECL(Special_Protoss_Beacon); + BWAPI_DECL(Special_Zerg_Flag_Beacon); + BWAPI_DECL(Special_Terran_Flag_Beacon); + BWAPI_DECL(Special_Protoss_Flag_Beacon); + BWAPI_DECL(Special_Power_Generator); + BWAPI_DECL(Special_Overmind_Cocoon); + BWAPI_DECL(Spell_Dark_Swarm); + BWAPI_DECL(Special_Floor_Missile_Trap); + BWAPI_DECL(Special_Floor_Hatch); + BWAPI_DECL(Special_Upper_Level_Door); + BWAPI_DECL(Special_Right_Upper_Level_Door); + BWAPI_DECL(Special_Pit_Door); + BWAPI_DECL(Special_Right_Pit_Door); + BWAPI_DECL(Special_Floor_Gun_Trap); + BWAPI_DECL(Special_Wall_Missile_Trap); + BWAPI_DECL(Special_Wall_Flame_Trap); + BWAPI_DECL(Special_Right_Wall_Missile_Trap); + BWAPI_DECL(Special_Right_Wall_Flame_Trap); + BWAPI_DECL(Special_Start_Location); + BWAPI_DECL(Powerup_Flag); + BWAPI_DECL(Powerup_Young_Chrysalis); + BWAPI_DECL(Powerup_Psi_Emitter); + BWAPI_DECL(Powerup_Data_Disk); + BWAPI_DECL(Powerup_Khaydarin_Crystal); + BWAPI_DECL(Powerup_Mineral_Cluster_Type_1); + BWAPI_DECL(Powerup_Mineral_Cluster_Type_2); + BWAPI_DECL(Powerup_Protoss_Gas_Orb_Type_1); + BWAPI_DECL(Powerup_Protoss_Gas_Orb_Type_2); + BWAPI_DECL(Powerup_Zerg_Gas_Sac_Type_1); + BWAPI_DECL(Powerup_Zerg_Gas_Sac_Type_2); + BWAPI_DECL(Powerup_Terran_Gas_Tank_Type_1); + BWAPI_DECL(Powerup_Terran_Gas_Tank_Type_2); + + BWAPI_DECL(None); + BWAPI_DECL(AllUnits); + BWAPI_DECL(Men); + BWAPI_DECL(Buildings); + BWAPI_DECL(Factories); + BWAPI_DECL(Unknown); +#undef BWAPI_DECL + } +} diff --git a/bwapi4-includes/BWAPI/Unitset.h b/bwapi4-includes/BWAPI/Unitset.h new file mode 100644 index 0000000..6ea7888 --- /dev/null +++ b/bwapi4-includes/BWAPI/Unitset.h @@ -0,0 +1,191 @@ +#pragma once +#include +#include +#include +#include + +namespace BWAPI +{ + // Forward declarations + class UnitType; + class Regionset; + class UnitCommand; + class TechType; + + /// The Unitset is a container for a set of pointers to Unit objects. It is typically used for + /// groups of units instead of having to manage each Unit individually. + /// + /// @note Because of the efficiency, it is recommended to use the Unitset over any of the STL + /// containers. + /// + /// @see Unit, UnitType, UnitSizeType + class Unitset : public Vectorset + { + public: + /// A blank Unitset containing no elements. This is typically used as a return value for BWAPI + /// interface functions that have encountered an error. + static const Unitset none; + + /// The Unitset constructor. + /// + /// @param initialSize The initial maximum size of the Unitset before expanding it is + /// necessary. + Unitset(size_t initialSize = 16); + + /// The copy constructor. + /// + /// @param other The Unitset to construct this one from. + Unitset(const Unitset &other); + + /// The move constructor. + /// + /// @param other The Unitset to move its contents from. + Unitset(Unitset &&other); + + /// Calculates the average of all valid Unit positions in this set. + /// + /// @returns Average Position of all units in the set. + /// + /// @see UnitInterface::getPosition + Position getPosition() const; + + /// Creates a single set containing all units that are loaded into units of this set. + /// + /// @returns The set of all loaded units. + /// + /// @see UnitInterface::getLoadedUnits + Unitset getLoadedUnits() const; + + /// Creates a single set containing all the @Interceptors of all @Carriers in this set. + /// + /// @returns The set of all @Interceptors . + /// + /// @see UnitInterface::getInterceptors + Unitset getInterceptors() const; + + /// Creates a single set containing all the @Larvae of all @Hatcheries, @Lairs, and @Hives in + /// this set. + /// + /// @returns The set of all @Larvae . + /// + /// @see UnitInterface::getLarva + Unitset getLarva() const; + + /// Sets the client info for every unit in this set. + /// + /// @param clientInfo A pointer to client information, managed by the AI module, or nullptr if + /// client information is to be cleared. + /// + /// @see UnitInterface::setClientInfo + void setClientInfo(void *clientInfo = nullptr, int index = 0) const; + + /// @overload + void setClientInfo(int clientInfo = 0, int index = 0) const; + + Unitset getUnitsInRadius(int radius, const UnitFilter &pred = nullptr) const; + Unit getClosestUnit(const UnitFilter &pred = nullptr, int radius = 999999) const; + + /// @copydoc UnitInterface::issueCommand + bool issueCommand(UnitCommand command) const; + + /// @copydoc UnitInterface::attack + bool attack(PositionOrUnit target, bool shiftQueueCommand = false) const; + + /// @copydoc UnitInterface::build + bool build(UnitType type, TilePosition target = TilePositions::None) const; + + /// @copydoc UnitInterface::buildAddon + bool buildAddon(UnitType type) const; + + /// @copydoc UnitInterface::train + bool train(UnitType type) const; + + /// @copydoc UnitInterface::morph + bool morph(UnitType type) const; + + /// @copydoc UnitInterface::setRallyPoint + bool setRallyPoint(PositionOrUnit target) const; + + /// @copydoc UnitInterface::move + bool move(Position target, bool shiftQueueCommand = false) const; + + /// @copydoc UnitInterface::patrol + bool patrol(Position target, bool shiftQueueCommand = false) const; + + /// @copydoc UnitInterface::holdPosition + bool holdPosition(bool shiftQueueCommand = false) const; + + /// @copydoc UnitInterface::stop + bool stop(bool shiftQueueCommand = false) const; + + /// @copydoc UnitInterface::follow + bool follow(Unit target, bool shiftQueueCommand = false) const; + + /// @copydoc UnitInterface::gather + bool gather(Unit target, bool shiftQueueCommand = false) const; + + /// @copydoc UnitInterface::returnCargo + bool returnCargo(bool shiftQueueCommand = false) const; + + /// @copydoc UnitInterface::repair + bool repair(Unit target, bool shiftQueueCommand = false) const; + + /// @copydoc UnitInterface::burrow + bool burrow() const; + + /// @copydoc UnitInterface::unburrow + bool unburrow() const; + + /// @copydoc UnitInterface::cloak + bool cloak() const; + + /// @copydoc UnitInterface::decloak + bool decloak() const; + + /// @copydoc UnitInterface::siege + bool siege() const; + + /// @copydoc UnitInterface::unsiege + bool unsiege() const; + + /// @copydoc UnitInterface::lift + bool lift() const; + + /// @copydoc UnitInterface::load + bool load(Unit target, bool shiftQueueCommand = false) const; + + /// @copydoc UnitInterface::unloadAll(bool) + bool unloadAll(bool shiftQueueCommand = false) const; + + /// @copydoc UnitInterface::unloadAll(Position,bool) + bool unloadAll(Position target, bool shiftQueueCommand = false) const; + + /// @copydoc UnitInterface::rightClick + bool rightClick(PositionOrUnit target, bool shiftQueueCommand = false) const; + + /// @copydoc UnitInterface::haltConstruction + bool haltConstruction() const; + + /// @copydoc UnitInterface::cancelConstruction + bool cancelConstruction() const; + + /// @copydoc UnitInterface::cancelAddon + bool cancelAddon() const; + + /// @copydoc UnitInterface::cancelTrain + bool cancelTrain(int slot = -2) const; + + /// @copydoc UnitInterface::cancelMorph + bool cancelMorph() const; + + /// @copydoc UnitInterface::cancelResearch + bool cancelResearch() const; + + /// @copydoc UnitInterface::cancelUpgrade + bool cancelUpgrade() const; + + /// @copydoc UnitInterface::useTech + bool useTech(TechType tech, PositionOrUnit target = nullptr) const; + }; +} + diff --git a/bwapi4-includes/BWAPI/UpgradeType.h b/bwapi4-includes/BWAPI/UpgradeType.h new file mode 100644 index 0000000..3d1c395 --- /dev/null +++ b/bwapi4-includes/BWAPI/UpgradeType.h @@ -0,0 +1,183 @@ +#pragma once +#include +#include + +namespace BWAPI +{ + class Race; + + namespace UpgradeTypes + { + /// Enumeration of upgrade types + namespace Enum + { + /// Enumeration of upgrade types + enum Enum + { + Terran_Infantry_Armor = 0, + Terran_Vehicle_Plating = 1, + Terran_Ship_Plating = 2, + Zerg_Carapace = 3, + Zerg_Flyer_Carapace = 4, + Protoss_Ground_Armor = 5, + Protoss_Air_Armor = 6, + Terran_Infantry_Weapons = 7, + Terran_Vehicle_Weapons = 8, + Terran_Ship_Weapons = 9, + Zerg_Melee_Attacks = 10, + Zerg_Missile_Attacks = 11, + Zerg_Flyer_Attacks = 12, + Protoss_Ground_Weapons = 13, + Protoss_Air_Weapons = 14, + Protoss_Plasma_Shields = 15, + U_238_Shells = 16, + Ion_Thrusters = 17, + + Titan_Reactor = 19, + Ocular_Implants = 20, + Moebius_Reactor = 21, + Apollo_Reactor = 22, + Colossus_Reactor = 23, + Ventral_Sacs = 24, + Antennae = 25, + Pneumatized_Carapace = 26, + Metabolic_Boost = 27, + Adrenal_Glands = 28, + Muscular_Augments = 29, + Grooved_Spines = 30, + Gamete_Meiosis = 31, + Metasynaptic_Node = 32, + Singularity_Charge = 33, + Leg_Enhancements = 34, + Scarab_Damage = 35, + Reaver_Capacity = 36, + Gravitic_Drive = 37, + Sensor_Array = 38, + Gravitic_Boosters = 39, + Khaydarin_Amulet = 40, + Apial_Sensors = 41, + Gravitic_Thrusters = 42, + Carrier_Capacity = 43, + Khaydarin_Core = 44, + + Argus_Jewel = 47, + + Argus_Talisman = 49, + + Caduceus_Reactor = 51, + Chitinous_Plating = 52, + Anabolic_Synthesis = 53, + Charon_Boosters = 54, + + Upgrade_60 = 60, + None = 61, + Unknown, + MAX + }; + } + } + class UpgradeType : public Type + { + public: + /// @copydoc Type::Type(int) + UpgradeType(int id = UpgradeTypes::Enum::None); + + /** Returns the race the upgrade is for. For example, UpgradeTypes::Terran_Infantry_Armor.getRace() + * will return Races::Terran. */ + Race getRace() const; + + /** Returns the mineral price for the first upgrade. */ + int mineralPrice(int level = 1) const; + + /** Returns the amount that the mineral price increases for each additional upgrade. */ + int mineralPriceFactor() const; + + /** Returns the vespene gas price for the first upgrade. */ + int gasPrice(int level = 1) const; + + /** Returns the amount that the vespene gas price increases for each additional upgrade. */ + int gasPriceFactor() const; + + /** Returns the number of frames needed to research the first upgrade. */ + int upgradeTime(int level = 1) const; + + /** Returns the number of frames that the upgrade time increases for each additional upgrade. */ + int upgradeTimeFactor() const; + + /** Returns the maximum number of times the upgrade can be researched. */ + int maxRepeats() const; + + /** Returns the type of unit that researches the upgrade. */ + UnitType whatUpgrades() const; + + /** Returns the type of unit that is additionally required for the upgrade. */ + UnitType whatsRequired(int level = 1) const; + + /** Returns the set of units that are affected by this upgrade. */ + const UnitType::const_set& whatUses() const; + }; + /// Namespace of upgrade types + namespace UpgradeTypes + { + /** Returns the set of all the UpgradeTypes. */ + const UpgradeType::const_set& allUpgradeTypes(); + +#ifdef BWAPI_DECL +#undef BWAPI_DECL +#endif +#define BWAPI_DECL(x) /** x */ extern const UpgradeType x + BWAPI_DECL(Terran_Infantry_Armor); + BWAPI_DECL(Terran_Vehicle_Plating); + BWAPI_DECL(Terran_Ship_Plating); + BWAPI_DECL(Zerg_Carapace); + BWAPI_DECL(Zerg_Flyer_Carapace); + BWAPI_DECL(Protoss_Ground_Armor); + BWAPI_DECL(Protoss_Air_Armor); + BWAPI_DECL(Terran_Infantry_Weapons); + BWAPI_DECL(Terran_Vehicle_Weapons); + BWAPI_DECL(Terran_Ship_Weapons); + BWAPI_DECL(Zerg_Melee_Attacks); + BWAPI_DECL(Zerg_Missile_Attacks); + BWAPI_DECL(Zerg_Flyer_Attacks); + BWAPI_DECL(Protoss_Ground_Weapons); + BWAPI_DECL(Protoss_Air_Weapons); + BWAPI_DECL(Protoss_Plasma_Shields); + BWAPI_DECL(U_238_Shells); + BWAPI_DECL(Ion_Thrusters); + BWAPI_DECL(Titan_Reactor); + BWAPI_DECL(Ocular_Implants); + BWAPI_DECL(Moebius_Reactor); + BWAPI_DECL(Apollo_Reactor); + BWAPI_DECL(Colossus_Reactor); + BWAPI_DECL(Ventral_Sacs); + BWAPI_DECL(Antennae); + BWAPI_DECL(Pneumatized_Carapace); + BWAPI_DECL(Metabolic_Boost); + BWAPI_DECL(Adrenal_Glands); + BWAPI_DECL(Muscular_Augments); + BWAPI_DECL(Grooved_Spines); + BWAPI_DECL(Gamete_Meiosis); + BWAPI_DECL(Metasynaptic_Node); + BWAPI_DECL(Singularity_Charge); + BWAPI_DECL(Leg_Enhancements); + BWAPI_DECL(Scarab_Damage); + BWAPI_DECL(Reaver_Capacity); + BWAPI_DECL(Gravitic_Drive); + BWAPI_DECL(Sensor_Array); + BWAPI_DECL(Gravitic_Boosters); + BWAPI_DECL(Khaydarin_Amulet); + BWAPI_DECL(Apial_Sensors); + BWAPI_DECL(Gravitic_Thrusters); + BWAPI_DECL(Carrier_Capacity); + BWAPI_DECL(Khaydarin_Core); + BWAPI_DECL(Argus_Jewel); + BWAPI_DECL(Argus_Talisman); + BWAPI_DECL(Caduceus_Reactor); + BWAPI_DECL(Chitinous_Plating); + BWAPI_DECL(Anabolic_Synthesis); + BWAPI_DECL(Charon_Boosters); + BWAPI_DECL(None); + BWAPI_DECL(Unknown); +#undef BWAPI_DECL + } +} diff --git a/bwapi4-includes/BWAPI/Vectorset.h b/bwapi4-includes/BWAPI/Vectorset.h new file mode 100644 index 0000000..6ea6b3c --- /dev/null +++ b/bwapi4-includes/BWAPI/Vectorset.h @@ -0,0 +1,520 @@ +#pragma once +#include +#include +#include + +#include "Vectorset_iterator.h" +#include "ConstVectorset.h" + +namespace BWAPI +{ + /// The Vectorset is a class template designed specifically for trivial classes or PODs and + /// performance. It mimics the usage of various stl containers (specifically the Vector and Set) + /// in order to replace them. The Vectorset is designed for BWAPI usage and is recommended, + /// especially if stl containers are causing a bottleneck in your bot's code. + /// + /// @warning The Vectorset should only be used with objects that have a trivial destructor and + /// trivial copy constructor. Objects in the Vectorset should not do any memory management + /// or the behaviour will be undefined. Use with caution. + /// + /// @note The Vectorset will only free memory when the object is destroyed. + /// + /// @see std::vector, std::set + template + class Vectorset : public ConstVectorset<_T> + { + public: + typedef typename ConstVectorset<_T>::iterator iterator; + // ----------------------------------------------------------------- Constructors + /// This is the default constructor. The Vectorset will allocate memory for the given number + /// of elements (or 16 by default). + /// + /// @param initialSize + /// The number of elements of type _T to allocate memory for. + Vectorset(size_t initialSize = 16) + : ConstVectorset<_T>( (_T*)malloc(initialSize*sizeof(_T)) ) + , pEndAlloc( ConstVectorset<_T>::pStartArr + initialSize ) + {}; + + /// This is the copy constructor. The Vectorset will allocate only the necessary space to + /// copy the other Vectorset's contents. + /// + /// @param other + /// Reference to the Vectorset of the same type whose contents will be copied. + /// + /// @note Duplicate entries are not removed. + Vectorset(const Vectorset<_T> &other) + : ConstVectorset<_T>( (_T*)malloc( other.size()*sizeof(_T)), other.size() ) + , pEndAlloc( ConstVectorset<_T>::pEndArr ) + { + memcpy(this->pStartArr, (void*)other, other.size()*sizeof(_T)); + }; + /// @overload + Vectorset(const ConstVectorset<_T> &other) + : ConstVectorset<_T>( (_T*)malloc( other.size()*sizeof(_T)), other.size() ) + , pEndAlloc( ConstVectorset<_T>::pEndArr ) + { + memcpy(this->pStartArr, (void*)other, other.size()*sizeof(_T)); + }; + + /// This is the move constructor. The Vectorset will steal the data pointer from the other + /// Vectorset. + /// + /// @param other + /// Reference to the Vectorset of the same type whose contents will be moved. + /// + /// @note Duplicate entries are not removed. + Vectorset(Vectorset<_T> &&other) + : ConstVectorset<_T>( other.pStartArr, other.size() ) + , pEndAlloc( other.pEndAlloc ) + { + other.pStartArr = nullptr; + }; + + /// This constructor uses an existing array of objects and copies them into the vector. + /// The Vectorset will allocate only enough memory to copy the array's contents. + /// + /// @param pArray + /// Pointer to an array of objects of type _T. + /// @param arrSize + /// The number of elements contained in the given array. + /// + /// @note Duplicate entries are not removed. + Vectorset(const _T *pArray, size_t arrSize) + : ConstVectorset<_T>( (_T*)malloc(arrSize*sizeof(_T)), arrSize ) + , pEndAlloc( ConstVectorset<_T>::pEndArr ) + { + memcpy(this->pStartArr, pArray, arrSize*sizeof(_T) ); + }; + + // ----------------------------------------------------------------- Destructor + ~Vectorset() + { + if ( this->pStartArr != nullptr ) + { + free(this->pStartArr); + this->pStartArr = nullptr; + } + }; + // ----------------------------------------------------------------- Operators + /// This is the copy assignment operator. The contents of the current container are erased + /// and replaced with the contents of other. + /// + /// @returns A reference to the current object. + Vectorset<_T> &operator =(const Vectorset<_T> &other) + { + this->clear(); + this->push_back(other); + return *this; + }; + /// @overload + Vectorset<_T> &operator =(const ConstVectorset<_T> &other) + { + this->clear(); + this->push_back(other); + return *this; + }; + /// This is the move assignment operator. The contents of the current container are discarded, + /// and the contents of other moved into this. + /// + /// @returns A reference to the current object. + Vectorset &operator =(Vectorset<_T> &&other) + { + if ( this->pStartArr != nullptr ) + free(this->pStartArr); + + this->pStartArr = other.pStartArr; + other.pStartArr = nullptr; + + this->pEndArr = other.pEndArr; + this->pEndAlloc = other.pEndAlloc; + + return *this; + }; + /// @copydoc push_back(const ConstVectorset<_T> &other) + /// + /// @returns A reference to the current object. + /// + /// @see operator|= + Vectorset &operator +=(const ConstVectorset<_T> &other) + { + this->push_back(other); + return *this; + }; + /// @copydoc insert(const ConstVectorset<_T> &other) + /// + /// @returns A reference to the current object. + /// + /// @see operator+= + Vectorset &operator |=(const ConstVectorset<_T> &other) + { + this->insert(other); + return *this; + }; + // ----------------------------------------------------------------- Custom const functions + /// Retrieves the current capacity of the Vectorset. + /// + /// @returns The number of elements this Vectorset can contain before needing to allocate more + /// memory. + inline size_t max_size() const + { + return ((size_t)this->pEndAlloc - (size_t)this->pStartArr)/sizeof(_T); + }; + // ----------------------------------------------------------------- erase + /// Erases all values found in the Vectorset. When a value is found, it is erased and the + /// function continues searching for the same value until it reaches the end of the + /// Vectorset. + /// + /// @param val + /// The value to search for and erase. + /// + /// @note This function does not preserve order. If you wish to preserve order, see remove. + void erase(const _T &val) + { + // iterate all elements + auto i = this->begin(); + while ( i != this->end() ) + { + if ( val == *i ) // erase if values are equal + i = this->erase(i); + else + ++i; + } + }; + + /// Erases the value at an iterator for this Vectorset. The advantage of this function is that + /// searching for the value is not necessary. + /// + /// @param iter + /// A valid iterator for the position to erase. This iterator must be within the scope of + /// the Vectorset or the result will be undefined. + /// + /// @returns + /// iterator to next element. + /// + /// @note This function does not preserve order. If you wish to preserve order, see remove. + iterator erase(iterator iter) + { + // Remove the element by replacing it with the last one + --this->pEndArr; + *(&iter) = *this->pEndArr; + + // Return the same iterator since it is already pointing to the next expected element + return iter; + }; + /// Erases the values within a range of iterators for this Vectorset. + /// + /// @param first + /// A valid iterator for the starting position to erase. This iterator must be within the + /// scope of the Vectorset or the result will be undefined. + /// @param last + /// A valid iterator for the ending position to erase. This iterator must come after first + /// and be within the scope of the Vectorset or the result will be undefined. + /// + /// @note This function does not preserve order. If you wish to preserve order, see remove. + iterator erase(iterator first, iterator last) + { + // Erase all elements until last, unless last == end() + while ( last != this->end() && first != last ) + first = this->erase(first); + + // Optimization so that only one operation is necessary + if ( first != last && last == this->end() ) + this->pEndArr -= (last - first); + + // Return the iterator to the same position + return first; + }; + + /// Works similar to the STL algorithm remove_if. Iterates and calls a function predicate for + /// each element in the Vectorset. If the predicate call returns true, then the value is + /// erased by calling erase. + /// + /// @param pred + /// Function predicate used to determine if a value is removed. + /// + /// @see std::remove_if, remove_if + template + void erase_if( const Func &pred ) + { + // iterate all elements + auto i = this->begin(); + while ( i != this->end() ) + { + if ( pred(*i) ) // erase if predicate returns true + this->erase(i); + else + ++i; + } + }; + // ----------------------------------------------------------------- remove + /// Removes all values found in the Vectorset. When a value is found, it is removed and the + /// function continues searching for the same value until it reaches the end of the Vectorset. + /// + /// @param val + /// The value to search for and remove. + /// + /// @note This function preserves order. It is recommended to use erase for performance if + /// order is not important. + /// + /// @see erase + void remove(const _T &val) + { + // Find the first instance + iterator i = this->begin(); + while ( i < this->end() && val != *i ) + ++i; + + // Now do iteration with shifting + iterator skip = i; + while ( skip < this->end() ) + { + while ( skip < this->end() && val == *skip ) // increment remove ptr if equal + ++skip; + + // if we've not reached the end, then shift the value up, + // overwriting the one we removed + if ( skip < this->end() ) + *(&i) = *(&skip); + + // increment our position + ++i; + ++skip; + } + this->pEndArr -= (&skip - &i); + }; + + /// Erases the value at an iterator for this Vectorset. The advantage of this function + /// is that searching for the value is not necessary. + /// + /// @param iter + /// A valid iterator for the position to erase. This iterator must be within the scope of + /// the Vectorset or the result will be undefined. + /// + /// @note This function preserves order. It is recommended to use erase for performance if + /// order is not important. + /// + /// @see erase + void remove(const iterator &iter) + { + // Remove the element by shifting positions + iterator t = iter; + iterator tnext = t + 1; + while ( tnext != this->end() ) + { + *(&t) = *(&tnext); + ++t; + ++tnext; + } + --this->pEndArr; + }; + + /// Works similar to the STL algorithm remove_if. Iterates and calls a function predicate for + /// each element in the Vectorset. If the predicate call returns true, then the value is removed. + /// + /// @param pred Function predicate used to determine if a value is removed. + /// + /// @see std::remove_if, erase_if + template + void remove_if( const Func &pred ) + { + // Find the first instance + iterator i = this->begin(); + while ( i < this->end() && !pred(*i) ) + ++i; + + // Now do iteration with shifting + iterator skip = i; + while ( skip < this->end() ) + { + while ( skip < this->end() && pred(*skip) ) // increment remove ptr if equal + ++skip; + + // if we've not reached the end, then shift the value up, + // overwriting the one we removed + if ( skip < this->end() ) + *(&i) = *(&skip); + + // increment our position + ++i; + ++skip; + } + this->pEndArr -= (&skip - &i); + }; + // ----------------------------------------------------------------- stl spinoff functions + + /// Clears the Vectorset, removing all elements. Used the same way as stl containers. + /// + /// @note Because of the restrictions placed on the Vectorset, this function executes a + /// single instruction regardless of the number of entries. + inline void clear() + { + this->pEndArr = this->pStartArr; + }; + + // element insertion + /// Inserts a new value into the Vectorset only if it does not already exist. + /// + /// @param val + /// The value to insert. + /// + /// @see std::set + inline void insert(const _T &val) + { + if ( !this->exists(val) ) + this->push_back(val); + }; + /// @copydoc insert(const _T &val) + inline void insert(const iterator &val) + { + this->insert(*val); + }; + + /// Inserts all elements of another vector only if each element does not already exsist. + /// + /// @param other + /// Another Vectorset of the same type whose elements will be inserted into this one. + void insert(const ConstVectorset<_T> &other) + { + for ( iterator i = other.begin(); i != other.end(); ++i ) + this->insert(i); + }; + + /// Pushes a value to the back of the Vectorset, expanding it if necessary. + /// + /// @param val + /// The value to add to the back of this Vectorset. + /// + /// @note Duplicate entries are not removed. + /// + /// @see push_front + inline void push_back(const _T val) + { + if ( this->expand() ) + { + *this->pEndArr = val; + ++this->pEndArr; + } + }; + /// @copydoc push_back(const _T val) + inline void push_back(const iterator &val) + { + this->push_back(*val); + }; + + /// Pushes all values of another Vectorset to the back of this one, expanding it to contain + /// exactly the number of elements in both Vectorsets if necessary. + /// + /// @param other + /// The other Vectorset of the same type whose values will be appended to this one. + /// + /// @note Duplicate entries are not removed. + void push_back(const ConstVectorset<_T> &other) + { + // localize variables + size_t nSize = other.size(); + + // manage existing set + if ( this->expand(nSize) ) + { + // copy the data to this set + memcpy( this->pEndArr, other, nSize*sizeof(_T) ); + + // update variables in this set + this->pEndArr += nSize; + } + }; + + /// Pushes a value to the front of the Vectorset, expanding it if necessary. + /// + /// @param val + /// The value to add to the back of this Vectorset. + /// + /// @note Duplicate entries are not removed. + /// @note For efficiency, it is recommended to use push_back. + /// + /// @see push_back + void push_front(const _T val) + { + if ( this->expand() ) + { + // @TODO: make front available to reduce cost + memmove(this->pStartArr+1, this->pStartArr, this->size()*sizeof(_T)); + ++this->pEndArr; + *this->pStartArr = val; + } + }; + /// @copydoc push_front(const _T val) + inline void push_front(const iterator &val) + { + this->push_front(*val); + }; + + /// @TODO change return value to copy of value that was popped + /// @see pop_front + inline void pop_back() + { + if ( !this->empty() ) // remove last element if non-empty + --this->pEndArr; + }; + + /// @TODO change return value to copy of value that was popped + /// @note For efficiency, it is recommended to use pop_back. + /// @see pop_back + void pop_front() + { + if ( this->empty() ) // return if empty + return; + + --this->pEndArr; // subtract the last element (not removing it) + size_t size = this->size(); // localize the new size + switch ( size ) + { + case 0: // just ignore it if it was the only element + break; + case 1: // if only one element should remain + *this->pStartArr = *this->pEndArr; + break; + default: // otherwise move all elements up + // @TODO: make front available to reduce cost + memmove(this->pStartArr, this->pStartArr+1, size*sizeof(_T)); + break; + } + }; + // ----------------------------------------------------------------- + protected: + /// Expands the container if it currently does not have the capacity for the number of + /// additional elements. + /// + /// @retval true If space is available. + /// @retval false If realloc failed. + bool expand(size_t additionalElements = 1) + { + // localize the variables + size_t allocSize = this->max_size(), arrSize = this->size(); + + // expand to expected size, or ignore of not necessary + if ( allocSize >= arrSize + additionalElements ) + return true; + + // expand to desired size + allocSize = ((arrSize + additionalElements)/256 + 1)*256; + + // Reallocate and store the new values + _T *pReallocated = (_T*)realloc(this->pStartArr, allocSize*sizeof(_T)); + if ( pReallocated != nullptr ) + { + this->pStartArr = pReallocated; + this->pEndArr = pReallocated + arrSize; + this->pEndAlloc = pReallocated + allocSize; + return true; + } + return false; + }; + + // Variables + _T *pEndAlloc; // ptr to end of allocation + }; + +} + diff --git a/bwapi4-includes/BWAPI/Vectorset_iterator.h b/bwapi4-includes/BWAPI/Vectorset_iterator.h new file mode 100644 index 0000000..a1329c4 --- /dev/null +++ b/bwapi4-includes/BWAPI/Vectorset_iterator.h @@ -0,0 +1,117 @@ +#pragma once + +#include + +#define _ITER_COMPARE(op) friend bool operator op(const VSetIterator &lhs, const VSetIterator &rhs) \ + { return lhs.pVal op rhs.pVal; }; + +namespace BWAPI +{ + /// The iterator class template allows the iteration + /// of elements of a Vectorset with ease while + /// maintaining the compatibility with any familiar + /// STL container iteration. + /// + /// @see Vectorset + template + class VSetIterator : public std::iterator + { + public: + typedef std::iterator host_type; + typedef typename host_type::pointer pointer; + typedef typename host_type::difference_type difference_type; + typedef typename host_type::reference reference; + + // constructors + VSetIterator(pointer ptr = nullptr) : pVal(ptr) {}; + VSetIterator(const VSetIterator &other) : pVal(&other) {}; + + // Copy assignment + VSetIterator &operator =(const VSetIterator &other) + { + this->pVal = other.pVal; + return *this; + }; + + // comparison operators + _ITER_COMPARE(==); + _ITER_COMPARE(!=); + _ITER_COMPARE(<); + _ITER_COMPARE(>); + _ITER_COMPARE(<=); + _ITER_COMPARE(>=); + + // modification operators + VSetIterator &operator ++() + { + ++pVal; + return *this; + }; + VSetIterator operator ++(int) + { + VSetIterator copy(*this); + ++pVal; + return copy; + }; + VSetIterator &operator --() + { + --pVal; + return *this; + }; + VSetIterator operator --(int) + { + VSetIterator copy(*this); + --pVal; + return copy; + }; + VSetIterator operator +(const difference_type &n) const + { + return VSetIterator(this->pVal + n); + }; + VSetIterator operator -(const difference_type &n) const + { + return VSetIterator(this->pVal - n); + }; + friend difference_type operator -(const VSetIterator &lhs, const VSetIterator &rhs) + { + return lhs.pVal - rhs.pVal; + }; + + VSetIterator &operator +=(const difference_type &n) + { + this->pVal += n; + return *this; + }; + VSetIterator &operator -=(const difference_type &n) + { + this->pVal -= n; + return *this; + }; + + // Dereference operators + reference operator *() const + { + return *pVal; + }; + // @TODO: should be "pointer" and "return pVal", need specialization + reference operator ->() const + { + return *pVal; + }; + reference operator [](const difference_type &n) const + { + return this->pVal[n]; + }; + + + // @TODO: remove + T *operator &() const + { + return pVal; + }; + protected: + pointer pVal; + }; + + +} diff --git a/bwapi4-includes/BWAPI/WeaponType.h b/bwapi4-includes/BWAPI/WeaponType.h new file mode 100644 index 0000000..10429ae --- /dev/null +++ b/bwapi4-includes/BWAPI/WeaponType.h @@ -0,0 +1,333 @@ +#pragma once +#include + +namespace BWAPI +{ + class TechType; + class UpgradeType; + class DamageType; + class ExplosionType; + + namespace WeaponTypes + { + /// Enumeration of weapon types + namespace Enum + { + /// Enumeration of weapon types + enum Enum + { + Gauss_Rifle = 0, + Gauss_Rifle_Jim_Raynor = 1, + C_10_Canister_Rifle = 2, + C_10_Canister_Rifle_Sarah_Kerrigan = 3, + Fragmentation_Grenade = 4, + Fragmentation_Grenade_Jim_Raynor = 5, + Spider_Mines = 6, + Twin_Autocannons = 7, + Hellfire_Missile_Pack = 8, + Twin_Autocannons_Alan_Schezar = 9, + Hellfire_Missile_Pack_Alan_Schezar = 10, + Arclite_Cannon = 11, + Arclite_Cannon_Edmund_Duke = 12, + Fusion_Cutter = 13, + + Gemini_Missiles = 15, + Burst_Lasers = 16, + Gemini_Missiles_Tom_Kazansky = 17, + Burst_Lasers_Tom_Kazansky = 18, + ATS_Laser_Battery = 19, + ATA_Laser_Battery = 20, + ATS_Laser_Battery_Hero = 21, + ATA_Laser_Battery_Hero = 22, + ATS_Laser_Battery_Hyperion = 23, + ATA_Laser_Battery_Hyperion = 24, + Flame_Thrower = 25, + Flame_Thrower_Gui_Montag = 26, + Arclite_Shock_Cannon = 27, + Arclite_Shock_Cannon_Edmund_Duke = 28, + Longbolt_Missile = 29, + Yamato_Gun = 30, + Nuclear_Strike = 31, + Lockdown = 32, + EMP_Shockwave = 33, + Irradiate = 34, + Claws = 35, + Claws_Devouring_One = 36, + Claws_Infested_Kerrigan = 37, + Needle_Spines = 38, + Needle_Spines_Hunter_Killer = 39, + Kaiser_Blades = 40, + Kaiser_Blades_Torrasque = 41, + Toxic_Spores = 42, + Spines = 43, + + Acid_Spore = 46, + Acid_Spore_Kukulza = 47, + Glave_Wurm = 48, + Glave_Wurm_Kukulza = 49, + + Seeker_Spores = 52, + Subterranean_Tentacle = 53, + Suicide_Infested_Terran = 54, + Suicide_Scourge = 55, + Parasite = 56, + Spawn_Broodlings = 57, + Ensnare = 58, + Dark_Swarm = 59, + Plague = 60, + Consume = 61, + Particle_Beam = 62, + + Psi_Blades = 64, + Psi_Blades_Fenix = 65, + Phase_Disruptor = 66, + Phase_Disruptor_Fenix = 67, + + Psi_Assault = 69, + Psionic_Shockwave = 70, + Psionic_Shockwave_TZ_Archon = 71, + + Dual_Photon_Blasters = 73, + Anti_Matter_Missiles = 74, + Dual_Photon_Blasters_Mojo = 75, + Anti_Matter_Missiles_Mojo = 76, + Phase_Disruptor_Cannon = 77, + Phase_Disruptor_Cannon_Danimoth = 78, + Pulse_Cannon = 79, + STS_Photon_Cannon = 80, + STA_Photon_Cannon = 81, + Scarab = 82, + Stasis_Field = 83, + Psionic_Storm = 84, + Warp_Blades_Zeratul = 85, + Warp_Blades_Hero = 86, + + Platform_Laser_Battery = 92, + Independant_Laser_Battery = 93, + + Twin_Autocannons_Floor_Trap = 96, + Hellfire_Missile_Pack_Wall_Trap = 97, + Flame_Thrower_Wall_Trap = 98, + Hellfire_Missile_Pack_Floor_Trap = 99, + + Neutron_Flare = 100, + Disruption_Web = 101, + Restoration = 102, + Halo_Rockets = 103, + Corrosive_Acid = 104, + Mind_Control = 105, + Feedback = 106, + Optical_Flare = 107, + Maelstrom = 108, + Subterranean_Spines = 109, + + Warp_Blades = 111, + C_10_Canister_Rifle_Samir_Duran = 112, + C_10_Canister_Rifle_Infested_Duran = 113, + Dual_Photon_Blasters_Artanis = 114, + Anti_Matter_Missiles_Artanis = 115, + C_10_Canister_Rifle_Alexei_Stukov = 116, + + None = 130, + Unknown, + MAX + }; + } + } + class WeaponType : public Type + { + public: + /// @copydoc Type::Type(int) + WeaponType(int id = WeaponTypes::Enum::None); + + /** Returns the tech type that must be researched before this weapon can be used, or TechTypes::None if + * no tech type is required. */ + TechType getTech() const; + + /** Returns the unit that can use this weapon. */ + UnitType whatUses() const; + + /** Returns the amount of damage that this weapon deals per attack. */ + int damageAmount() const; + + // TODO: add doc + int damageBonus() const; + + /** Returns the amount of cooldown time between attacks. */ + int damageCooldown() const; + + /** Returns the amount that the damage increases per upgrade. + * \see WeaponType::upgradeType. */ + int damageFactor() const; + + /** Returns the upgrade type that can be upgraded to increase the attack damage. */ + UpgradeType upgradeType() const; + + /** Returns the type of damage that this weapon uses (i.e. concussive, normal, explosive, etc). */ + DamageType damageType() const; + + /** Returns the type of explosion that this weapon uses. */ + ExplosionType explosionType() const; + + /** Returns the minimum attack range of the weapon, measured in pixels, 0 for most things except + * WeaponTypes::Arclite_Shock_Cannon (the weapon of the Terran Siege Tank in Siege Mode). */ + int minRange() const; + + /** Returns the maximum attack range of the weapon, measured in pixels. */ + int maxRange() const; + + /** Inner radius used in splash damage calculations. */ + int innerSplashRadius() const; + + /** Median radius used in splash damage calculations. */ + int medianSplashRadius() const; + + /** Outer radius used in splash damage calculations. */ + int outerSplashRadius() const; + + /** Returns true if this weapon can attack air units. */ + bool targetsAir() const; + + // TODO: group these methods + /** Returns true if this weapon can attack ground units. */ + bool targetsGround() const; + bool targetsMechanical() const; + bool targetsOrganic() const; + bool targetsNonBuilding() const; + bool targetsNonRobotic() const; + bool targetsTerrain() const; + bool targetsOrgOrMech() const; + bool targetsOwn() const; + }; + /// namespace containing weapon types + namespace WeaponTypes + { + /// Retrieves the set of all weapon types. This is a union between the normalWeaponTypes and + /// specialWeaponTypes. + /// + /// @returns set consisting of all weapon types. + const WeaponType::set& allWeaponTypes(); + + /// Retrieves the set of all normal weapon types. This set contains all weapons that are + /// not used for abilities. + /// + /// @returns constant set consisting of all normal weapon types. + const WeaponType::const_set& normalWeaponTypes(); + + /// Retrieves the set of all special weapon types. This set contains all weapons that are + /// used exclusively for special unit abilities. + /// + /// @returns constant set consisting of all special weapon types. + const WeaponType::const_set& specialWeaponTypes(); + +#ifdef BWAPI_DECL +#undef BWAPI_DECL +#endif +#define BWAPI_DECL(x) /** x */ extern const WeaponType x + BWAPI_DECL(Gauss_Rifle); + BWAPI_DECL(Gauss_Rifle_Jim_Raynor); + BWAPI_DECL(C_10_Canister_Rifle); + BWAPI_DECL(C_10_Canister_Rifle_Sarah_Kerrigan); + BWAPI_DECL(C_10_Canister_Rifle_Samir_Duran); + BWAPI_DECL(C_10_Canister_Rifle_Infested_Duran); + BWAPI_DECL(C_10_Canister_Rifle_Alexei_Stukov); + BWAPI_DECL(Fragmentation_Grenade); + BWAPI_DECL(Fragmentation_Grenade_Jim_Raynor); + BWAPI_DECL(Spider_Mines); + BWAPI_DECL(Twin_Autocannons); + BWAPI_DECL(Twin_Autocannons_Alan_Schezar); + BWAPI_DECL(Hellfire_Missile_Pack); + BWAPI_DECL(Hellfire_Missile_Pack_Alan_Schezar); + BWAPI_DECL(Arclite_Cannon); + BWAPI_DECL(Arclite_Cannon_Edmund_Duke); + BWAPI_DECL(Fusion_Cutter); + BWAPI_DECL(Gemini_Missiles); + BWAPI_DECL(Gemini_Missiles_Tom_Kazansky); + BWAPI_DECL(Burst_Lasers); + BWAPI_DECL(Burst_Lasers_Tom_Kazansky); + BWAPI_DECL(ATS_Laser_Battery); + BWAPI_DECL(ATS_Laser_Battery_Hero); + BWAPI_DECL(ATS_Laser_Battery_Hyperion); + BWAPI_DECL(ATA_Laser_Battery); + BWAPI_DECL(ATA_Laser_Battery_Hero); + BWAPI_DECL(ATA_Laser_Battery_Hyperion); + BWAPI_DECL(Flame_Thrower); + BWAPI_DECL(Flame_Thrower_Gui_Montag); + BWAPI_DECL(Arclite_Shock_Cannon); + BWAPI_DECL(Arclite_Shock_Cannon_Edmund_Duke); + BWAPI_DECL(Longbolt_Missile); + BWAPI_DECL(Claws); + BWAPI_DECL(Claws_Devouring_One); + BWAPI_DECL(Claws_Infested_Kerrigan); + BWAPI_DECL(Needle_Spines); + BWAPI_DECL(Needle_Spines_Hunter_Killer); + BWAPI_DECL(Kaiser_Blades); + BWAPI_DECL(Kaiser_Blades_Torrasque); + BWAPI_DECL(Toxic_Spores); + BWAPI_DECL(Spines); + BWAPI_DECL(Acid_Spore); + BWAPI_DECL(Acid_Spore_Kukulza); + BWAPI_DECL(Glave_Wurm); + BWAPI_DECL(Glave_Wurm_Kukulza); + BWAPI_DECL(Seeker_Spores); + BWAPI_DECL(Subterranean_Tentacle); + BWAPI_DECL(Suicide_Infested_Terran); + BWAPI_DECL(Suicide_Scourge); + BWAPI_DECL(Particle_Beam); + BWAPI_DECL(Psi_Blades); + BWAPI_DECL(Psi_Blades_Fenix); + BWAPI_DECL(Phase_Disruptor); + BWAPI_DECL(Phase_Disruptor_Fenix); + BWAPI_DECL(Psi_Assault); + BWAPI_DECL(Psionic_Shockwave); + BWAPI_DECL(Psionic_Shockwave_TZ_Archon); + BWAPI_DECL(Dual_Photon_Blasters); + BWAPI_DECL(Dual_Photon_Blasters_Mojo); + BWAPI_DECL(Dual_Photon_Blasters_Artanis); + BWAPI_DECL(Anti_Matter_Missiles); + BWAPI_DECL(Anti_Matter_Missiles_Mojo); + BWAPI_DECL(Anti_Matter_Missiles_Artanis); + BWAPI_DECL(Phase_Disruptor_Cannon); + BWAPI_DECL(Phase_Disruptor_Cannon_Danimoth); + BWAPI_DECL(Pulse_Cannon); + BWAPI_DECL(STS_Photon_Cannon); + BWAPI_DECL(STA_Photon_Cannon); + BWAPI_DECL(Scarab); + BWAPI_DECL(Neutron_Flare); + BWAPI_DECL(Halo_Rockets); + BWAPI_DECL(Corrosive_Acid); + BWAPI_DECL(Subterranean_Spines); + BWAPI_DECL(Warp_Blades); + BWAPI_DECL(Warp_Blades_Hero); + BWAPI_DECL(Warp_Blades_Zeratul); + BWAPI_DECL(Independant_Laser_Battery); + BWAPI_DECL(Twin_Autocannons_Floor_Trap); + BWAPI_DECL(Hellfire_Missile_Pack_Wall_Trap); + BWAPI_DECL(Flame_Thrower_Wall_Trap); + BWAPI_DECL(Hellfire_Missile_Pack_Floor_Trap); + + BWAPI_DECL(Yamato_Gun); + BWAPI_DECL(Nuclear_Strike); + BWAPI_DECL(Lockdown); + BWAPI_DECL(EMP_Shockwave); + BWAPI_DECL(Irradiate); + BWAPI_DECL(Parasite); + BWAPI_DECL(Spawn_Broodlings); + BWAPI_DECL(Ensnare); + BWAPI_DECL(Dark_Swarm); + BWAPI_DECL(Plague); + BWAPI_DECL(Consume); + BWAPI_DECL(Stasis_Field); + BWAPI_DECL(Psionic_Storm); + BWAPI_DECL(Disruption_Web); + BWAPI_DECL(Restoration); + BWAPI_DECL(Mind_Control); + BWAPI_DECL(Feedback); + BWAPI_DECL(Optical_Flare); + BWAPI_DECL(Maelstrom); + + BWAPI_DECL(None); + BWAPI_DECL(Unknown); +#undef BWAPI_DECL + } +} diff --git a/bwapi4-includes/swig.i b/bwapi4-includes/swig.i new file mode 100644 index 0000000..ec2a733 --- /dev/null +++ b/bwapi4-includes/swig.i @@ -0,0 +1,261 @@ +%module BWAPI +%{ +#include "BWAPI.h" +%} + +%include "BWAPI/Vectorset.h" +%include "BWAPI/Type.h" + +%define VSET_WRAP(t) +%template(t ## set_Base) BWAPI::Vectorset; +%enddef + +VSET_WRAP(Bullet) +VSET_WRAP(Unit) +VSET_WRAP(Player) +VSET_WRAP(Region) +VSET_WRAP(Force) + +%template(Color_Base) BWAPI::Type; +%rename(Text_Enum) BWAPI::Text::Enum; + +%define COLOR_WRAP(n) +%rename(Color_ ## n) BWAPI::Colors::n; +%enddef + +COLOR_WRAP(Yellow) +COLOR_WRAP(White) +COLOR_WRAP(Grey) +COLOR_WRAP(Red) +COLOR_WRAP(Green) +COLOR_WRAP(Blue) +COLOR_WRAP(Teal) +COLOR_WRAP(Purple) +COLOR_WRAP(Orange) +COLOR_WRAP(Brown) +COLOR_WRAP(Cyan) + + +%rename(CoordinateType_Enum) BWAPI::CoordinateType::Enum; +%rename(Flag_Enum) BWAPI::Flag::Enum; +%rename(Latency_Enum) BWAPI::Latency::Enum; + + +%define TYPEVAL_WRAP(t,v) +%rename(t ## _ ## v) BWAPI::t ## s::v; +%rename(t ## _Enum_ ## v) BWAPI::t ## s::Enum::v; +%enddef + +%define TYPE_WRAP(t) +%template(t ## _Base) BWAPI::Type; +TYPEVAL_WRAP(t,None) +TYPEVAL_WRAP(t,Unknown) +TYPEVAL_WRAP(t,MAX) +%rename(t ## _ ## init) BWAPI::t ## s::init; +%rename(t ## _ ## Enum) BWAPI::t ## s::Enum::Enum; + +TYPEVAL_WRAP(t,Normal) +TYPEVAL_WRAP(t,Ensnare) +TYPEVAL_WRAP(t,Yamato_Gun) +TYPEVAL_WRAP(t,Consume) +TYPEVAL_WRAP(t,Melee) +TYPEVAL_WRAP(t,Unused) +TYPEVAL_WRAP(t,Neutral) +TYPEVAL_WRAP(t,PlayerLeft) +TYPEVAL_WRAP(t,RescuePassive) +TYPEVAL_WRAP(t,Burrowing) +TYPEVAL_WRAP(t,Dark_Swarm) +TYPEVAL_WRAP(t,Irradiate) +TYPEVAL_WRAP(t,Plague) +TYPEVAL_WRAP(t,Psionic_Storm) +TYPEVAL_WRAP(t,Parasite) +TYPEVAL_WRAP(t,Stasis_Field) +TYPEVAL_WRAP(t,Restoration) +TYPEVAL_WRAP(t,EMP_Shockwave) +TYPEVAL_WRAP(t,Stop) +TYPEVAL_WRAP(t,Train) +TYPEVAL_WRAP(t,Follow) +TYPEVAL_WRAP(t,Patrol) +TYPEVAL_WRAP(t,Move) +TYPEVAL_WRAP(t,Upgrade) +TYPEVAL_WRAP(t,Unload) +TYPEVAL_WRAP(t,Cloak) +TYPEVAL_WRAP(t,Decloak) +TYPEVAL_WRAP(t,Maelstrom) +TYPEVAL_WRAP(t,Optical_Flare) +TYPEVAL_WRAP(t,Feedback) +TYPEVAL_WRAP(t,Mind_Control) +TYPEVAL_WRAP(t,Disruption_Web) +TYPEVAL_WRAP(t,Lockdown) +TYPEVAL_WRAP(t,Nuclear_Strike) +TYPEVAL_WRAP(t,Corrosive_Acid) +TYPEVAL_WRAP(t,Subterranean_Spines) +TYPEVAL_WRAP(t,Halo_Rockets) +TYPEVAL_WRAP(t,Neutron_Flare) +TYPEVAL_WRAP(t,Pulse_Cannon) +TYPEVAL_WRAP(t,Phase_Disruptor) +TYPEVAL_WRAP(t,Seeker_Spores) +TYPEVAL_WRAP(t,Glave_Wurm) +TYPEVAL_WRAP(t,Acid_Spore) +TYPEVAL_WRAP(t,Longbolt_Missile) +TYPEVAL_WRAP(t,Burst_Lasers) +TYPEVAL_WRAP(t,Gemini_Missiles) +TYPEVAL_WRAP(t,Spider_Mines) +TYPEVAL_WRAP(t,Fragmentation_Grenade) +TYPEVAL_WRAP(t,Fusion_Cutter_Hit) +TYPEVAL_WRAP(t,Optical_Flare_Grenade) +TYPEVAL_WRAP(t,Independent) +TYPEVAL_WRAP(t,Unit_Does_Not_Exist) +TYPEVAL_WRAP(t,Terran_Marine) +TYPEVAL_WRAP(t,Spawn_Broodlings) +TYPEVAL_WRAP(t,Hellfire_Missile_Pack) +TYPEVAL_WRAP(t,Twin_Autocannons_Floor_Trap) +TYPEVAL_WRAP(t,Independant_Laser_Battery) +TYPEVAL_WRAP(t,Warp_Blades_Zeratul) +TYPEVAL_WRAP(t,Warp_Blades_Hero) +TYPEVAL_WRAP(t,Scarab) +TYPEVAL_WRAP(t,STS_Photon_Cannon) +TYPEVAL_WRAP(t,STA_Photon_Cannon) +TYPEVAL_WRAP(t,Phase_Disruptor_Cannon_Danimoth) +TYPEVAL_WRAP(t,Phase_Disruptor_Cannon) +TYPEVAL_WRAP(t,Anti_Matter_Missiles) +TYPEVAL_WRAP(t,Anti_Matter_Missiles_Artanis) +TYPEVAL_WRAP(t,Anti_Matter_Missiles_Mojo) +TYPEVAL_WRAP(t,Dual_Photon_Blasters) +TYPEVAL_WRAP(t,Dual_Photon_Blasters_Artanis) +TYPEVAL_WRAP(t,Dual_Photon_Blasters_Mojo) +TYPEVAL_WRAP(t,Psionic_Shockwave_TZ_Archon) +TYPEVAL_WRAP(t,Psionic_Shockwave) +TYPEVAL_WRAP(t,Psi_Assault) +TYPEVAL_WRAP(t,Phase_Disruptor_Fenix) +TYPEVAL_WRAP(t,Phase_Disruptor) +TYPEVAL_WRAP(t,Psi_Blades_Fenix) +TYPEVAL_WRAP(t,Psi_Blades) +TYPEVAL_WRAP(t,Particle_Beam) +TYPEVAL_WRAP(t,Suicide_Scourge) +TYPEVAL_WRAP(t,Suicide_Infested_Terran) +TYPEVAL_WRAP(t,Subterranean_Tentacle) +TYPEVAL_WRAP(t,Glave_Wurm_Kukulza) +TYPEVAL_WRAP(t,Glave_Wurm) +TYPEVAL_WRAP(t,Acid_Spore_Kukulza) +TYPEVAL_WRAP(t,Acid_Spore) +TYPEVAL_WRAP(t,Spines) +TYPEVAL_WRAP(t,Toxic_Spores) +TYPEVAL_WRAP(t,Kaiser_Blades_Torrasque) +TYPEVAL_WRAP(t,Needle_Spines_Hunter_Killer) +TYPEVAL_WRAP(t,Kaiser_Blades) +TYPEVAL_WRAP(t,Needle_Spines) +TYPEVAL_WRAP(t,Claws_Infested_Kerrigan) +TYPEVAL_WRAP(t,Claws_Devouring_One) +TYPEVAL_WRAP(t,Claws) +TYPEVAL_WRAP(t,Arclite_Shock_Cannon_Edmund_Duke) +TYPEVAL_WRAP(t,Arclite_Shock_Cannon) +TYPEVAL_WRAP(t,Flame_Thrower_Gui_Montag) +TYPEVAL_WRAP(t,Flame_Thrower) +TYPEVAL_WRAP(t,ATA_Laser_Battery) +TYPEVAL_WRAP(t,ATA_Laser_Battery_Hero) +TYPEVAL_WRAP(t,ATA_Laser_Battery_Hyperion) +TYPEVAL_WRAP(t,ATS_Laser_Battery) +TYPEVAL_WRAP(t,ATS_Laser_Battery_Hero) +TYPEVAL_WRAP(t,ATS_Laser_Battery_Hyperion) +TYPEVAL_WRAP(t,Burst_Lasers_Tom_Kazansky) +TYPEVAL_WRAP(t,Burst_Lasers) +TYPEVAL_WRAP(t,Gemini_Missiles_Tom_Kazansky) +TYPEVAL_WRAP(t,Gemini_Missiles) +TYPEVAL_WRAP(t,Fusion_Cutter) +TYPEVAL_WRAP(t,Arclite_Cannon_Edmund_Duke) +TYPEVAL_WRAP(t,Arclite_Cannon) +TYPEVAL_WRAP(t,Hellfire_Missile_Pack_Alan_Schezar) +TYPEVAL_WRAP(t,Hellfire_Missile_Pack) +TYPEVAL_WRAP(t,C_10_Canister_Rifle) +TYPEVAL_WRAP(t,C_10_Canister_Rifle_Sarah_Kerrigan) +TYPEVAL_WRAP(t,C_10_Canister_Rifle_Samir_Duran) +TYPEVAL_WRAP(t,C_10_Canister_Rifle_Infested_Duran) +TYPEVAL_WRAP(t,C_10_Canister_Rifle_Alexei_Stukov) +TYPEVAL_WRAP(t,Gauss_Rifle) +TYPEVAL_WRAP(t,Gauss_Rifle_Jim_Raynor) +TYPEVAL_WRAP(t,Hellfire_Missile_Pack_Floor_Trap) +TYPEVAL_WRAP(t,Flame_Thrower_Wall_Trap) +TYPEVAL_WRAP(t,Hellfire_Missile_Pack_Wall_Trap) +TYPEVAL_WRAP(t,Warp_Blades) +TYPEVAL_WRAP(t,Twin_Autocannons_Alan_Schezar) +TYPEVAL_WRAP(t,Twin_Autocannons) +TYPEVAL_WRAP(t,Fragmentation_Grenade_Jim_Raynor) +TYPEVAL_WRAP(t,Fragmentation_Grenade) +TYPEVAL_WRAP(t,Charon_Boosters) +TYPEVAL_WRAP(t,Anabolic_Synthesis) +TYPEVAL_WRAP(t,Chitinous_Plating) +TYPEVAL_WRAP(t,Caduceus_Reactir) +TYPEVAL_WRAP(t,Argus_Talisman) +TYPEVAL_WRAP(t,Argus_Jewel) +TYPEVAL_WRAP(t,Khaydarin_Core) +TYPEVAL_WRAP(t,Carrier_Capacity) +TYPEVAL_WRAP(t,Gravitic_Thrusters) +TYPEVAL_WRAP(t,Apial_Sensors) +TYPEVAL_WRAP(t,Khaydarin_Amulet) +TYPEVAL_WRAP(t,Gravitic_Boosters) +TYPEVAL_WRAP(t,Sensor_Array) +TYPEVAL_WRAP(t,Gravitic_Drive) +TYPEVAL_WRAP(t,Reaver_Capacity) +TYPEVAL_WRAP(t,Scarab_Damage) +TYPEVAL_WRAP(t,Leg_Enhancements) +TYPEVAL_WRAP(t,Singularity_Charge) +TYPEVAL_WRAP(t,Metasynaptic_Node) +TYPEVAL_WRAP(t,Gamete_Meiosis) +TYPEVAL_WRAP(t,Grooved_Spines) +TYPEVAL_WRAP(t,Muscular_Augments) +TYPEVAL_WRAP(t,Adrenal_Glands) +TYPEVAL_WRAP(t,Metabolic_Boost) +TYPEVAL_WRAP(t,Antennae) +TYPEVAL_WRAP(t,Ventral_Sacs) +TYPEVAL_WRAP(t,Colossus_Reactor) +TYPEVAL_WRAP(t,Apollo_Reactor) +TYPEVAL_WRAP(t,Moebius_Reactor) +TYPEVAL_WRAP(t,Ocular_Implants) +TYPEVAL_WRAP(t,Titan_Reactor) +TYPEVAL_WRAP(t,Ion_Thrusters) +TYPEVAL_WRAP(t,U_238_Shells) +TYPEVAL_WRAP(t,Protoss_Plasma_Shields) +TYPEVAL_WRAP(t,Protoss_Air_Weapons) +TYPEVAL_WRAP(t,Protoss_Ground_Weapons) +TYPEVAL_WRAP(t,Zerg_Flyer_Attacks) +TYPEVAL_WRAP(t,Zerg_Missile_Attacks) +TYPEVAL_WRAP(t,Zerg_Melee_Attacks) +TYPEVAL_WRAP(t,Terran_Ship_Weapons) +TYPEVAL_WRAP(t,Terran_Vehicle_Weapons) +TYPEVAL_WRAP(t,Terran_Infantry_Weapons) +TYPEVAL_WRAP(t,Protoss_Air_Armor) +TYPEVAL_WRAP(t,Protoss_Ground_Armor) +TYPEVAL_WRAP(t,Zerg_Flyer_Carapace) +TYPEVAL_WRAP(t,Zerg_Carapace) +TYPEVAL_WRAP(t,Terran_Ship_Plating) +TYPEVAL_WRAP(t,Terran_Vehicle_Plating) +TYPEVAL_WRAP(t,Terran_Infantry_Armor) +TYPEVAL_WRAP(t,Repair) +TYPEVAL_WRAP(t,Attack_Move) +TYPEVAL_WRAP(t,Stim_Packs) +TYPEVAL_WRAP(t,Zerg) +TYPEVAL_WRAP(t,Pneumatized_Carapace) +TYPEVAL_WRAP(t,Caduceus_Reactor) +TYPEVAL_WRAP(t,Player) +%enddef + +TYPE_WRAP(BulletType) +TYPE_WRAP(DamageType) +TYPE_WRAP(Error) +TYPE_WRAP(ExplosionType) +TYPE_WRAP(GameType) +TYPE_WRAP(Order) +TYPE_WRAP(PlayerType) +TYPE_WRAP(Race) +TYPE_WRAP(TechType) +TYPE_WRAP(UnitCommandType) +TYPE_WRAP(UnitSizeType) +TYPE_WRAP(UnitType) +TYPE_WRAP(UpgradeType) +TYPE_WRAP(WeaponType) + +%rename(Text_Invisible) BWAPI::Text::Invisible; + + +%include "BWAPI.h" diff --git a/bwapi4/AIModule.java b/bwapi4/AIModule.java new file mode 100644 index 0000000..4b2bab5 --- /dev/null +++ b/bwapi4/AIModule.java @@ -0,0 +1,133 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class AIModule { + + public void onStart() { + onStart_native(pointer); + } + + public void onEnd(boolean isWinner) { + onEnd_native(pointer, isWinner); + } + + public void onFrame() { + onFrame_native(pointer); + } + + public void onSendText(String text) { + onSendText_native(pointer, text); + } + + public void onReceiveText(Player player, String text) { + onReceiveText_native(pointer, player, text); + } + + public void onPlayerLeft(Player player) { + onPlayerLeft_native(pointer, player); + } + + public void onNukeDetect(Position target) { + onNukeDetect_native(pointer, target); + } + + public void onUnitDiscover(Unit unit) { + onUnitDiscover_native(pointer, unit); + } + + public void onUnitEvade(Unit unit) { + onUnitEvade_native(pointer, unit); + } + + public void onUnitShow(Unit unit) { + onUnitShow_native(pointer, unit); + } + + public void onUnitHide(Unit unit) { + onUnitHide_native(pointer, unit); + } + + public void onUnitCreate(Unit unit) { + onUnitCreate_native(pointer, unit); + } + + public void onUnitDestroy(Unit unit) { + onUnitDestroy_native(pointer, unit); + } + + public void onUnitMorph(Unit unit) { + onUnitMorph_native(pointer, unit); + } + + public void onUnitRenegade(Unit unit) { + onUnitRenegade_native(pointer, unit); + } + + public void onSaveGame(String gameName) { + onSaveGame_native(pointer, gameName); + } + + public void onUnitComplete(Unit unit) { + onUnitComplete_native(pointer, unit); + } + + + private static Map instances = new HashMap(); + + private AIModule(long pointer) { + this.pointer = pointer; + } + + private static AIModule get(long pointer) { + AIModule instance = instances.get(pointer); + if (instance == null ) { + instance = new AIModule(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + private native void onStart_native(long pointer); + + private native void onEnd_native(long pointer, boolean isWinner); + + private native void onFrame_native(long pointer); + + private native void onSendText_native(long pointer, String text); + + private native void onReceiveText_native(long pointer, Player player, String text); + + private native void onPlayerLeft_native(long pointer, Player player); + + private native void onNukeDetect_native(long pointer, Position target); + + private native void onUnitDiscover_native(long pointer, Unit unit); + + private native void onUnitEvade_native(long pointer, Unit unit); + + private native void onUnitShow_native(long pointer, Unit unit); + + private native void onUnitHide_native(long pointer, Unit unit); + + private native void onUnitCreate_native(long pointer, Unit unit); + + private native void onUnitDestroy_native(long pointer, Unit unit); + + private native void onUnitMorph_native(long pointer, Unit unit); + + private native void onUnitRenegade_native(long pointer, Unit unit); + + private native void onSaveGame_native(long pointer, String gameName); + + private native void onUnitComplete_native(long pointer, Unit unit); + + +} diff --git a/bwapi4/BestFilter.java b/bwapi4/BestFilter.java new file mode 100644 index 0000000..1e71c88 --- /dev/null +++ b/bwapi4/BestFilter.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class BestFilter { + + + private static Map instances = new HashMap(); + + private BestFilter(long pointer) { + this.pointer = pointer; + } + + private static BestFilter get(long pointer) { + BestFilter instance = instances.get(pointer); + if (instance == null ) { + instance = new BestFilter(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/bwapi4/BestUnitFilter.java b/bwapi4/BestUnitFilter.java new file mode 100644 index 0000000..4a90ead --- /dev/null +++ b/bwapi4/BestUnitFilter.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class BestUnitFilter { + + + private static Map instances = new HashMap(); + + private BestUnitFilter(long pointer) { + this.pointer = pointer; + } + + private static BestUnitFilter get(long pointer) { + BestUnitFilter instance = instances.get(pointer); + if (instance == null ) { + instance = new BestUnitFilter(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/bwapi4/Bullet.java b/bwapi4/Bullet.java new file mode 100644 index 0000000..80462b2 --- /dev/null +++ b/bwapi4/Bullet.java @@ -0,0 +1,115 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class Bullet { + + public int getID() { + return getID_native(pointer); + } + + public boolean exists() { + return exists_native(pointer); + } + + public Player getPlayer() { + return getPlayer_native(pointer); + } + + public BulletType getType() { + return getType_native(pointer); + } + + public Unit getSource() { + return getSource_native(pointer); + } + + public Position getPosition() { + return getPosition_native(pointer); + } + + public double getAngle() { + return getAngle_native(pointer); + } + + public double getVelocityX() { + return getVelocityX_native(pointer); + } + + public double getVelocityY() { + return getVelocityY_native(pointer); + } + + public Unit getTarget() { + return getTarget_native(pointer); + } + + public Position getTargetPosition() { + return getTargetPosition_native(pointer); + } + + public int getRemoveTimer() { + return getRemoveTimer_native(pointer); + } + + public boolean isVisible() { + return isVisible_native(pointer); + } + + public boolean isVisible(Player player) { + return isVisible_native(pointer, player); + } + + + private static Map instances = new HashMap(); + + private Bullet(long pointer) { + this.pointer = pointer; + } + + private static Bullet get(long pointer) { + Bullet instance = instances.get(pointer); + if (instance == null ) { + instance = new Bullet(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + private native int getID_native(long pointer); + + private native boolean exists_native(long pointer); + + private native Player getPlayer_native(long pointer); + + private native BulletType getType_native(long pointer); + + private native Unit getSource_native(long pointer); + + private native Position getPosition_native(long pointer); + + private native double getAngle_native(long pointer); + + private native double getVelocityX_native(long pointer); + + private native double getVelocityY_native(long pointer); + + private native Unit getTarget_native(long pointer); + + private native Position getTargetPosition_native(long pointer); + + private native int getRemoveTimer_native(long pointer); + + private native boolean isVisible_native(long pointer); + + private native boolean isVisible_native(long pointer, Player player); + + +} diff --git a/bwapi4/BulletType.java b/bwapi4/BulletType.java new file mode 100644 index 0000000..8c24be4 --- /dev/null +++ b/bwapi4/BulletType.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class BulletType { + + + private static Map instances = new HashMap(); + + private BulletType(long pointer) { + this.pointer = pointer; + } + + private static BulletType get(long pointer) { + BulletType instance = instances.get(pointer); + if (instance == null ) { + instance = new BulletType(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/bwapi4/Bulletset.java b/bwapi4/Bulletset.java new file mode 100644 index 0000000..5a165fb --- /dev/null +++ b/bwapi4/Bulletset.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class Bulletset { + + + private static Map instances = new HashMap(); + + private Bulletset(long pointer) { + this.pointer = pointer; + } + + private static Bulletset get(long pointer) { + Bulletset instance = instances.get(pointer); + if (instance == null ) { + instance = new Bulletset(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/bwapi4/Client.java b/bwapi4/Client.java new file mode 100644 index 0000000..e455269 --- /dev/null +++ b/bwapi4/Client.java @@ -0,0 +1,55 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class Client { + + public boolean isConnected() { + return isConnected_native(pointer); + } + + public boolean connect() { + return connect_native(pointer); + } + + public void disconnect() { + disconnect_native(pointer); + } + + public void update() { + update_native(pointer); + } + + + private static Map instances = new HashMap(); + + private Client(long pointer) { + this.pointer = pointer; + } + + private static Client get(long pointer) { + Client instance = instances.get(pointer); + if (instance == null ) { + instance = new Client(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + private native boolean isConnected_native(long pointer); + + private native boolean connect_native(long pointer); + + private native void disconnect_native(long pointer); + + private native void update_native(long pointer); + + +} diff --git a/bwapi4/Color.java b/bwapi4/Color.java new file mode 100644 index 0000000..e05ddc7 --- /dev/null +++ b/bwapi4/Color.java @@ -0,0 +1,73 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class Color { + + public int red() { + return red_native(pointer); + } + + public int green() { + return green_native(pointer); + } + + public int blue() { + return blue_native(pointer); + } + + public static Color Red; + + public static Color Blue; + + public static Color Teal; + + public static Color Purple; + + public static Color Orange; + + public static Color Brown; + + public static Color White; + + public static Color Yellow; + + public static Color Green; + + public static Color Cyan; + + public static Color Black; + + public static Color Grey; + + + private static Map instances = new HashMap(); + + private Color(long pointer) { + this.pointer = pointer; + } + + private static Color get(long pointer) { + Color instance = instances.get(pointer); + if (instance == null ) { + instance = new Color(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + private native int red_native(long pointer); + + private native int green_native(long pointer); + + private native int blue_native(long pointer); + + +} diff --git a/bwapi4/CommandType/Enum.java b/bwapi4/CommandType/Enum.java new file mode 100644 index 0000000..b379559 --- /dev/null +++ b/bwapi4/CommandType/Enum.java @@ -0,0 +1,41 @@ +package bwapi4.CommandType; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public enum Enum { + + None(0), + SetScreenPosition(1), + PingMinimap(2), + EnableFlag(3), + Printf(4), + SendText(5), + PauseGame(6), + ResumeGame(7), + LeaveGame(8), + RestartGame(9), + SetLocalSpeed(10), + SetLatCom(11), + SetGui(12), + SetFrameSkip(13), + SetMap(14), + SetAllies(15), + SetVision(16), + SetCommandOptimizerLevel(17); + + private int value; + + public int getValue(){ + return value; + } + + Enum(int value){ + this.value = value; + } + +} diff --git a/bwapi4/CompareFilter.java b/bwapi4/CompareFilter.java new file mode 100644 index 0000000..66c36f3 --- /dev/null +++ b/bwapi4/CompareFilter.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class CompareFilter { + + + private static Map instances = new HashMap(); + + private CompareFilter(long pointer) { + this.pointer = pointer; + } + + private static CompareFilter get(long pointer) { + CompareFilter instance = instances.get(pointer); + if (instance == null ) { + instance = new CompareFilter(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/bwapi4/CoordinateType/Enum.java b/bwapi4/CoordinateType/Enum.java new file mode 100644 index 0000000..4c5bce5 --- /dev/null +++ b/bwapi4/CoordinateType/Enum.java @@ -0,0 +1,27 @@ +package bwapi4.CoordinateType; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public enum Enum { + + None(0), + Screen(1), + Map(2), + Mouse(3); + + private int value; + + public int getValue(){ + return value; + } + + Enum(int value){ + this.value = value; + } + +} diff --git a/bwapi4/DamageType.java b/bwapi4/DamageType.java new file mode 100644 index 0000000..1c6080e --- /dev/null +++ b/bwapi4/DamageType.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class DamageType { + + + private static Map instances = new HashMap(); + + private DamageType(long pointer) { + this.pointer = pointer; + } + + private static DamageType get(long pointer) { + DamageType instance = instances.get(pointer); + if (instance == null ) { + instance = new DamageType(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/bwapi4/Enum/Enum.java b/bwapi4/Enum/Enum.java new file mode 100644 index 0000000..a655dc1 --- /dev/null +++ b/bwapi4/Enum/Enum.java @@ -0,0 +1,126 @@ +package bwapi4.Enum; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public enum Enum { + + Gauss_Rifle(0), + Gauss_Rifle_Jim_Raynor(1), + C_10_Canister_Rifle(2), + C_10_Canister_Rifle_Sarah_Kerrigan(3), + Fragmentation_Grenade(4), + Fragmentation_Grenade_Jim_Raynor(5), + Spider_Mines(6), + Twin_Autocannons(7), + Hellfire_Missile_Pack(8), + Twin_Autocannons_Alan_Schezar(9), + Hellfire_Missile_Pack_Alan_Schezar(10), + Arclite_Cannon(11), + Arclite_Cannon_Edmund_Duke(12), + Fusion_Cutter(13), + Gemini_Missiles(15), + Burst_Lasers(16), + Gemini_Missiles_Tom_Kazansky(17), + Burst_Lasers_Tom_Kazansky(18), + ATS_Laser_Battery(19), + ATA_Laser_Battery(20), + ATS_Laser_Battery_Hero(21), + ATA_Laser_Battery_Hero(22), + ATS_Laser_Battery_Hyperion(23), + ATA_Laser_Battery_Hyperion(24), + Flame_Thrower(25), + Flame_Thrower_Gui_Montag(26), + Arclite_Shock_Cannon(27), + Arclite_Shock_Cannon_Edmund_Duke(28), + Longbolt_Missile(29), + Yamato_Gun(30), + Nuclear_Strike(31), + Lockdown(32), + EMP_Shockwave(33), + Irradiate(34), + Claws(35), + Claws_Devouring_One(36), + Claws_Infested_Kerrigan(37), + Needle_Spines(38), + Needle_Spines_Hunter_Killer(39), + Kaiser_Blades(40), + Kaiser_Blades_Torrasque(41), + Toxic_Spores(42), + Spines(43), + Acid_Spore(46), + Acid_Spore_Kukulza(47), + Glave_Wurm(48), + Glave_Wurm_Kukulza(49), + Seeker_Spores(52), + Subterranean_Tentacle(53), + Suicide_Infested_Terran(54), + Suicide_Scourge(55), + Parasite(56), + Spawn_Broodlings(57), + Ensnare(58), + Dark_Swarm(59), + Plague(60), + Consume(61), + Particle_Beam(62), + Psi_Blades(64), + Psi_Blades_Fenix(65), + Phase_Disruptor(66), + Phase_Disruptor_Fenix(67), + Psi_Assault(69), + Psionic_Shockwave(70), + Psionic_Shockwave_TZ_Archon(71), + Dual_Photon_Blasters(73), + Anti_Matter_Missiles(74), + Dual_Photon_Blasters_Mojo(75), + Anti_Matter_Missiles_Mojo(76), + Phase_Disruptor_Cannon(77), + Phase_Disruptor_Cannon_Danimoth(78), + Pulse_Cannon(79), + STS_Photon_Cannon(80), + STA_Photon_Cannon(81), + Scarab(82), + Stasis_Field(83), + Psionic_Storm(84), + Warp_Blades_Zeratul(85), + Warp_Blades_Hero(86), + Platform_Laser_Battery(92), + Independant_Laser_Battery(93), + Twin_Autocannons_Floor_Trap(96), + Hellfire_Missile_Pack_Wall_Trap(97), + Flame_Thrower_Wall_Trap(98), + Hellfire_Missile_Pack_Floor_Trap(99), + Neutron_Flare(100), + Disruption_Web(101), + Restoration(102), + Halo_Rockets(103), + Corrosive_Acid(104), + Mind_Control(105), + Feedback(106), + Optical_Flare(107), + Maelstrom(108), + Subterranean_Spines(109), + Warp_Blades(111), + C_10_Canister_Rifle_Samir_Duran(112), + C_10_Canister_Rifle_Infested_Duran(113), + Dual_Photon_Blasters_Artanis(114), + Anti_Matter_Missiles_Artanis(115), + C_10_Canister_Rifle_Alexei_Stukov(116), + None(130), + Unknown(131); + + private int value; + + public int getValue(){ + return value; + } + + Enum(int value){ + this.value = value; + } + +} diff --git a/bwapi4/Error.java b/bwapi4/Error.java new file mode 100644 index 0000000..b0f9f7f --- /dev/null +++ b/bwapi4/Error.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class Error { + + + private static Map instances = new HashMap(); + + private Error(long pointer) { + this.pointer = pointer; + } + + private static Error get(long pointer) { + Error instance = instances.get(pointer); + if (instance == null ) { + instance = new Error(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/bwapi4/Event.java b/bwapi4/Event.java new file mode 100644 index 0000000..6c7ff65 --- /dev/null +++ b/bwapi4/Event.java @@ -0,0 +1,61 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class Event { + + public Position getPosition() { + return getPosition_native(pointer); + } + + public String getText() { + return getText_native(pointer); + } + + public Unit getUnit() { + return getUnit_native(pointer); + } + + public Player getPlayer() { + return getPlayer_native(pointer); + } + + public boolean isWinner() { + return isWinner_native(pointer); + } + + + private static Map instances = new HashMap(); + + private Event(long pointer) { + this.pointer = pointer; + } + + private static Event get(long pointer) { + Event instance = instances.get(pointer); + if (instance == null ) { + instance = new Event(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + private native Position getPosition_native(long pointer); + + private native String getText_native(long pointer); + + private native Unit getUnit_native(long pointer); + + private native Player getPlayer_native(long pointer); + + private native boolean isWinner_native(long pointer); + + +} diff --git a/bwapi4/EventType/Enum.java b/bwapi4/EventType/Enum.java new file mode 100644 index 0000000..6173e74 --- /dev/null +++ b/bwapi4/EventType/Enum.java @@ -0,0 +1,41 @@ +package bwapi4.EventType; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public enum Enum { + + MatchStart(0), + MatchEnd(1), + MatchFrame(2), + MenuFrame(3), + SendText(4), + ReceiveText(5), + PlayerLeft(6), + NukeDetect(7), + UnitDiscover(8), + UnitEvade(9), + UnitShow(10), + UnitHide(11), + UnitCreate(12), + UnitDestroy(13), + UnitMorph(14), + UnitRenegade(15), + SaveGame(16), + UnitComplete(17); + + private int value; + + public int getValue(){ + return value; + } + + Enum(int value){ + this.value = value; + } + +} diff --git a/bwapi4/ExplosionType.java b/bwapi4/ExplosionType.java new file mode 100644 index 0000000..9bc2329 --- /dev/null +++ b/bwapi4/ExplosionType.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class ExplosionType { + + + private static Map instances = new HashMap(); + + private ExplosionType(long pointer) { + this.pointer = pointer; + } + + private static ExplosionType get(long pointer) { + ExplosionType instance = instances.get(pointer); + if (instance == null ) { + instance = new ExplosionType(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/bwapi4/Flag/Enum.java b/bwapi4/Flag/Enum.java new file mode 100644 index 0000000..cdbf3d4 --- /dev/null +++ b/bwapi4/Flag/Enum.java @@ -0,0 +1,25 @@ +package bwapi4.Flag; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public enum Enum { + + CompleteMapInformation(0), + UserInput(1); + + private int value; + + public int getValue(){ + return value; + } + + Enum(int value){ + this.value = value; + } + +} diff --git a/bwapi4/Force.java b/bwapi4/Force.java new file mode 100644 index 0000000..654e94b --- /dev/null +++ b/bwapi4/Force.java @@ -0,0 +1,49 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class Force { + + public int getID() { + return getID_native(pointer); + } + + public String getName() { + return getName_native(pointer); + } + + public Playerset getPlayers() { + return getPlayers_native(pointer); + } + + + private static Map instances = new HashMap(); + + private Force(long pointer) { + this.pointer = pointer; + } + + private static Force get(long pointer) { + Force instance = instances.get(pointer); + if (instance == null ) { + instance = new Force(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + private native int getID_native(long pointer); + + private native String getName_native(long pointer); + + private native Playerset getPlayers_native(long pointer); + + +} diff --git a/bwapi4/Forceset.java b/bwapi4/Forceset.java new file mode 100644 index 0000000..f0b45ab --- /dev/null +++ b/bwapi4/Forceset.java @@ -0,0 +1,37 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class Forceset { + + public Playerset getPlayers() { + return getPlayers_native(pointer); + } + + + private static Map instances = new HashMap(); + + private Forceset(long pointer) { + this.pointer = pointer; + } + + private static Forceset get(long pointer) { + Forceset instance = instances.get(pointer); + if (instance == null ) { + instance = new Forceset(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + private native Playerset getPlayers_native(long pointer); + + +} diff --git a/bwapi4/Game.java b/bwapi4/Game.java new file mode 100644 index 0000000..23451b8 --- /dev/null +++ b/bwapi4/Game.java @@ -0,0 +1,1363 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class Game { + + public Forceset getForces() { + return getForces_native(pointer); + } + + public Playerset getPlayers() { + return getPlayers_native(pointer); + } + + public Unitset getAllUnits() { + return getAllUnits_native(pointer); + } + + public Unitset getMinerals() { + return getMinerals_native(pointer); + } + + public Unitset getGeysers() { + return getGeysers_native(pointer); + } + + public Unitset getNeutralUnits() { + return getNeutralUnits_native(pointer); + } + + public Unitset getStaticMinerals() { + return getStaticMinerals_native(pointer); + } + + public Unitset getStaticGeysers() { + return getStaticGeysers_native(pointer); + } + + public Unitset getStaticNeutralUnits() { + return getStaticNeutralUnits_native(pointer); + } + + public Bulletset getBullets() { + return getBullets_native(pointer); + } + + public Force getForce(int forceID) { + return getForce_native(pointer, forceID); + } + + public Player getPlayer(int playerID) { + return getPlayer_native(pointer, playerID); + } + + public Unit getUnit(int unitID) { + return getUnit_native(pointer, unitID); + } + + public Unit indexToUnit(int unitIndex) { + return indexToUnit_native(pointer, unitIndex); + } + + public Region getRegion(int regionID) { + return getRegion_native(pointer, regionID); + } + + public GameType getGameType() { + return getGameType_native(pointer); + } + + public int getLatency() { + return getLatency_native(pointer); + } + + public int getFrameCount() { + return getFrameCount_native(pointer); + } + + public int getReplayFrameCount() { + return getReplayFrameCount_native(pointer); + } + + public int getFPS() { + return getFPS_native(pointer); + } + + public double getAverageFPS() { + return getAverageFPS_native(pointer); + } + + public Position getMousePosition() { + return getMousePosition_native(pointer); + } + + public boolean getMouseState(MouseButton button) { + return getMouseState_native(pointer, button); + } + + public boolean getKeyState(Key key) { + return getKeyState_native(pointer, key); + } + + public Position getScreenPosition() { + return getScreenPosition_native(pointer); + } + + public void setScreenPosition(int x, int y) { + setScreenPosition_native(pointer, x, y); + } + + public void setScreenPosition(Position p) { + setScreenPosition_native(pointer, p); + } + + public void pingMinimap(int x, int y) { + pingMinimap_native(pointer, x, y); + } + + public void pingMinimap(Position p) { + pingMinimap_native(pointer, p); + } + + public boolean isFlagEnabled(int flag) { + return isFlagEnabled_native(pointer, flag); + } + + public void enableFlag(int flag) { + enableFlag_native(pointer, flag); + } + + public Unitset getUnitsOnTile(int tileX, int tileY, UnitFilter pred) { + return getUnitsOnTile_native(pointer, tileX, tileY, pred); + } + + public Unitset getUnitsOnTile(TilePosition tile, UnitFilter pred) { + return getUnitsOnTile_native(pointer, tile, pred); + } + + public Unitset getUnitsInRectangle(int left, int top, int right, int bottom, UnitFilter pred) { + return getUnitsInRectangle_native(pointer, left, top, right, bottom, pred); + } + + public Unitset getUnitsInRectangle(Position topLeft, Position bottomRight, UnitFilter pred) { + return getUnitsInRectangle_native(pointer, topLeft, bottomRight, pred); + } + + public Unitset getUnitsInRadius(int x, int y, int radius, UnitFilter pred) { + return getUnitsInRadius_native(pointer, x, y, radius, pred); + } + + public Unitset getUnitsInRadius(Position center, int radius, UnitFilter pred) { + return getUnitsInRadius_native(pointer, center, radius, pred); + } + + public Unit getClosestUnit(Position center, UnitFilter pred) { + return getClosestUnit_native(pointer, center, pred); + } + + public Unit getClosestUnit(Position center, UnitFilter pred, int radius) { + return getClosestUnit_native(pointer, center, pred, radius); + } + + public Unit getClosestUnitInRectangle(Position center, UnitFilter pred, int left, int top, int right) { + return getClosestUnitInRectangle_native(pointer, center, pred, left, top, right); + } + + public Unit getClosestUnitInRectangle(Position center, UnitFilter pred, int left, int top) { + return getClosestUnitInRectangle_native(pointer, center, pred, left, top); + } + + public Unit getClosestUnitInRectangle(Position center, UnitFilter pred, int left) { + return getClosestUnitInRectangle_native(pointer, center, pred, left); + } + + public Unit getClosestUnitInRectangle(Position center, UnitFilter pred) { + return getClosestUnitInRectangle_native(pointer, center, pred); + } + + public Unit getClosestUnitInRectangle(Position center, UnitFilter pred, int left, int top, int right, int bottom) { + return getClosestUnitInRectangle_native(pointer, center, pred, left, top, right, bottom); + } + + public Unit getBestUnit(BestUnitFilter best, UnitFilter pred, Position center) { + return getBestUnit_native(pointer, best, pred, center); + } + + public Unit getBestUnit(BestUnitFilter best, UnitFilter pred) { + return getBestUnit_native(pointer, best, pred); + } + + public Unit getBestUnit(BestUnitFilter best, UnitFilter pred, Position center, int radius) { + return getBestUnit_native(pointer, best, pred, center, radius); + } + + public Error getLastError() { + return getLastError_native(pointer); + } + + public boolean setLastError() { + return setLastError_native(pointer); + } + + public boolean setLastError(Error e) { + return setLastError_native(pointer, e); + } + + public int mapWidth() { + return mapWidth_native(pointer); + } + + public int mapHeight() { + return mapHeight_native(pointer); + } + + public String mapFileName() { + return mapFileName_native(pointer); + } + + public String mapPathName() { + return mapPathName_native(pointer); + } + + public String mapName() { + return mapName_native(pointer); + } + + public String mapHash() { + return mapHash_native(pointer); + } + + public boolean isWalkable(int walkX, int walkY) { + return isWalkable_native(pointer, walkX, walkY); + } + + public boolean isWalkable(WalkPosition position) { + return isWalkable_native(pointer, position); + } + + public boolean isBuildable(int tileX, int tileY) { + return isBuildable_native(pointer, tileX, tileY); + } + + public boolean isBuildable(int tileX, int tileY, boolean includeBuildings) { + return isBuildable_native(pointer, tileX, tileY, includeBuildings); + } + + public boolean isBuildable(TilePosition position) { + return isBuildable_native(pointer, position); + } + + public boolean isBuildable(TilePosition position, boolean includeBuildings) { + return isBuildable_native(pointer, position, includeBuildings); + } + + public boolean isVisible(int tileX, int tileY) { + return isVisible_native(pointer, tileX, tileY); + } + + public boolean isVisible(TilePosition position) { + return isVisible_native(pointer, position); + } + + public boolean isExplored(int tileX, int tileY) { + return isExplored_native(pointer, tileX, tileY); + } + + public boolean isExplored(TilePosition position) { + return isExplored_native(pointer, position); + } + + public boolean hasCreep(int tileX, int tileY) { + return hasCreep_native(pointer, tileX, tileY); + } + + public boolean hasCreep(TilePosition position) { + return hasCreep_native(pointer, position); + } + + public boolean hasPowerPrecise(int x, int y) { + return hasPowerPrecise_native(pointer, x, y); + } + + public boolean hasPowerPrecise(int x, int y, UnitType unitType) { + return hasPowerPrecise_native(pointer, x, y, unitType); + } + + public boolean hasPowerPrecise(Position position) { + return hasPowerPrecise_native(pointer, position); + } + + public boolean hasPowerPrecise(Position position, UnitType unitType) { + return hasPowerPrecise_native(pointer, position, unitType); + } + + public boolean hasPower(int tileX, int tileY) { + return hasPower_native(pointer, tileX, tileY); + } + + public boolean hasPower(int tileX, int tileY, UnitType unitType) { + return hasPower_native(pointer, tileX, tileY, unitType); + } + + public boolean hasPower(TilePosition position) { + return hasPower_native(pointer, position); + } + + public boolean hasPower(TilePosition position, UnitType unitType) { + return hasPower_native(pointer, position, unitType); + } + + public boolean hasPower(int tileX, int tileY, int tileWidth, int tileHeight) { + return hasPower_native(pointer, tileX, tileY, tileWidth, tileHeight); + } + + public boolean hasPower(int tileX, int tileY, int tileWidth, int tileHeight, UnitType unitType) { + return hasPower_native(pointer, tileX, tileY, tileWidth, tileHeight, unitType); + } + + public boolean hasPower(TilePosition position, int tileWidth, int tileHeight) { + return hasPower_native(pointer, position, tileWidth, tileHeight); + } + + public boolean hasPower(TilePosition position, int tileWidth, int tileHeight, UnitType unitType) { + return hasPower_native(pointer, position, tileWidth, tileHeight, unitType); + } + + public boolean canBuildHere(TilePosition position, UnitType type, Unit builder) { + return canBuildHere_native(pointer, position, type, builder); + } + + public boolean canBuildHere(TilePosition position, UnitType type) { + return canBuildHere_native(pointer, position, type); + } + + public boolean canBuildHere(TilePosition position, UnitType type, Unit builder, boolean checkExplored) { + return canBuildHere_native(pointer, position, type, builder, checkExplored); + } + + public boolean canMake(UnitType type) { + return canMake_native(pointer, type); + } + + public boolean canMake(UnitType type, Unit builder) { + return canMake_native(pointer, type, builder); + } + + public boolean canResearch(TechType type, Unit unit) { + return canResearch_native(pointer, type, unit); + } + + public boolean canResearch(TechType type) { + return canResearch_native(pointer, type); + } + + public boolean canResearch(TechType type, Unit unit, boolean checkCanIssueCommandType) { + return canResearch_native(pointer, type, unit, checkCanIssueCommandType); + } + + public boolean canUpgrade(UpgradeType type, Unit unit) { + return canUpgrade_native(pointer, type, unit); + } + + public boolean canUpgrade(UpgradeType type) { + return canUpgrade_native(pointer, type); + } + + public boolean canUpgrade(UpgradeType type, Unit unit, boolean checkCanIssueCommandType) { + return canUpgrade_native(pointer, type, unit, checkCanIssueCommandType); + } + + public void vPrintf(String cstr_format, Object ... args) { + vPrintf_native(pointer, cstr_format, args); + } + + public void vSendText(String cstr_format, Object ... args) { + vSendText_native(pointer, cstr_format, args); + } + + public void vSendTextEx(boolean toAllies, String cstr_format, Object ... args) { + vSendTextEx_native(pointer, toAllies, cstr_format, args); + } + + public boolean isInGame() { + return isInGame_native(pointer); + } + + public boolean isMultiplayer() { + return isMultiplayer_native(pointer); + } + + public boolean isBattleNet() { + return isBattleNet_native(pointer); + } + + public boolean isPaused() { + return isPaused_native(pointer); + } + + public boolean isReplay() { + return isReplay_native(pointer); + } + + public void pauseGame() { + pauseGame_native(pointer); + } + + public void resumeGame() { + resumeGame_native(pointer); + } + + public void leaveGame() { + leaveGame_native(pointer); + } + + public void restartGame() { + restartGame_native(pointer); + } + + public void setLocalSpeed(int speed) { + setLocalSpeed_native(pointer, speed); + } + + public boolean issueCommand(Unitset units, UnitCommand command) { + return issueCommand_native(pointer, units, command); + } + + public Unitset getSelectedUnits() { + return getSelectedUnits_native(pointer); + } + + public Player self() { + return self_native(pointer); + } + + public Player enemy() { + return enemy_native(pointer); + } + + public Player neutral() { + return neutral_native(pointer); + } + + public Playerset allies() { + return allies_native(pointer); + } + + public Playerset enemies() { + return enemies_native(pointer); + } + + public Playerset observers() { + return observers_native(pointer); + } + + public void setTextSize() { + setTextSize_native(pointer); + } + + public void setTextSize(bwapi4.Text.Size.Enum size) { + setTextSize_native(pointer, size); + } + + public void vDrawText(bwapi4.CoordinateType.Enum ctype, int x, int y, String cstr_format, Object ... arg) { + vDrawText_native(pointer, ctype, x, y, cstr_format, arg); + } + + public void drawBox(bwapi4.CoordinateType.Enum ctype, int left, int top, int right, int bottom, Color color) { + drawBox_native(pointer, ctype, left, top, right, bottom, color); + } + + public void drawBox(bwapi4.CoordinateType.Enum ctype, int left, int top, int right, int bottom, Color color, boolean isSolid) { + drawBox_native(pointer, ctype, left, top, right, bottom, color, isSolid); + } + + public void drawBoxMap(int left, int top, int right, int bottom, Color color) { + drawBoxMap_native(pointer, left, top, right, bottom, color); + } + + public void drawBoxMap(int left, int top, int right, int bottom, Color color, boolean isSolid) { + drawBoxMap_native(pointer, left, top, right, bottom, color, isSolid); + } + + public void drawBoxMap(Position leftTop, Position rightBottom, Color color) { + drawBoxMap_native(pointer, leftTop, rightBottom, color); + } + + public void drawBoxMap(Position leftTop, Position rightBottom, Color color, boolean isSolid) { + drawBoxMap_native(pointer, leftTop, rightBottom, color, isSolid); + } + + public void drawBoxMouse(int left, int top, int right, int bottom, Color color) { + drawBoxMouse_native(pointer, left, top, right, bottom, color); + } + + public void drawBoxMouse(int left, int top, int right, int bottom, Color color, boolean isSolid) { + drawBoxMouse_native(pointer, left, top, right, bottom, color, isSolid); + } + + public void drawBoxMouse(Position leftTop, Position rightBottom, Color color) { + drawBoxMouse_native(pointer, leftTop, rightBottom, color); + } + + public void drawBoxMouse(Position leftTop, Position rightBottom, Color color, boolean isSolid) { + drawBoxMouse_native(pointer, leftTop, rightBottom, color, isSolid); + } + + public void drawBoxScreen(int left, int top, int right, int bottom, Color color) { + drawBoxScreen_native(pointer, left, top, right, bottom, color); + } + + public void drawBoxScreen(int left, int top, int right, int bottom, Color color, boolean isSolid) { + drawBoxScreen_native(pointer, left, top, right, bottom, color, isSolid); + } + + public void drawBoxScreen(Position leftTop, Position rightBottom, Color color) { + drawBoxScreen_native(pointer, leftTop, rightBottom, color); + } + + public void drawBoxScreen(Position leftTop, Position rightBottom, Color color, boolean isSolid) { + drawBoxScreen_native(pointer, leftTop, rightBottom, color, isSolid); + } + + public void drawTriangle(bwapi4.CoordinateType.Enum ctype, int ax, int ay, int bx, int by, int cx, int cy, Color color) { + drawTriangle_native(pointer, ctype, ax, ay, bx, by, cx, cy, color); + } + + public void drawTriangle(bwapi4.CoordinateType.Enum ctype, int ax, int ay, int bx, int by, int cx, int cy, Color color, boolean isSolid) { + drawTriangle_native(pointer, ctype, ax, ay, bx, by, cx, cy, color, isSolid); + } + + public void drawTriangleMap(int ax, int ay, int bx, int by, int cx, int cy, Color color) { + drawTriangleMap_native(pointer, ax, ay, bx, by, cx, cy, color); + } + + public void drawTriangleMap(int ax, int ay, int bx, int by, int cx, int cy, Color color, boolean isSolid) { + drawTriangleMap_native(pointer, ax, ay, bx, by, cx, cy, color, isSolid); + } + + public void drawTriangleMap(Position a, Position b, Position c, Color color) { + drawTriangleMap_native(pointer, a, b, c, color); + } + + public void drawTriangleMap(Position a, Position b, Position c, Color color, boolean isSolid) { + drawTriangleMap_native(pointer, a, b, c, color, isSolid); + } + + public void drawTriangleMouse(int ax, int ay, int bx, int by, int cx, int cy, Color color) { + drawTriangleMouse_native(pointer, ax, ay, bx, by, cx, cy, color); + } + + public void drawTriangleMouse(int ax, int ay, int bx, int by, int cx, int cy, Color color, boolean isSolid) { + drawTriangleMouse_native(pointer, ax, ay, bx, by, cx, cy, color, isSolid); + } + + public void drawTriangleMouse(Position a, Position b, Position c, Color color) { + drawTriangleMouse_native(pointer, a, b, c, color); + } + + public void drawTriangleMouse(Position a, Position b, Position c, Color color, boolean isSolid) { + drawTriangleMouse_native(pointer, a, b, c, color, isSolid); + } + + public void drawTriangleScreen(int ax, int ay, int bx, int by, int cx, int cy, Color color) { + drawTriangleScreen_native(pointer, ax, ay, bx, by, cx, cy, color); + } + + public void drawTriangleScreen(int ax, int ay, int bx, int by, int cx, int cy, Color color, boolean isSolid) { + drawTriangleScreen_native(pointer, ax, ay, bx, by, cx, cy, color, isSolid); + } + + public void drawTriangleScreen(Position a, Position b, Position c, Color color) { + drawTriangleScreen_native(pointer, a, b, c, color); + } + + public void drawTriangleScreen(Position a, Position b, Position c, Color color, boolean isSolid) { + drawTriangleScreen_native(pointer, a, b, c, color, isSolid); + } + + public void drawCircle(bwapi4.CoordinateType.Enum ctype, int x, int y, int radius, Color color) { + drawCircle_native(pointer, ctype, x, y, radius, color); + } + + public void drawCircle(bwapi4.CoordinateType.Enum ctype, int x, int y, int radius, Color color, boolean isSolid) { + drawCircle_native(pointer, ctype, x, y, radius, color, isSolid); + } + + public void drawCircleMap(int x, int y, int radius, Color color) { + drawCircleMap_native(pointer, x, y, radius, color); + } + + public void drawCircleMap(int x, int y, int radius, Color color, boolean isSolid) { + drawCircleMap_native(pointer, x, y, radius, color, isSolid); + } + + public void drawCircleMap(Position p, int radius, Color color) { + drawCircleMap_native(pointer, p, radius, color); + } + + public void drawCircleMap(Position p, int radius, Color color, boolean isSolid) { + drawCircleMap_native(pointer, p, radius, color, isSolid); + } + + public void drawCircleMouse(int x, int y, int radius, Color color) { + drawCircleMouse_native(pointer, x, y, radius, color); + } + + public void drawCircleMouse(int x, int y, int radius, Color color, boolean isSolid) { + drawCircleMouse_native(pointer, x, y, radius, color, isSolid); + } + + public void drawCircleMouse(Position p, int radius, Color color) { + drawCircleMouse_native(pointer, p, radius, color); + } + + public void drawCircleMouse(Position p, int radius, Color color, boolean isSolid) { + drawCircleMouse_native(pointer, p, radius, color, isSolid); + } + + public void drawCircleScreen(int x, int y, int radius, Color color) { + drawCircleScreen_native(pointer, x, y, radius, color); + } + + public void drawCircleScreen(int x, int y, int radius, Color color, boolean isSolid) { + drawCircleScreen_native(pointer, x, y, radius, color, isSolid); + } + + public void drawCircleScreen(Position p, int radius, Color color) { + drawCircleScreen_native(pointer, p, radius, color); + } + + public void drawCircleScreen(Position p, int radius, Color color, boolean isSolid) { + drawCircleScreen_native(pointer, p, radius, color, isSolid); + } + + public void drawEllipse(bwapi4.CoordinateType.Enum ctype, int x, int y, int xrad, int yrad, Color color) { + drawEllipse_native(pointer, ctype, x, y, xrad, yrad, color); + } + + public void drawEllipse(bwapi4.CoordinateType.Enum ctype, int x, int y, int xrad, int yrad, Color color, boolean isSolid) { + drawEllipse_native(pointer, ctype, x, y, xrad, yrad, color, isSolid); + } + + public void drawEllipseMap(int x, int y, int xrad, int yrad, Color color) { + drawEllipseMap_native(pointer, x, y, xrad, yrad, color); + } + + public void drawEllipseMap(int x, int y, int xrad, int yrad, Color color, boolean isSolid) { + drawEllipseMap_native(pointer, x, y, xrad, yrad, color, isSolid); + } + + public void drawEllipseMap(Position p, int xrad, int yrad, Color color) { + drawEllipseMap_native(pointer, p, xrad, yrad, color); + } + + public void drawEllipseMap(Position p, int xrad, int yrad, Color color, boolean isSolid) { + drawEllipseMap_native(pointer, p, xrad, yrad, color, isSolid); + } + + public void drawEllipseMouse(int x, int y, int xrad, int yrad, Color color) { + drawEllipseMouse_native(pointer, x, y, xrad, yrad, color); + } + + public void drawEllipseMouse(int x, int y, int xrad, int yrad, Color color, boolean isSolid) { + drawEllipseMouse_native(pointer, x, y, xrad, yrad, color, isSolid); + } + + public void drawEllipseMouse(Position p, int xrad, int yrad, Color color) { + drawEllipseMouse_native(pointer, p, xrad, yrad, color); + } + + public void drawEllipseMouse(Position p, int xrad, int yrad, Color color, boolean isSolid) { + drawEllipseMouse_native(pointer, p, xrad, yrad, color, isSolid); + } + + public void drawEllipseScreen(int x, int y, int xrad, int yrad, Color color) { + drawEllipseScreen_native(pointer, x, y, xrad, yrad, color); + } + + public void drawEllipseScreen(int x, int y, int xrad, int yrad, Color color, boolean isSolid) { + drawEllipseScreen_native(pointer, x, y, xrad, yrad, color, isSolid); + } + + public void drawEllipseScreen(Position p, int xrad, int yrad, Color color) { + drawEllipseScreen_native(pointer, p, xrad, yrad, color); + } + + public void drawEllipseScreen(Position p, int xrad, int yrad, Color color, boolean isSolid) { + drawEllipseScreen_native(pointer, p, xrad, yrad, color, isSolid); + } + + public void drawDot(bwapi4.CoordinateType.Enum ctype, int x, int y, Color color) { + drawDot_native(pointer, ctype, x, y, color); + } + + public void drawDotMap(int x, int y, Color color) { + drawDotMap_native(pointer, x, y, color); + } + + public void drawDotMap(Position p, Color color) { + drawDotMap_native(pointer, p, color); + } + + public void drawDotMouse(int x, int y, Color color) { + drawDotMouse_native(pointer, x, y, color); + } + + public void drawDotMouse(Position p, Color color) { + drawDotMouse_native(pointer, p, color); + } + + public void drawDotScreen(int x, int y, Color color) { + drawDotScreen_native(pointer, x, y, color); + } + + public void drawDotScreen(Position p, Color color) { + drawDotScreen_native(pointer, p, color); + } + + public void drawLine(bwapi4.CoordinateType.Enum ctype, int x1, int y1, int x2, int y2, Color color) { + drawLine_native(pointer, ctype, x1, y1, x2, y2, color); + } + + public void drawLineMap(int x1, int y1, int x2, int y2, Color color) { + drawLineMap_native(pointer, x1, y1, x2, y2, color); + } + + public void drawLineMap(Position a, Position b, Color color) { + drawLineMap_native(pointer, a, b, color); + } + + public void drawLineMouse(int x1, int y1, int x2, int y2, Color color) { + drawLineMouse_native(pointer, x1, y1, x2, y2, color); + } + + public void drawLineMouse(Position a, Position b, Color color) { + drawLineMouse_native(pointer, a, b, color); + } + + public void drawLineScreen(int x1, int y1, int x2, int y2, Color color) { + drawLineScreen_native(pointer, x1, y1, x2, y2, color); + } + + public void drawLineScreen(Position a, Position b, Color color) { + drawLineScreen_native(pointer, a, b, color); + } + + public int getLatencyFrames() { + return getLatencyFrames_native(pointer); + } + + public int getLatencyTime() { + return getLatencyTime_native(pointer); + } + + public int getRemainingLatencyFrames() { + return getRemainingLatencyFrames_native(pointer); + } + + public int getRemainingLatencyTime() { + return getRemainingLatencyTime_native(pointer); + } + + public int getRevision() { + return getRevision_native(pointer); + } + + public boolean isDebug() { + return isDebug_native(pointer); + } + + public boolean isLatComEnabled() { + return isLatComEnabled_native(pointer); + } + + public void setLatCom(boolean isEnabled) { + setLatCom_native(pointer, isEnabled); + } + + public boolean isGUIEnabled() { + return isGUIEnabled_native(pointer); + } + + public void setGUI(boolean enabled) { + setGUI_native(pointer, enabled); + } + + public int getInstanceNumber() { + return getInstanceNumber_native(pointer); + } + + public int getAPM() { + return getAPM_native(pointer); + } + + public int getAPM(boolean includeSelects) { + return getAPM_native(pointer, includeSelects); + } + + public boolean setMap(String cstr_mapFileName) { + return setMap_native(pointer, cstr_mapFileName); + } + + public void setFrameSkip(int frameSkip) { + setFrameSkip_native(pointer, frameSkip); + } + + public boolean hasPath(Position source, Position destination) { + return hasPath_native(pointer, source, destination); + } + + public boolean setAlliance(Player player, boolean allied) { + return setAlliance_native(pointer, player, allied); + } + + public boolean setAlliance(Player player) { + return setAlliance_native(pointer, player); + } + + public boolean setAlliance(Player player, boolean allied, boolean alliedVictory) { + return setAlliance_native(pointer, player, allied, alliedVictory); + } + + public boolean setVision(Player player) { + return setVision_native(pointer, player); + } + + public boolean setVision(Player player, boolean enabled) { + return setVision_native(pointer, player, enabled); + } + + public void setCommandOptimizationLevel(int level) { + setCommandOptimizationLevel_native(pointer, level); + } + + public int countdownTimer() { + return countdownTimer_native(pointer); + } + + public Region getRegionAt(int x, int y) { + return getRegionAt_native(pointer, x, y); + } + + public Region getRegionAt(Position position) { + return getRegionAt_native(pointer, position); + } + + public int getLastEventTime() { + return getLastEventTime_native(pointer); + } + + public boolean setRevealAll() { + return setRevealAll_native(pointer); + } + + public boolean setRevealAll(boolean reveal) { + return setRevealAll_native(pointer, reveal); + } + + public TilePosition getBuildLocation(UnitType type, TilePosition desiredPosition, int maxRange) { + return getBuildLocation_native(pointer, type, desiredPosition, maxRange); + } + + public TilePosition getBuildLocation(UnitType type, TilePosition desiredPosition) { + return getBuildLocation_native(pointer, type, desiredPosition); + } + + public TilePosition getBuildLocation(UnitType type, TilePosition desiredPosition, int maxRange, boolean creep) { + return getBuildLocation_native(pointer, type, desiredPosition, maxRange, creep); + } + + public int getDamageFrom(UnitType fromType, UnitType toType, Player fromPlayer) { + return getDamageFrom_native(pointer, fromType, toType, fromPlayer); + } + + public int getDamageFrom(UnitType fromType, UnitType toType) { + return getDamageFrom_native(pointer, fromType, toType); + } + + public int getDamageFrom(UnitType fromType, UnitType toType, Player fromPlayer, Player toPlayer) { + return getDamageFrom_native(pointer, fromType, toType, fromPlayer, toPlayer); + } + + public int getDamageTo(UnitType toType, UnitType fromType, Player toPlayer) { + return getDamageTo_native(pointer, toType, fromType, toPlayer); + } + + public int getDamageTo(UnitType toType, UnitType fromType) { + return getDamageTo_native(pointer, toType, fromType); + } + + public int getDamageTo(UnitType toType, UnitType fromType, Player toPlayer, Player fromPlayer) { + return getDamageTo_native(pointer, toType, fromType, toPlayer, fromPlayer); + } + + + private static Map instances = new HashMap(); + + private Game(long pointer) { + this.pointer = pointer; + } + + private static Game get(long pointer) { + Game instance = instances.get(pointer); + if (instance == null ) { + instance = new Game(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + private native Forceset getForces_native(long pointer); + + private native Playerset getPlayers_native(long pointer); + + private native Unitset getAllUnits_native(long pointer); + + private native Unitset getMinerals_native(long pointer); + + private native Unitset getGeysers_native(long pointer); + + private native Unitset getNeutralUnits_native(long pointer); + + private native Unitset getStaticMinerals_native(long pointer); + + private native Unitset getStaticGeysers_native(long pointer); + + private native Unitset getStaticNeutralUnits_native(long pointer); + + private native Bulletset getBullets_native(long pointer); + + private native Force getForce_native(long pointer, int forceID); + + private native Player getPlayer_native(long pointer, int playerID); + + private native Unit getUnit_native(long pointer, int unitID); + + private native Unit indexToUnit_native(long pointer, int unitIndex); + + private native Region getRegion_native(long pointer, int regionID); + + private native GameType getGameType_native(long pointer); + + private native int getLatency_native(long pointer); + + private native int getFrameCount_native(long pointer); + + private native int getReplayFrameCount_native(long pointer); + + private native int getFPS_native(long pointer); + + private native double getAverageFPS_native(long pointer); + + private native Position getMousePosition_native(long pointer); + + private native boolean getMouseState_native(long pointer, MouseButton button); + + private native boolean getKeyState_native(long pointer, Key key); + + private native Position getScreenPosition_native(long pointer); + + private native void setScreenPosition_native(long pointer, int x, int y); + + private native void setScreenPosition_native(long pointer, Position p); + + private native void pingMinimap_native(long pointer, int x, int y); + + private native void pingMinimap_native(long pointer, Position p); + + private native boolean isFlagEnabled_native(long pointer, int flag); + + private native void enableFlag_native(long pointer, int flag); + + private native Unitset getUnitsOnTile_native(long pointer, int tileX, int tileY, UnitFilter pred); + + private native Unitset getUnitsOnTile_native(long pointer, TilePosition tile, UnitFilter pred); + + private native Unitset getUnitsInRectangle_native(long pointer, int left, int top, int right, int bottom, UnitFilter pred); + + private native Unitset getUnitsInRectangle_native(long pointer, Position topLeft, Position bottomRight, UnitFilter pred); + + private native Unitset getUnitsInRadius_native(long pointer, int x, int y, int radius, UnitFilter pred); + + private native Unitset getUnitsInRadius_native(long pointer, Position center, int radius, UnitFilter pred); + + private native Unit getClosestUnit_native(long pointer, Position center, UnitFilter pred); + + private native Unit getClosestUnit_native(long pointer, Position center, UnitFilter pred, int radius); + + private native Unit getClosestUnitInRectangle_native(long pointer, Position center, UnitFilter pred, int left, int top, int right); + + private native Unit getClosestUnitInRectangle_native(long pointer, Position center, UnitFilter pred, int left, int top); + + private native Unit getClosestUnitInRectangle_native(long pointer, Position center, UnitFilter pred, int left); + + private native Unit getClosestUnitInRectangle_native(long pointer, Position center, UnitFilter pred); + + private native Unit getClosestUnitInRectangle_native(long pointer, Position center, UnitFilter pred, int left, int top, int right, int bottom); + + private native Unit getBestUnit_native(long pointer, BestUnitFilter best, UnitFilter pred, Position center); + + private native Unit getBestUnit_native(long pointer, BestUnitFilter best, UnitFilter pred); + + private native Unit getBestUnit_native(long pointer, BestUnitFilter best, UnitFilter pred, Position center, int radius); + + private native Error getLastError_native(long pointer); + + private native boolean setLastError_native(long pointer); + + private native boolean setLastError_native(long pointer, Error e); + + private native int mapWidth_native(long pointer); + + private native int mapHeight_native(long pointer); + + private native String mapFileName_native(long pointer); + + private native String mapPathName_native(long pointer); + + private native String mapName_native(long pointer); + + private native String mapHash_native(long pointer); + + private native boolean isWalkable_native(long pointer, int walkX, int walkY); + + private native boolean isWalkable_native(long pointer, WalkPosition position); + + private native boolean isBuildable_native(long pointer, int tileX, int tileY); + + private native boolean isBuildable_native(long pointer, int tileX, int tileY, boolean includeBuildings); + + private native boolean isBuildable_native(long pointer, TilePosition position); + + private native boolean isBuildable_native(long pointer, TilePosition position, boolean includeBuildings); + + private native boolean isVisible_native(long pointer, int tileX, int tileY); + + private native boolean isVisible_native(long pointer, TilePosition position); + + private native boolean isExplored_native(long pointer, int tileX, int tileY); + + private native boolean isExplored_native(long pointer, TilePosition position); + + private native boolean hasCreep_native(long pointer, int tileX, int tileY); + + private native boolean hasCreep_native(long pointer, TilePosition position); + + private native boolean hasPowerPrecise_native(long pointer, int x, int y); + + private native boolean hasPowerPrecise_native(long pointer, int x, int y, UnitType unitType); + + private native boolean hasPowerPrecise_native(long pointer, Position position); + + private native boolean hasPowerPrecise_native(long pointer, Position position, UnitType unitType); + + private native boolean hasPower_native(long pointer, int tileX, int tileY); + + private native boolean hasPower_native(long pointer, int tileX, int tileY, UnitType unitType); + + private native boolean hasPower_native(long pointer, TilePosition position); + + private native boolean hasPower_native(long pointer, TilePosition position, UnitType unitType); + + private native boolean hasPower_native(long pointer, int tileX, int tileY, int tileWidth, int tileHeight); + + private native boolean hasPower_native(long pointer, int tileX, int tileY, int tileWidth, int tileHeight, UnitType unitType); + + private native boolean hasPower_native(long pointer, TilePosition position, int tileWidth, int tileHeight); + + private native boolean hasPower_native(long pointer, TilePosition position, int tileWidth, int tileHeight, UnitType unitType); + + private native boolean canBuildHere_native(long pointer, TilePosition position, UnitType type, Unit builder); + + private native boolean canBuildHere_native(long pointer, TilePosition position, UnitType type); + + private native boolean canBuildHere_native(long pointer, TilePosition position, UnitType type, Unit builder, boolean checkExplored); + + private native boolean canMake_native(long pointer, UnitType type); + + private native boolean canMake_native(long pointer, UnitType type, Unit builder); + + private native boolean canResearch_native(long pointer, TechType type, Unit unit); + + private native boolean canResearch_native(long pointer, TechType type); + + private native boolean canResearch_native(long pointer, TechType type, Unit unit, boolean checkCanIssueCommandType); + + private native boolean canUpgrade_native(long pointer, UpgradeType type, Unit unit); + + private native boolean canUpgrade_native(long pointer, UpgradeType type); + + private native boolean canUpgrade_native(long pointer, UpgradeType type, Unit unit, boolean checkCanIssueCommandType); + + private native void vPrintf_native(long pointer, String cstr_format, Object ... args); + + private native void vSendText_native(long pointer, String cstr_format, Object ... args); + + private native void vSendTextEx_native(long pointer, boolean toAllies, String cstr_format, Object ... args); + + private native boolean isInGame_native(long pointer); + + private native boolean isMultiplayer_native(long pointer); + + private native boolean isBattleNet_native(long pointer); + + private native boolean isPaused_native(long pointer); + + private native boolean isReplay_native(long pointer); + + private native void pauseGame_native(long pointer); + + private native void resumeGame_native(long pointer); + + private native void leaveGame_native(long pointer); + + private native void restartGame_native(long pointer); + + private native void setLocalSpeed_native(long pointer, int speed); + + private native boolean issueCommand_native(long pointer, Unitset units, UnitCommand command); + + private native Unitset getSelectedUnits_native(long pointer); + + private native Player self_native(long pointer); + + private native Player enemy_native(long pointer); + + private native Player neutral_native(long pointer); + + private native Playerset allies_native(long pointer); + + private native Playerset enemies_native(long pointer); + + private native Playerset observers_native(long pointer); + + private native void setTextSize_native(long pointer); + + private native void setTextSize_native(long pointer, bwapi4.Text.Size.Enum size); + + private native void vDrawText_native(long pointer, bwapi4.CoordinateType.Enum ctype, int x, int y, String cstr_format, Object ... arg); + + private native void drawBox_native(long pointer, bwapi4.CoordinateType.Enum ctype, int left, int top, int right, int bottom, Color color); + + private native void drawBox_native(long pointer, bwapi4.CoordinateType.Enum ctype, int left, int top, int right, int bottom, Color color, boolean isSolid); + + private native void drawBoxMap_native(long pointer, int left, int top, int right, int bottom, Color color); + + private native void drawBoxMap_native(long pointer, int left, int top, int right, int bottom, Color color, boolean isSolid); + + private native void drawBoxMap_native(long pointer, Position leftTop, Position rightBottom, Color color); + + private native void drawBoxMap_native(long pointer, Position leftTop, Position rightBottom, Color color, boolean isSolid); + + private native void drawBoxMouse_native(long pointer, int left, int top, int right, int bottom, Color color); + + private native void drawBoxMouse_native(long pointer, int left, int top, int right, int bottom, Color color, boolean isSolid); + + private native void drawBoxMouse_native(long pointer, Position leftTop, Position rightBottom, Color color); + + private native void drawBoxMouse_native(long pointer, Position leftTop, Position rightBottom, Color color, boolean isSolid); + + private native void drawBoxScreen_native(long pointer, int left, int top, int right, int bottom, Color color); + + private native void drawBoxScreen_native(long pointer, int left, int top, int right, int bottom, Color color, boolean isSolid); + + private native void drawBoxScreen_native(long pointer, Position leftTop, Position rightBottom, Color color); + + private native void drawBoxScreen_native(long pointer, Position leftTop, Position rightBottom, Color color, boolean isSolid); + + private native void drawTriangle_native(long pointer, bwapi4.CoordinateType.Enum ctype, int ax, int ay, int bx, int by, int cx, int cy, Color color); + + private native void drawTriangle_native(long pointer, bwapi4.CoordinateType.Enum ctype, int ax, int ay, int bx, int by, int cx, int cy, Color color, boolean isSolid); + + private native void drawTriangleMap_native(long pointer, int ax, int ay, int bx, int by, int cx, int cy, Color color); + + private native void drawTriangleMap_native(long pointer, int ax, int ay, int bx, int by, int cx, int cy, Color color, boolean isSolid); + + private native void drawTriangleMap_native(long pointer, Position a, Position b, Position c, Color color); + + private native void drawTriangleMap_native(long pointer, Position a, Position b, Position c, Color color, boolean isSolid); + + private native void drawTriangleMouse_native(long pointer, int ax, int ay, int bx, int by, int cx, int cy, Color color); + + private native void drawTriangleMouse_native(long pointer, int ax, int ay, int bx, int by, int cx, int cy, Color color, boolean isSolid); + + private native void drawTriangleMouse_native(long pointer, Position a, Position b, Position c, Color color); + + private native void drawTriangleMouse_native(long pointer, Position a, Position b, Position c, Color color, boolean isSolid); + + private native void drawTriangleScreen_native(long pointer, int ax, int ay, int bx, int by, int cx, int cy, Color color); + + private native void drawTriangleScreen_native(long pointer, int ax, int ay, int bx, int by, int cx, int cy, Color color, boolean isSolid); + + private native void drawTriangleScreen_native(long pointer, Position a, Position b, Position c, Color color); + + private native void drawTriangleScreen_native(long pointer, Position a, Position b, Position c, Color color, boolean isSolid); + + private native void drawCircle_native(long pointer, bwapi4.CoordinateType.Enum ctype, int x, int y, int radius, Color color); + + private native void drawCircle_native(long pointer, bwapi4.CoordinateType.Enum ctype, int x, int y, int radius, Color color, boolean isSolid); + + private native void drawCircleMap_native(long pointer, int x, int y, int radius, Color color); + + private native void drawCircleMap_native(long pointer, int x, int y, int radius, Color color, boolean isSolid); + + private native void drawCircleMap_native(long pointer, Position p, int radius, Color color); + + private native void drawCircleMap_native(long pointer, Position p, int radius, Color color, boolean isSolid); + + private native void drawCircleMouse_native(long pointer, int x, int y, int radius, Color color); + + private native void drawCircleMouse_native(long pointer, int x, int y, int radius, Color color, boolean isSolid); + + private native void drawCircleMouse_native(long pointer, Position p, int radius, Color color); + + private native void drawCircleMouse_native(long pointer, Position p, int radius, Color color, boolean isSolid); + + private native void drawCircleScreen_native(long pointer, int x, int y, int radius, Color color); + + private native void drawCircleScreen_native(long pointer, int x, int y, int radius, Color color, boolean isSolid); + + private native void drawCircleScreen_native(long pointer, Position p, int radius, Color color); + + private native void drawCircleScreen_native(long pointer, Position p, int radius, Color color, boolean isSolid); + + private native void drawEllipse_native(long pointer, bwapi4.CoordinateType.Enum ctype, int x, int y, int xrad, int yrad, Color color); + + private native void drawEllipse_native(long pointer, bwapi4.CoordinateType.Enum ctype, int x, int y, int xrad, int yrad, Color color, boolean isSolid); + + private native void drawEllipseMap_native(long pointer, int x, int y, int xrad, int yrad, Color color); + + private native void drawEllipseMap_native(long pointer, int x, int y, int xrad, int yrad, Color color, boolean isSolid); + + private native void drawEllipseMap_native(long pointer, Position p, int xrad, int yrad, Color color); + + private native void drawEllipseMap_native(long pointer, Position p, int xrad, int yrad, Color color, boolean isSolid); + + private native void drawEllipseMouse_native(long pointer, int x, int y, int xrad, int yrad, Color color); + + private native void drawEllipseMouse_native(long pointer, int x, int y, int xrad, int yrad, Color color, boolean isSolid); + + private native void drawEllipseMouse_native(long pointer, Position p, int xrad, int yrad, Color color); + + private native void drawEllipseMouse_native(long pointer, Position p, int xrad, int yrad, Color color, boolean isSolid); + + private native void drawEllipseScreen_native(long pointer, int x, int y, int xrad, int yrad, Color color); + + private native void drawEllipseScreen_native(long pointer, int x, int y, int xrad, int yrad, Color color, boolean isSolid); + + private native void drawEllipseScreen_native(long pointer, Position p, int xrad, int yrad, Color color); + + private native void drawEllipseScreen_native(long pointer, Position p, int xrad, int yrad, Color color, boolean isSolid); + + private native void drawDot_native(long pointer, bwapi4.CoordinateType.Enum ctype, int x, int y, Color color); + + private native void drawDotMap_native(long pointer, int x, int y, Color color); + + private native void drawDotMap_native(long pointer, Position p, Color color); + + private native void drawDotMouse_native(long pointer, int x, int y, Color color); + + private native void drawDotMouse_native(long pointer, Position p, Color color); + + private native void drawDotScreen_native(long pointer, int x, int y, Color color); + + private native void drawDotScreen_native(long pointer, Position p, Color color); + + private native void drawLine_native(long pointer, bwapi4.CoordinateType.Enum ctype, int x1, int y1, int x2, int y2, Color color); + + private native void drawLineMap_native(long pointer, int x1, int y1, int x2, int y2, Color color); + + private native void drawLineMap_native(long pointer, Position a, Position b, Color color); + + private native void drawLineMouse_native(long pointer, int x1, int y1, int x2, int y2, Color color); + + private native void drawLineMouse_native(long pointer, Position a, Position b, Color color); + + private native void drawLineScreen_native(long pointer, int x1, int y1, int x2, int y2, Color color); + + private native void drawLineScreen_native(long pointer, Position a, Position b, Color color); + + private native int getLatencyFrames_native(long pointer); + + private native int getLatencyTime_native(long pointer); + + private native int getRemainingLatencyFrames_native(long pointer); + + private native int getRemainingLatencyTime_native(long pointer); + + private native int getRevision_native(long pointer); + + private native boolean isDebug_native(long pointer); + + private native boolean isLatComEnabled_native(long pointer); + + private native void setLatCom_native(long pointer, boolean isEnabled); + + private native boolean isGUIEnabled_native(long pointer); + + private native void setGUI_native(long pointer, boolean enabled); + + private native int getInstanceNumber_native(long pointer); + + private native int getAPM_native(long pointer); + + private native int getAPM_native(long pointer, boolean includeSelects); + + private native boolean setMap_native(long pointer, String cstr_mapFileName); + + private native void setFrameSkip_native(long pointer, int frameSkip); + + private native boolean hasPath_native(long pointer, Position source, Position destination); + + private native boolean setAlliance_native(long pointer, Player player, boolean allied); + + private native boolean setAlliance_native(long pointer, Player player); + + private native boolean setAlliance_native(long pointer, Player player, boolean allied, boolean alliedVictory); + + private native boolean setVision_native(long pointer, Player player); + + private native boolean setVision_native(long pointer, Player player, boolean enabled); + + private native void setCommandOptimizationLevel_native(long pointer, int level); + + private native int countdownTimer_native(long pointer); + + private native Region getRegionAt_native(long pointer, int x, int y); + + private native Region getRegionAt_native(long pointer, Position position); + + private native int getLastEventTime_native(long pointer); + + private native boolean setRevealAll_native(long pointer); + + private native boolean setRevealAll_native(long pointer, boolean reveal); + + private native TilePosition getBuildLocation_native(long pointer, UnitType type, TilePosition desiredPosition, int maxRange); + + private native TilePosition getBuildLocation_native(long pointer, UnitType type, TilePosition desiredPosition); + + private native TilePosition getBuildLocation_native(long pointer, UnitType type, TilePosition desiredPosition, int maxRange, boolean creep); + + private native int getDamageFrom_native(long pointer, UnitType fromType, UnitType toType, Player fromPlayer); + + private native int getDamageFrom_native(long pointer, UnitType fromType, UnitType toType); + + private native int getDamageFrom_native(long pointer, UnitType fromType, UnitType toType, Player fromPlayer, Player toPlayer); + + private native int getDamageTo_native(long pointer, UnitType toType, UnitType fromType, Player toPlayer); + + private native int getDamageTo_native(long pointer, UnitType toType, UnitType fromType); + + private native int getDamageTo_native(long pointer, UnitType toType, UnitType fromType, Player toPlayer, Player fromPlayer); + + +} diff --git a/bwapi4/GameType.java b/bwapi4/GameType.java new file mode 100644 index 0000000..257a416 --- /dev/null +++ b/bwapi4/GameType.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class GameType { + + + private static Map instances = new HashMap(); + + private GameType(long pointer) { + this.pointer = pointer; + } + + private static GameType get(long pointer) { + GameType instance = instances.get(pointer); + if (instance == null ) { + instance = new GameType(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/bwapi4/GameWrapper.java b/bwapi4/GameWrapper.java new file mode 100644 index 0000000..4e35178 --- /dev/null +++ b/bwapi4/GameWrapper.java @@ -0,0 +1,37 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class GameWrapper { + + public void flush() { + flush_native(pointer); + } + + + private static Map instances = new HashMap(); + + private GameWrapper(long pointer) { + this.pointer = pointer; + } + + private static GameWrapper get(long pointer) { + GameWrapper instance = instances.get(pointer); + if (instance == null ) { + instance = new GameWrapper(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + private native void flush_native(long pointer); + + +} diff --git a/bwapi4/InterfaceEvent.java b/bwapi4/InterfaceEvent.java new file mode 100644 index 0000000..47bfbbd --- /dev/null +++ b/bwapi4/InterfaceEvent.java @@ -0,0 +1,43 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class InterfaceEvent { + + public boolean isFinished() { + return isFinished_native(pointer); + } + + public void removeEvent() { + removeEvent_native(pointer); + } + + + private static Map instances = new HashMap(); + + private InterfaceEvent(long pointer) { + this.pointer = pointer; + } + + private static InterfaceEvent get(long pointer) { + InterfaceEvent instance = instances.get(pointer); + if (instance == null ) { + instance = new InterfaceEvent(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + private native boolean isFinished_native(long pointer); + + private native void removeEvent_native(long pointer); + + +} diff --git a/bwapi4/Key.java b/bwapi4/Key.java new file mode 100644 index 0000000..da6c5d3 --- /dev/null +++ b/bwapi4/Key.java @@ -0,0 +1,251 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public enum Key { + + K_LBUTTON(1), + K_RBUTTON(2), + K_CANCEL(3), + K_MBUTTON(4), + K_XBUTTON1(5), + K_XBUTTON2(6), + __UNDEFINED_7(7), + K_BACK(8), + K_TAB(9), + __RESERVED_A(10), + __RESERVED_B(11), + K_CLEAR(12), + K_RETURN(13), + __UNDEFINED_E(14), + __UNDEFINED_F(15), + K_SHIFT(16), + K_CONTROL(17), + K_MENU(18), + K_PAUSE(19), + K_CAPITAL(20), + K_KANA(21), + K_UNDEFINED_16(22), + K_JUNJA(23), + K_FINAL(24), + K_KANJI(25), + __UNDEFINED_1A(26), + K_ESCAPE(27), + K_CONVERT(28), + K_NONCONVERT(29), + K_ACCEPT(30), + K_MODECHANGE(31), + K_SPACE(32), + K_PRIOR(33), + K_NEXT(34), + K_END(35), + K_HOME(36), + K_LEFT(37), + K_UP(38), + K_RIGHT(39), + K_DOWN(40), + K_SELECT(41), + K_PRINT(42), + K_EXECUTE(43), + K_SNAPSHOT(44), + K_INSERT(45), + K_DELETE(46), + K_HELP(47), + K_0(48), + K_1(49), + K_2(50), + K_3(51), + K_4(52), + K_5(53), + K_6(54), + K_7(55), + K_8(56), + K_9(57), + __UNDEFINED_3A(58), + __UNDEFINED_3B(59), + __UNDEFINED_3C(60), + __UNDEFINED_3D(61), + __UNDEFINED_3E(62), + __UNDEFINED_3F(63), + __UNDEFINED_40(64), + K_A(65), + K_B(66), + K_C(67), + K_D(68), + K_E(69), + K_F(70), + K_G(71), + K_H(72), + K_I(73), + K_J(74), + K_K(75), + K_L(76), + K_M(77), + K_N(78), + K_O(79), + K_P(80), + K_Q(81), + K_R(82), + K_S(83), + K_T(84), + K_U(85), + K_V(86), + K_W(87), + K_X(88), + K_Y(89), + K_Z(90), + K_LWIN(91), + K_RWIN(92), + K_APPS(93), + __RESERVED_5E(94), + K_SLEEP(95), + K_NUMPAD0(96), + K_NUMPAD1(97), + K_NUMPAD2(98), + K_NUMPAD3(99), + K_NUMPAD4(100), + K_NUMPAD5(101), + K_NUMPAD6(102), + K_NUMPAD7(103), + K_NUMPAD8(104), + K_NUMPAD9(105), + K_MULTIPLY(106), + K_ADD(107), + K_SEPARATOR(108), + K_SUBTRACT(109), + K_DECIMAL(110), + K_DIVIDE(111), + K_F1(112), + K_F2(113), + K_F3(114), + K_F4(115), + K_F5(116), + K_F6(117), + K_F7(118), + K_F8(119), + K_F9(120), + K_F10(121), + K_F11(122), + K_F12(123), + K_F13(124), + K_F14(125), + K_F15(126), + K_F16(127), + K_F17(128), + K_F18(129), + K_F19(130), + K_F20(131), + K_F21(132), + K_F22(133), + K_F23(134), + K_F24(135), + __UNASSIGNED_88(136), + __UNASSIGNED_89(137), + __UNASSIGNED_8A(138), + __UNASSIGNED_8B(139), + __UNASSIGNED_8C(140), + __UNASSIGNED_8D(141), + __UNASSIGNED_8E(142), + __UNASSIGNED_8F(143), + K_NUMLOCK(144), + K_SCROLL(145), + K_OEM_NEC_EQUAL(146), + K_OEM_FJ_JISHO(147), + K_OEM_FJ_MASSHOU(148), + K_OEM_FJ_TOUROKU(149), + K_OEM_FJ_LOYA(150), + __UNASSIGNED_97(151), + __UNASSIGNED_98(152), + __UNASSIGNED_99(153), + __UNASSIGNED_9A(154), + __UNASSIGNED_9B(155), + __UNASSIGNED_9C(156), + __UNASSIGNED_9D(157), + __UNASSIGNED_9E(158), + __UNASSIGNED_9F(159), + K_LSHIFT(160), + K_RSHIFT(161), + K_LCONTROL(162), + K_RCONTROL(163), + K_LMENU(164), + K_RMENU(165), + K_BROWSER_BACK(166), + K_BROWSER_FORWARD(167), + K_BROWSER_REFRESH(168), + K_BROWSER_STOP(169), + K_BROWSER_SEARCH(170), + K_BROWSER_FAVORITES(171), + K_BROWSER_HOME(172), + K_VOLUME_MUTE(173), + K_VOLUME_DOWN(174), + K_VOLUME_UP(175), + K_MEDIA_NEXT_TRACK(176), + K_MEDIA_PREV_TRACK(177), + K_MEDIA_STOP(178), + K_MEDIA_PLAY_PAUSE(179), + K_LAUNCH_MAIL(180), + K_LAUNCH_MEDIA_SELECT(181), + K_LAUNCH_APP1(182), + K_LAUNCH_APP2(183), + __RESERVED_B8(184), + __RESERVED_B9(185), + K_OEM_1(186), + K_OEM_PLUS(187), + K_OEM_COMMA(188), + K_OEM_MINUS(189), + K_OEM_PERIOD(190), + K_OEM_2(191), + K_OEM_3(192), + K_OEM_4(219), + K_OEM_5(220), + K_OEM_6(221), + K_OEM_7(222), + K_OEM_8(223), + __RESERVED_E0(224), + K_OEM_AX(225), + K_OEM_102(226), + K_ICO_HELP(227), + K_ICO_00(228), + K_PROCESSKEY(229), + K_ICO_CLEAR(230), + K_PACKET(231), + __UNASSIGNED_E8(232), + K_OEM_RESET(233), + K_OEM_JUMP(234), + K_OEM_PA1(235), + K_OEM_PA2(236), + K_OEM_PA3(237), + K_OEM_WSCTRL(238), + K_OEM_CUSEL(239), + K_OEM_ATTN(240), + K_OEM_FINISH(241), + K_OEM_COPY(242), + K_OEM_AUTO(243), + K_OEM_ENLW(244), + K_OEM_BACKTAB(245), + K_ATTN(246), + K_CRSEL(247), + K_EXSEL(248), + K_EREOF(249), + K_PLAY(250), + K_ZOOM(251), + K_NONAME(252), + K_PA1(253), + K_OEM_CLEAR(254); + + private int value; + + public int getValue(){ + return value; + } + + Key(int value){ + this.value = value; + } + +} diff --git a/bwapi4/Latency/Enum.java b/bwapi4/Latency/Enum.java new file mode 100644 index 0000000..6bb6bc2 --- /dev/null +++ b/bwapi4/Latency/Enum.java @@ -0,0 +1,29 @@ +package bwapi4.Latency; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public enum Enum { + + SinglePlayer(2), + LanLow(5), + LanMedium(7), + LanHigh(9), + BattlenetLow(14), + BattlenetMedium(19); + + private int value; + + public int getValue(){ + return value; + } + + Enum(int value){ + this.value = value; + } + +} diff --git a/bwapi4/MouseButton.java b/bwapi4/MouseButton.java new file mode 100644 index 0000000..a93843a --- /dev/null +++ b/bwapi4/MouseButton.java @@ -0,0 +1,27 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public enum MouseButton { + + M_LEFT(0), + M_RIGHT(1), + M_MIDDLE(2), + M_MAX(3); + + private int value; + + public int getValue(){ + return value; + } + + MouseButton(int value){ + this.value = value; + } + +} diff --git a/bwapi4/Order.java b/bwapi4/Order.java new file mode 100644 index 0000000..9c3c3e3 --- /dev/null +++ b/bwapi4/Order.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class Order { + + + private static Map instances = new HashMap(); + + private Order(long pointer) { + this.pointer = pointer; + } + + private static Order get(long pointer) { + Order instance = instances.get(pointer); + if (instance == null ) { + instance = new Order(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/bwapi4/Player.java b/bwapi4/Player.java new file mode 100644 index 0000000..24c0ca3 --- /dev/null +++ b/bwapi4/Player.java @@ -0,0 +1,391 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class Player { + + public int getID() { + return getID_native(pointer); + } + + public String getName() { + return getName_native(pointer); + } + + public Race getRace() { + return getRace_native(pointer); + } + + public PlayerType getType() { + return getType_native(pointer); + } + + public Force getForce() { + return getForce_native(pointer); + } + + public boolean isAlly(Player player) { + return isAlly_native(pointer, player); + } + + public boolean isEnemy(Player player) { + return isEnemy_native(pointer, player); + } + + public boolean isNeutral() { + return isNeutral_native(pointer); + } + + public TilePosition getStartLocation() { + return getStartLocation_native(pointer); + } + + public boolean isVictorious() { + return isVictorious_native(pointer); + } + + public boolean isDefeated() { + return isDefeated_native(pointer); + } + + public boolean leftGame() { + return leftGame_native(pointer); + } + + public int minerals() { + return minerals_native(pointer); + } + + public int gas() { + return gas_native(pointer); + } + + public int gatheredMinerals() { + return gatheredMinerals_native(pointer); + } + + public int gatheredGas() { + return gatheredGas_native(pointer); + } + + public int repairedMinerals() { + return repairedMinerals_native(pointer); + } + + public int repairedGas() { + return repairedGas_native(pointer); + } + + public int refundedMinerals() { + return refundedMinerals_native(pointer); + } + + public int refundedGas() { + return refundedGas_native(pointer); + } + + public int spentMinerals() { + return spentMinerals_native(pointer); + } + + public int spentGas() { + return spentGas_native(pointer); + } + + public int supplyTotal() { + return supplyTotal_native(pointer); + } + + public int supplyTotal(Race race) { + return supplyTotal_native(pointer, race); + } + + public int supplyUsed() { + return supplyUsed_native(pointer); + } + + public int supplyUsed(Race race) { + return supplyUsed_native(pointer, race); + } + + public int allUnitCount() { + return allUnitCount_native(pointer); + } + + public int allUnitCount(UnitType unit) { + return allUnitCount_native(pointer, unit); + } + + public int visibleUnitCount() { + return visibleUnitCount_native(pointer); + } + + public int visibleUnitCount(UnitType unit) { + return visibleUnitCount_native(pointer, unit); + } + + public int completedUnitCount() { + return completedUnitCount_native(pointer); + } + + public int completedUnitCount(UnitType unit) { + return completedUnitCount_native(pointer, unit); + } + + public int incompleteUnitCount() { + return incompleteUnitCount_native(pointer); + } + + public int incompleteUnitCount(UnitType unit) { + return incompleteUnitCount_native(pointer, unit); + } + + public int deadUnitCount() { + return deadUnitCount_native(pointer); + } + + public int deadUnitCount(UnitType unit) { + return deadUnitCount_native(pointer, unit); + } + + public int killedUnitCount() { + return killedUnitCount_native(pointer); + } + + public int killedUnitCount(UnitType unit) { + return killedUnitCount_native(pointer, unit); + } + + public int getUpgradeLevel(UpgradeType upgrade) { + return getUpgradeLevel_native(pointer, upgrade); + } + + public boolean hasResearched(TechType tech) { + return hasResearched_native(pointer, tech); + } + + public boolean isResearching(TechType tech) { + return isResearching_native(pointer, tech); + } + + public boolean isUpgrading(UpgradeType upgrade) { + return isUpgrading_native(pointer, upgrade); + } + + public Color getColor() { + return getColor_native(pointer); + } + + public char getTextColor() { + return getTextColor_native(pointer); + } + + public int maxEnergy(UnitType unit) { + return maxEnergy_native(pointer, unit); + } + + public double topSpeed(UnitType unit) { + return topSpeed_native(pointer, unit); + } + + public int weaponMaxRange(WeaponType weapon) { + return weaponMaxRange_native(pointer, weapon); + } + + public int sightRange(UnitType unit) { + return sightRange_native(pointer, unit); + } + + public int weaponDamageCooldown(UnitType unit) { + return weaponDamageCooldown_native(pointer, unit); + } + + public int armor(UnitType unit) { + return armor_native(pointer, unit); + } + + public int damage(WeaponType wpn) { + return damage_native(pointer, wpn); + } + + public int getUnitScore() { + return getUnitScore_native(pointer); + } + + public int getKillScore() { + return getKillScore_native(pointer); + } + + public int getBuildingScore() { + return getBuildingScore_native(pointer); + } + + public int getRazingScore() { + return getRazingScore_native(pointer); + } + + public int getCustomScore() { + return getCustomScore_native(pointer); + } + + public boolean isObserver() { + return isObserver_native(pointer); + } + + public int getMaxUpgradeLevel(UpgradeType upgrade) { + return getMaxUpgradeLevel_native(pointer, upgrade); + } + + public boolean isResearchAvailable(TechType tech) { + return isResearchAvailable_native(pointer, tech); + } + + public boolean isUnitAvailable(UnitType unit) { + return isUnitAvailable_native(pointer, unit); + } + + + private static Map instances = new HashMap(); + + private Player(long pointer) { + this.pointer = pointer; + } + + private static Player get(long pointer) { + Player instance = instances.get(pointer); + if (instance == null ) { + instance = new Player(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + private native int getID_native(long pointer); + + private native String getName_native(long pointer); + + private native Race getRace_native(long pointer); + + private native PlayerType getType_native(long pointer); + + private native Force getForce_native(long pointer); + + private native boolean isAlly_native(long pointer, Player player); + + private native boolean isEnemy_native(long pointer, Player player); + + private native boolean isNeutral_native(long pointer); + + private native TilePosition getStartLocation_native(long pointer); + + private native boolean isVictorious_native(long pointer); + + private native boolean isDefeated_native(long pointer); + + private native boolean leftGame_native(long pointer); + + private native int minerals_native(long pointer); + + private native int gas_native(long pointer); + + private native int gatheredMinerals_native(long pointer); + + private native int gatheredGas_native(long pointer); + + private native int repairedMinerals_native(long pointer); + + private native int repairedGas_native(long pointer); + + private native int refundedMinerals_native(long pointer); + + private native int refundedGas_native(long pointer); + + private native int spentMinerals_native(long pointer); + + private native int spentGas_native(long pointer); + + private native int supplyTotal_native(long pointer); + + private native int supplyTotal_native(long pointer, Race race); + + private native int supplyUsed_native(long pointer); + + private native int supplyUsed_native(long pointer, Race race); + + private native int allUnitCount_native(long pointer); + + private native int allUnitCount_native(long pointer, UnitType unit); + + private native int visibleUnitCount_native(long pointer); + + private native int visibleUnitCount_native(long pointer, UnitType unit); + + private native int completedUnitCount_native(long pointer); + + private native int completedUnitCount_native(long pointer, UnitType unit); + + private native int incompleteUnitCount_native(long pointer); + + private native int incompleteUnitCount_native(long pointer, UnitType unit); + + private native int deadUnitCount_native(long pointer); + + private native int deadUnitCount_native(long pointer, UnitType unit); + + private native int killedUnitCount_native(long pointer); + + private native int killedUnitCount_native(long pointer, UnitType unit); + + private native int getUpgradeLevel_native(long pointer, UpgradeType upgrade); + + private native boolean hasResearched_native(long pointer, TechType tech); + + private native boolean isResearching_native(long pointer, TechType tech); + + private native boolean isUpgrading_native(long pointer, UpgradeType upgrade); + + private native Color getColor_native(long pointer); + + private native char getTextColor_native(long pointer); + + private native int maxEnergy_native(long pointer, UnitType unit); + + private native double topSpeed_native(long pointer, UnitType unit); + + private native int weaponMaxRange_native(long pointer, WeaponType weapon); + + private native int sightRange_native(long pointer, UnitType unit); + + private native int weaponDamageCooldown_native(long pointer, UnitType unit); + + private native int armor_native(long pointer, UnitType unit); + + private native int damage_native(long pointer, WeaponType wpn); + + private native int getUnitScore_native(long pointer); + + private native int getKillScore_native(long pointer); + + private native int getBuildingScore_native(long pointer); + + private native int getRazingScore_native(long pointer); + + private native int getCustomScore_native(long pointer); + + private native boolean isObserver_native(long pointer); + + private native int getMaxUpgradeLevel_native(long pointer, UpgradeType upgrade); + + private native boolean isResearchAvailable_native(long pointer, TechType tech); + + private native boolean isUnitAvailable_native(long pointer, UnitType unit); + + +} diff --git a/bwapi4/PlayerType.java b/bwapi4/PlayerType.java new file mode 100644 index 0000000..6f041e2 --- /dev/null +++ b/bwapi4/PlayerType.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class PlayerType { + + + private static Map instances = new HashMap(); + + private PlayerType(long pointer) { + this.pointer = pointer; + } + + private static PlayerType get(long pointer) { + PlayerType instance = instances.get(pointer); + if (instance == null ) { + instance = new PlayerType(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/bwapi4/Playerset.java b/bwapi4/Playerset.java new file mode 100644 index 0000000..2d76c92 --- /dev/null +++ b/bwapi4/Playerset.java @@ -0,0 +1,55 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class Playerset { + + public Unitset getUnits() { + return getUnits_native(pointer); + } + + public void setAlliance(boolean allies) { + setAlliance_native(pointer, allies); + } + + public void setAlliance() { + setAlliance_native(pointer); + } + + public void setAlliance(boolean allies, boolean alliedVictory) { + setAlliance_native(pointer, allies, alliedVictory); + } + + + private static Map instances = new HashMap(); + + private Playerset(long pointer) { + this.pointer = pointer; + } + + private static Playerset get(long pointer) { + Playerset instance = instances.get(pointer); + if (instance == null ) { + instance = new Playerset(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + private native Unitset getUnits_native(long pointer); + + private native void setAlliance_native(long pointer, boolean allies); + + private native void setAlliance_native(long pointer); + + private native void setAlliance_native(long pointer, boolean allies, boolean alliedVictory); + + +} diff --git a/bwapi4/Point.java b/bwapi4/Point.java new file mode 100644 index 0000000..ff09813 --- /dev/null +++ b/bwapi4/Point.java @@ -0,0 +1,43 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class Point { + + public boolean isValid() { + return isValid_native(pointer); + } + + public double getLength() { + return getLength_native(pointer); + } + + + private static Map instances = new HashMap(); + + private Point(long pointer) { + this.pointer = pointer; + } + + private static Point get(long pointer) { + Point instance = instances.get(pointer); + if (instance == null ) { + instance = new Point(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + private native boolean isValid_native(long pointer); + + private native double getLength_native(long pointer); + + +} diff --git a/bwapi4/Position.java b/bwapi4/Position.java new file mode 100644 index 0000000..3cef294 --- /dev/null +++ b/bwapi4/Position.java @@ -0,0 +1,86 @@ +package bwapi4; + +import java.lang.Override; +import java.util.HashMap; +import java.util.Map; + +/** + * Positions are measured in pixels and are the highest resolution. + */ +public class Position { + + private int x, y; + + public Position(int x, int y) { + this.x = x; + this.y = y; + } + + public String toString() { + return "[" + x + ", " + y + "]"; + } + + public native boolean isValid(); + + public native Position makeValid(); + + public native double getDistance(Position position); + + public native int getApproxDistance(Position position); + + public native double getLength(); + + public native boolean hasPath(Position position); + + public int getX() { + return x; + } + + public int getY() { + return y; + } + + public static Position Invalid; + + public static Position None; + + public static Position Unknown; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof Position)) return false; + + Position position = (Position) o; + + if (x != position.x) return false; + if (y != position.y) return false; + + return true; + } + + @Override + public int hashCode() { + int result = x; + result = 31 * result + y; + return result; + } + + + private static Map instances = new HashMap(); + + private Position(long pointer) { + this.pointer = pointer; + } + + private static Position get(long pointer) { + Position instance = instances.get(pointer); + if (instance == null) { + instance = new Position(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; +} \ No newline at end of file diff --git a/bwapi4/PositionOrUnit.java b/bwapi4/PositionOrUnit.java new file mode 100644 index 0000000..d818c04 --- /dev/null +++ b/bwapi4/PositionOrUnit.java @@ -0,0 +1,55 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class PositionOrUnit { + + public boolean isUnit() { + return isUnit_native(pointer); + } + + public Unit getUnit() { + return getUnit_native(pointer); + } + + public boolean isPosition() { + return isPosition_native(pointer); + } + + public Position getPosition() { + return getPosition_native(pointer); + } + + + private static Map instances = new HashMap(); + + private PositionOrUnit(long pointer) { + this.pointer = pointer; + } + + private static PositionOrUnit get(long pointer) { + PositionOrUnit instance = instances.get(pointer); + if (instance == null ) { + instance = new PositionOrUnit(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + private native boolean isUnit_native(long pointer); + + private native Unit getUnit_native(long pointer); + + private native boolean isPosition_native(long pointer); + + private native Position getPosition_native(long pointer); + + +} diff --git a/bwapi4/Race.java b/bwapi4/Race.java new file mode 100644 index 0000000..89be1d2 --- /dev/null +++ b/bwapi4/Race.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class Race { + + + private static Map instances = new HashMap(); + + private Race(long pointer) { + this.pointer = pointer; + } + + private static Race get(long pointer) { + Race instance = instances.get(pointer); + if (instance == null ) { + instance = new Race(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/bwapi4/Region.java b/bwapi4/Region.java new file mode 100644 index 0000000..12aa77c --- /dev/null +++ b/bwapi4/Region.java @@ -0,0 +1,115 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class Region { + + public int getID() { + return getID_native(pointer); + } + + public int getRegionGroupID() { + return getRegionGroupID_native(pointer); + } + + public Position getCenter() { + return getCenter_native(pointer); + } + + public boolean isHigherGround() { + return isHigherGround_native(pointer); + } + + public int getDefensePriority() { + return getDefensePriority_native(pointer); + } + + public boolean isAccessible() { + return isAccessible_native(pointer); + } + + public int getBoundsLeft() { + return getBoundsLeft_native(pointer); + } + + public int getBoundsTop() { + return getBoundsTop_native(pointer); + } + + public int getBoundsRight() { + return getBoundsRight_native(pointer); + } + + public int getBoundsBottom() { + return getBoundsBottom_native(pointer); + } + + public Region getClosestAccessibleRegion() { + return getClosestAccessibleRegion_native(pointer); + } + + public Region getClosestInaccessibleRegion() { + return getClosestInaccessibleRegion_native(pointer); + } + + public int getDistance(Region other) { + return getDistance_native(pointer, other); + } + + public Unitset getUnits(UnitFilter pred) { + return getUnits_native(pointer, pred); + } + + + private static Map instances = new HashMap(); + + private Region(long pointer) { + this.pointer = pointer; + } + + private static Region get(long pointer) { + Region instance = instances.get(pointer); + if (instance == null ) { + instance = new Region(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + private native int getID_native(long pointer); + + private native int getRegionGroupID_native(long pointer); + + private native Position getCenter_native(long pointer); + + private native boolean isHigherGround_native(long pointer); + + private native int getDefensePriority_native(long pointer); + + private native boolean isAccessible_native(long pointer); + + private native int getBoundsLeft_native(long pointer); + + private native int getBoundsTop_native(long pointer); + + private native int getBoundsRight_native(long pointer); + + private native int getBoundsBottom_native(long pointer); + + private native Region getClosestAccessibleRegion_native(long pointer); + + private native Region getClosestInaccessibleRegion_native(long pointer); + + private native int getDistance_native(long pointer, Region other); + + private native Unitset getUnits_native(long pointer, UnitFilter pred); + + +} diff --git a/bwapi4/Regionset.java b/bwapi4/Regionset.java new file mode 100644 index 0000000..9c2ae6f --- /dev/null +++ b/bwapi4/Regionset.java @@ -0,0 +1,43 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class Regionset { + + public Position getCenter() { + return getCenter_native(pointer); + } + + public Unitset getUnits(UnitFilter pred) { + return getUnits_native(pointer, pred); + } + + + private static Map instances = new HashMap(); + + private Regionset(long pointer) { + this.pointer = pointer; + } + + private static Regionset get(long pointer) { + Regionset instance = instances.get(pointer); + if (instance == null ) { + instance = new Regionset(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + private native Position getCenter_native(long pointer); + + private native Unitset getUnits_native(long pointer, UnitFilter pred); + + +} diff --git a/bwapi4/ShapeType/Enum.java b/bwapi4/ShapeType/Enum.java new file mode 100644 index 0000000..9118876 --- /dev/null +++ b/bwapi4/ShapeType/Enum.java @@ -0,0 +1,30 @@ +package bwapi4.ShapeType; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public enum Enum { + + None(0), + Text(1), + Box(2), + Triangle(3), + Circle(4), + Ellipse(5), + Dot(6); + + private int value; + + public int getValue(){ + return value; + } + + Enum(int value){ + this.value = value; + } + +} diff --git a/bwapi4/TechType.java b/bwapi4/TechType.java new file mode 100644 index 0000000..0b04391 --- /dev/null +++ b/bwapi4/TechType.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class TechType { + + + private static Map instances = new HashMap(); + + private TechType(long pointer) { + this.pointer = pointer; + } + + private static TechType get(long pointer) { + TechType instance = instances.get(pointer); + if (instance == null ) { + instance = new TechType(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/bwapi4/Text/Enum.java b/bwapi4/Text/Enum.java new file mode 100644 index 0000000..8eee27e --- /dev/null +++ b/bwapi4/Text/Enum.java @@ -0,0 +1,49 @@ +package bwapi4.Text; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public enum Enum { + + Previous(1), + Default(2), + Yellow(3), + White(4), + Grey(5), + Red(6), + Green(7), + BrightRed(8), + Invisible(11), + Blue(14), + Teal(15), + Purple(16), + Orange(17), + Align_Right(18), + Align_Center(19), + Invisible2(20), + Brown(21), + PlayerWhite(22), + PlayerYellow(23), + DarkGreen(24), + LightYellow(25), + Cyan(26), + Tan(27), + GreyBlue(28), + GreyGreen(29), + GreyCyan(30); + + private int value; + + public int getValue(){ + return value; + } + + Enum(int value){ + this.value = value; + } + +} diff --git a/bwapi4/Text/Size/Enum.java b/bwapi4/Text/Size/Enum.java new file mode 100644 index 0000000..85e1db4 --- /dev/null +++ b/bwapi4/Text/Size/Enum.java @@ -0,0 +1,26 @@ +package bwapi4.Text.Size; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public enum Enum { + + Small(0), + Default(1), + Large(2); + + private int value; + + public int getValue(){ + return value; + } + + Enum(int value){ + this.value = value; + } + +} diff --git a/bwapi4/TilePosition.java b/bwapi4/TilePosition.java new file mode 100644 index 0000000..a5d85c3 --- /dev/null +++ b/bwapi4/TilePosition.java @@ -0,0 +1,85 @@ +package bwapi4; + +import java.lang.Override; +import java.util.HashMap; +import java.util.Map; + +/** + * Build Tiles - each build tile is a 4x4 square of walk tiles, or a 32x32 square of pixels. + * These are called build tiles because buildability data is available at this resolution, and correspond to the tiles seen in game. + * For example, a Command Center occupies an area of 4x3 build tiles. + */ +public class TilePosition { + private int x, y; + + public TilePosition(int x, int y) { + this.x = x; + this.y = y; + } + + public String toString() { + return "[" + x + ", " + y + "]"; + } + + public native boolean hasPath(TilePosition position); + + public native boolean isValid(); + + public native TilePosition makeValid(); + + public native double getDistance(TilePosition position); + + public native double getLength(); + + public int getX() { + return x; + } + + public int getY() { + return y; + } + + public static TilePosition Invalid; + + public static TilePosition None; + + public static TilePosition Unknown; + + private static Map instances = new HashMap(); + + private TilePosition(long pointer) { + this.pointer = pointer; + } + + private static TilePosition get(long pointer) { + TilePosition instance = instances.get(pointer); + if (instance == null) { + instance = new TilePosition(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof TilePosition)) return false; + + TilePosition that = (TilePosition) o; + + if (x != that.x) return false; + if (y != that.y) return false; + + return true; + } + + @Override + public int hashCode() { + int result = x; + result = 31 * result + y; + return result; + } +} \ No newline at end of file diff --git a/bwapi4/Tournament/ActionID.java b/bwapi4/Tournament/ActionID.java new file mode 100644 index 0000000..a6a1c2c --- /dev/null +++ b/bwapi4/Tournament/ActionID.java @@ -0,0 +1,35 @@ +package bwapi4.Tournament; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public enum ActionID { + + EnableFlag(0), + PauseGame(1), + ResumeGame(2), + LeaveGame(3), + SetLocalSpeed(4), + SetTextSize(5), + SetLatCom(6), + SetGUI(7), + SetMap(8), + SetFrameSkip(9), + Printf(10), + SendText(11); + + private int value; + + public int getValue(){ + return value; + } + + ActionID(int value){ + this.value = value; + } + +} diff --git a/bwapi4/UnaryFilter.java b/bwapi4/UnaryFilter.java new file mode 100644 index 0000000..d241515 --- /dev/null +++ b/bwapi4/UnaryFilter.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class UnaryFilter { + + + private static Map instances = new HashMap(); + + private UnaryFilter(long pointer) { + this.pointer = pointer; + } + + private static UnaryFilter get(long pointer) { + UnaryFilter instance = instances.get(pointer); + if (instance == null ) { + instance = new UnaryFilter(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/bwapi4/Unit.java b/bwapi4/Unit.java new file mode 100644 index 0000000..15d557a --- /dev/null +++ b/bwapi4/Unit.java @@ -0,0 +1,2773 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class Unit { + + public int getID() { + return getID_native(pointer); + } + + public boolean exists() { + return exists_native(pointer); + } + + public int getReplayID() { + return getReplayID_native(pointer); + } + + public Player getPlayer() { + return getPlayer_native(pointer); + } + + public UnitType getType() { + return getType_native(pointer); + } + + public Position getPosition() { + return getPosition_native(pointer); + } + + public TilePosition getTilePosition() { + return getTilePosition_native(pointer); + } + + public double getAngle() { + return getAngle_native(pointer); + } + + public double getVelocityX() { + return getVelocityX_native(pointer); + } + + public double getVelocityY() { + return getVelocityY_native(pointer); + } + + public Region getRegion() { + return getRegion_native(pointer); + } + + public int getLeft() { + return getLeft_native(pointer); + } + + public int getTop() { + return getTop_native(pointer); + } + + public int getRight() { + return getRight_native(pointer); + } + + public int getBottom() { + return getBottom_native(pointer); + } + + public int getHitPoints() { + return getHitPoints_native(pointer); + } + + public int getShields() { + return getShields_native(pointer); + } + + public int getEnergy() { + return getEnergy_native(pointer); + } + + public int getResources() { + return getResources_native(pointer); + } + + public int getResourceGroup() { + return getResourceGroup_native(pointer); + } + + public int getDistance(PositionOrUnit target) { + return getDistance_native(pointer, target); + } + + public boolean hasPath(PositionOrUnit target) { + return hasPath_native(pointer, target); + } + + public int getLastCommandFrame() { + return getLastCommandFrame_native(pointer); + } + + public Player getLastAttackingPlayer() { + return getLastAttackingPlayer_native(pointer); + } + + public UnitType getInitialType() { + return getInitialType_native(pointer); + } + + public Position getInitialPosition() { + return getInitialPosition_native(pointer); + } + + public TilePosition getInitialTilePosition() { + return getInitialTilePosition_native(pointer); + } + + public int getInitialHitPoints() { + return getInitialHitPoints_native(pointer); + } + + public int getInitialResources() { + return getInitialResources_native(pointer); + } + + public int getKillCount() { + return getKillCount_native(pointer); + } + + public int getAcidSporeCount() { + return getAcidSporeCount_native(pointer); + } + + public int getInterceptorCount() { + return getInterceptorCount_native(pointer); + } + + public int getScarabCount() { + return getScarabCount_native(pointer); + } + + public int getSpiderMineCount() { + return getSpiderMineCount_native(pointer); + } + + public int getGroundWeaponCooldown() { + return getGroundWeaponCooldown_native(pointer); + } + + public int getAirWeaponCooldown() { + return getAirWeaponCooldown_native(pointer); + } + + public int getSpellCooldown() { + return getSpellCooldown_native(pointer); + } + + public int getDefenseMatrixPoints() { + return getDefenseMatrixPoints_native(pointer); + } + + public int getDefenseMatrixTimer() { + return getDefenseMatrixTimer_native(pointer); + } + + public int getEnsnareTimer() { + return getEnsnareTimer_native(pointer); + } + + public int getIrradiateTimer() { + return getIrradiateTimer_native(pointer); + } + + public int getLockdownTimer() { + return getLockdownTimer_native(pointer); + } + + public int getMaelstromTimer() { + return getMaelstromTimer_native(pointer); + } + + public int getOrderTimer() { + return getOrderTimer_native(pointer); + } + + public int getPlagueTimer() { + return getPlagueTimer_native(pointer); + } + + public int getRemoveTimer() { + return getRemoveTimer_native(pointer); + } + + public int getStasisTimer() { + return getStasisTimer_native(pointer); + } + + public int getStimTimer() { + return getStimTimer_native(pointer); + } + + public UnitType getBuildType() { + return getBuildType_native(pointer); + } + + public TechType getTech() { + return getTech_native(pointer); + } + + public UpgradeType getUpgrade() { + return getUpgrade_native(pointer); + } + + public int getRemainingBuildTime() { + return getRemainingBuildTime_native(pointer); + } + + public int getRemainingTrainTime() { + return getRemainingTrainTime_native(pointer); + } + + public int getRemainingResearchTime() { + return getRemainingResearchTime_native(pointer); + } + + public int getRemainingUpgradeTime() { + return getRemainingUpgradeTime_native(pointer); + } + + public Unit getBuildUnit() { + return getBuildUnit_native(pointer); + } + + public Unit getTarget() { + return getTarget_native(pointer); + } + + public Position getTargetPosition() { + return getTargetPosition_native(pointer); + } + + public Order getOrder() { + return getOrder_native(pointer); + } + + public Order getSecondaryOrder() { + return getSecondaryOrder_native(pointer); + } + + public Unit getOrderTarget() { + return getOrderTarget_native(pointer); + } + + public Position getOrderTargetPosition() { + return getOrderTargetPosition_native(pointer); + } + + public Position getRallyPosition() { + return getRallyPosition_native(pointer); + } + + public Unit getRallyUnit() { + return getRallyUnit_native(pointer); + } + + public Unit getAddon() { + return getAddon_native(pointer); + } + + public Unit getNydusExit() { + return getNydusExit_native(pointer); + } + + public Unit getPowerUp() { + return getPowerUp_native(pointer); + } + + public Unit getTransport() { + return getTransport_native(pointer); + } + + public Unitset getLoadedUnits() { + return getLoadedUnits_native(pointer); + } + + public int getSpaceRemaining() { + return getSpaceRemaining_native(pointer); + } + + public Unit getCarrier() { + return getCarrier_native(pointer); + } + + public Unitset getInterceptors() { + return getInterceptors_native(pointer); + } + + public Unit getHatchery() { + return getHatchery_native(pointer); + } + + public Unitset getLarva() { + return getLarva_native(pointer); + } + + public Unitset getUnitsInRadius(int radius, UnitFilter pred) { + return getUnitsInRadius_native(pointer, radius, pred); + } + + public Unitset getUnitsInWeaponRange(WeaponType weapon, UnitFilter pred) { + return getUnitsInWeaponRange_native(pointer, weapon, pred); + } + + public Unit getClosestUnit(UnitFilter pred) { + return getClosestUnit_native(pointer, pred); + } + + public Unit getClosestUnit(UnitFilter pred, int radius) { + return getClosestUnit_native(pointer, pred, radius); + } + + public boolean hasNuke() { + return hasNuke_native(pointer); + } + + public boolean isAccelerating() { + return isAccelerating_native(pointer); + } + + public boolean isAttacking() { + return isAttacking_native(pointer); + } + + public boolean isAttackFrame() { + return isAttackFrame_native(pointer); + } + + public boolean isBeingConstructed() { + return isBeingConstructed_native(pointer); + } + + public boolean isBeingGathered() { + return isBeingGathered_native(pointer); + } + + public boolean isBeingHealed() { + return isBeingHealed_native(pointer); + } + + public boolean isBlind() { + return isBlind_native(pointer); + } + + public boolean isBraking() { + return isBraking_native(pointer); + } + + public boolean isBurrowed() { + return isBurrowed_native(pointer); + } + + public boolean isCarryingGas() { + return isCarryingGas_native(pointer); + } + + public boolean isCarryingMinerals() { + return isCarryingMinerals_native(pointer); + } + + public boolean isCloaked() { + return isCloaked_native(pointer); + } + + public boolean isCompleted() { + return isCompleted_native(pointer); + } + + public boolean isConstructing() { + return isConstructing_native(pointer); + } + + public boolean isDefenseMatrixed() { + return isDefenseMatrixed_native(pointer); + } + + public boolean isDetected() { + return isDetected_native(pointer); + } + + public boolean isEnsnared() { + return isEnsnared_native(pointer); + } + + public boolean isFlying() { + return isFlying_native(pointer); + } + + public boolean isFollowing() { + return isFollowing_native(pointer); + } + + public boolean isGatheringGas() { + return isGatheringGas_native(pointer); + } + + public boolean isGatheringMinerals() { + return isGatheringMinerals_native(pointer); + } + + public boolean isHallucination() { + return isHallucination_native(pointer); + } + + public boolean isHoldingPosition() { + return isHoldingPosition_native(pointer); + } + + public boolean isIdle() { + return isIdle_native(pointer); + } + + public boolean isInterruptible() { + return isInterruptible_native(pointer); + } + + public boolean isInvincible() { + return isInvincible_native(pointer); + } + + public boolean isInWeaponRange(Unit target) { + return isInWeaponRange_native(pointer, target); + } + + public boolean isIrradiated() { + return isIrradiated_native(pointer); + } + + public boolean isLifted() { + return isLifted_native(pointer); + } + + public boolean isLoaded() { + return isLoaded_native(pointer); + } + + public boolean isLockedDown() { + return isLockedDown_native(pointer); + } + + public boolean isMaelstrommed() { + return isMaelstrommed_native(pointer); + } + + public boolean isMorphing() { + return isMorphing_native(pointer); + } + + public boolean isMoving() { + return isMoving_native(pointer); + } + + public boolean isParasited() { + return isParasited_native(pointer); + } + + public boolean isPatrolling() { + return isPatrolling_native(pointer); + } + + public boolean isPlagued() { + return isPlagued_native(pointer); + } + + public boolean isRepairing() { + return isRepairing_native(pointer); + } + + public boolean isResearching() { + return isResearching_native(pointer); + } + + public boolean isSelected() { + return isSelected_native(pointer); + } + + public boolean isSieged() { + return isSieged_native(pointer); + } + + public boolean isStartingAttack() { + return isStartingAttack_native(pointer); + } + + public boolean isStasised() { + return isStasised_native(pointer); + } + + public boolean isStimmed() { + return isStimmed_native(pointer); + } + + public boolean isStuck() { + return isStuck_native(pointer); + } + + public boolean isTraining() { + return isTraining_native(pointer); + } + + public boolean isUnderAttack() { + return isUnderAttack_native(pointer); + } + + public boolean isUnderDarkSwarm() { + return isUnderDarkSwarm_native(pointer); + } + + public boolean isUnderDisruptionWeb() { + return isUnderDisruptionWeb_native(pointer); + } + + public boolean isUnderStorm() { + return isUnderStorm_native(pointer); + } + + public boolean isPowered() { + return isPowered_native(pointer); + } + + public boolean isUpgrading() { + return isUpgrading_native(pointer); + } + + public boolean isVisible() { + return isVisible_native(pointer); + } + + public boolean isVisible(Player player) { + return isVisible_native(pointer, player); + } + + public boolean isTargetable() { + return isTargetable_native(pointer); + } + + public boolean issueCommand(UnitCommand command) { + return issueCommand_native(pointer, command); + } + + public boolean attack(PositionOrUnit target) { + return attack_native(pointer, target); + } + + public boolean attack(PositionOrUnit target, boolean shiftQueueCommand) { + return attack_native(pointer, target, shiftQueueCommand); + } + + public boolean build(UnitType type) { + return build_native(pointer, type); + } + + public boolean build(UnitType type, TilePosition target) { + return build_native(pointer, type, target); + } + + public boolean buildAddon(UnitType type) { + return buildAddon_native(pointer, type); + } + + public boolean train() { + return train_native(pointer); + } + + public boolean train(UnitType type) { + return train_native(pointer, type); + } + + public boolean morph(UnitType type) { + return morph_native(pointer, type); + } + + public boolean research(TechType tech) { + return research_native(pointer, tech); + } + + public boolean upgrade(UpgradeType upgrade) { + return upgrade_native(pointer, upgrade); + } + + public boolean setRallyPoint(PositionOrUnit target) { + return setRallyPoint_native(pointer, target); + } + + public boolean move(Position target) { + return move_native(pointer, target); + } + + public boolean move(Position target, boolean shiftQueueCommand) { + return move_native(pointer, target, shiftQueueCommand); + } + + public boolean patrol(Position target) { + return patrol_native(pointer, target); + } + + public boolean patrol(Position target, boolean shiftQueueCommand) { + return patrol_native(pointer, target, shiftQueueCommand); + } + + public boolean holdPosition() { + return holdPosition_native(pointer); + } + + public boolean holdPosition(boolean shiftQueueCommand) { + return holdPosition_native(pointer, shiftQueueCommand); + } + + public boolean stop() { + return stop_native(pointer); + } + + public boolean stop(boolean shiftQueueCommand) { + return stop_native(pointer, shiftQueueCommand); + } + + public boolean follow(Unit target) { + return follow_native(pointer, target); + } + + public boolean follow(Unit target, boolean shiftQueueCommand) { + return follow_native(pointer, target, shiftQueueCommand); + } + + public boolean gather(Unit target) { + return gather_native(pointer, target); + } + + public boolean gather(Unit target, boolean shiftQueueCommand) { + return gather_native(pointer, target, shiftQueueCommand); + } + + public boolean returnCargo() { + return returnCargo_native(pointer); + } + + public boolean returnCargo(boolean shiftQueueCommand) { + return returnCargo_native(pointer, shiftQueueCommand); + } + + public boolean repair(Unit target) { + return repair_native(pointer, target); + } + + public boolean repair(Unit target, boolean shiftQueueCommand) { + return repair_native(pointer, target, shiftQueueCommand); + } + + public boolean burrow() { + return burrow_native(pointer); + } + + public boolean unburrow() { + return unburrow_native(pointer); + } + + public boolean cloak() { + return cloak_native(pointer); + } + + public boolean decloak() { + return decloak_native(pointer); + } + + public boolean siege() { + return siege_native(pointer); + } + + public boolean unsiege() { + return unsiege_native(pointer); + } + + public boolean lift() { + return lift_native(pointer); + } + + public boolean land(TilePosition target) { + return land_native(pointer, target); + } + + public boolean load(Unit target) { + return load_native(pointer, target); + } + + public boolean load(Unit target, boolean shiftQueueCommand) { + return load_native(pointer, target, shiftQueueCommand); + } + + public boolean unload(Unit target) { + return unload_native(pointer, target); + } + + public boolean unloadAll() { + return unloadAll_native(pointer); + } + + public boolean unloadAll(boolean shiftQueueCommand) { + return unloadAll_native(pointer, shiftQueueCommand); + } + + public boolean unloadAll(Position target) { + return unloadAll_native(pointer, target); + } + + public boolean unloadAll(Position target, boolean shiftQueueCommand) { + return unloadAll_native(pointer, target, shiftQueueCommand); + } + + public boolean rightClick(PositionOrUnit target) { + return rightClick_native(pointer, target); + } + + public boolean rightClick(PositionOrUnit target, boolean shiftQueueCommand) { + return rightClick_native(pointer, target, shiftQueueCommand); + } + + public boolean haltConstruction() { + return haltConstruction_native(pointer); + } + + public boolean cancelConstruction() { + return cancelConstruction_native(pointer); + } + + public boolean cancelAddon() { + return cancelAddon_native(pointer); + } + + public boolean cancelTrain() { + return cancelTrain_native(pointer); + } + + public boolean cancelTrain(int slot) { + return cancelTrain_native(pointer, slot); + } + + public boolean cancelMorph() { + return cancelMorph_native(pointer); + } + + public boolean cancelResearch() { + return cancelResearch_native(pointer); + } + + public boolean cancelUpgrade() { + return cancelUpgrade_native(pointer); + } + + public boolean useTech(TechType tech) { + return useTech_native(pointer, tech); + } + + public boolean useTech(TechType tech, PositionOrUnit target) { + return useTech_native(pointer, tech, target); + } + + public boolean placeCOP(TilePosition target) { + return placeCOP_native(pointer, target); + } + + public boolean canIssueCommand(UnitCommand command, boolean checkCanUseTechPositionOnPositions, boolean checkCanUseTechUnitOnUnits, boolean checkCanBuildUnitType, boolean checkCanTargetUnit, boolean checkCanIssueCommandType) { + return canIssueCommand_native(pointer, command, checkCanUseTechPositionOnPositions, checkCanUseTechUnitOnUnits, checkCanBuildUnitType, checkCanTargetUnit, checkCanIssueCommandType); + } + + public boolean canIssueCommand(UnitCommand command, boolean checkCanUseTechPositionOnPositions, boolean checkCanUseTechUnitOnUnits, boolean checkCanBuildUnitType, boolean checkCanTargetUnit) { + return canIssueCommand_native(pointer, command, checkCanUseTechPositionOnPositions, checkCanUseTechUnitOnUnits, checkCanBuildUnitType, checkCanTargetUnit); + } + + public boolean canIssueCommand(UnitCommand command, boolean checkCanUseTechPositionOnPositions, boolean checkCanUseTechUnitOnUnits, boolean checkCanBuildUnitType) { + return canIssueCommand_native(pointer, command, checkCanUseTechPositionOnPositions, checkCanUseTechUnitOnUnits, checkCanBuildUnitType); + } + + public boolean canIssueCommand(UnitCommand command, boolean checkCanUseTechPositionOnPositions, boolean checkCanUseTechUnitOnUnits) { + return canIssueCommand_native(pointer, command, checkCanUseTechPositionOnPositions, checkCanUseTechUnitOnUnits); + } + + public boolean canIssueCommand(UnitCommand command, boolean checkCanUseTechPositionOnPositions) { + return canIssueCommand_native(pointer, command, checkCanUseTechPositionOnPositions); + } + + public boolean canIssueCommand(UnitCommand command) { + return canIssueCommand_native(pointer, command); + } + + public boolean canIssueCommand(UnitCommand command, boolean checkCanUseTechPositionOnPositions, boolean checkCanUseTechUnitOnUnits, boolean checkCanBuildUnitType, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canIssueCommand_native(pointer, command, checkCanUseTechPositionOnPositions, checkCanUseTechUnitOnUnits, checkCanBuildUnitType, checkCanTargetUnit, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canIssueCommandGrouped(UnitCommand command, boolean checkCanUseTechPositionOnPositions, boolean checkCanUseTechUnitOnUnits, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibilityGrouped) { + return canIssueCommandGrouped_native(pointer, command, checkCanUseTechPositionOnPositions, checkCanUseTechUnitOnUnits, checkCanTargetUnit, checkCanIssueCommandType, checkCommandibilityGrouped); + } + + public boolean canIssueCommandGrouped(UnitCommand command, boolean checkCanUseTechPositionOnPositions, boolean checkCanUseTechUnitOnUnits, boolean checkCanTargetUnit, boolean checkCanIssueCommandType) { + return canIssueCommandGrouped_native(pointer, command, checkCanUseTechPositionOnPositions, checkCanUseTechUnitOnUnits, checkCanTargetUnit, checkCanIssueCommandType); + } + + public boolean canIssueCommandGrouped(UnitCommand command, boolean checkCanUseTechPositionOnPositions, boolean checkCanUseTechUnitOnUnits, boolean checkCanTargetUnit) { + return canIssueCommandGrouped_native(pointer, command, checkCanUseTechPositionOnPositions, checkCanUseTechUnitOnUnits, checkCanTargetUnit); + } + + public boolean canIssueCommandGrouped(UnitCommand command, boolean checkCanUseTechPositionOnPositions, boolean checkCanUseTechUnitOnUnits) { + return canIssueCommandGrouped_native(pointer, command, checkCanUseTechPositionOnPositions, checkCanUseTechUnitOnUnits); + } + + public boolean canIssueCommandGrouped(UnitCommand command, boolean checkCanUseTechPositionOnPositions) { + return canIssueCommandGrouped_native(pointer, command, checkCanUseTechPositionOnPositions); + } + + public boolean canIssueCommandGrouped(UnitCommand command) { + return canIssueCommandGrouped_native(pointer, command); + } + + public boolean canIssueCommandGrouped(UnitCommand command, boolean checkCanUseTechPositionOnPositions, boolean checkCanUseTechUnitOnUnits, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibilityGrouped, boolean checkCommandibility) { + return canIssueCommandGrouped_native(pointer, command, checkCanUseTechPositionOnPositions, checkCanUseTechUnitOnUnits, checkCanTargetUnit, checkCanIssueCommandType, checkCommandibilityGrouped, checkCommandibility); + } + + public boolean canCommand() { + return canCommand_native(pointer); + } + + public boolean canCommandGrouped() { + return canCommandGrouped_native(pointer); + } + + public boolean canCommandGrouped(boolean checkCommandibility) { + return canCommandGrouped_native(pointer, checkCommandibility); + } + + public boolean canIssueCommandType(UnitCommandType ct) { + return canIssueCommandType_native(pointer, ct); + } + + public boolean canIssueCommandType(UnitCommandType ct, boolean checkCommandibility) { + return canIssueCommandType_native(pointer, ct, checkCommandibility); + } + + public boolean canIssueCommandTypeGrouped(UnitCommandType ct, boolean checkCommandibilityGrouped) { + return canIssueCommandTypeGrouped_native(pointer, ct, checkCommandibilityGrouped); + } + + public boolean canIssueCommandTypeGrouped(UnitCommandType ct) { + return canIssueCommandTypeGrouped_native(pointer, ct); + } + + public boolean canIssueCommandTypeGrouped(UnitCommandType ct, boolean checkCommandibilityGrouped, boolean checkCommandibility) { + return canIssueCommandTypeGrouped_native(pointer, ct, checkCommandibilityGrouped, checkCommandibility); + } + + public boolean canTargetUnit(Unit targetUnit) { + return canTargetUnit_native(pointer, targetUnit); + } + + public boolean canTargetUnit(Unit targetUnit, boolean checkCommandibility) { + return canTargetUnit_native(pointer, targetUnit, checkCommandibility); + } + + public boolean canAttack() { + return canAttack_native(pointer); + } + + public boolean canAttack(boolean checkCommandibility) { + return canAttack_native(pointer, checkCommandibility); + } + + public boolean canAttack(PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType) { + return canAttack_native(pointer, target, checkCanTargetUnit, checkCanIssueCommandType); + } + + public boolean canAttack(PositionOrUnit target, boolean checkCanTargetUnit) { + return canAttack_native(pointer, target, checkCanTargetUnit); + } + + public boolean canAttack(PositionOrUnit target) { + return canAttack_native(pointer, target); + } + + public boolean canAttack(PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canAttack_native(pointer, target, checkCanTargetUnit, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canAttackGrouped(boolean checkCommandibilityGrouped) { + return canAttackGrouped_native(pointer, checkCommandibilityGrouped); + } + + public boolean canAttackGrouped() { + return canAttackGrouped_native(pointer); + } + + public boolean canAttackGrouped(boolean checkCommandibilityGrouped, boolean checkCommandibility) { + return canAttackGrouped_native(pointer, checkCommandibilityGrouped, checkCommandibility); + } + + public boolean canAttackGrouped(PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibilityGrouped) { + return canAttackGrouped_native(pointer, target, checkCanTargetUnit, checkCanIssueCommandType, checkCommandibilityGrouped); + } + + public boolean canAttackGrouped(PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType) { + return canAttackGrouped_native(pointer, target, checkCanTargetUnit, checkCanIssueCommandType); + } + + public boolean canAttackGrouped(PositionOrUnit target, boolean checkCanTargetUnit) { + return canAttackGrouped_native(pointer, target, checkCanTargetUnit); + } + + public boolean canAttackGrouped(PositionOrUnit target) { + return canAttackGrouped_native(pointer, target); + } + + public boolean canAttackGrouped(PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibilityGrouped, boolean checkCommandibility) { + return canAttackGrouped_native(pointer, target, checkCanTargetUnit, checkCanIssueCommandType, checkCommandibilityGrouped, checkCommandibility); + } + + public boolean canAttackMove() { + return canAttackMove_native(pointer); + } + + public boolean canAttackMove(boolean checkCommandibility) { + return canAttackMove_native(pointer, checkCommandibility); + } + + public boolean canAttackMoveGrouped(boolean checkCommandibilityGrouped) { + return canAttackMoveGrouped_native(pointer, checkCommandibilityGrouped); + } + + public boolean canAttackMoveGrouped() { + return canAttackMoveGrouped_native(pointer); + } + + public boolean canAttackMoveGrouped(boolean checkCommandibilityGrouped, boolean checkCommandibility) { + return canAttackMoveGrouped_native(pointer, checkCommandibilityGrouped, checkCommandibility); + } + + public boolean canAttackUnit() { + return canAttackUnit_native(pointer); + } + + public boolean canAttackUnit(boolean checkCommandibility) { + return canAttackUnit_native(pointer, checkCommandibility); + } + + public boolean canAttackUnit(Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType) { + return canAttackUnit_native(pointer, targetUnit, checkCanTargetUnit, checkCanIssueCommandType); + } + + public boolean canAttackUnit(Unit targetUnit, boolean checkCanTargetUnit) { + return canAttackUnit_native(pointer, targetUnit, checkCanTargetUnit); + } + + public boolean canAttackUnit(Unit targetUnit) { + return canAttackUnit_native(pointer, targetUnit); + } + + public boolean canAttackUnit(Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canAttackUnit_native(pointer, targetUnit, checkCanTargetUnit, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canAttackUnitGrouped(boolean checkCommandibilityGrouped) { + return canAttackUnitGrouped_native(pointer, checkCommandibilityGrouped); + } + + public boolean canAttackUnitGrouped() { + return canAttackUnitGrouped_native(pointer); + } + + public boolean canAttackUnitGrouped(boolean checkCommandibilityGrouped, boolean checkCommandibility) { + return canAttackUnitGrouped_native(pointer, checkCommandibilityGrouped, checkCommandibility); + } + + public boolean canAttackUnitGrouped(Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibilityGrouped) { + return canAttackUnitGrouped_native(pointer, targetUnit, checkCanTargetUnit, checkCanIssueCommandType, checkCommandibilityGrouped); + } + + public boolean canAttackUnitGrouped(Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType) { + return canAttackUnitGrouped_native(pointer, targetUnit, checkCanTargetUnit, checkCanIssueCommandType); + } + + public boolean canAttackUnitGrouped(Unit targetUnit, boolean checkCanTargetUnit) { + return canAttackUnitGrouped_native(pointer, targetUnit, checkCanTargetUnit); + } + + public boolean canAttackUnitGrouped(Unit targetUnit) { + return canAttackUnitGrouped_native(pointer, targetUnit); + } + + public boolean canAttackUnitGrouped(Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibilityGrouped, boolean checkCommandibility) { + return canAttackUnitGrouped_native(pointer, targetUnit, checkCanTargetUnit, checkCanIssueCommandType, checkCommandibilityGrouped, checkCommandibility); + } + + public boolean canBuild() { + return canBuild_native(pointer); + } + + public boolean canBuild(boolean checkCommandibility) { + return canBuild_native(pointer, checkCommandibility); + } + + public boolean canBuild(UnitType uType, boolean checkCanIssueCommandType) { + return canBuild_native(pointer, uType, checkCanIssueCommandType); + } + + public boolean canBuild(UnitType uType) { + return canBuild_native(pointer, uType); + } + + public boolean canBuild(UnitType uType, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canBuild_native(pointer, uType, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canBuild(UnitType uType, TilePosition tilePos, boolean checkTargetUnitType, boolean checkCanIssueCommandType) { + return canBuild_native(pointer, uType, tilePos, checkTargetUnitType, checkCanIssueCommandType); + } + + public boolean canBuild(UnitType uType, TilePosition tilePos, boolean checkTargetUnitType) { + return canBuild_native(pointer, uType, tilePos, checkTargetUnitType); + } + + public boolean canBuild(UnitType uType, TilePosition tilePos) { + return canBuild_native(pointer, uType, tilePos); + } + + public boolean canBuild(UnitType uType, TilePosition tilePos, boolean checkTargetUnitType, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canBuild_native(pointer, uType, tilePos, checkTargetUnitType, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canBuildAddon() { + return canBuildAddon_native(pointer); + } + + public boolean canBuildAddon(boolean checkCommandibility) { + return canBuildAddon_native(pointer, checkCommandibility); + } + + public boolean canBuildAddon(UnitType uType, boolean checkCanIssueCommandType) { + return canBuildAddon_native(pointer, uType, checkCanIssueCommandType); + } + + public boolean canBuildAddon(UnitType uType) { + return canBuildAddon_native(pointer, uType); + } + + public boolean canBuildAddon(UnitType uType, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canBuildAddon_native(pointer, uType, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canTrain() { + return canTrain_native(pointer); + } + + public boolean canTrain(boolean checkCommandibility) { + return canTrain_native(pointer, checkCommandibility); + } + + public boolean canTrain(UnitType uType, boolean checkCanIssueCommandType) { + return canTrain_native(pointer, uType, checkCanIssueCommandType); + } + + public boolean canTrain(UnitType uType) { + return canTrain_native(pointer, uType); + } + + public boolean canTrain(UnitType uType, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canTrain_native(pointer, uType, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canMorph() { + return canMorph_native(pointer); + } + + public boolean canMorph(boolean checkCommandibility) { + return canMorph_native(pointer, checkCommandibility); + } + + public boolean canMorph(UnitType uType, boolean checkCanIssueCommandType) { + return canMorph_native(pointer, uType, checkCanIssueCommandType); + } + + public boolean canMorph(UnitType uType) { + return canMorph_native(pointer, uType); + } + + public boolean canMorph(UnitType uType, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canMorph_native(pointer, uType, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canResearch() { + return canResearch_native(pointer); + } + + public boolean canResearch(boolean checkCommandibility) { + return canResearch_native(pointer, checkCommandibility); + } + + public boolean canResearch(TechType type) { + return canResearch_native(pointer, type); + } + + public boolean canResearch(TechType type, boolean checkCanIssueCommandType) { + return canResearch_native(pointer, type, checkCanIssueCommandType); + } + + public boolean canUpgrade() { + return canUpgrade_native(pointer); + } + + public boolean canUpgrade(boolean checkCommandibility) { + return canUpgrade_native(pointer, checkCommandibility); + } + + public boolean canUpgrade(UpgradeType type) { + return canUpgrade_native(pointer, type); + } + + public boolean canUpgrade(UpgradeType type, boolean checkCanIssueCommandType) { + return canUpgrade_native(pointer, type, checkCanIssueCommandType); + } + + public boolean canSetRallyPoint() { + return canSetRallyPoint_native(pointer); + } + + public boolean canSetRallyPoint(boolean checkCommandibility) { + return canSetRallyPoint_native(pointer, checkCommandibility); + } + + public boolean canSetRallyPoint(PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType) { + return canSetRallyPoint_native(pointer, target, checkCanTargetUnit, checkCanIssueCommandType); + } + + public boolean canSetRallyPoint(PositionOrUnit target, boolean checkCanTargetUnit) { + return canSetRallyPoint_native(pointer, target, checkCanTargetUnit); + } + + public boolean canSetRallyPoint(PositionOrUnit target) { + return canSetRallyPoint_native(pointer, target); + } + + public boolean canSetRallyPoint(PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canSetRallyPoint_native(pointer, target, checkCanTargetUnit, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canSetRallyPosition() { + return canSetRallyPosition_native(pointer); + } + + public boolean canSetRallyPosition(boolean checkCommandibility) { + return canSetRallyPosition_native(pointer, checkCommandibility); + } + + public boolean canSetRallyUnit() { + return canSetRallyUnit_native(pointer); + } + + public boolean canSetRallyUnit(boolean checkCommandibility) { + return canSetRallyUnit_native(pointer, checkCommandibility); + } + + public boolean canSetRallyUnit(Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType) { + return canSetRallyUnit_native(pointer, targetUnit, checkCanTargetUnit, checkCanIssueCommandType); + } + + public boolean canSetRallyUnit(Unit targetUnit, boolean checkCanTargetUnit) { + return canSetRallyUnit_native(pointer, targetUnit, checkCanTargetUnit); + } + + public boolean canSetRallyUnit(Unit targetUnit) { + return canSetRallyUnit_native(pointer, targetUnit); + } + + public boolean canSetRallyUnit(Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canSetRallyUnit_native(pointer, targetUnit, checkCanTargetUnit, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canMove() { + return canMove_native(pointer); + } + + public boolean canMove(boolean checkCommandibility) { + return canMove_native(pointer, checkCommandibility); + } + + public boolean canMoveGrouped(boolean checkCommandibilityGrouped) { + return canMoveGrouped_native(pointer, checkCommandibilityGrouped); + } + + public boolean canMoveGrouped() { + return canMoveGrouped_native(pointer); + } + + public boolean canMoveGrouped(boolean checkCommandibilityGrouped, boolean checkCommandibility) { + return canMoveGrouped_native(pointer, checkCommandibilityGrouped, checkCommandibility); + } + + public boolean canPatrol() { + return canPatrol_native(pointer); + } + + public boolean canPatrol(boolean checkCommandibility) { + return canPatrol_native(pointer, checkCommandibility); + } + + public boolean canPatrolGrouped(boolean checkCommandibilityGrouped) { + return canPatrolGrouped_native(pointer, checkCommandibilityGrouped); + } + + public boolean canPatrolGrouped() { + return canPatrolGrouped_native(pointer); + } + + public boolean canPatrolGrouped(boolean checkCommandibilityGrouped, boolean checkCommandibility) { + return canPatrolGrouped_native(pointer, checkCommandibilityGrouped, checkCommandibility); + } + + public boolean canFollow() { + return canFollow_native(pointer); + } + + public boolean canFollow(boolean checkCommandibility) { + return canFollow_native(pointer, checkCommandibility); + } + + public boolean canFollow(Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType) { + return canFollow_native(pointer, targetUnit, checkCanTargetUnit, checkCanIssueCommandType); + } + + public boolean canFollow(Unit targetUnit, boolean checkCanTargetUnit) { + return canFollow_native(pointer, targetUnit, checkCanTargetUnit); + } + + public boolean canFollow(Unit targetUnit) { + return canFollow_native(pointer, targetUnit); + } + + public boolean canFollow(Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canFollow_native(pointer, targetUnit, checkCanTargetUnit, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canGather() { + return canGather_native(pointer); + } + + public boolean canGather(boolean checkCommandibility) { + return canGather_native(pointer, checkCommandibility); + } + + public boolean canGather(Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType) { + return canGather_native(pointer, targetUnit, checkCanTargetUnit, checkCanIssueCommandType); + } + + public boolean canGather(Unit targetUnit, boolean checkCanTargetUnit) { + return canGather_native(pointer, targetUnit, checkCanTargetUnit); + } + + public boolean canGather(Unit targetUnit) { + return canGather_native(pointer, targetUnit); + } + + public boolean canGather(Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canGather_native(pointer, targetUnit, checkCanTargetUnit, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canReturnCargo() { + return canReturnCargo_native(pointer); + } + + public boolean canReturnCargo(boolean checkCommandibility) { + return canReturnCargo_native(pointer, checkCommandibility); + } + + public boolean canHoldPosition() { + return canHoldPosition_native(pointer); + } + + public boolean canHoldPosition(boolean checkCommandibility) { + return canHoldPosition_native(pointer, checkCommandibility); + } + + public boolean canStop() { + return canStop_native(pointer); + } + + public boolean canStop(boolean checkCommandibility) { + return canStop_native(pointer, checkCommandibility); + } + + public boolean canRepair() { + return canRepair_native(pointer); + } + + public boolean canRepair(boolean checkCommandibility) { + return canRepair_native(pointer, checkCommandibility); + } + + public boolean canRepair(Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType) { + return canRepair_native(pointer, targetUnit, checkCanTargetUnit, checkCanIssueCommandType); + } + + public boolean canRepair(Unit targetUnit, boolean checkCanTargetUnit) { + return canRepair_native(pointer, targetUnit, checkCanTargetUnit); + } + + public boolean canRepair(Unit targetUnit) { + return canRepair_native(pointer, targetUnit); + } + + public boolean canRepair(Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canRepair_native(pointer, targetUnit, checkCanTargetUnit, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canBurrow() { + return canBurrow_native(pointer); + } + + public boolean canBurrow(boolean checkCommandibility) { + return canBurrow_native(pointer, checkCommandibility); + } + + public boolean canUnburrow() { + return canUnburrow_native(pointer); + } + + public boolean canUnburrow(boolean checkCommandibility) { + return canUnburrow_native(pointer, checkCommandibility); + } + + public boolean canCloak() { + return canCloak_native(pointer); + } + + public boolean canCloak(boolean checkCommandibility) { + return canCloak_native(pointer, checkCommandibility); + } + + public boolean canDecloak() { + return canDecloak_native(pointer); + } + + public boolean canDecloak(boolean checkCommandibility) { + return canDecloak_native(pointer, checkCommandibility); + } + + public boolean canSiege() { + return canSiege_native(pointer); + } + + public boolean canSiege(boolean checkCommandibility) { + return canSiege_native(pointer, checkCommandibility); + } + + public boolean canUnsiege() { + return canUnsiege_native(pointer); + } + + public boolean canUnsiege(boolean checkCommandibility) { + return canUnsiege_native(pointer, checkCommandibility); + } + + public boolean canLift() { + return canLift_native(pointer); + } + + public boolean canLift(boolean checkCommandibility) { + return canLift_native(pointer, checkCommandibility); + } + + public boolean canLand() { + return canLand_native(pointer); + } + + public boolean canLand(boolean checkCommandibility) { + return canLand_native(pointer, checkCommandibility); + } + + public boolean canLand(TilePosition target, boolean checkCanIssueCommandType) { + return canLand_native(pointer, target, checkCanIssueCommandType); + } + + public boolean canLand(TilePosition target) { + return canLand_native(pointer, target); + } + + public boolean canLand(TilePosition target, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canLand_native(pointer, target, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canLoad() { + return canLoad_native(pointer); + } + + public boolean canLoad(boolean checkCommandibility) { + return canLoad_native(pointer, checkCommandibility); + } + + public boolean canLoad(Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType) { + return canLoad_native(pointer, targetUnit, checkCanTargetUnit, checkCanIssueCommandType); + } + + public boolean canLoad(Unit targetUnit, boolean checkCanTargetUnit) { + return canLoad_native(pointer, targetUnit, checkCanTargetUnit); + } + + public boolean canLoad(Unit targetUnit) { + return canLoad_native(pointer, targetUnit); + } + + public boolean canLoad(Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canLoad_native(pointer, targetUnit, checkCanTargetUnit, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canUnloadWithOrWithoutTarget() { + return canUnloadWithOrWithoutTarget_native(pointer); + } + + public boolean canUnloadWithOrWithoutTarget(boolean checkCommandibility) { + return canUnloadWithOrWithoutTarget_native(pointer, checkCommandibility); + } + + public boolean canUnloadAtPosition(Position targDropPos, boolean checkCanIssueCommandType) { + return canUnloadAtPosition_native(pointer, targDropPos, checkCanIssueCommandType); + } + + public boolean canUnloadAtPosition(Position targDropPos) { + return canUnloadAtPosition_native(pointer, targDropPos); + } + + public boolean canUnloadAtPosition(Position targDropPos, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canUnloadAtPosition_native(pointer, targDropPos, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canUnload() { + return canUnload_native(pointer); + } + + public boolean canUnload(boolean checkCommandibility) { + return canUnload_native(pointer, checkCommandibility); + } + + public boolean canUnload(Unit targetUnit, boolean checkCanTargetUnit, boolean checkPosition, boolean checkCanIssueCommandType) { + return canUnload_native(pointer, targetUnit, checkCanTargetUnit, checkPosition, checkCanIssueCommandType); + } + + public boolean canUnload(Unit targetUnit, boolean checkCanTargetUnit, boolean checkPosition) { + return canUnload_native(pointer, targetUnit, checkCanTargetUnit, checkPosition); + } + + public boolean canUnload(Unit targetUnit, boolean checkCanTargetUnit) { + return canUnload_native(pointer, targetUnit, checkCanTargetUnit); + } + + public boolean canUnload(Unit targetUnit) { + return canUnload_native(pointer, targetUnit); + } + + public boolean canUnload(Unit targetUnit, boolean checkCanTargetUnit, boolean checkPosition, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canUnload_native(pointer, targetUnit, checkCanTargetUnit, checkPosition, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canUnloadAll() { + return canUnloadAll_native(pointer); + } + + public boolean canUnloadAll(boolean checkCommandibility) { + return canUnloadAll_native(pointer, checkCommandibility); + } + + public boolean canUnloadAllPosition() { + return canUnloadAllPosition_native(pointer); + } + + public boolean canUnloadAllPosition(boolean checkCommandibility) { + return canUnloadAllPosition_native(pointer, checkCommandibility); + } + + public boolean canUnloadAllPosition(Position targDropPos, boolean checkCanIssueCommandType) { + return canUnloadAllPosition_native(pointer, targDropPos, checkCanIssueCommandType); + } + + public boolean canUnloadAllPosition(Position targDropPos) { + return canUnloadAllPosition_native(pointer, targDropPos); + } + + public boolean canUnloadAllPosition(Position targDropPos, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canUnloadAllPosition_native(pointer, targDropPos, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canRightClick() { + return canRightClick_native(pointer); + } + + public boolean canRightClick(boolean checkCommandibility) { + return canRightClick_native(pointer, checkCommandibility); + } + + public boolean canRightClick(PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType) { + return canRightClick_native(pointer, target, checkCanTargetUnit, checkCanIssueCommandType); + } + + public boolean canRightClick(PositionOrUnit target, boolean checkCanTargetUnit) { + return canRightClick_native(pointer, target, checkCanTargetUnit); + } + + public boolean canRightClick(PositionOrUnit target) { + return canRightClick_native(pointer, target); + } + + public boolean canRightClick(PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canRightClick_native(pointer, target, checkCanTargetUnit, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canRightClickGrouped(boolean checkCommandibilityGrouped) { + return canRightClickGrouped_native(pointer, checkCommandibilityGrouped); + } + + public boolean canRightClickGrouped() { + return canRightClickGrouped_native(pointer); + } + + public boolean canRightClickGrouped(boolean checkCommandibilityGrouped, boolean checkCommandibility) { + return canRightClickGrouped_native(pointer, checkCommandibilityGrouped, checkCommandibility); + } + + public boolean canRightClickGrouped(PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibilityGrouped) { + return canRightClickGrouped_native(pointer, target, checkCanTargetUnit, checkCanIssueCommandType, checkCommandibilityGrouped); + } + + public boolean canRightClickGrouped(PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType) { + return canRightClickGrouped_native(pointer, target, checkCanTargetUnit, checkCanIssueCommandType); + } + + public boolean canRightClickGrouped(PositionOrUnit target, boolean checkCanTargetUnit) { + return canRightClickGrouped_native(pointer, target, checkCanTargetUnit); + } + + public boolean canRightClickGrouped(PositionOrUnit target) { + return canRightClickGrouped_native(pointer, target); + } + + public boolean canRightClickGrouped(PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibilityGrouped, boolean checkCommandibility) { + return canRightClickGrouped_native(pointer, target, checkCanTargetUnit, checkCanIssueCommandType, checkCommandibilityGrouped, checkCommandibility); + } + + public boolean canRightClickPosition() { + return canRightClickPosition_native(pointer); + } + + public boolean canRightClickPosition(boolean checkCommandibility) { + return canRightClickPosition_native(pointer, checkCommandibility); + } + + public boolean canRightClickPositionGrouped(boolean checkCommandibilityGrouped) { + return canRightClickPositionGrouped_native(pointer, checkCommandibilityGrouped); + } + + public boolean canRightClickPositionGrouped() { + return canRightClickPositionGrouped_native(pointer); + } + + public boolean canRightClickPositionGrouped(boolean checkCommandibilityGrouped, boolean checkCommandibility) { + return canRightClickPositionGrouped_native(pointer, checkCommandibilityGrouped, checkCommandibility); + } + + public boolean canRightClickUnit() { + return canRightClickUnit_native(pointer); + } + + public boolean canRightClickUnit(boolean checkCommandibility) { + return canRightClickUnit_native(pointer, checkCommandibility); + } + + public boolean canRightClickUnit(Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType) { + return canRightClickUnit_native(pointer, targetUnit, checkCanTargetUnit, checkCanIssueCommandType); + } + + public boolean canRightClickUnit(Unit targetUnit, boolean checkCanTargetUnit) { + return canRightClickUnit_native(pointer, targetUnit, checkCanTargetUnit); + } + + public boolean canRightClickUnit(Unit targetUnit) { + return canRightClickUnit_native(pointer, targetUnit); + } + + public boolean canRightClickUnit(Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canRightClickUnit_native(pointer, targetUnit, checkCanTargetUnit, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canRightClickUnitGrouped(boolean checkCommandibilityGrouped) { + return canRightClickUnitGrouped_native(pointer, checkCommandibilityGrouped); + } + + public boolean canRightClickUnitGrouped() { + return canRightClickUnitGrouped_native(pointer); + } + + public boolean canRightClickUnitGrouped(boolean checkCommandibilityGrouped, boolean checkCommandibility) { + return canRightClickUnitGrouped_native(pointer, checkCommandibilityGrouped, checkCommandibility); + } + + public boolean canRightClickUnitGrouped(Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibilityGrouped) { + return canRightClickUnitGrouped_native(pointer, targetUnit, checkCanTargetUnit, checkCanIssueCommandType, checkCommandibilityGrouped); + } + + public boolean canRightClickUnitGrouped(Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType) { + return canRightClickUnitGrouped_native(pointer, targetUnit, checkCanTargetUnit, checkCanIssueCommandType); + } + + public boolean canRightClickUnitGrouped(Unit targetUnit, boolean checkCanTargetUnit) { + return canRightClickUnitGrouped_native(pointer, targetUnit, checkCanTargetUnit); + } + + public boolean canRightClickUnitGrouped(Unit targetUnit) { + return canRightClickUnitGrouped_native(pointer, targetUnit); + } + + public boolean canRightClickUnitGrouped(Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibilityGrouped, boolean checkCommandibility) { + return canRightClickUnitGrouped_native(pointer, targetUnit, checkCanTargetUnit, checkCanIssueCommandType, checkCommandibilityGrouped, checkCommandibility); + } + + public boolean canHaltConstruction() { + return canHaltConstruction_native(pointer); + } + + public boolean canHaltConstruction(boolean checkCommandibility) { + return canHaltConstruction_native(pointer, checkCommandibility); + } + + public boolean canCancelConstruction() { + return canCancelConstruction_native(pointer); + } + + public boolean canCancelConstruction(boolean checkCommandibility) { + return canCancelConstruction_native(pointer, checkCommandibility); + } + + public boolean canCancelAddon() { + return canCancelAddon_native(pointer); + } + + public boolean canCancelAddon(boolean checkCommandibility) { + return canCancelAddon_native(pointer, checkCommandibility); + } + + public boolean canCancelTrain() { + return canCancelTrain_native(pointer); + } + + public boolean canCancelTrain(boolean checkCommandibility) { + return canCancelTrain_native(pointer, checkCommandibility); + } + + public boolean canCancelTrainSlot() { + return canCancelTrainSlot_native(pointer); + } + + public boolean canCancelTrainSlot(boolean checkCommandibility) { + return canCancelTrainSlot_native(pointer, checkCommandibility); + } + + public boolean canCancelTrainSlot(int slot, boolean checkCanIssueCommandType) { + return canCancelTrainSlot_native(pointer, slot, checkCanIssueCommandType); + } + + public boolean canCancelTrainSlot(int slot) { + return canCancelTrainSlot_native(pointer, slot); + } + + public boolean canCancelTrainSlot(int slot, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canCancelTrainSlot_native(pointer, slot, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canCancelMorph() { + return canCancelMorph_native(pointer); + } + + public boolean canCancelMorph(boolean checkCommandibility) { + return canCancelMorph_native(pointer, checkCommandibility); + } + + public boolean canCancelResearch() { + return canCancelResearch_native(pointer); + } + + public boolean canCancelResearch(boolean checkCommandibility) { + return canCancelResearch_native(pointer, checkCommandibility); + } + + public boolean canCancelUpgrade() { + return canCancelUpgrade_native(pointer); + } + + public boolean canCancelUpgrade(boolean checkCommandibility) { + return canCancelUpgrade_native(pointer, checkCommandibility); + } + + public boolean canUseTechWithOrWithoutTarget() { + return canUseTechWithOrWithoutTarget_native(pointer); + } + + public boolean canUseTechWithOrWithoutTarget(boolean checkCommandibility) { + return canUseTechWithOrWithoutTarget_native(pointer, checkCommandibility); + } + + public boolean canUseTechWithOrWithoutTarget(TechType tech, boolean checkCanIssueCommandType) { + return canUseTechWithOrWithoutTarget_native(pointer, tech, checkCanIssueCommandType); + } + + public boolean canUseTechWithOrWithoutTarget(TechType tech) { + return canUseTechWithOrWithoutTarget_native(pointer, tech); + } + + public boolean canUseTechWithOrWithoutTarget(TechType tech, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canUseTechWithOrWithoutTarget_native(pointer, tech, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canUseTech(TechType tech, PositionOrUnit target, boolean checkCanTargetUnit, boolean checkTargetsType, boolean checkCanIssueCommandType) { + return canUseTech_native(pointer, tech, target, checkCanTargetUnit, checkTargetsType, checkCanIssueCommandType); + } + + public boolean canUseTech(TechType tech, PositionOrUnit target, boolean checkCanTargetUnit, boolean checkTargetsType) { + return canUseTech_native(pointer, tech, target, checkCanTargetUnit, checkTargetsType); + } + + public boolean canUseTech(TechType tech, PositionOrUnit target, boolean checkCanTargetUnit) { + return canUseTech_native(pointer, tech, target, checkCanTargetUnit); + } + + public boolean canUseTech(TechType tech, PositionOrUnit target) { + return canUseTech_native(pointer, tech, target); + } + + public boolean canUseTech(TechType tech) { + return canUseTech_native(pointer, tech); + } + + public boolean canUseTech(TechType tech, PositionOrUnit target, boolean checkCanTargetUnit, boolean checkTargetsType, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canUseTech_native(pointer, tech, target, checkCanTargetUnit, checkTargetsType, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canUseTechWithoutTarget(TechType tech, boolean checkCanIssueCommandType) { + return canUseTechWithoutTarget_native(pointer, tech, checkCanIssueCommandType); + } + + public boolean canUseTechWithoutTarget(TechType tech) { + return canUseTechWithoutTarget_native(pointer, tech); + } + + public boolean canUseTechWithoutTarget(TechType tech, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canUseTechWithoutTarget_native(pointer, tech, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canUseTechUnit(TechType tech, boolean checkCanIssueCommandType) { + return canUseTechUnit_native(pointer, tech, checkCanIssueCommandType); + } + + public boolean canUseTechUnit(TechType tech) { + return canUseTechUnit_native(pointer, tech); + } + + public boolean canUseTechUnit(TechType tech, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canUseTechUnit_native(pointer, tech, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canUseTechUnit(TechType tech, Unit targetUnit, boolean checkCanTargetUnit, boolean checkTargetsUnits, boolean checkCanIssueCommandType) { + return canUseTechUnit_native(pointer, tech, targetUnit, checkCanTargetUnit, checkTargetsUnits, checkCanIssueCommandType); + } + + public boolean canUseTechUnit(TechType tech, Unit targetUnit, boolean checkCanTargetUnit, boolean checkTargetsUnits) { + return canUseTechUnit_native(pointer, tech, targetUnit, checkCanTargetUnit, checkTargetsUnits); + } + + public boolean canUseTechUnit(TechType tech, Unit targetUnit, boolean checkCanTargetUnit) { + return canUseTechUnit_native(pointer, tech, targetUnit, checkCanTargetUnit); + } + + public boolean canUseTechUnit(TechType tech, Unit targetUnit) { + return canUseTechUnit_native(pointer, tech, targetUnit); + } + + public boolean canUseTechUnit(TechType tech, Unit targetUnit, boolean checkCanTargetUnit, boolean checkTargetsUnits, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canUseTechUnit_native(pointer, tech, targetUnit, checkCanTargetUnit, checkTargetsUnits, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canUseTechPosition(TechType tech, boolean checkCanIssueCommandType) { + return canUseTechPosition_native(pointer, tech, checkCanIssueCommandType); + } + + public boolean canUseTechPosition(TechType tech) { + return canUseTechPosition_native(pointer, tech); + } + + public boolean canUseTechPosition(TechType tech, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canUseTechPosition_native(pointer, tech, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canUseTechPosition(TechType tech, Position target, boolean checkTargetsPositions, boolean checkCanIssueCommandType) { + return canUseTechPosition_native(pointer, tech, target, checkTargetsPositions, checkCanIssueCommandType); + } + + public boolean canUseTechPosition(TechType tech, Position target, boolean checkTargetsPositions) { + return canUseTechPosition_native(pointer, tech, target, checkTargetsPositions); + } + + public boolean canUseTechPosition(TechType tech, Position target) { + return canUseTechPosition_native(pointer, tech, target); + } + + public boolean canUseTechPosition(TechType tech, Position target, boolean checkTargetsPositions, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canUseTechPosition_native(pointer, tech, target, checkTargetsPositions, checkCanIssueCommandType, checkCommandibility); + } + + public boolean canPlaceCOP() { + return canPlaceCOP_native(pointer); + } + + public boolean canPlaceCOP(boolean checkCommandibility) { + return canPlaceCOP_native(pointer, checkCommandibility); + } + + public boolean canPlaceCOP(TilePosition target, boolean checkCanIssueCommandType) { + return canPlaceCOP_native(pointer, target, checkCanIssueCommandType); + } + + public boolean canPlaceCOP(TilePosition target) { + return canPlaceCOP_native(pointer, target); + } + + public boolean canPlaceCOP(TilePosition target, boolean checkCanIssueCommandType, boolean checkCommandibility) { + return canPlaceCOP_native(pointer, target, checkCanIssueCommandType, checkCommandibility); + } + + + private static Map instances = new HashMap(); + + private Unit(long pointer) { + this.pointer = pointer; + } + + private static Unit get(long pointer) { + Unit instance = instances.get(pointer); + if (instance == null ) { + instance = new Unit(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + private native int getID_native(long pointer); + + private native boolean exists_native(long pointer); + + private native int getReplayID_native(long pointer); + + private native Player getPlayer_native(long pointer); + + private native UnitType getType_native(long pointer); + + private native Position getPosition_native(long pointer); + + private native TilePosition getTilePosition_native(long pointer); + + private native double getAngle_native(long pointer); + + private native double getVelocityX_native(long pointer); + + private native double getVelocityY_native(long pointer); + + private native Region getRegion_native(long pointer); + + private native int getLeft_native(long pointer); + + private native int getTop_native(long pointer); + + private native int getRight_native(long pointer); + + private native int getBottom_native(long pointer); + + private native int getHitPoints_native(long pointer); + + private native int getShields_native(long pointer); + + private native int getEnergy_native(long pointer); + + private native int getResources_native(long pointer); + + private native int getResourceGroup_native(long pointer); + + private native int getDistance_native(long pointer, PositionOrUnit target); + + private native boolean hasPath_native(long pointer, PositionOrUnit target); + + private native int getLastCommandFrame_native(long pointer); + + private native Player getLastAttackingPlayer_native(long pointer); + + private native UnitType getInitialType_native(long pointer); + + private native Position getInitialPosition_native(long pointer); + + private native TilePosition getInitialTilePosition_native(long pointer); + + private native int getInitialHitPoints_native(long pointer); + + private native int getInitialResources_native(long pointer); + + private native int getKillCount_native(long pointer); + + private native int getAcidSporeCount_native(long pointer); + + private native int getInterceptorCount_native(long pointer); + + private native int getScarabCount_native(long pointer); + + private native int getSpiderMineCount_native(long pointer); + + private native int getGroundWeaponCooldown_native(long pointer); + + private native int getAirWeaponCooldown_native(long pointer); + + private native int getSpellCooldown_native(long pointer); + + private native int getDefenseMatrixPoints_native(long pointer); + + private native int getDefenseMatrixTimer_native(long pointer); + + private native int getEnsnareTimer_native(long pointer); + + private native int getIrradiateTimer_native(long pointer); + + private native int getLockdownTimer_native(long pointer); + + private native int getMaelstromTimer_native(long pointer); + + private native int getOrderTimer_native(long pointer); + + private native int getPlagueTimer_native(long pointer); + + private native int getRemoveTimer_native(long pointer); + + private native int getStasisTimer_native(long pointer); + + private native int getStimTimer_native(long pointer); + + private native UnitType getBuildType_native(long pointer); + + private native TechType getTech_native(long pointer); + + private native UpgradeType getUpgrade_native(long pointer); + + private native int getRemainingBuildTime_native(long pointer); + + private native int getRemainingTrainTime_native(long pointer); + + private native int getRemainingResearchTime_native(long pointer); + + private native int getRemainingUpgradeTime_native(long pointer); + + private native Unit getBuildUnit_native(long pointer); + + private native Unit getTarget_native(long pointer); + + private native Position getTargetPosition_native(long pointer); + + private native Order getOrder_native(long pointer); + + private native Order getSecondaryOrder_native(long pointer); + + private native Unit getOrderTarget_native(long pointer); + + private native Position getOrderTargetPosition_native(long pointer); + + private native Position getRallyPosition_native(long pointer); + + private native Unit getRallyUnit_native(long pointer); + + private native Unit getAddon_native(long pointer); + + private native Unit getNydusExit_native(long pointer); + + private native Unit getPowerUp_native(long pointer); + + private native Unit getTransport_native(long pointer); + + private native Unitset getLoadedUnits_native(long pointer); + + private native int getSpaceRemaining_native(long pointer); + + private native Unit getCarrier_native(long pointer); + + private native Unitset getInterceptors_native(long pointer); + + private native Unit getHatchery_native(long pointer); + + private native Unitset getLarva_native(long pointer); + + private native Unitset getUnitsInRadius_native(long pointer, int radius, UnitFilter pred); + + private native Unitset getUnitsInWeaponRange_native(long pointer, WeaponType weapon, UnitFilter pred); + + private native Unit getClosestUnit_native(long pointer, UnitFilter pred); + + private native Unit getClosestUnit_native(long pointer, UnitFilter pred, int radius); + + private native boolean hasNuke_native(long pointer); + + private native boolean isAccelerating_native(long pointer); + + private native boolean isAttacking_native(long pointer); + + private native boolean isAttackFrame_native(long pointer); + + private native boolean isBeingConstructed_native(long pointer); + + private native boolean isBeingGathered_native(long pointer); + + private native boolean isBeingHealed_native(long pointer); + + private native boolean isBlind_native(long pointer); + + private native boolean isBraking_native(long pointer); + + private native boolean isBurrowed_native(long pointer); + + private native boolean isCarryingGas_native(long pointer); + + private native boolean isCarryingMinerals_native(long pointer); + + private native boolean isCloaked_native(long pointer); + + private native boolean isCompleted_native(long pointer); + + private native boolean isConstructing_native(long pointer); + + private native boolean isDefenseMatrixed_native(long pointer); + + private native boolean isDetected_native(long pointer); + + private native boolean isEnsnared_native(long pointer); + + private native boolean isFlying_native(long pointer); + + private native boolean isFollowing_native(long pointer); + + private native boolean isGatheringGas_native(long pointer); + + private native boolean isGatheringMinerals_native(long pointer); + + private native boolean isHallucination_native(long pointer); + + private native boolean isHoldingPosition_native(long pointer); + + private native boolean isIdle_native(long pointer); + + private native boolean isInterruptible_native(long pointer); + + private native boolean isInvincible_native(long pointer); + + private native boolean isInWeaponRange_native(long pointer, Unit target); + + private native boolean isIrradiated_native(long pointer); + + private native boolean isLifted_native(long pointer); + + private native boolean isLoaded_native(long pointer); + + private native boolean isLockedDown_native(long pointer); + + private native boolean isMaelstrommed_native(long pointer); + + private native boolean isMorphing_native(long pointer); + + private native boolean isMoving_native(long pointer); + + private native boolean isParasited_native(long pointer); + + private native boolean isPatrolling_native(long pointer); + + private native boolean isPlagued_native(long pointer); + + private native boolean isRepairing_native(long pointer); + + private native boolean isResearching_native(long pointer); + + private native boolean isSelected_native(long pointer); + + private native boolean isSieged_native(long pointer); + + private native boolean isStartingAttack_native(long pointer); + + private native boolean isStasised_native(long pointer); + + private native boolean isStimmed_native(long pointer); + + private native boolean isStuck_native(long pointer); + + private native boolean isTraining_native(long pointer); + + private native boolean isUnderAttack_native(long pointer); + + private native boolean isUnderDarkSwarm_native(long pointer); + + private native boolean isUnderDisruptionWeb_native(long pointer); + + private native boolean isUnderStorm_native(long pointer); + + private native boolean isPowered_native(long pointer); + + private native boolean isUpgrading_native(long pointer); + + private native boolean isVisible_native(long pointer); + + private native boolean isVisible_native(long pointer, Player player); + + private native boolean isTargetable_native(long pointer); + + private native boolean issueCommand_native(long pointer, UnitCommand command); + + private native boolean attack_native(long pointer, PositionOrUnit target); + + private native boolean attack_native(long pointer, PositionOrUnit target, boolean shiftQueueCommand); + + private native boolean build_native(long pointer, UnitType type); + + private native boolean build_native(long pointer, UnitType type, TilePosition target); + + private native boolean buildAddon_native(long pointer, UnitType type); + + private native boolean train_native(long pointer); + + private native boolean train_native(long pointer, UnitType type); + + private native boolean morph_native(long pointer, UnitType type); + + private native boolean research_native(long pointer, TechType tech); + + private native boolean upgrade_native(long pointer, UpgradeType upgrade); + + private native boolean setRallyPoint_native(long pointer, PositionOrUnit target); + + private native boolean move_native(long pointer, Position target); + + private native boolean move_native(long pointer, Position target, boolean shiftQueueCommand); + + private native boolean patrol_native(long pointer, Position target); + + private native boolean patrol_native(long pointer, Position target, boolean shiftQueueCommand); + + private native boolean holdPosition_native(long pointer); + + private native boolean holdPosition_native(long pointer, boolean shiftQueueCommand); + + private native boolean stop_native(long pointer); + + private native boolean stop_native(long pointer, boolean shiftQueueCommand); + + private native boolean follow_native(long pointer, Unit target); + + private native boolean follow_native(long pointer, Unit target, boolean shiftQueueCommand); + + private native boolean gather_native(long pointer, Unit target); + + private native boolean gather_native(long pointer, Unit target, boolean shiftQueueCommand); + + private native boolean returnCargo_native(long pointer); + + private native boolean returnCargo_native(long pointer, boolean shiftQueueCommand); + + private native boolean repair_native(long pointer, Unit target); + + private native boolean repair_native(long pointer, Unit target, boolean shiftQueueCommand); + + private native boolean burrow_native(long pointer); + + private native boolean unburrow_native(long pointer); + + private native boolean cloak_native(long pointer); + + private native boolean decloak_native(long pointer); + + private native boolean siege_native(long pointer); + + private native boolean unsiege_native(long pointer); + + private native boolean lift_native(long pointer); + + private native boolean land_native(long pointer, TilePosition target); + + private native boolean load_native(long pointer, Unit target); + + private native boolean load_native(long pointer, Unit target, boolean shiftQueueCommand); + + private native boolean unload_native(long pointer, Unit target); + + private native boolean unloadAll_native(long pointer); + + private native boolean unloadAll_native(long pointer, boolean shiftQueueCommand); + + private native boolean unloadAll_native(long pointer, Position target); + + private native boolean unloadAll_native(long pointer, Position target, boolean shiftQueueCommand); + + private native boolean rightClick_native(long pointer, PositionOrUnit target); + + private native boolean rightClick_native(long pointer, PositionOrUnit target, boolean shiftQueueCommand); + + private native boolean haltConstruction_native(long pointer); + + private native boolean cancelConstruction_native(long pointer); + + private native boolean cancelAddon_native(long pointer); + + private native boolean cancelTrain_native(long pointer); + + private native boolean cancelTrain_native(long pointer, int slot); + + private native boolean cancelMorph_native(long pointer); + + private native boolean cancelResearch_native(long pointer); + + private native boolean cancelUpgrade_native(long pointer); + + private native boolean useTech_native(long pointer, TechType tech); + + private native boolean useTech_native(long pointer, TechType tech, PositionOrUnit target); + + private native boolean placeCOP_native(long pointer, TilePosition target); + + private native boolean canIssueCommand_native(long pointer, UnitCommand command, boolean checkCanUseTechPositionOnPositions, boolean checkCanUseTechUnitOnUnits, boolean checkCanBuildUnitType, boolean checkCanTargetUnit, boolean checkCanIssueCommandType); + + private native boolean canIssueCommand_native(long pointer, UnitCommand command, boolean checkCanUseTechPositionOnPositions, boolean checkCanUseTechUnitOnUnits, boolean checkCanBuildUnitType, boolean checkCanTargetUnit); + + private native boolean canIssueCommand_native(long pointer, UnitCommand command, boolean checkCanUseTechPositionOnPositions, boolean checkCanUseTechUnitOnUnits, boolean checkCanBuildUnitType); + + private native boolean canIssueCommand_native(long pointer, UnitCommand command, boolean checkCanUseTechPositionOnPositions, boolean checkCanUseTechUnitOnUnits); + + private native boolean canIssueCommand_native(long pointer, UnitCommand command, boolean checkCanUseTechPositionOnPositions); + + private native boolean canIssueCommand_native(long pointer, UnitCommand command); + + private native boolean canIssueCommand_native(long pointer, UnitCommand command, boolean checkCanUseTechPositionOnPositions, boolean checkCanUseTechUnitOnUnits, boolean checkCanBuildUnitType, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canIssueCommandGrouped_native(long pointer, UnitCommand command, boolean checkCanUseTechPositionOnPositions, boolean checkCanUseTechUnitOnUnits, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibilityGrouped); + + private native boolean canIssueCommandGrouped_native(long pointer, UnitCommand command, boolean checkCanUseTechPositionOnPositions, boolean checkCanUseTechUnitOnUnits, boolean checkCanTargetUnit, boolean checkCanIssueCommandType); + + private native boolean canIssueCommandGrouped_native(long pointer, UnitCommand command, boolean checkCanUseTechPositionOnPositions, boolean checkCanUseTechUnitOnUnits, boolean checkCanTargetUnit); + + private native boolean canIssueCommandGrouped_native(long pointer, UnitCommand command, boolean checkCanUseTechPositionOnPositions, boolean checkCanUseTechUnitOnUnits); + + private native boolean canIssueCommandGrouped_native(long pointer, UnitCommand command, boolean checkCanUseTechPositionOnPositions); + + private native boolean canIssueCommandGrouped_native(long pointer, UnitCommand command); + + private native boolean canIssueCommandGrouped_native(long pointer, UnitCommand command, boolean checkCanUseTechPositionOnPositions, boolean checkCanUseTechUnitOnUnits, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibilityGrouped, boolean checkCommandibility); + + private native boolean canCommand_native(long pointer); + + private native boolean canCommandGrouped_native(long pointer); + + private native boolean canCommandGrouped_native(long pointer, boolean checkCommandibility); + + private native boolean canIssueCommandType_native(long pointer, UnitCommandType ct); + + private native boolean canIssueCommandType_native(long pointer, UnitCommandType ct, boolean checkCommandibility); + + private native boolean canIssueCommandTypeGrouped_native(long pointer, UnitCommandType ct, boolean checkCommandibilityGrouped); + + private native boolean canIssueCommandTypeGrouped_native(long pointer, UnitCommandType ct); + + private native boolean canIssueCommandTypeGrouped_native(long pointer, UnitCommandType ct, boolean checkCommandibilityGrouped, boolean checkCommandibility); + + private native boolean canTargetUnit_native(long pointer, Unit targetUnit); + + private native boolean canTargetUnit_native(long pointer, Unit targetUnit, boolean checkCommandibility); + + private native boolean canAttack_native(long pointer); + + private native boolean canAttack_native(long pointer, boolean checkCommandibility); + + private native boolean canAttack_native(long pointer, PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType); + + private native boolean canAttack_native(long pointer, PositionOrUnit target, boolean checkCanTargetUnit); + + private native boolean canAttack_native(long pointer, PositionOrUnit target); + + private native boolean canAttack_native(long pointer, PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canAttackGrouped_native(long pointer, boolean checkCommandibilityGrouped); + + private native boolean canAttackGrouped_native(long pointer); + + private native boolean canAttackGrouped_native(long pointer, boolean checkCommandibilityGrouped, boolean checkCommandibility); + + private native boolean canAttackGrouped_native(long pointer, PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibilityGrouped); + + private native boolean canAttackGrouped_native(long pointer, PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType); + + private native boolean canAttackGrouped_native(long pointer, PositionOrUnit target, boolean checkCanTargetUnit); + + private native boolean canAttackGrouped_native(long pointer, PositionOrUnit target); + + private native boolean canAttackGrouped_native(long pointer, PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibilityGrouped, boolean checkCommandibility); + + private native boolean canAttackMove_native(long pointer); + + private native boolean canAttackMove_native(long pointer, boolean checkCommandibility); + + private native boolean canAttackMoveGrouped_native(long pointer, boolean checkCommandibilityGrouped); + + private native boolean canAttackMoveGrouped_native(long pointer); + + private native boolean canAttackMoveGrouped_native(long pointer, boolean checkCommandibilityGrouped, boolean checkCommandibility); + + private native boolean canAttackUnit_native(long pointer); + + private native boolean canAttackUnit_native(long pointer, boolean checkCommandibility); + + private native boolean canAttackUnit_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType); + + private native boolean canAttackUnit_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit); + + private native boolean canAttackUnit_native(long pointer, Unit targetUnit); + + private native boolean canAttackUnit_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canAttackUnitGrouped_native(long pointer, boolean checkCommandibilityGrouped); + + private native boolean canAttackUnitGrouped_native(long pointer); + + private native boolean canAttackUnitGrouped_native(long pointer, boolean checkCommandibilityGrouped, boolean checkCommandibility); + + private native boolean canAttackUnitGrouped_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibilityGrouped); + + private native boolean canAttackUnitGrouped_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType); + + private native boolean canAttackUnitGrouped_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit); + + private native boolean canAttackUnitGrouped_native(long pointer, Unit targetUnit); + + private native boolean canAttackUnitGrouped_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibilityGrouped, boolean checkCommandibility); + + private native boolean canBuild_native(long pointer); + + private native boolean canBuild_native(long pointer, boolean checkCommandibility); + + private native boolean canBuild_native(long pointer, UnitType uType, boolean checkCanIssueCommandType); + + private native boolean canBuild_native(long pointer, UnitType uType); + + private native boolean canBuild_native(long pointer, UnitType uType, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canBuild_native(long pointer, UnitType uType, TilePosition tilePos, boolean checkTargetUnitType, boolean checkCanIssueCommandType); + + private native boolean canBuild_native(long pointer, UnitType uType, TilePosition tilePos, boolean checkTargetUnitType); + + private native boolean canBuild_native(long pointer, UnitType uType, TilePosition tilePos); + + private native boolean canBuild_native(long pointer, UnitType uType, TilePosition tilePos, boolean checkTargetUnitType, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canBuildAddon_native(long pointer); + + private native boolean canBuildAddon_native(long pointer, boolean checkCommandibility); + + private native boolean canBuildAddon_native(long pointer, UnitType uType, boolean checkCanIssueCommandType); + + private native boolean canBuildAddon_native(long pointer, UnitType uType); + + private native boolean canBuildAddon_native(long pointer, UnitType uType, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canTrain_native(long pointer); + + private native boolean canTrain_native(long pointer, boolean checkCommandibility); + + private native boolean canTrain_native(long pointer, UnitType uType, boolean checkCanIssueCommandType); + + private native boolean canTrain_native(long pointer, UnitType uType); + + private native boolean canTrain_native(long pointer, UnitType uType, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canMorph_native(long pointer); + + private native boolean canMorph_native(long pointer, boolean checkCommandibility); + + private native boolean canMorph_native(long pointer, UnitType uType, boolean checkCanIssueCommandType); + + private native boolean canMorph_native(long pointer, UnitType uType); + + private native boolean canMorph_native(long pointer, UnitType uType, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canResearch_native(long pointer); + + private native boolean canResearch_native(long pointer, boolean checkCommandibility); + + private native boolean canResearch_native(long pointer, TechType type); + + private native boolean canResearch_native(long pointer, TechType type, boolean checkCanIssueCommandType); + + private native boolean canUpgrade_native(long pointer); + + private native boolean canUpgrade_native(long pointer, boolean checkCommandibility); + + private native boolean canUpgrade_native(long pointer, UpgradeType type); + + private native boolean canUpgrade_native(long pointer, UpgradeType type, boolean checkCanIssueCommandType); + + private native boolean canSetRallyPoint_native(long pointer); + + private native boolean canSetRallyPoint_native(long pointer, boolean checkCommandibility); + + private native boolean canSetRallyPoint_native(long pointer, PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType); + + private native boolean canSetRallyPoint_native(long pointer, PositionOrUnit target, boolean checkCanTargetUnit); + + private native boolean canSetRallyPoint_native(long pointer, PositionOrUnit target); + + private native boolean canSetRallyPoint_native(long pointer, PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canSetRallyPosition_native(long pointer); + + private native boolean canSetRallyPosition_native(long pointer, boolean checkCommandibility); + + private native boolean canSetRallyUnit_native(long pointer); + + private native boolean canSetRallyUnit_native(long pointer, boolean checkCommandibility); + + private native boolean canSetRallyUnit_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType); + + private native boolean canSetRallyUnit_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit); + + private native boolean canSetRallyUnit_native(long pointer, Unit targetUnit); + + private native boolean canSetRallyUnit_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canMove_native(long pointer); + + private native boolean canMove_native(long pointer, boolean checkCommandibility); + + private native boolean canMoveGrouped_native(long pointer, boolean checkCommandibilityGrouped); + + private native boolean canMoveGrouped_native(long pointer); + + private native boolean canMoveGrouped_native(long pointer, boolean checkCommandibilityGrouped, boolean checkCommandibility); + + private native boolean canPatrol_native(long pointer); + + private native boolean canPatrol_native(long pointer, boolean checkCommandibility); + + private native boolean canPatrolGrouped_native(long pointer, boolean checkCommandibilityGrouped); + + private native boolean canPatrolGrouped_native(long pointer); + + private native boolean canPatrolGrouped_native(long pointer, boolean checkCommandibilityGrouped, boolean checkCommandibility); + + private native boolean canFollow_native(long pointer); + + private native boolean canFollow_native(long pointer, boolean checkCommandibility); + + private native boolean canFollow_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType); + + private native boolean canFollow_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit); + + private native boolean canFollow_native(long pointer, Unit targetUnit); + + private native boolean canFollow_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canGather_native(long pointer); + + private native boolean canGather_native(long pointer, boolean checkCommandibility); + + private native boolean canGather_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType); + + private native boolean canGather_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit); + + private native boolean canGather_native(long pointer, Unit targetUnit); + + private native boolean canGather_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canReturnCargo_native(long pointer); + + private native boolean canReturnCargo_native(long pointer, boolean checkCommandibility); + + private native boolean canHoldPosition_native(long pointer); + + private native boolean canHoldPosition_native(long pointer, boolean checkCommandibility); + + private native boolean canStop_native(long pointer); + + private native boolean canStop_native(long pointer, boolean checkCommandibility); + + private native boolean canRepair_native(long pointer); + + private native boolean canRepair_native(long pointer, boolean checkCommandibility); + + private native boolean canRepair_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType); + + private native boolean canRepair_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit); + + private native boolean canRepair_native(long pointer, Unit targetUnit); + + private native boolean canRepair_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canBurrow_native(long pointer); + + private native boolean canBurrow_native(long pointer, boolean checkCommandibility); + + private native boolean canUnburrow_native(long pointer); + + private native boolean canUnburrow_native(long pointer, boolean checkCommandibility); + + private native boolean canCloak_native(long pointer); + + private native boolean canCloak_native(long pointer, boolean checkCommandibility); + + private native boolean canDecloak_native(long pointer); + + private native boolean canDecloak_native(long pointer, boolean checkCommandibility); + + private native boolean canSiege_native(long pointer); + + private native boolean canSiege_native(long pointer, boolean checkCommandibility); + + private native boolean canUnsiege_native(long pointer); + + private native boolean canUnsiege_native(long pointer, boolean checkCommandibility); + + private native boolean canLift_native(long pointer); + + private native boolean canLift_native(long pointer, boolean checkCommandibility); + + private native boolean canLand_native(long pointer); + + private native boolean canLand_native(long pointer, boolean checkCommandibility); + + private native boolean canLand_native(long pointer, TilePosition target, boolean checkCanIssueCommandType); + + private native boolean canLand_native(long pointer, TilePosition target); + + private native boolean canLand_native(long pointer, TilePosition target, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canLoad_native(long pointer); + + private native boolean canLoad_native(long pointer, boolean checkCommandibility); + + private native boolean canLoad_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType); + + private native boolean canLoad_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit); + + private native boolean canLoad_native(long pointer, Unit targetUnit); + + private native boolean canLoad_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canUnloadWithOrWithoutTarget_native(long pointer); + + private native boolean canUnloadWithOrWithoutTarget_native(long pointer, boolean checkCommandibility); + + private native boolean canUnloadAtPosition_native(long pointer, Position targDropPos, boolean checkCanIssueCommandType); + + private native boolean canUnloadAtPosition_native(long pointer, Position targDropPos); + + private native boolean canUnloadAtPosition_native(long pointer, Position targDropPos, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canUnload_native(long pointer); + + private native boolean canUnload_native(long pointer, boolean checkCommandibility); + + private native boolean canUnload_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkPosition, boolean checkCanIssueCommandType); + + private native boolean canUnload_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkPosition); + + private native boolean canUnload_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit); + + private native boolean canUnload_native(long pointer, Unit targetUnit); + + private native boolean canUnload_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkPosition, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canUnloadAll_native(long pointer); + + private native boolean canUnloadAll_native(long pointer, boolean checkCommandibility); + + private native boolean canUnloadAllPosition_native(long pointer); + + private native boolean canUnloadAllPosition_native(long pointer, boolean checkCommandibility); + + private native boolean canUnloadAllPosition_native(long pointer, Position targDropPos, boolean checkCanIssueCommandType); + + private native boolean canUnloadAllPosition_native(long pointer, Position targDropPos); + + private native boolean canUnloadAllPosition_native(long pointer, Position targDropPos, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canRightClick_native(long pointer); + + private native boolean canRightClick_native(long pointer, boolean checkCommandibility); + + private native boolean canRightClick_native(long pointer, PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType); + + private native boolean canRightClick_native(long pointer, PositionOrUnit target, boolean checkCanTargetUnit); + + private native boolean canRightClick_native(long pointer, PositionOrUnit target); + + private native boolean canRightClick_native(long pointer, PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canRightClickGrouped_native(long pointer, boolean checkCommandibilityGrouped); + + private native boolean canRightClickGrouped_native(long pointer); + + private native boolean canRightClickGrouped_native(long pointer, boolean checkCommandibilityGrouped, boolean checkCommandibility); + + private native boolean canRightClickGrouped_native(long pointer, PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibilityGrouped); + + private native boolean canRightClickGrouped_native(long pointer, PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType); + + private native boolean canRightClickGrouped_native(long pointer, PositionOrUnit target, boolean checkCanTargetUnit); + + private native boolean canRightClickGrouped_native(long pointer, PositionOrUnit target); + + private native boolean canRightClickGrouped_native(long pointer, PositionOrUnit target, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibilityGrouped, boolean checkCommandibility); + + private native boolean canRightClickPosition_native(long pointer); + + private native boolean canRightClickPosition_native(long pointer, boolean checkCommandibility); + + private native boolean canRightClickPositionGrouped_native(long pointer, boolean checkCommandibilityGrouped); + + private native boolean canRightClickPositionGrouped_native(long pointer); + + private native boolean canRightClickPositionGrouped_native(long pointer, boolean checkCommandibilityGrouped, boolean checkCommandibility); + + private native boolean canRightClickUnit_native(long pointer); + + private native boolean canRightClickUnit_native(long pointer, boolean checkCommandibility); + + private native boolean canRightClickUnit_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType); + + private native boolean canRightClickUnit_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit); + + private native boolean canRightClickUnit_native(long pointer, Unit targetUnit); + + private native boolean canRightClickUnit_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canRightClickUnitGrouped_native(long pointer, boolean checkCommandibilityGrouped); + + private native boolean canRightClickUnitGrouped_native(long pointer); + + private native boolean canRightClickUnitGrouped_native(long pointer, boolean checkCommandibilityGrouped, boolean checkCommandibility); + + private native boolean canRightClickUnitGrouped_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibilityGrouped); + + private native boolean canRightClickUnitGrouped_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType); + + private native boolean canRightClickUnitGrouped_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit); + + private native boolean canRightClickUnitGrouped_native(long pointer, Unit targetUnit); + + private native boolean canRightClickUnitGrouped_native(long pointer, Unit targetUnit, boolean checkCanTargetUnit, boolean checkCanIssueCommandType, boolean checkCommandibilityGrouped, boolean checkCommandibility); + + private native boolean canHaltConstruction_native(long pointer); + + private native boolean canHaltConstruction_native(long pointer, boolean checkCommandibility); + + private native boolean canCancelConstruction_native(long pointer); + + private native boolean canCancelConstruction_native(long pointer, boolean checkCommandibility); + + private native boolean canCancelAddon_native(long pointer); + + private native boolean canCancelAddon_native(long pointer, boolean checkCommandibility); + + private native boolean canCancelTrain_native(long pointer); + + private native boolean canCancelTrain_native(long pointer, boolean checkCommandibility); + + private native boolean canCancelTrainSlot_native(long pointer); + + private native boolean canCancelTrainSlot_native(long pointer, boolean checkCommandibility); + + private native boolean canCancelTrainSlot_native(long pointer, int slot, boolean checkCanIssueCommandType); + + private native boolean canCancelTrainSlot_native(long pointer, int slot); + + private native boolean canCancelTrainSlot_native(long pointer, int slot, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canCancelMorph_native(long pointer); + + private native boolean canCancelMorph_native(long pointer, boolean checkCommandibility); + + private native boolean canCancelResearch_native(long pointer); + + private native boolean canCancelResearch_native(long pointer, boolean checkCommandibility); + + private native boolean canCancelUpgrade_native(long pointer); + + private native boolean canCancelUpgrade_native(long pointer, boolean checkCommandibility); + + private native boolean canUseTechWithOrWithoutTarget_native(long pointer); + + private native boolean canUseTechWithOrWithoutTarget_native(long pointer, boolean checkCommandibility); + + private native boolean canUseTechWithOrWithoutTarget_native(long pointer, TechType tech, boolean checkCanIssueCommandType); + + private native boolean canUseTechWithOrWithoutTarget_native(long pointer, TechType tech); + + private native boolean canUseTechWithOrWithoutTarget_native(long pointer, TechType tech, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canUseTech_native(long pointer, TechType tech, PositionOrUnit target, boolean checkCanTargetUnit, boolean checkTargetsType, boolean checkCanIssueCommandType); + + private native boolean canUseTech_native(long pointer, TechType tech, PositionOrUnit target, boolean checkCanTargetUnit, boolean checkTargetsType); + + private native boolean canUseTech_native(long pointer, TechType tech, PositionOrUnit target, boolean checkCanTargetUnit); + + private native boolean canUseTech_native(long pointer, TechType tech, PositionOrUnit target); + + private native boolean canUseTech_native(long pointer, TechType tech); + + private native boolean canUseTech_native(long pointer, TechType tech, PositionOrUnit target, boolean checkCanTargetUnit, boolean checkTargetsType, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canUseTechWithoutTarget_native(long pointer, TechType tech, boolean checkCanIssueCommandType); + + private native boolean canUseTechWithoutTarget_native(long pointer, TechType tech); + + private native boolean canUseTechWithoutTarget_native(long pointer, TechType tech, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canUseTechUnit_native(long pointer, TechType tech, boolean checkCanIssueCommandType); + + private native boolean canUseTechUnit_native(long pointer, TechType tech); + + private native boolean canUseTechUnit_native(long pointer, TechType tech, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canUseTechUnit_native(long pointer, TechType tech, Unit targetUnit, boolean checkCanTargetUnit, boolean checkTargetsUnits, boolean checkCanIssueCommandType); + + private native boolean canUseTechUnit_native(long pointer, TechType tech, Unit targetUnit, boolean checkCanTargetUnit, boolean checkTargetsUnits); + + private native boolean canUseTechUnit_native(long pointer, TechType tech, Unit targetUnit, boolean checkCanTargetUnit); + + private native boolean canUseTechUnit_native(long pointer, TechType tech, Unit targetUnit); + + private native boolean canUseTechUnit_native(long pointer, TechType tech, Unit targetUnit, boolean checkCanTargetUnit, boolean checkTargetsUnits, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canUseTechPosition_native(long pointer, TechType tech, boolean checkCanIssueCommandType); + + private native boolean canUseTechPosition_native(long pointer, TechType tech); + + private native boolean canUseTechPosition_native(long pointer, TechType tech, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canUseTechPosition_native(long pointer, TechType tech, Position target, boolean checkTargetsPositions, boolean checkCanIssueCommandType); + + private native boolean canUseTechPosition_native(long pointer, TechType tech, Position target, boolean checkTargetsPositions); + + private native boolean canUseTechPosition_native(long pointer, TechType tech, Position target); + + private native boolean canUseTechPosition_native(long pointer, TechType tech, Position target, boolean checkTargetsPositions, boolean checkCanIssueCommandType, boolean checkCommandibility); + + private native boolean canPlaceCOP_native(long pointer); + + private native boolean canPlaceCOP_native(long pointer, boolean checkCommandibility); + + private native boolean canPlaceCOP_native(long pointer, TilePosition target, boolean checkCanIssueCommandType); + + private native boolean canPlaceCOP_native(long pointer, TilePosition target); + + private native boolean canPlaceCOP_native(long pointer, TilePosition target, boolean checkCanIssueCommandType, boolean checkCommandibility); + + +} diff --git a/bwapi4/UnitCommand.java b/bwapi4/UnitCommand.java new file mode 100644 index 0000000..0beb337 --- /dev/null +++ b/bwapi4/UnitCommand.java @@ -0,0 +1,37 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class UnitCommand { + + public UnitCommandType getType() { + return getType_native(pointer); + } + + + private static Map instances = new HashMap(); + + private UnitCommand(long pointer) { + this.pointer = pointer; + } + + private static UnitCommand get(long pointer) { + UnitCommand instance = instances.get(pointer); + if (instance == null ) { + instance = new UnitCommand(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + private native UnitCommandType getType_native(long pointer); + + +} diff --git a/bwapi4/UnitCommandType.java b/bwapi4/UnitCommandType.java new file mode 100644 index 0000000..9fc3262 --- /dev/null +++ b/bwapi4/UnitCommandType.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class UnitCommandType { + + + private static Map instances = new HashMap(); + + private UnitCommandType(long pointer) { + this.pointer = pointer; + } + + private static UnitCommandType get(long pointer) { + UnitCommandType instance = instances.get(pointer); + if (instance == null ) { + instance = new UnitCommandType(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/bwapi4/UnitFilter.java b/bwapi4/UnitFilter.java new file mode 100644 index 0000000..99f65d6 --- /dev/null +++ b/bwapi4/UnitFilter.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class UnitFilter { + + + private static Map instances = new HashMap(); + + private UnitFilter(long pointer) { + this.pointer = pointer; + } + + private static UnitFilter get(long pointer) { + UnitFilter instance = instances.get(pointer); + if (instance == null ) { + instance = new UnitFilter(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/bwapi4/UnitSizeType.java b/bwapi4/UnitSizeType.java new file mode 100644 index 0000000..50543c1 --- /dev/null +++ b/bwapi4/UnitSizeType.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class UnitSizeType { + + + private static Map instances = new HashMap(); + + private UnitSizeType(long pointer) { + this.pointer = pointer; + } + + private static UnitSizeType get(long pointer) { + UnitSizeType instance = instances.get(pointer); + if (instance == null ) { + instance = new UnitSizeType(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/bwapi4/UnitType.java b/bwapi4/UnitType.java new file mode 100644 index 0000000..82f356b --- /dev/null +++ b/bwapi4/UnitType.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class UnitType { + + + private static Map instances = new HashMap(); + + private UnitType(long pointer) { + this.pointer = pointer; + } + + private static UnitType get(long pointer) { + UnitType instance = instances.get(pointer); + if (instance == null ) { + instance = new UnitType(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/bwapi4/Unitset.java b/bwapi4/Unitset.java new file mode 100644 index 0000000..d312f45 --- /dev/null +++ b/bwapi4/Unitset.java @@ -0,0 +1,391 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class Unitset { + + public Position getPosition() { + return getPosition_native(pointer); + } + + public Unitset getLoadedUnits() { + return getLoadedUnits_native(pointer); + } + + public Unitset getInterceptors() { + return getInterceptors_native(pointer); + } + + public Unitset getLarva() { + return getLarva_native(pointer); + } + + public void setClientInfo(int clientInfo) { + setClientInfo_native(pointer, clientInfo); + } + + public void setClientInfo() { + setClientInfo_native(pointer); + } + + public void setClientInfo(int clientInfo, int index) { + setClientInfo_native(pointer, clientInfo, index); + } + + public Unitset getUnitsInRadius(int radius, UnitFilter pred) { + return getUnitsInRadius_native(pointer, radius, pred); + } + + public Unit getClosestUnit(UnitFilter pred) { + return getClosestUnit_native(pointer, pred); + } + + public Unit getClosestUnit(UnitFilter pred, int radius) { + return getClosestUnit_native(pointer, pred, radius); + } + + public boolean issueCommand(UnitCommand command) { + return issueCommand_native(pointer, command); + } + + public boolean attack(PositionOrUnit target) { + return attack_native(pointer, target); + } + + public boolean attack(PositionOrUnit target, boolean shiftQueueCommand) { + return attack_native(pointer, target, shiftQueueCommand); + } + + public boolean build(UnitType type) { + return build_native(pointer, type); + } + + public boolean build(UnitType type, TilePosition target) { + return build_native(pointer, type, target); + } + + public boolean buildAddon(UnitType type) { + return buildAddon_native(pointer, type); + } + + public boolean train(UnitType type) { + return train_native(pointer, type); + } + + public boolean morph(UnitType type) { + return morph_native(pointer, type); + } + + public boolean setRallyPoint(PositionOrUnit target) { + return setRallyPoint_native(pointer, target); + } + + public boolean move(Position target) { + return move_native(pointer, target); + } + + public boolean move(Position target, boolean shiftQueueCommand) { + return move_native(pointer, target, shiftQueueCommand); + } + + public boolean patrol(Position target) { + return patrol_native(pointer, target); + } + + public boolean patrol(Position target, boolean shiftQueueCommand) { + return patrol_native(pointer, target, shiftQueueCommand); + } + + public boolean holdPosition() { + return holdPosition_native(pointer); + } + + public boolean holdPosition(boolean shiftQueueCommand) { + return holdPosition_native(pointer, shiftQueueCommand); + } + + public boolean stop() { + return stop_native(pointer); + } + + public boolean stop(boolean shiftQueueCommand) { + return stop_native(pointer, shiftQueueCommand); + } + + public boolean follow(Unit target) { + return follow_native(pointer, target); + } + + public boolean follow(Unit target, boolean shiftQueueCommand) { + return follow_native(pointer, target, shiftQueueCommand); + } + + public boolean gather(Unit target) { + return gather_native(pointer, target); + } + + public boolean gather(Unit target, boolean shiftQueueCommand) { + return gather_native(pointer, target, shiftQueueCommand); + } + + public boolean returnCargo() { + return returnCargo_native(pointer); + } + + public boolean returnCargo(boolean shiftQueueCommand) { + return returnCargo_native(pointer, shiftQueueCommand); + } + + public boolean repair(Unit target) { + return repair_native(pointer, target); + } + + public boolean repair(Unit target, boolean shiftQueueCommand) { + return repair_native(pointer, target, shiftQueueCommand); + } + + public boolean burrow() { + return burrow_native(pointer); + } + + public boolean unburrow() { + return unburrow_native(pointer); + } + + public boolean cloak() { + return cloak_native(pointer); + } + + public boolean decloak() { + return decloak_native(pointer); + } + + public boolean siege() { + return siege_native(pointer); + } + + public boolean unsiege() { + return unsiege_native(pointer); + } + + public boolean lift() { + return lift_native(pointer); + } + + public boolean load(Unit target) { + return load_native(pointer, target); + } + + public boolean load(Unit target, boolean shiftQueueCommand) { + return load_native(pointer, target, shiftQueueCommand); + } + + public boolean unloadAll() { + return unloadAll_native(pointer); + } + + public boolean unloadAll(boolean shiftQueueCommand) { + return unloadAll_native(pointer, shiftQueueCommand); + } + + public boolean unloadAll(Position target) { + return unloadAll_native(pointer, target); + } + + public boolean unloadAll(Position target, boolean shiftQueueCommand) { + return unloadAll_native(pointer, target, shiftQueueCommand); + } + + public boolean rightClick(PositionOrUnit target) { + return rightClick_native(pointer, target); + } + + public boolean rightClick(PositionOrUnit target, boolean shiftQueueCommand) { + return rightClick_native(pointer, target, shiftQueueCommand); + } + + public boolean haltConstruction() { + return haltConstruction_native(pointer); + } + + public boolean cancelConstruction() { + return cancelConstruction_native(pointer); + } + + public boolean cancelAddon() { + return cancelAddon_native(pointer); + } + + public boolean cancelTrain() { + return cancelTrain_native(pointer); + } + + public boolean cancelTrain(int slot) { + return cancelTrain_native(pointer, slot); + } + + public boolean cancelMorph() { + return cancelMorph_native(pointer); + } + + public boolean cancelResearch() { + return cancelResearch_native(pointer); + } + + public boolean cancelUpgrade() { + return cancelUpgrade_native(pointer); + } + + public boolean useTech(TechType tech) { + return useTech_native(pointer, tech); + } + + public boolean useTech(TechType tech, PositionOrUnit target) { + return useTech_native(pointer, tech, target); + } + + + private static Map instances = new HashMap(); + + private Unitset(long pointer) { + this.pointer = pointer; + } + + private static Unitset get(long pointer) { + Unitset instance = instances.get(pointer); + if (instance == null ) { + instance = new Unitset(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + private native Position getPosition_native(long pointer); + + private native Unitset getLoadedUnits_native(long pointer); + + private native Unitset getInterceptors_native(long pointer); + + private native Unitset getLarva_native(long pointer); + + private native void setClientInfo_native(long pointer, int clientInfo); + + private native void setClientInfo_native(long pointer); + + private native void setClientInfo_native(long pointer, int clientInfo, int index); + + private native Unitset getUnitsInRadius_native(long pointer, int radius, UnitFilter pred); + + private native Unit getClosestUnit_native(long pointer, UnitFilter pred); + + private native Unit getClosestUnit_native(long pointer, UnitFilter pred, int radius); + + private native boolean issueCommand_native(long pointer, UnitCommand command); + + private native boolean attack_native(long pointer, PositionOrUnit target); + + private native boolean attack_native(long pointer, PositionOrUnit target, boolean shiftQueueCommand); + + private native boolean build_native(long pointer, UnitType type); + + private native boolean build_native(long pointer, UnitType type, TilePosition target); + + private native boolean buildAddon_native(long pointer, UnitType type); + + private native boolean train_native(long pointer, UnitType type); + + private native boolean morph_native(long pointer, UnitType type); + + private native boolean setRallyPoint_native(long pointer, PositionOrUnit target); + + private native boolean move_native(long pointer, Position target); + + private native boolean move_native(long pointer, Position target, boolean shiftQueueCommand); + + private native boolean patrol_native(long pointer, Position target); + + private native boolean patrol_native(long pointer, Position target, boolean shiftQueueCommand); + + private native boolean holdPosition_native(long pointer); + + private native boolean holdPosition_native(long pointer, boolean shiftQueueCommand); + + private native boolean stop_native(long pointer); + + private native boolean stop_native(long pointer, boolean shiftQueueCommand); + + private native boolean follow_native(long pointer, Unit target); + + private native boolean follow_native(long pointer, Unit target, boolean shiftQueueCommand); + + private native boolean gather_native(long pointer, Unit target); + + private native boolean gather_native(long pointer, Unit target, boolean shiftQueueCommand); + + private native boolean returnCargo_native(long pointer); + + private native boolean returnCargo_native(long pointer, boolean shiftQueueCommand); + + private native boolean repair_native(long pointer, Unit target); + + private native boolean repair_native(long pointer, Unit target, boolean shiftQueueCommand); + + private native boolean burrow_native(long pointer); + + private native boolean unburrow_native(long pointer); + + private native boolean cloak_native(long pointer); + + private native boolean decloak_native(long pointer); + + private native boolean siege_native(long pointer); + + private native boolean unsiege_native(long pointer); + + private native boolean lift_native(long pointer); + + private native boolean load_native(long pointer, Unit target); + + private native boolean load_native(long pointer, Unit target, boolean shiftQueueCommand); + + private native boolean unloadAll_native(long pointer); + + private native boolean unloadAll_native(long pointer, boolean shiftQueueCommand); + + private native boolean unloadAll_native(long pointer, Position target); + + private native boolean unloadAll_native(long pointer, Position target, boolean shiftQueueCommand); + + private native boolean rightClick_native(long pointer, PositionOrUnit target); + + private native boolean rightClick_native(long pointer, PositionOrUnit target, boolean shiftQueueCommand); + + private native boolean haltConstruction_native(long pointer); + + private native boolean cancelConstruction_native(long pointer); + + private native boolean cancelAddon_native(long pointer); + + private native boolean cancelTrain_native(long pointer); + + private native boolean cancelTrain_native(long pointer, int slot); + + private native boolean cancelMorph_native(long pointer); + + private native boolean cancelResearch_native(long pointer); + + private native boolean cancelUpgrade_native(long pointer); + + private native boolean useTech_native(long pointer, TechType tech); + + private native boolean useTech_native(long pointer, TechType tech, PositionOrUnit target); + + +} diff --git a/bwapi4/UpgradeType.java b/bwapi4/UpgradeType.java new file mode 100644 index 0000000..6dd2a7f --- /dev/null +++ b/bwapi4/UpgradeType.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class UpgradeType { + + + private static Map instances = new HashMap(); + + private UpgradeType(long pointer) { + this.pointer = pointer; + } + + private static UpgradeType get(long pointer) { + UpgradeType instance = instances.get(pointer); + if (instance == null ) { + instance = new UpgradeType(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/bwapi4/WalkPosition.java b/bwapi4/WalkPosition.java new file mode 100644 index 0000000..c7696e8 --- /dev/null +++ b/bwapi4/WalkPosition.java @@ -0,0 +1,83 @@ +package bwapi4; + +import java.lang.Override; +import java.util.HashMap; +import java.util.Map; + +public class WalkPosition { + + private int x, y; + + public WalkPosition(int x, int y) { + this.x = x; + this.y = y; + } + + public String toString() { + return "[" + x + ", " + y + "]"; + } + + public native boolean isValid(); + + public native WalkPosition makeValid(); + + public native double getDistance(WalkPosition position); + + public native int getApproxDistance(WalkPosition position); + + public native double getLength(); + + public native boolean hasPath(WalkPosition position); + + public int getX() { + return x; + } + + public int getY() { + return y; + } + + public static WalkPosition Invalid; + + public static WalkPosition None; + + public static WalkPosition Unknown; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof WalkPosition)) return false; + + WalkPosition position = (WalkPosition) o; + + if (x != position.x) return false; + if (y != position.y) return false; + + return true; + } + + @Override + public int hashCode() { + int result = x; + result = 31 * result + y; + return result; + } + + + private static Map instances = new HashMap(); + + private WalkPosition(long pointer) { + this.pointer = pointer; + } + + private static WalkPosition get(long pointer) { + WalkPosition instance = instances.get(pointer); + if (instance == null) { + instance = new WalkPosition(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; +} \ No newline at end of file diff --git a/bwapi4/WeaponType.java b/bwapi4/WeaponType.java new file mode 100644 index 0000000..fa8354b --- /dev/null +++ b/bwapi4/WeaponType.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class WeaponType { + + + private static Map instances = new HashMap(); + + private WeaponType(long pointer) { + this.pointer = pointer; + } + + private static WeaponType get(long pointer) { + WeaponType instance = instances.get(pointer); + if (instance == null ) { + instance = new WeaponType(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/bwapi_bridge.dll b/bwapi_bridge.dll index 5920353c2a57eabf0a1a9cfb6870141ec550e775..e827f933119a9dd8b69cd6f153f3fe285168d86f 100644 GIT binary patch delta 155 zcmZozlijc;djTU$@W$kj$t;XMOgVndL5%G|j3CSe#LPg<0>rF9%m&2lK+FNeoIuP4 z#N0s41H`;Q%m>8$Kr8^nfq-*gBZmgg@G;FZV@5&q=8YQUG}EfcG;Wa X;zlf*K>OP*xFvvCa=Qh$)QM97;KeIn delta 155 zcmZozlijc;djTWM>bVbsC$lj6Fuf6M4q|K%Vgz9(AZ7+)79eH?Vm2UV2VxE&<^*Cc zAm#>Q9w6ogVm=_|2Vwyr76f7;AQlE<5g-=b9>gg2C=6`Tc8dtHCk;R)vNy%H%ia_h XH)81o+TU)$Edj)m+by`IPMiV&o53yP diff --git a/bwapi_bridge.exp b/bwapi_bridge.exp index 198662d72c59d183546a77fabd1974872e03f2b8..ba6435b682bae1fcf61574466afc4d6864389b4d 100644 GIT binary patch delta 33 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 diff --git a/bwapi_bridge1_1.exp b/bwapi_bridge1_1.exp new file mode 100644 index 0000000000000000000000000000000000000000..7c82a5c6d187100d80b8fe0590a0121466d123cf GIT binary patch literal 139076 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

$HLXzqtk!(E? z=T7tzJP)8Th*TpAzxM;Xsid>Y;%i+?0q94xm+KReY%?HG`q@lGJQI}uHFWy*onjU9#9D$XVQ+_Eej`5 zHQr4RKW{5gB*`Nv73vT7=l(a316=C$sSu-P&5Xaj6alF^Z#p%1DK(0q zZd*xaHUAHfQ~D2&!({jP7jv5;u};h|Dk90Sx4}A}grEt;-6^>9RiOtv+8XMi0$mr& zQGA}sg$f)q|3P{BAnnKQF$>Ru1uLH3B(YAKkO5Hw!ZUh)9f^bq|2@c2p=i2FW>`d= z=G?lt#ChN;InQ*-$^>aAnjMF>4h7>l_g6TV-{yRk9pwU{APy*<_z*OT5k5*2Tnegf z;{26ywIaelFW8^Ur6Afym1#ZglBkeAZL;0aoUXCtR4C|xUB;s13_>GWhb2;9xu0~x zB6Zk5n1KjODAWR@C)b}9*4072*9%t3jR3*iQD~2hwIV>AV-MNa;nZ4f5 z*uu2t(f`I8{?T)A#cPqK*}=#B_c$nWDtz%;I~h?HOc0b2H=2X${Vd$#)1F{He_H!mgrpW^*=;|I0*%#n5USsbt#`Hdr z>p9r9MTmUM1Kr(WX-m6E>%@39R^?xIu2;;xmM*#z<)WE=iLAT{%4o~;x{0x~Iq(-D zz1+;)>457SyJ2trJ(RCb1=O=9t;j5box%H+IAMV%JaPJc9Mb9eQqXuPqc~&J)XRXE zAW_izK4LrERkwpdr>+i<-#PgrbVNr;=_X=)eoE#ZDi1z^*DaHN2>bE%&ad$QpkLtb zxnDUy>l5t%P@M>i|7U{5f2>dcRQG=bSo~Ar|FWFWwbL9%0YN1~H5Dp=;+s?RDg304 zNJa(An`$k$sW-{C55DAl0Prcs4ZQr9uCtsK)CLU>c13v@WZO0oh#7v((B4hGPD*uD>S?i|W{_)0P@nwPdxjqmv{8RxS6`?N_vX-gm`ZhcDyv42T4I>#7sPN5#KL8o!@ z&x{XQSnhm8_A3QF6qg+y&b$9AbUjH!_oAOd$Ne9L{=d5`|D788uVwr{k``?2=6?E# z&@qA(F*q{0aIvRkDXck;wSZR969y6N$uK7Q()>}mtq5lfKh!eldt3icnJ-cKd)E}e zdu>f|PCH#MU*q!wuJm4Vpj4Eys41JPr(6Yxms5}^1XkseIGLPUQ>`fG8R`g%64-JI zFWYk+Dd=}Om`6s2A8Wc4T0E3bG*wg?wQTjEtYl9udABv~I#Wkw&sVaoRY!KIte(R{ zn6@qIJW+pUAGRC`2rPguRGsqGL@gir8bb#e&L9S^5Fxa#dss@5CL3)%>o!gH3g_D} zBUNfdA70h{RiNiXf__&IXd$r4RM9<6^@UZ{X-{<-c|UvQzR|Hk84&J&%hhdLB|K2QS2l%x`)VS zL7rq~#0&J0YrOwM?UAwXZOkKdfBTV=KS3~%#X)hP^|LUyy1!(?wo8!Y8PJJ5H24Nn zs{R91x>y0u(P$uDu+G!p4I^e;yvq@?Q(|$hh>}#AaXgT2m&iu|W)E8miY_d+1H#)F zv>fmj3-KU$>`m>K!!!01&r&i^mmz-U-b{}1w;`5(ydf8&OKlicD4HvbJ9 zk~G2HR7BCTTVo!ePf7Azk=(EUI{SkVAClC}nt)6+9vgZ3_}sBJb@w3S!2Jw>;< zB>JwPu4^uBwdN!1P}+%1auGpngLq@;6SQDtbw#g*^&3n2OI|Yg5f~3$Jue~(E}g{ zkORpCd7<91^GyIO29N{I1bgA$aqhwVF&umYd?4GS?O6A4`uYG)fo6hp;NRHwfcioM zq65-_X#=&O*kkTE_MrMw1F8X5foTJ;z_g&*-qEr2Y?5{1G)g=fpG)5q1a*U+4ubh$_C(p zbc4EK+41o;1DFQN2Ihfx1H2*HA?+FWRr>*Ny1*T9ZooHWJG4FPzODe*KwH2a@GGDz zurB~NggeAN!@lwWIY4~Co^UI`FF-e>JJdbPzIH$M*)CvD_!qz%;vMpyXq z4><%w05}E!LIHFEECSqEz!8w2U`9Yr0OT3e8Q56p5#R%0D1abeA_2x+?pzRs^huY% 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%0ATF_-|q0C#*rS2q^3N_@6>Grjb1ouxY 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

ObpenfhmTH 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

5$UF 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Μzy?8zQ!A5sqza70P<=!l_dUGTf4{P~Its@3 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 Kd->d-=l(z3CO*9Y diff --git a/bwmirror_v1_1.jar b/bwmirror_v1_1.jar new file mode 100644 index 0000000000000000000000000000000000000000..80a267d48e2dd3879475ca3437fba891923a276d GIT binary patch literal 955754 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�Wvc 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¥oAjI=mxILx%q{hbl}S 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%0D2Gw8{n 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%0AMMes&B29L^s8cyiG^Ll7gyq2&z&G3UA@i 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 M%m_(b?x%GB50-jtvj6}9 literal 0 HcmV?d00001 diff --git a/bwta/BWTA.java b/bwta/BWTA.java index 3816944..6b7b723 100644 --- a/bwta/BWTA.java +++ b/bwta/BWTA.java @@ -10,148 +10,52 @@ import bwapi.Position; import bwapi.TilePosition; import bwapi.Player; -/** -BWTA class wraps the functionality of BWTA library - -*/ public class BWTA { -/** -Reads the contents of the map in to BWTA. This was added so analyze() can be executed in another thread. - -*/ public static native void readMap(); -/** -Before any other global functions can be called, the map must first be analyzed. Analyzing a starcraft map can take a long time, depending on your computer, so BWTA also automatically saves the results to a file when it is done. When you call analyze on the same map, BWTA will see that the results file for that map already exists, and load the results from file, rather than re-analyze the map. - -*/ public static native void analyze(); -/** -Returns the set of regions in the map. - -*/ public static native List getRegions(); -/** -Returns the set of chokepoints in the map. - -*/ public static native List getChokepoints(); -/** -Returns the set of base locations on the map. - -*/ public static native List getBaseLocations(); -/** -Returns the set of base locations that are start locations. - -*/ public static native List getStartLocations(); -/** -Returns the set of unwalkable polygons. - -*/ public static native List getUnwalkablePolygons(); -/** -Given a pointer to a Player object, this function returns a pointer to the player's starting base location. - -*/ public static native BaseLocation getStartLocation(Player player); -/** -Returns the region that the tile position is inside. Returns NULL if the tile position is not inside any valid region. - -*/ public static native Region getRegion(int x, int y); -/** -Returns the region that the tile position is inside. Returns NULL if the tile position is not inside any valid region. - -*/ public static native Region getRegion(TilePosition tileposition); -/** -Returns the region that the tile position is inside. Returns NULL if the tile position is not inside any valid region. - -*/ public static native Region getRegion(Position position); -/** -Returns the nearest chokepoint (in ground/walking distance). Returns NULL if no chokepoint is reachable from the given tile position (such as in an island component with no chokepoints). The Position version of this function has walk tile accuracy, while the other two have build tile accuracy. - -*/ public static native Chokepoint getNearestChokepoint(int x, int y); -/** -Returns the nearest chokepoint (in ground/walking distance). Returns NULL if no chokepoint is reachable from the given tile position (such as in an island component with no chokepoints). The Position version of this function has walk tile accuracy, while the other two have build tile accuracy. - -*/ public static native Chokepoint getNearestChokepoint(TilePosition tileposition); -/** -Returns the nearest chokepoint (in ground/walking distance). Returns NULL if no chokepoint is reachable from the given tile position (such as in an island component with no chokepoints). The Position version of this function has walk tile accuracy, while the other two have build tile accuracy. - -*/ public static native Chokepoint getNearestChokepoint(Position position); -/** -Returns the nearest base location(in ground/walking distance). Returns NULL if no base location is reachable from the given tile position. The Position version of this function has walk tile accuracy, while the other two have build tile accuracy. - -*/ public static native BaseLocation getNearestBaseLocation(int x, int y); -/** -Returns the nearest base location(in ground/walking distance). Returns NULL if no base location is reachable from the given tile position. The Position version of this function has walk tile accuracy, while the other two have build tile accuracy. - -*/ public static native BaseLocation getNearestBaseLocation(TilePosition tileposition); -/** -Returns the nearest base location(in ground/walking distance). Returns NULL if no base location is reachable from the given tile position. The Position version of this function has walk tile accuracy, while the other two have build tile accuracy. - -*/ public static native BaseLocation getNearestBaseLocation(Position position); -/** -Returns the nearest unwalkable polygon. Note: The border of the map is not considered an unwalkable polygon. - -*/ public static native Polygon getNearestUnwalkablePolygon(int x, int y); -/** -Returns the nearest unwalkable polygon. Note: The border of the map is not considered an unwalkable polygon. - -*/ public static native Polygon getNearestUnwalkablePolygon(TilePosition tileposition); -/** -Returns the nearest position that is on the boundary of an unwalkable polygon, or border of the map. - -*/ public static native Position getNearestUnwalkablePosition(Position position); -/** -Returns true if there exists a static path between the two given tile positions. - -*/ public static native boolean isConnected(int x1, int y1, int x2, int y2); -/** -Returns true if there exists a static path between the two given tile positions. - -*/ public static native boolean isConnected(TilePosition a, TilePosition b); -/** -Returns the ground distance between the two given tile positions. - -*/ public static native double getGroundDistance(TilePosition start, TilePosition end); diff --git a/bwta/BaseLocation.java b/bwta/BaseLocation.java index 20fd776..9eb519b 100644 --- a/bwta/BaseLocation.java +++ b/bwta/BaseLocation.java @@ -10,89 +10,44 @@ import bwapi.Position; import bwapi.TilePosition; import bwapi.Player; -/** -A BaseLocation a position on the map where it makes sense to place a base (i.e. near minerals). - - -*/ public class BaseLocation { -/** -Returns the position of the center of the base location. - -*/ public Position getPosition() { return getPosition_native(pointer); } -/** -Returns the tile position of the base location. - -*/ public TilePosition getTilePosition() { return getTilePosition_native(pointer); } -/** -Returns the region the base location is in. - -*/ public Region getRegion() { return getRegion_native(pointer); } -/** -Returns the total mineral resource count of all accessible mineral patches. - -*/ public int minerals() { return minerals_native(pointer); } -/** -Returns the total gas resource count of all accessible vespene geysers. - -*/ public int gas() { return gas_native(pointer); } -/** -Returns the ground (walking) distance to the given base location. If its impossible to reach the given base location from the current one, this will return a negative value. - -*/ public double getGroundDistance(BaseLocation other) { return getGroundDistance_native(pointer, other); } -/** -Returns the air (flying) distance to the given base location. - -*/ public double getAirDistance(BaseLocation other) { return getAirDistance_native(pointer, other); } -/** -Returns true if the base location not in not reachable by ground from any other base location. - -*/ public boolean isIsland() { return isIsland_native(pointer); } -/** -Returns true if the base location is mineral-only. - -*/ public boolean isMineralOnly() { return isMineralOnly_native(pointer); } -/** -Returns true if the base location is a start location. - -*/ public boolean isStartLocation() { return isStartLocation_native(pointer); } @@ -105,6 +60,9 @@ Returns true if the base location is a start location. } private static BaseLocation get(long pointer) { + if (pointer == 0 ) { + return null; + } BaseLocation instance = instances.get(pointer); if (instance == null ) { instance = new BaseLocation(pointer); diff --git a/bwta/Chokepoint.java b/bwta/Chokepoint.java index cba176e..e77ab83 100644 --- a/bwta/Chokepoint.java +++ b/bwta/Chokepoint.java @@ -10,25 +10,12 @@ import bwapi.Position; import bwapi.TilePosition; import bwapi.Player; -/** -A chokepoint connects exactly two regions. - - -*/ public class Chokepoint { -/** -Returns the center of the chokepoint. - -*/ public Position getCenter() { return getCenter_native(pointer); } -/** -Returns the width of the chokepoint. - -*/ public double getWidth() { return getWidth_native(pointer); } @@ -41,6 +28,9 @@ Returns the width of the chokepoint. } private static Chokepoint get(long pointer) { + if (pointer == 0 ) { + return null; + } Chokepoint instance = instances.get(pointer); if (instance == null ) { instance = new Chokepoint(pointer); diff --git a/bwta/Polygon.java b/bwta/Polygon.java index e4f0ce0..e27975a 100644 --- a/bwta/Polygon.java +++ b/bwta/Polygon.java @@ -10,48 +10,24 @@ import bwapi.Position; import bwapi.TilePosition; import bwapi.Player; -/** -A Polygon is a geometric representation of Region - -*/ public class Polygon { -/** -Returns the area of the polygon. - -*/ public double getArea() { return getArea_native(pointer); } -/** -Returns the perimeter of the polygon. - -*/ public double getPerimeter() { return getPerimeter_native(pointer); } -/** -Returns the centroid of the polygon. - -*/ public Position getCenter() { return getCenter_native(pointer); } -/** -Returns true if the given point is inside the polygon. - -*/ public boolean isInside(Position p) { return isInside_native(pointer, p); } -/** -Returns the point on the boundary of the polygon that is nearest to the given point. - -*/ public Position getNearestPoint(Position p) { return getNearestPoint_native(pointer, p); } @@ -64,6 +40,9 @@ Returns the point on the boundary of the polygon that is nearest to the given po } private static Polygon get(long pointer) { + if (pointer == 0 ) { + return null; + } Polygon instance = instances.get(pointer); if (instance == null ) { instance = new Polygon(pointer); diff --git a/bwta/Region.java b/bwta/Region.java index 8e8c2a1..803d6d6 100644 --- a/bwta/Region.java +++ b/bwta/Region.java @@ -10,57 +10,28 @@ import bwapi.Position; import bwapi.TilePosition; import bwapi.Player; -/** -A region is a partition of the map with a polygon boundary, and is connected to other regions via chokepoints. - - -*/ public class Region { -/** -Returns the polygon border of the region. - -*/ public Polygon getPolygon() { return getPolygon_native(pointer); } -/** -Returns the center of the region. - -*/ public Position getCenter() { return getCenter_native(pointer); } -/** -Returns the set of chokepoints adjacent to the region. - -*/ public List getChokepoints() { return getChokepoints_native(pointer); } -/** -Returns the set of base locations in the region. - -*/ public List getBaseLocations() { return getBaseLocations_native(pointer); } -/** -Returns true if its possible to walk from this region to the given region. - -*/ public boolean isReachable(Region region) { return isReachable_native(pointer, region); } -/** -Returns the set of regions reachable from this region. - -*/ public List getReachableRegions() { return getReachableRegions_native(pointer); } @@ -73,6 +44,9 @@ Returns the set of regions reachable from this region. } private static Region get(long pointer) { + if (pointer == 0 ) { + return null; + } Region instance = instances.get(pointer); if (instance == null ) { instance = new Region(pointer); diff --git a/c4/impl.cpp b/c4/impl.cpp new file mode 100644 index 0000000..d45a830 --- /dev/null +++ b/c4/impl.cpp @@ -0,0 +1,4690 @@ +#include "../concat_header.h" +#include +#include +#include +#include +#include + +using namespace BWAPI; + +std::map tableColor; + +using namespace std; + +map clsCache; +map>, jmethodID> staticMethodCache; +map>, jmethodID> methodCache; +map>, jfieldID> fieldCache; + + +jclass FindCachedClass(JNIEnv * env, string name){ + if(clsCache.find(name) == clsCache.end()){ + clsCache.insert(pair(name, (jclass)env->NewGlobalRef(env->FindClass(name.c_str())))); + } + return clsCache.find(name)->second; +}; + +jmethodID FindCachedMethodStatic(JNIEnv * env, jclass clz, string name, string signature){ + pair> clsNameSig(clz, pair(name, signature)); + if(staticMethodCache.find(clsNameSig) == staticMethodCache.end()){ + staticMethodCache.insert(pair>, jmethodID> (clsNameSig, env->GetStaticMethodID(clz, name.c_str(), signature.c_str()))); + } + return staticMethodCache.find(clsNameSig)->second; +}; + +jmethodID FindCachedMethod(JNIEnv * env, jclass clz, string name, string signature){ + pair> clsNameSig(clz, pair(name, signature)); + if(methodCache.find(clsNameSig) == methodCache.end()){ + methodCache.insert(pair>, jmethodID>(clsNameSig, env->GetMethodID(clz, name.c_str(), signature.c_str()))); + } + return methodCache.find(clsNameSig)->second; +}; + +jfieldID FindCachedField(JNIEnv * env, jclass clz, string name, string signature){ + pair> clsNameSig(clz, pair(name, signature)); + if(fieldCache.find(clsNameSig) == fieldCache.end()){ + fieldCache.insert(pair>, jfieldID>(clsNameSig, env->GetFieldID(clz, name.c_str(), signature.c_str()))); + } + return fieldCache.find(clsNameSig)->second; +}; + +using namespace BWAPI; + +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onStart_1native(JNIEnv * env, jobject obj, jlong pointer){ +AIModule* x_aIModule = (AIModule*)pointer; +x_aIModule->onStart(); +} +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onEnd_1native(JNIEnv * env, jobject obj, jlong pointer, jboolean isWinner){ +AIModule* x_aIModule = (AIModule*)pointer; +x_aIModule->onEnd((bool)isWinner); +} +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onFrame_1native(JNIEnv * env, jobject obj, jlong pointer){ +AIModule* x_aIModule = (AIModule*)pointer; +x_aIModule->onFrame(); +} +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onSendText_1native(JNIEnv * env, jobject obj, jlong pointer, jstring text){ +AIModule* x_aIModule = (AIModule*)pointer; +x_aIModule->onSendText(std::string(env->GetStringUTFChars(text, NULL))); +} +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onReceiveText_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_player, jstring text){ +AIModule* x_aIModule = (AIModule*)pointer; +Player* player = (Player*)env->GetLongField(p_player, FindCachedField(env, env->GetObjectClass(p_player), "pointer", "J")); +x_aIModule->onReceiveText(player, std::string(env->GetStringUTFChars(text, NULL))); +} +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onPlayerLeft_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_player){ +AIModule* x_aIModule = (AIModule*)pointer; +Player* player = (Player*)env->GetLongField(p_player, FindCachedField(env, env->GetObjectClass(p_player), "pointer", "J")); +x_aIModule->onPlayerLeft(player); +} +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onNukeDetect_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +AIModule* x_aIModule = (AIModule*)pointer; +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +x_aIModule->onNukeDetect(target); +} +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitDiscover_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ +AIModule* x_aIModule = (AIModule*)pointer; +Unit* unit = (Unit*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +x_aIModule->onUnitDiscover(unit); +} +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitEvade_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ +AIModule* x_aIModule = (AIModule*)pointer; +Unit* unit = (Unit*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +x_aIModule->onUnitEvade(unit); +} +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitShow_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ +AIModule* x_aIModule = (AIModule*)pointer; +Unit* unit = (Unit*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +x_aIModule->onUnitShow(unit); +} +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitHide_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ +AIModule* x_aIModule = (AIModule*)pointer; +Unit* unit = (Unit*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +x_aIModule->onUnitHide(unit); +} +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitCreate_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ +AIModule* x_aIModule = (AIModule*)pointer; +Unit* unit = (Unit*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +x_aIModule->onUnitCreate(unit); +} +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitDestroy_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ +AIModule* x_aIModule = (AIModule*)pointer; +Unit* unit = (Unit*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +x_aIModule->onUnitDestroy(unit); +} +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitMorph_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ +AIModule* x_aIModule = (AIModule*)pointer; +Unit* unit = (Unit*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +x_aIModule->onUnitMorph(unit); +} +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitRenegade_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ +AIModule* x_aIModule = (AIModule*)pointer; +Unit* unit = (Unit*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +x_aIModule->onUnitRenegade(unit); +} +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onSaveGame_1native(JNIEnv * env, jobject obj, jlong pointer, jstring gameName){ +AIModule* x_aIModule = (AIModule*)pointer; +x_aIModule->onSaveGame(std::string(env->GetStringUTFChars(gameName, NULL))); +} +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitComplete_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ +AIModule* x_aIModule = (AIModule*)pointer; +Unit* unit = (Unit*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +x_aIModule->onUnitComplete(unit); +} +JNIEXPORT jint JNICALL Java_bwapi4_Bullet_getID_1native(JNIEnv * env, jobject obj, jlong pointer){ +Bullet* x_bullet = (Bullet*)pointer; +return x_bullet->getID(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Bullet_exists_1native(JNIEnv * env, jobject obj, jlong pointer){ +Bullet* x_bullet = (Bullet*)pointer; +return x_bullet->exists(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getPlayer_1native(JNIEnv * env, jobject obj, jlong pointer){ +Bullet* x_bullet = (Bullet*)pointer; +jlong resptr = (jlong)x_bullet->getPlayer(); +jclass retcls = FindCachedClass(env, "bwapi4/Player"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Player;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getType_1native(JNIEnv * env, jobject obj, jlong pointer){ +Bullet* x_bullet = (Bullet*)pointer; +jlong resptr = (jlong)x_bullet->getType(); +jclass retcls = FindCachedClass(env, "bwapi4/BulletType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/BulletType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getSource_1native(JNIEnv * env, jobject obj, jlong pointer){ +Bullet* x_bullet = (Bullet*)pointer; +jlong resptr = (jlong)x_bullet->getSource(); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ +Bullet* x_bullet = (Bullet*)pointer; +Position cresult = x_bullet->getPosition(); +jclass retcls = FindCachedClass(env, "bwapi/Position"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT jdouble JNICALL Java_bwapi4_Bullet_getAngle_1native(JNIEnv * env, jobject obj, jlong pointer){ +Bullet* x_bullet = (Bullet*)pointer; +return x_bullet->getAngle(); +} +JNIEXPORT jdouble JNICALL Java_bwapi4_Bullet_getVelocityX_1native(JNIEnv * env, jobject obj, jlong pointer){ +Bullet* x_bullet = (Bullet*)pointer; +return x_bullet->getVelocityX(); +} +JNIEXPORT jdouble JNICALL Java_bwapi4_Bullet_getVelocityY_1native(JNIEnv * env, jobject obj, jlong pointer){ +Bullet* x_bullet = (Bullet*)pointer; +return x_bullet->getVelocityY(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getTarget_1native(JNIEnv * env, jobject obj, jlong pointer){ +Bullet* x_bullet = (Bullet*)pointer; +jlong resptr = (jlong)x_bullet->getTarget(); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getTargetPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ +Bullet* x_bullet = (Bullet*)pointer; +Position cresult = x_bullet->getTargetPosition(); +jclass retcls = FindCachedClass(env, "bwapi/Position"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT jint JNICALL Java_bwapi4_Bullet_getRemoveTimer_1native(JNIEnv * env, jobject obj, jlong pointer){ +Bullet* x_bullet = (Bullet*)pointer; +return x_bullet->getRemoveTimer(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Bullet_isVisible_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Bullet* x_bullet = (Bullet*)pointer; +return x_bullet->isVisible(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Bullet_isVisible_1native__JLbwapi4_Player_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_player){ +Bullet* x_bullet = (Bullet*)pointer; +Player* player = (Player*)env->GetLongField(p_player, FindCachedField(env, env->GetObjectClass(p_player), "pointer", "J")); +return x_bullet->isVisible(player); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Client_isConnected_1native(JNIEnv * env, jobject obj, jlong pointer){ +Client* x_client = (Client*)pointer; +return x_client->isConnected(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Client_connect_1native(JNIEnv * env, jobject obj, jlong pointer){ +Client* x_client = (Client*)pointer; +return x_client->connect(); +} +JNIEXPORT void JNICALL Java_bwapi4_Client_disconnect_1native(JNIEnv * env, jobject obj, jlong pointer){ +Client* x_client = (Client*)pointer; +x_client->disconnect(); +} +JNIEXPORT void JNICALL Java_bwapi4_Client_update_1native(JNIEnv * env, jobject obj, jlong pointer){ +Client* x_client = (Client*)pointer; +x_client->update(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Color_red_1native(JNIEnv * env, jobject obj, jlong pointer){ +Color x_color((int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "r", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "g", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "b", "I"))); +return x_color.red(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Color_green_1native(JNIEnv * env, jobject obj, jlong pointer){ +Color x_color((int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "r", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "g", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "b", "I"))); +return x_color.green(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Color_blue_1native(JNIEnv * env, jobject obj, jlong pointer){ +Color x_color((int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "r", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "g", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "b", "I"))); +return x_color.blue(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Event_getPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ +Event* x_evt = (Event*)pointer; +Position cresult = x_evt->getPosition(); +jclass retcls = FindCachedClass(env, "bwapi/Position"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT jstring JNICALL Java_bwapi4_Event_getText_1native(JNIEnv * env, jobject obj, jlong pointer){ +Event* x_evt = (Event*)pointer; +return env->NewStringUTF(x_evt->getText().c_str()); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Event_getUnit_1native(JNIEnv * env, jobject obj, jlong pointer){ +Event* x_evt = (Event*)pointer; +jlong resptr = (jlong)x_evt->getUnit(); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Event_getPlayer_1native(JNIEnv * env, jobject obj, jlong pointer){ +Event* x_evt = (Event*)pointer; +jlong resptr = (jlong)x_evt->getPlayer(); +jclass retcls = FindCachedClass(env, "bwapi4/Player"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Player;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Event_isWinner_1native(JNIEnv * env, jobject obj, jlong pointer){ +Event* x_evt = (Event*)pointer; +return x_evt->isWinner(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Force_getID_1native(JNIEnv * env, jobject obj, jlong pointer){ +Force* x_force = (Force*)pointer; +return x_force->getID(); +} +JNIEXPORT jstring JNICALL Java_bwapi4_Force_getName_1native(JNIEnv * env, jobject obj, jlong pointer){ +Force* x_force = (Force*)pointer; +return env->NewStringUTF(x_force->getName().c_str()); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Force_getPlayers_1native(JNIEnv * env, jobject obj, jlong pointer){ +Force* x_force = (Force*)pointer; +jlong resptr = (jlong)x_force->getPlayers(); +jclass retcls = FindCachedClass(env, "bwapi4/Playerset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Playerset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Forceset_getPlayers_1native(JNIEnv * env, jobject obj, jlong pointer){ +Forceset* x_forceset = (Forceset*)pointer; +jlong resptr = (jlong)x_forceset->getPlayers(); +jclass retcls = FindCachedClass(env, "bwapi4/Playerset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Playerset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getForces_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->getForces(); +jclass retcls = FindCachedClass(env, "bwapi4/Forceset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Forceset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getPlayers_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->getPlayers(); +jclass retcls = FindCachedClass(env, "bwapi4/Playerset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Playerset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getAllUnits_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->getAllUnits(); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getMinerals_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->getMinerals(); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getGeysers_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->getGeysers(); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getNeutralUnits_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->getNeutralUnits(); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getStaticMinerals_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->getStaticMinerals(); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getStaticGeysers_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->getStaticGeysers(); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getStaticNeutralUnits_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->getStaticNeutralUnits(); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBullets_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->getBullets(); +jclass retcls = FindCachedClass(env, "bwapi4/Bulletset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Bulletset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getForce_1native(JNIEnv * env, jobject obj, jlong pointer, jint forceID){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->getForce(forceID); +jclass retcls = FindCachedClass(env, "bwapi4/Force"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Force;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getPlayer_1native(JNIEnv * env, jobject obj, jlong pointer, jint playerID){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->getPlayer(playerID); +jclass retcls = FindCachedClass(env, "bwapi4/Player"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Player;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnit_1native(JNIEnv * env, jobject obj, jlong pointer, jint unitID){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->getUnit(unitID); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_indexToUnit_1native(JNIEnv * env, jobject obj, jlong pointer, jint unitIndex){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->indexToUnit(unitIndex); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getRegion_1native(JNIEnv * env, jobject obj, jlong pointer, jint regionID){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->getRegion(regionID); +jclass retcls = FindCachedClass(env, "bwapi4/Region"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Region;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getGameType_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)tableGameType.find(x_game->getGameType())->second; +jclass retcls = FindCachedClass(env, "bwapi4/GameType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/GameType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_getLatency_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->getLatency(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_getFrameCount_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->getFrameCount(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_getReplayFrameCount_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->getReplayFrameCount(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_getFPS_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->getFPS(); +} +JNIEXPORT jdouble JNICALL Java_bwapi4_Game_getAverageFPS_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->getAverageFPS(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getMousePosition_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +Position cresult = x_game->getMousePosition(); +jclass retcls = FindCachedClass(env, "bwapi/Position"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_getMouseState_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_button){ +Game* x_game = (Game*)pointer; +MouseButton button = (MouseButton)(int)env->GetIntField(p_button, FindCachedField(env, env->GetObjectClass(p_button), "value", "I")); +return x_game->getMouseState(button); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_getKeyState_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_key){ +Game* x_game = (Game*)pointer; +Key key = (Key)(int)env->GetIntField(p_key, FindCachedField(env, env->GetObjectClass(p_key), "value", "I")); +return x_game->getKeyState(key); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getScreenPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +Position cresult = x_game->getScreenPosition(); +jclass retcls = FindCachedClass(env, "bwapi/Position"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT void JNICALL Java_bwapi4_Game_setScreenPosition_1native__JII(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y){ +Game* x_game = (Game*)pointer; +x_game->setScreenPosition(x, y); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_setScreenPosition_1native__JLbwapi4_Position_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_p){ +Game* x_game = (Game*)pointer; +Position p((int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "x", "I")), (int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "y", "I"))); +x_game->setScreenPosition(p); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_pingMinimap_1native__JII(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y){ +Game* x_game = (Game*)pointer; +x_game->pingMinimap(x, y); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_pingMinimap_1native__JLbwapi4_Position_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_p){ +Game* x_game = (Game*)pointer; +Position p((int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "x", "I")), (int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "y", "I"))); +x_game->pingMinimap(p); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isFlagEnabled_1native(JNIEnv * env, jobject obj, jlong pointer, jint flag){ +Game* x_game = (Game*)pointer; +return x_game->isFlagEnabled(flag); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_enableFlag_1native(JNIEnv * env, jobject obj, jlong pointer, jint flag){ +Game* x_game = (Game*)pointer; +x_game->enableFlag(flag); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsOnTile_1native__JIILbwapi4_UnitFilter_2(JNIEnv * env, jobject obj, jlong pointer, jint tileX, jint tileY, jobject p_pred){ +Game* x_game = (Game*)pointer; +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_game->getUnitsOnTile(tileX, tileY, pred); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsOnTile_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitFilter_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tile, jobject p_pred){ +Game* x_game = (Game*)pointer; +TilePosition tile((int)env->GetIntField(p_tile, FindCachedField(env, env->GetObjectClass(p_tile), "x", "I")), (int)env->GetIntField(p_tile, FindCachedField(env, env->GetObjectClass(p_tile), "y", "I"))); +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_game->getUnitsOnTile(tile, pred); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsInRectangle_1native__JIIIILbwapi4_UnitFilter_2(JNIEnv * env, jobject obj, jlong pointer, jint left, jint top, jint right, jint bottom, jobject p_pred){ +Game* x_game = (Game*)pointer; +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_game->getUnitsInRectangle(left, top, right, bottom, pred); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsInRectangle_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_UnitFilter_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_topLeft, jobject p_bottomRight, jobject p_pred){ +Game* x_game = (Game*)pointer; +Position topLeft((int)env->GetIntField(p_topLeft, FindCachedField(env, env->GetObjectClass(p_topLeft), "x", "I")), (int)env->GetIntField(p_topLeft, FindCachedField(env, env->GetObjectClass(p_topLeft), "y", "I"))); +Position bottomRight((int)env->GetIntField(p_bottomRight, FindCachedField(env, env->GetObjectClass(p_bottomRight), "x", "I")), (int)env->GetIntField(p_bottomRight, FindCachedField(env, env->GetObjectClass(p_bottomRight), "y", "I"))); +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_game->getUnitsInRectangle(topLeft, bottomRight, pred); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsInRadius_1native__JIIILbwapi4_UnitFilter_2(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y, jint radius, jobject p_pred){ +Game* x_game = (Game*)pointer; +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_game->getUnitsInRadius(x, y, radius, pred); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsInRadius_1native__JLbwapi4_Position_2ILbwapi4_UnitFilter_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_center, jint radius, jobject p_pred){ +Game* x_game = (Game*)pointer; +Position center((int)env->GetIntField(p_center, FindCachedField(env, env->GetObjectClass(p_center), "x", "I")), (int)env->GetIntField(p_center, FindCachedField(env, env->GetObjectClass(p_center), "y", "I"))); +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_game->getUnitsInRadius(center, radius, pred); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnit_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_center, jobject p_pred){ +Game* x_game = (Game*)pointer; +Position center((int)env->GetIntField(p_center, FindCachedField(env, env->GetObjectClass(p_center), "x", "I")), (int)env->GetIntField(p_center, FindCachedField(env, env->GetObjectClass(p_center), "y", "I"))); +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_game->getClosestUnit(center, pred); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnit_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2I(JNIEnv * env, jobject obj, jlong pointer, jobject p_center, jobject p_pred, jint radius){ +Game* x_game = (Game*)pointer; +Position center((int)env->GetIntField(p_center, FindCachedField(env, env->GetObjectClass(p_center), "x", "I")), (int)env->GetIntField(p_center, FindCachedField(env, env->GetObjectClass(p_center), "y", "I"))); +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_game->getClosestUnit(center, pred, radius); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnitInRectangle_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2III(JNIEnv * env, jobject obj, jlong pointer, jobject p_center, jobject p_pred, jint left, jint top, jint right){ +Game* x_game = (Game*)pointer; +Position center((int)env->GetIntField(p_center, FindCachedField(env, env->GetObjectClass(p_center), "x", "I")), (int)env->GetIntField(p_center, FindCachedField(env, env->GetObjectClass(p_center), "y", "I"))); +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_game->getClosestUnitInRectangle(center, pred, left, top, right); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnitInRectangle_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2II(JNIEnv * env, jobject obj, jlong pointer, jobject p_center, jobject p_pred, jint left, jint top){ +Game* x_game = (Game*)pointer; +Position center((int)env->GetIntField(p_center, FindCachedField(env, env->GetObjectClass(p_center), "x", "I")), (int)env->GetIntField(p_center, FindCachedField(env, env->GetObjectClass(p_center), "y", "I"))); +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_game->getClosestUnitInRectangle(center, pred, left, top); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnitInRectangle_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2I(JNIEnv * env, jobject obj, jlong pointer, jobject p_center, jobject p_pred, jint left){ +Game* x_game = (Game*)pointer; +Position center((int)env->GetIntField(p_center, FindCachedField(env, env->GetObjectClass(p_center), "x", "I")), (int)env->GetIntField(p_center, FindCachedField(env, env->GetObjectClass(p_center), "y", "I"))); +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_game->getClosestUnitInRectangle(center, pred, left); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnitInRectangle_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_center, jobject p_pred){ +Game* x_game = (Game*)pointer; +Position center((int)env->GetIntField(p_center, FindCachedField(env, env->GetObjectClass(p_center), "x", "I")), (int)env->GetIntField(p_center, FindCachedField(env, env->GetObjectClass(p_center), "y", "I"))); +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_game->getClosestUnitInRectangle(center, pred); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnitInRectangle_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2IIII(JNIEnv * env, jobject obj, jlong pointer, jobject p_center, jobject p_pred, jint left, jint top, jint right, jint bottom){ +Game* x_game = (Game*)pointer; +Position center((int)env->GetIntField(p_center, FindCachedField(env, env->GetObjectClass(p_center), "x", "I")), (int)env->GetIntField(p_center, FindCachedField(env, env->GetObjectClass(p_center), "y", "I"))); +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_game->getClosestUnitInRectangle(center, pred, left, top, right, bottom); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBestUnit_1native__JLbwapi4_BestUnitFilter_2Lbwapi4_UnitFilter_2Lbwapi4_Position_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_best, jobject p_pred, jobject p_center){ +Game* x_game = (Game*)pointer; +BestUnitFilter* best = (BestUnitFilter*)env->GetLongField(p_best, FindCachedField(env, env->GetObjectClass(p_best), "pointer", "J")); +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +Position center((int)env->GetIntField(p_center, FindCachedField(env, env->GetObjectClass(p_center), "x", "I")), (int)env->GetIntField(p_center, FindCachedField(env, env->GetObjectClass(p_center), "y", "I"))); +jlong resptr = (jlong)x_game->getBestUnit(best, pred, center); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBestUnit_1native__JLbwapi4_BestUnitFilter_2Lbwapi4_UnitFilter_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_best, jobject p_pred){ +Game* x_game = (Game*)pointer; +BestUnitFilter* best = (BestUnitFilter*)env->GetLongField(p_best, FindCachedField(env, env->GetObjectClass(p_best), "pointer", "J")); +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_game->getBestUnit(best, pred); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBestUnit_1native__JLbwapi4_BestUnitFilter_2Lbwapi4_UnitFilter_2Lbwapi4_Position_2I(JNIEnv * env, jobject obj, jlong pointer, jobject p_best, jobject p_pred, jobject p_center, jint radius){ +Game* x_game = (Game*)pointer; +BestUnitFilter* best = (BestUnitFilter*)env->GetLongField(p_best, FindCachedField(env, env->GetObjectClass(p_best), "pointer", "J")); +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +Position center((int)env->GetIntField(p_center, FindCachedField(env, env->GetObjectClass(p_center), "x", "I")), (int)env->GetIntField(p_center, FindCachedField(env, env->GetObjectClass(p_center), "y", "I"))); +jlong resptr = (jlong)x_game->getBestUnit(best, pred, center, radius); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getLastError_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)tableError.find(x_game->getLastError())->second; +jclass retcls = FindCachedClass(env, "bwapi4/Error"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Error;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setLastError_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->setLastError(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setLastError_1native__JLbwapi4_Error_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_e){ +Game* x_game = (Game*)pointer; +Error* e = (Error*)env->GetLongField(p_e, FindCachedField(env, env->GetObjectClass(p_e), "pointer", "J")); +return x_game->setLastError(*e); +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_mapWidth_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->mapWidth(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_mapHeight_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->mapHeight(); +} +JNIEXPORT jstring JNICALL Java_bwapi4_Game_mapFileName_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return env->NewStringUTF(x_game->mapFileName().c_str()); +} +JNIEXPORT jstring JNICALL Java_bwapi4_Game_mapPathName_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return env->NewStringUTF(x_game->mapPathName().c_str()); +} +JNIEXPORT jstring JNICALL Java_bwapi4_Game_mapName_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return env->NewStringUTF(x_game->mapName().c_str()); +} +JNIEXPORT jstring JNICALL Java_bwapi4_Game_mapHash_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return env->NewStringUTF(x_game->mapHash().c_str()); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isWalkable_1native__JII(JNIEnv * env, jobject obj, jlong pointer, jint walkX, jint walkY){ +Game* x_game = (Game*)pointer; +return x_game->isWalkable(walkX, walkY); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isWalkable_1native__JLbwapi4_WalkPosition_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_position){ +Game* x_game = (Game*)pointer; +WalkPosition* position = (WalkPosition*)env->GetLongField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "pointer", "J")); +return x_game->isWalkable(position); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isBuildable_1native__JII(JNIEnv * env, jobject obj, jlong pointer, jint tileX, jint tileY){ +Game* x_game = (Game*)pointer; +return x_game->isBuildable(tileX, tileY); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isBuildable_1native__JIIZ(JNIEnv * env, jobject obj, jlong pointer, jint tileX, jint tileY, jboolean includeBuildings){ +Game* x_game = (Game*)pointer; +return x_game->isBuildable(tileX, tileY, (bool)includeBuildings); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isBuildable_1native__JLbwapi4_TilePosition_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_position){ +Game* x_game = (Game*)pointer; +TilePosition position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); +return x_game->isBuildable(position); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isBuildable_1native__JLbwapi4_TilePosition_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_position, jboolean includeBuildings){ +Game* x_game = (Game*)pointer; +TilePosition position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); +return x_game->isBuildable(position, (bool)includeBuildings); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isVisible_1native__JII(JNIEnv * env, jobject obj, jlong pointer, jint tileX, jint tileY){ +Game* x_game = (Game*)pointer; +return x_game->isVisible(tileX, tileY); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isVisible_1native__JLbwapi4_TilePosition_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_position){ +Game* x_game = (Game*)pointer; +TilePosition position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); +return x_game->isVisible(position); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isExplored_1native__JII(JNIEnv * env, jobject obj, jlong pointer, jint tileX, jint tileY){ +Game* x_game = (Game*)pointer; +return x_game->isExplored(tileX, tileY); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isExplored_1native__JLbwapi4_TilePosition_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_position){ +Game* x_game = (Game*)pointer; +TilePosition position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); +return x_game->isExplored(position); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasCreep_1native__JII(JNIEnv * env, jobject obj, jlong pointer, jint tileX, jint tileY){ +Game* x_game = (Game*)pointer; +return x_game->hasCreep(tileX, tileY); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasCreep_1native__JLbwapi4_TilePosition_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_position){ +Game* x_game = (Game*)pointer; +TilePosition position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); +return x_game->hasCreep(position); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPowerPrecise_1native__JII(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y){ +Game* x_game = (Game*)pointer; +return x_game->hasPowerPrecise(x, y); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPowerPrecise_1native__JIILbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y, jobject p_unitType){ +Game* x_game = (Game*)pointer; +UnitType* unitType = (UnitType*)env->GetLongField(p_unitType, FindCachedField(env, env->GetObjectClass(p_unitType), "pointer", "J")); +return x_game->hasPowerPrecise(x, y, *unitType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPowerPrecise_1native__JLbwapi4_Position_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_position){ +Game* x_game = (Game*)pointer; +Position position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); +return x_game->hasPowerPrecise(position); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPowerPrecise_1native__JLbwapi4_Position_2Lbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_position, jobject p_unitType){ +Game* x_game = (Game*)pointer; +Position position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); +UnitType* unitType = (UnitType*)env->GetLongField(p_unitType, FindCachedField(env, env->GetObjectClass(p_unitType), "pointer", "J")); +return x_game->hasPowerPrecise(position, *unitType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JII(JNIEnv * env, jobject obj, jlong pointer, jint tileX, jint tileY){ +Game* x_game = (Game*)pointer; +return x_game->hasPower(tileX, tileY); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JIILbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jint tileX, jint tileY, jobject p_unitType){ +Game* x_game = (Game*)pointer; +UnitType* unitType = (UnitType*)env->GetLongField(p_unitType, FindCachedField(env, env->GetObjectClass(p_unitType), "pointer", "J")); +return x_game->hasPower(tileX, tileY, *unitType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JLbwapi4_TilePosition_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_position){ +Game* x_game = (Game*)pointer; +TilePosition position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); +return x_game->hasPower(position); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_position, jobject p_unitType){ +Game* x_game = (Game*)pointer; +TilePosition position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); +UnitType* unitType = (UnitType*)env->GetLongField(p_unitType, FindCachedField(env, env->GetObjectClass(p_unitType), "pointer", "J")); +return x_game->hasPower(position, *unitType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JIIII(JNIEnv * env, jobject obj, jlong pointer, jint tileX, jint tileY, jint tileWidth, jint tileHeight){ +Game* x_game = (Game*)pointer; +return x_game->hasPower(tileX, tileY, tileWidth, tileHeight); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JIIIILbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jint tileX, jint tileY, jint tileWidth, jint tileHeight, jobject p_unitType){ +Game* x_game = (Game*)pointer; +UnitType* unitType = (UnitType*)env->GetLongField(p_unitType, FindCachedField(env, env->GetObjectClass(p_unitType), "pointer", "J")); +return x_game->hasPower(tileX, tileY, tileWidth, tileHeight, *unitType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JLbwapi4_TilePosition_2II(JNIEnv * env, jobject obj, jlong pointer, jobject p_position, jint tileWidth, jint tileHeight){ +Game* x_game = (Game*)pointer; +TilePosition position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); +return x_game->hasPower(position, tileWidth, tileHeight); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JLbwapi4_TilePosition_2IILbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_position, jint tileWidth, jint tileHeight, jobject p_unitType){ +Game* x_game = (Game*)pointer; +TilePosition position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); +UnitType* unitType = (UnitType*)env->GetLongField(p_unitType, FindCachedField(env, env->GetObjectClass(p_unitType), "pointer", "J")); +return x_game->hasPower(position, tileWidth, tileHeight, *unitType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canBuildHere_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitType_2Lbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_position, jobject p_type, jobject p_builder){ +Game* x_game = (Game*)pointer; +TilePosition position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +Unit* builder = (Unit*)env->GetLongField(p_builder, FindCachedField(env, env->GetObjectClass(p_builder), "pointer", "J")); +return x_game->canBuildHere(position, *type, builder); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canBuildHere_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_position, jobject p_type){ +Game* x_game = (Game*)pointer; +TilePosition position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_game->canBuildHere(position, *type); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canBuildHere_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitType_2Lbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_position, jobject p_type, jobject p_builder, jboolean checkExplored){ +Game* x_game = (Game*)pointer; +TilePosition position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +Unit* builder = (Unit*)env->GetLongField(p_builder, FindCachedField(env, env->GetObjectClass(p_builder), "pointer", "J")); +return x_game->canBuildHere(position, *type, builder, (bool)checkExplored); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canMake_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ +Game* x_game = (Game*)pointer; +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_game->canMake(*type); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canMake_1native__JLbwapi4_UnitType_2Lbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jobject p_builder){ +Game* x_game = (Game*)pointer; +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +Unit* builder = (Unit*)env->GetLongField(p_builder, FindCachedField(env, env->GetObjectClass(p_builder), "pointer", "J")); +return x_game->canMake(*type, builder); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canResearch_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jobject p_unit){ +Game* x_game = (Game*)pointer; +TechType* type = (TechType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +Unit* unit = (Unit*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_game->canResearch(*type, unit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canResearch_1native__JLbwapi4_TechType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ +Game* x_game = (Game*)pointer; +TechType* type = (TechType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_game->canResearch(*type); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canResearch_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jobject p_unit, jboolean checkCanIssueCommandType){ +Game* x_game = (Game*)pointer; +TechType* type = (TechType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +Unit* unit = (Unit*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_game->canResearch(*type, unit, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canUpgrade_1native__JLbwapi4_UpgradeType_2Lbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jobject p_unit){ +Game* x_game = (Game*)pointer; +UpgradeType* type = (UpgradeType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +Unit* unit = (Unit*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_game->canUpgrade(*type, unit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canUpgrade_1native__JLbwapi4_UpgradeType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ +Game* x_game = (Game*)pointer; +UpgradeType* type = (UpgradeType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_game->canUpgrade(*type); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canUpgrade_1native__JLbwapi4_UpgradeType_2Lbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jobject p_unit, jboolean checkCanIssueCommandType){ +Game* x_game = (Game*)pointer; +UpgradeType* type = (UpgradeType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +Unit* unit = (Unit*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_game->canUpgrade(*type, unit, (bool)checkCanIssueCommandType); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_vPrintf_1native(JNIEnv * env, jobject obj, jlong pointer, jstring cstr_format, jobject p_...){ +Game* x_game = (Game*)pointer; +Object* ... = (Object*)env->GetLongField(p_..., FindCachedField(env, env->GetObjectClass(p_...), "pointer", "J")); +x_game->vPrintf(std::string(env->GetStringUTFChars(cstr_format, NULL)).c_str(), ...); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_vSendText_1native(JNIEnv * env, jobject obj, jlong pointer, jstring cstr_format, jobject p_...){ +Game* x_game = (Game*)pointer; +Object* ... = (Object*)env->GetLongField(p_..., FindCachedField(env, env->GetObjectClass(p_...), "pointer", "J")); +x_game->vSendText(std::string(env->GetStringUTFChars(cstr_format, NULL)).c_str(), ...); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_vSendTextEx_1native(JNIEnv * env, jobject obj, jlong pointer, jboolean toAllies, jstring cstr_format, jobject p_...){ +Game* x_game = (Game*)pointer; +Object* ... = (Object*)env->GetLongField(p_..., FindCachedField(env, env->GetObjectClass(p_...), "pointer", "J")); +x_game->vSendTextEx((bool)toAllies, std::string(env->GetStringUTFChars(cstr_format, NULL)).c_str(), ...); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isInGame_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->isInGame(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isMultiplayer_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->isMultiplayer(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isBattleNet_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->isBattleNet(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isPaused_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->isPaused(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isReplay_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->isReplay(); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_pauseGame_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +x_game->pauseGame(); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_resumeGame_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +x_game->resumeGame(); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_leaveGame_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +x_game->leaveGame(); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_restartGame_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +x_game->restartGame(); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_setLocalSpeed_1native(JNIEnv * env, jobject obj, jlong pointer, jint speed){ +Game* x_game = (Game*)pointer; +x_game->setLocalSpeed(speed); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_issueCommand_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_units, jobject p_command){ +Game* x_game = (Game*)pointer; +Unitset* units = (Unitset*)env->GetLongField(p_units, FindCachedField(env, env->GetObjectClass(p_units), "pointer", "J")); +UnitCommand* command = (UnitCommand*)env->GetLongField(p_command, FindCachedField(env, env->GetObjectClass(p_command), "pointer", "J")); +return x_game->issueCommand(units, *command); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getSelectedUnits_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->getSelectedUnits(); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_self_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->self(); +jclass retcls = FindCachedClass(env, "bwapi4/Player"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Player;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_enemy_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->enemy(); +jclass retcls = FindCachedClass(env, "bwapi4/Player"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Player;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_neutral_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->neutral(); +jclass retcls = FindCachedClass(env, "bwapi4/Player"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Player;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_allies_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->allies(); +jclass retcls = FindCachedClass(env, "bwapi4/Playerset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Playerset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_enemies_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->enemies(); +jclass retcls = FindCachedClass(env, "bwapi4/Playerset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Playerset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_observers_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->observers(); +jclass retcls = FindCachedClass(env, "bwapi4/Playerset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Playerset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_setTextSize_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +x_game->setTextSize(); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_setTextSize_1native__JLbwapi4_Text_Size_Enum_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_size){ +Game* x_game = (Game*)pointer; +bwapi4.Text.Size.Enum* size = (bwapi4.Text.Size.Enum*)env->GetLongField(p_size, FindCachedField(env, env->GetObjectClass(p_size), "pointer", "J")); +x_game->setTextSize(size); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_vDrawText_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_ctype, jint x, jint y, jstring cstr_format, jobject p_...){ +Game* x_game = (Game*)pointer; +bwapi4.CoordinateType.Enum* ctype = (bwapi4.CoordinateType.Enum*)env->GetLongField(p_ctype, FindCachedField(env, env->GetObjectClass(p_ctype), "pointer", "J")); +Object* ... = (Object*)env->GetLongField(p_..., FindCachedField(env, env->GetObjectClass(p_...), "pointer", "J")); +x_game->vDrawText(ctype, x, y, std::string(env->GetStringUTFChars(cstr_format, NULL)).c_str(), ...); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBox_1native__JLbwapi4_CoordinateType_Enum_2IIIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_ctype, jint left, jint top, jint right, jint bottom, jobject p_color){ +Game* x_game = (Game*)pointer; +bwapi4.CoordinateType.Enum* ctype = (bwapi4.CoordinateType.Enum*)env->GetLongField(p_ctype, FindCachedField(env, env->GetObjectClass(p_ctype), "pointer", "J")); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawBox(ctype, left, top, right, bottom, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBox_1native__JLbwapi4_CoordinateType_Enum_2IIIILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_ctype, jint left, jint top, jint right, jint bottom, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +bwapi4.CoordinateType.Enum* ctype = (bwapi4.CoordinateType.Enum*)env->GetLongField(p_ctype, FindCachedField(env, env->GetObjectClass(p_ctype), "pointer", "J")); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawBox(ctype, left, top, right, bottom, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMap_1native__JIIIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jint left, jint top, jint right, jint bottom, jobject p_color){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawBoxMap(left, top, right, bottom, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMap_1native__JIIIILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jint left, jint top, jint right, jint bottom, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawBoxMap(left, top, right, bottom, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMap_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_leftTop, jobject p_rightBottom, jobject p_color){ +Game* x_game = (Game*)pointer; +Position leftTop((int)env->GetIntField(p_leftTop, FindCachedField(env, env->GetObjectClass(p_leftTop), "x", "I")), (int)env->GetIntField(p_leftTop, FindCachedField(env, env->GetObjectClass(p_leftTop), "y", "I"))); +Position rightBottom((int)env->GetIntField(p_rightBottom, FindCachedField(env, env->GetObjectClass(p_rightBottom), "x", "I")), (int)env->GetIntField(p_rightBottom, FindCachedField(env, env->GetObjectClass(p_rightBottom), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawBoxMap(leftTop, rightBottom, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMap_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_leftTop, jobject p_rightBottom, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Position leftTop((int)env->GetIntField(p_leftTop, FindCachedField(env, env->GetObjectClass(p_leftTop), "x", "I")), (int)env->GetIntField(p_leftTop, FindCachedField(env, env->GetObjectClass(p_leftTop), "y", "I"))); +Position rightBottom((int)env->GetIntField(p_rightBottom, FindCachedField(env, env->GetObjectClass(p_rightBottom), "x", "I")), (int)env->GetIntField(p_rightBottom, FindCachedField(env, env->GetObjectClass(p_rightBottom), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawBoxMap(leftTop, rightBottom, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMouse_1native__JIIIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jint left, jint top, jint right, jint bottom, jobject p_color){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawBoxMouse(left, top, right, bottom, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMouse_1native__JIIIILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jint left, jint top, jint right, jint bottom, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawBoxMouse(left, top, right, bottom, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMouse_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_leftTop, jobject p_rightBottom, jobject p_color){ +Game* x_game = (Game*)pointer; +Position leftTop((int)env->GetIntField(p_leftTop, FindCachedField(env, env->GetObjectClass(p_leftTop), "x", "I")), (int)env->GetIntField(p_leftTop, FindCachedField(env, env->GetObjectClass(p_leftTop), "y", "I"))); +Position rightBottom((int)env->GetIntField(p_rightBottom, FindCachedField(env, env->GetObjectClass(p_rightBottom), "x", "I")), (int)env->GetIntField(p_rightBottom, FindCachedField(env, env->GetObjectClass(p_rightBottom), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawBoxMouse(leftTop, rightBottom, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMouse_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_leftTop, jobject p_rightBottom, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Position leftTop((int)env->GetIntField(p_leftTop, FindCachedField(env, env->GetObjectClass(p_leftTop), "x", "I")), (int)env->GetIntField(p_leftTop, FindCachedField(env, env->GetObjectClass(p_leftTop), "y", "I"))); +Position rightBottom((int)env->GetIntField(p_rightBottom, FindCachedField(env, env->GetObjectClass(p_rightBottom), "x", "I")), (int)env->GetIntField(p_rightBottom, FindCachedField(env, env->GetObjectClass(p_rightBottom), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawBoxMouse(leftTop, rightBottom, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxScreen_1native__JIIIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jint left, jint top, jint right, jint bottom, jobject p_color){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawBoxScreen(left, top, right, bottom, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxScreen_1native__JIIIILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jint left, jint top, jint right, jint bottom, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawBoxScreen(left, top, right, bottom, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxScreen_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_leftTop, jobject p_rightBottom, jobject p_color){ +Game* x_game = (Game*)pointer; +Position leftTop((int)env->GetIntField(p_leftTop, FindCachedField(env, env->GetObjectClass(p_leftTop), "x", "I")), (int)env->GetIntField(p_leftTop, FindCachedField(env, env->GetObjectClass(p_leftTop), "y", "I"))); +Position rightBottom((int)env->GetIntField(p_rightBottom, FindCachedField(env, env->GetObjectClass(p_rightBottom), "x", "I")), (int)env->GetIntField(p_rightBottom, FindCachedField(env, env->GetObjectClass(p_rightBottom), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawBoxScreen(leftTop, rightBottom, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxScreen_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_leftTop, jobject p_rightBottom, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Position leftTop((int)env->GetIntField(p_leftTop, FindCachedField(env, env->GetObjectClass(p_leftTop), "x", "I")), (int)env->GetIntField(p_leftTop, FindCachedField(env, env->GetObjectClass(p_leftTop), "y", "I"))); +Position rightBottom((int)env->GetIntField(p_rightBottom, FindCachedField(env, env->GetObjectClass(p_rightBottom), "x", "I")), (int)env->GetIntField(p_rightBottom, FindCachedField(env, env->GetObjectClass(p_rightBottom), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawBoxScreen(leftTop, rightBottom, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangle_1native__JLbwapi4_CoordinateType_Enum_2IIIIIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_ctype, jint ax, jint ay, jint bx, jint by, jint cx, jint cy, jobject p_color){ +Game* x_game = (Game*)pointer; +bwapi4.CoordinateType.Enum* ctype = (bwapi4.CoordinateType.Enum*)env->GetLongField(p_ctype, FindCachedField(env, env->GetObjectClass(p_ctype), "pointer", "J")); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawTriangle(ctype, ax, ay, bx, by, cx, cy, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangle_1native__JLbwapi4_CoordinateType_Enum_2IIIIIILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_ctype, jint ax, jint ay, jint bx, jint by, jint cx, jint cy, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +bwapi4.CoordinateType.Enum* ctype = (bwapi4.CoordinateType.Enum*)env->GetLongField(p_ctype, FindCachedField(env, env->GetObjectClass(p_ctype), "pointer", "J")); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawTriangle(ctype, ax, ay, bx, by, cx, cy, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMap_1native__JIIIIIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jint ax, jint ay, jint bx, jint by, jint cx, jint cy, jobject p_color){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawTriangleMap(ax, ay, bx, by, cx, cy, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMap_1native__JIIIIIILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jint ax, jint ay, jint bx, jint by, jint cx, jint cy, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawTriangleMap(ax, ay, bx, by, cx, cy, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMap_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_a, jobject p_b, jobject p_c, jobject p_color){ +Game* x_game = (Game*)pointer; +Position a((int)env->GetIntField(p_a, FindCachedField(env, env->GetObjectClass(p_a), "x", "I")), (int)env->GetIntField(p_a, FindCachedField(env, env->GetObjectClass(p_a), "y", "I"))); +Position b((int)env->GetIntField(p_b, FindCachedField(env, env->GetObjectClass(p_b), "x", "I")), (int)env->GetIntField(p_b, FindCachedField(env, env->GetObjectClass(p_b), "y", "I"))); +Position c((int)env->GetIntField(p_c, FindCachedField(env, env->GetObjectClass(p_c), "x", "I")), (int)env->GetIntField(p_c, FindCachedField(env, env->GetObjectClass(p_c), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawTriangleMap(a, b, c, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMap_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_a, jobject p_b, jobject p_c, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Position a((int)env->GetIntField(p_a, FindCachedField(env, env->GetObjectClass(p_a), "x", "I")), (int)env->GetIntField(p_a, FindCachedField(env, env->GetObjectClass(p_a), "y", "I"))); +Position b((int)env->GetIntField(p_b, FindCachedField(env, env->GetObjectClass(p_b), "x", "I")), (int)env->GetIntField(p_b, FindCachedField(env, env->GetObjectClass(p_b), "y", "I"))); +Position c((int)env->GetIntField(p_c, FindCachedField(env, env->GetObjectClass(p_c), "x", "I")), (int)env->GetIntField(p_c, FindCachedField(env, env->GetObjectClass(p_c), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawTriangleMap(a, b, c, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMouse_1native__JIIIIIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jint ax, jint ay, jint bx, jint by, jint cx, jint cy, jobject p_color){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawTriangleMouse(ax, ay, bx, by, cx, cy, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMouse_1native__JIIIIIILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jint ax, jint ay, jint bx, jint by, jint cx, jint cy, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawTriangleMouse(ax, ay, bx, by, cx, cy, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMouse_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_a, jobject p_b, jobject p_c, jobject p_color){ +Game* x_game = (Game*)pointer; +Position a((int)env->GetIntField(p_a, FindCachedField(env, env->GetObjectClass(p_a), "x", "I")), (int)env->GetIntField(p_a, FindCachedField(env, env->GetObjectClass(p_a), "y", "I"))); +Position b((int)env->GetIntField(p_b, FindCachedField(env, env->GetObjectClass(p_b), "x", "I")), (int)env->GetIntField(p_b, FindCachedField(env, env->GetObjectClass(p_b), "y", "I"))); +Position c((int)env->GetIntField(p_c, FindCachedField(env, env->GetObjectClass(p_c), "x", "I")), (int)env->GetIntField(p_c, FindCachedField(env, env->GetObjectClass(p_c), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawTriangleMouse(a, b, c, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMouse_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_a, jobject p_b, jobject p_c, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Position a((int)env->GetIntField(p_a, FindCachedField(env, env->GetObjectClass(p_a), "x", "I")), (int)env->GetIntField(p_a, FindCachedField(env, env->GetObjectClass(p_a), "y", "I"))); +Position b((int)env->GetIntField(p_b, FindCachedField(env, env->GetObjectClass(p_b), "x", "I")), (int)env->GetIntField(p_b, FindCachedField(env, env->GetObjectClass(p_b), "y", "I"))); +Position c((int)env->GetIntField(p_c, FindCachedField(env, env->GetObjectClass(p_c), "x", "I")), (int)env->GetIntField(p_c, FindCachedField(env, env->GetObjectClass(p_c), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawTriangleMouse(a, b, c, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleScreen_1native__JIIIIIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jint ax, jint ay, jint bx, jint by, jint cx, jint cy, jobject p_color){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawTriangleScreen(ax, ay, bx, by, cx, cy, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleScreen_1native__JIIIIIILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jint ax, jint ay, jint bx, jint by, jint cx, jint cy, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawTriangleScreen(ax, ay, bx, by, cx, cy, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleScreen_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_a, jobject p_b, jobject p_c, jobject p_color){ +Game* x_game = (Game*)pointer; +Position a((int)env->GetIntField(p_a, FindCachedField(env, env->GetObjectClass(p_a), "x", "I")), (int)env->GetIntField(p_a, FindCachedField(env, env->GetObjectClass(p_a), "y", "I"))); +Position b((int)env->GetIntField(p_b, FindCachedField(env, env->GetObjectClass(p_b), "x", "I")), (int)env->GetIntField(p_b, FindCachedField(env, env->GetObjectClass(p_b), "y", "I"))); +Position c((int)env->GetIntField(p_c, FindCachedField(env, env->GetObjectClass(p_c), "x", "I")), (int)env->GetIntField(p_c, FindCachedField(env, env->GetObjectClass(p_c), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawTriangleScreen(a, b, c, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleScreen_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_a, jobject p_b, jobject p_c, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Position a((int)env->GetIntField(p_a, FindCachedField(env, env->GetObjectClass(p_a), "x", "I")), (int)env->GetIntField(p_a, FindCachedField(env, env->GetObjectClass(p_a), "y", "I"))); +Position b((int)env->GetIntField(p_b, FindCachedField(env, env->GetObjectClass(p_b), "x", "I")), (int)env->GetIntField(p_b, FindCachedField(env, env->GetObjectClass(p_b), "y", "I"))); +Position c((int)env->GetIntField(p_c, FindCachedField(env, env->GetObjectClass(p_c), "x", "I")), (int)env->GetIntField(p_c, FindCachedField(env, env->GetObjectClass(p_c), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawTriangleScreen(a, b, c, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircle_1native__JLbwapi4_CoordinateType_Enum_2IIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_ctype, jint x, jint y, jint radius, jobject p_color){ +Game* x_game = (Game*)pointer; +bwapi4.CoordinateType.Enum* ctype = (bwapi4.CoordinateType.Enum*)env->GetLongField(p_ctype, FindCachedField(env, env->GetObjectClass(p_ctype), "pointer", "J")); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawCircle(ctype, x, y, radius, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircle_1native__JLbwapi4_CoordinateType_Enum_2IIILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_ctype, jint x, jint y, jint radius, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +bwapi4.CoordinateType.Enum* ctype = (bwapi4.CoordinateType.Enum*)env->GetLongField(p_ctype, FindCachedField(env, env->GetObjectClass(p_ctype), "pointer", "J")); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawCircle(ctype, x, y, radius, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMap_1native__JIIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y, jint radius, jobject p_color){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawCircleMap(x, y, radius, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMap_1native__JIIILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y, jint radius, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawCircleMap(x, y, radius, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMap_1native__JLbwapi4_Position_2ILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_p, jint radius, jobject p_color){ +Game* x_game = (Game*)pointer; +Position p((int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "x", "I")), (int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawCircleMap(p, radius, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMap_1native__JLbwapi4_Position_2ILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_p, jint radius, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Position p((int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "x", "I")), (int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawCircleMap(p, radius, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMouse_1native__JIIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y, jint radius, jobject p_color){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawCircleMouse(x, y, radius, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMouse_1native__JIIILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y, jint radius, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawCircleMouse(x, y, radius, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMouse_1native__JLbwapi4_Position_2ILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_p, jint radius, jobject p_color){ +Game* x_game = (Game*)pointer; +Position p((int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "x", "I")), (int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawCircleMouse(p, radius, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMouse_1native__JLbwapi4_Position_2ILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_p, jint radius, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Position p((int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "x", "I")), (int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawCircleMouse(p, radius, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleScreen_1native__JIIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y, jint radius, jobject p_color){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawCircleScreen(x, y, radius, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleScreen_1native__JIIILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y, jint radius, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawCircleScreen(x, y, radius, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleScreen_1native__JLbwapi4_Position_2ILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_p, jint radius, jobject p_color){ +Game* x_game = (Game*)pointer; +Position p((int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "x", "I")), (int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawCircleScreen(p, radius, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleScreen_1native__JLbwapi4_Position_2ILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_p, jint radius, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Position p((int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "x", "I")), (int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawCircleScreen(p, radius, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipse_1native__JLbwapi4_CoordinateType_Enum_2IIIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_ctype, jint x, jint y, jint xrad, jint yrad, jobject p_color){ +Game* x_game = (Game*)pointer; +bwapi4.CoordinateType.Enum* ctype = (bwapi4.CoordinateType.Enum*)env->GetLongField(p_ctype, FindCachedField(env, env->GetObjectClass(p_ctype), "pointer", "J")); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawEllipse(ctype, x, y, xrad, yrad, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipse_1native__JLbwapi4_CoordinateType_Enum_2IIIILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_ctype, jint x, jint y, jint xrad, jint yrad, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +bwapi4.CoordinateType.Enum* ctype = (bwapi4.CoordinateType.Enum*)env->GetLongField(p_ctype, FindCachedField(env, env->GetObjectClass(p_ctype), "pointer", "J")); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawEllipse(ctype, x, y, xrad, yrad, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMap_1native__JIIIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y, jint xrad, jint yrad, jobject p_color){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawEllipseMap(x, y, xrad, yrad, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMap_1native__JIIIILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y, jint xrad, jint yrad, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawEllipseMap(x, y, xrad, yrad, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMap_1native__JLbwapi4_Position_2IILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_p, jint xrad, jint yrad, jobject p_color){ +Game* x_game = (Game*)pointer; +Position p((int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "x", "I")), (int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawEllipseMap(p, xrad, yrad, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMap_1native__JLbwapi4_Position_2IILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_p, jint xrad, jint yrad, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Position p((int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "x", "I")), (int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawEllipseMap(p, xrad, yrad, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMouse_1native__JIIIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y, jint xrad, jint yrad, jobject p_color){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawEllipseMouse(x, y, xrad, yrad, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMouse_1native__JIIIILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y, jint xrad, jint yrad, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawEllipseMouse(x, y, xrad, yrad, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMouse_1native__JLbwapi4_Position_2IILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_p, jint xrad, jint yrad, jobject p_color){ +Game* x_game = (Game*)pointer; +Position p((int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "x", "I")), (int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawEllipseMouse(p, xrad, yrad, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMouse_1native__JLbwapi4_Position_2IILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_p, jint xrad, jint yrad, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Position p((int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "x", "I")), (int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawEllipseMouse(p, xrad, yrad, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseScreen_1native__JIIIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y, jint xrad, jint yrad, jobject p_color){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawEllipseScreen(x, y, xrad, yrad, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseScreen_1native__JIIIILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y, jint xrad, jint yrad, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawEllipseScreen(x, y, xrad, yrad, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseScreen_1native__JLbwapi4_Position_2IILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_p, jint xrad, jint yrad, jobject p_color){ +Game* x_game = (Game*)pointer; +Position p((int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "x", "I")), (int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawEllipseScreen(p, xrad, yrad, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseScreen_1native__JLbwapi4_Position_2IILbwapi4_Color_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_p, jint xrad, jint yrad, jobject p_color, jboolean isSolid){ +Game* x_game = (Game*)pointer; +Position p((int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "x", "I")), (int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawEllipseScreen(p, xrad, yrad, color, (bool)isSolid); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDot_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_ctype, jint x, jint y, jobject p_color){ +Game* x_game = (Game*)pointer; +bwapi4.CoordinateType.Enum* ctype = (bwapi4.CoordinateType.Enum*)env->GetLongField(p_ctype, FindCachedField(env, env->GetObjectClass(p_ctype), "pointer", "J")); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawDot(ctype, x, y, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotMap_1native__JIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y, jobject p_color){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawDotMap(x, y, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotMap_1native__JLbwapi4_Position_2Lbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_p, jobject p_color){ +Game* x_game = (Game*)pointer; +Position p((int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "x", "I")), (int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawDotMap(p, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotMouse_1native__JIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y, jobject p_color){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawDotMouse(x, y, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotMouse_1native__JLbwapi4_Position_2Lbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_p, jobject p_color){ +Game* x_game = (Game*)pointer; +Position p((int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "x", "I")), (int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawDotMouse(p, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotScreen_1native__JIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y, jobject p_color){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawDotScreen(x, y, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotScreen_1native__JLbwapi4_Position_2Lbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_p, jobject p_color){ +Game* x_game = (Game*)pointer; +Position p((int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "x", "I")), (int)env->GetIntField(p_p, FindCachedField(env, env->GetObjectClass(p_p), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawDotScreen(p, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLine_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_ctype, jint x1, jint y1, jint x2, jint y2, jobject p_color){ +Game* x_game = (Game*)pointer; +bwapi4.CoordinateType.Enum* ctype = (bwapi4.CoordinateType.Enum*)env->GetLongField(p_ctype, FindCachedField(env, env->GetObjectClass(p_ctype), "pointer", "J")); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawLine(ctype, x1, y1, x2, y2, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineMap_1native__JIIIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jint x1, jint y1, jint x2, jint y2, jobject p_color){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawLineMap(x1, y1, x2, y2, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineMap_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_a, jobject p_b, jobject p_color){ +Game* x_game = (Game*)pointer; +Position a((int)env->GetIntField(p_a, FindCachedField(env, env->GetObjectClass(p_a), "x", "I")), (int)env->GetIntField(p_a, FindCachedField(env, env->GetObjectClass(p_a), "y", "I"))); +Position b((int)env->GetIntField(p_b, FindCachedField(env, env->GetObjectClass(p_b), "x", "I")), (int)env->GetIntField(p_b, FindCachedField(env, env->GetObjectClass(p_b), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawLineMap(a, b, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineMouse_1native__JIIIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jint x1, jint y1, jint x2, jint y2, jobject p_color){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawLineMouse(x1, y1, x2, y2, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineMouse_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_a, jobject p_b, jobject p_color){ +Game* x_game = (Game*)pointer; +Position a((int)env->GetIntField(p_a, FindCachedField(env, env->GetObjectClass(p_a), "x", "I")), (int)env->GetIntField(p_a, FindCachedField(env, env->GetObjectClass(p_a), "y", "I"))); +Position b((int)env->GetIntField(p_b, FindCachedField(env, env->GetObjectClass(p_b), "x", "I")), (int)env->GetIntField(p_b, FindCachedField(env, env->GetObjectClass(p_b), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawLineMouse(a, b, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineScreen_1native__JIIIILbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jint x1, jint y1, jint x2, jint y2, jobject p_color){ +Game* x_game = (Game*)pointer; +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawLineScreen(x1, y1, x2, y2, color); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineScreen_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_a, jobject p_b, jobject p_color){ +Game* x_game = (Game*)pointer; +Position a((int)env->GetIntField(p_a, FindCachedField(env, env->GetObjectClass(p_a), "x", "I")), (int)env->GetIntField(p_a, FindCachedField(env, env->GetObjectClass(p_a), "y", "I"))); +Position b((int)env->GetIntField(p_b, FindCachedField(env, env->GetObjectClass(p_b), "x", "I")), (int)env->GetIntField(p_b, FindCachedField(env, env->GetObjectClass(p_b), "y", "I"))); +Color color((int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "r", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "g", "I")), (int)env->GetIntField(p_color, FindCachedField(env, env->GetObjectClass(p_color), "b", "I"))); +x_game->drawLineScreen(a, b, color); +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_getLatencyFrames_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->getLatencyFrames(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_getLatencyTime_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->getLatencyTime(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_getRemainingLatencyFrames_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->getRemainingLatencyFrames(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_getRemainingLatencyTime_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->getRemainingLatencyTime(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_getRevision_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->getRevision(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isDebug_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->isDebug(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isLatComEnabled_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->isLatComEnabled(); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_setLatCom_1native(JNIEnv * env, jobject obj, jlong pointer, jboolean isEnabled){ +Game* x_game = (Game*)pointer; +x_game->setLatCom((bool)isEnabled); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isGUIEnabled_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->isGUIEnabled(); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_setGUI_1native(JNIEnv * env, jobject obj, jlong pointer, jboolean enabled){ +Game* x_game = (Game*)pointer; +x_game->setGUI((bool)enabled); +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_getInstanceNumber_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->getInstanceNumber(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_getAPM_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->getAPM(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_getAPM_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean includeSelects){ +Game* x_game = (Game*)pointer; +return x_game->getAPM((bool)includeSelects); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setMap_1native(JNIEnv * env, jobject obj, jlong pointer, jstring cstr_mapFileName){ +Game* x_game = (Game*)pointer; +return x_game->setMap(std::string(env->GetStringUTFChars(cstr_mapFileName, NULL)).c_str()); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_setFrameSkip_1native(JNIEnv * env, jobject obj, jlong pointer, jint frameSkip){ +Game* x_game = (Game*)pointer; +x_game->setFrameSkip(frameSkip); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPath_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_source, jobject p_destination){ +Game* x_game = (Game*)pointer; +Position source((int)env->GetIntField(p_source, FindCachedField(env, env->GetObjectClass(p_source), "x", "I")), (int)env->GetIntField(p_source, FindCachedField(env, env->GetObjectClass(p_source), "y", "I"))); +Position destination((int)env->GetIntField(p_destination, FindCachedField(env, env->GetObjectClass(p_destination), "x", "I")), (int)env->GetIntField(p_destination, FindCachedField(env, env->GetObjectClass(p_destination), "y", "I"))); +return x_game->hasPath(source, destination); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setAlliance_1native__JLbwapi4_Player_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_player, jboolean allied){ +Game* x_game = (Game*)pointer; +Player* player = (Player*)env->GetLongField(p_player, FindCachedField(env, env->GetObjectClass(p_player), "pointer", "J")); +return x_game->setAlliance(player, (bool)allied); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setAlliance_1native__JLbwapi4_Player_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_player){ +Game* x_game = (Game*)pointer; +Player* player = (Player*)env->GetLongField(p_player, FindCachedField(env, env->GetObjectClass(p_player), "pointer", "J")); +return x_game->setAlliance(player); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setAlliance_1native__JLbwapi4_Player_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_player, jboolean allied, jboolean alliedVictory){ +Game* x_game = (Game*)pointer; +Player* player = (Player*)env->GetLongField(p_player, FindCachedField(env, env->GetObjectClass(p_player), "pointer", "J")); +return x_game->setAlliance(player, (bool)allied, (bool)alliedVictory); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setVision_1native__JLbwapi4_Player_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_player){ +Game* x_game = (Game*)pointer; +Player* player = (Player*)env->GetLongField(p_player, FindCachedField(env, env->GetObjectClass(p_player), "pointer", "J")); +return x_game->setVision(player); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setVision_1native__JLbwapi4_Player_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_player, jboolean enabled){ +Game* x_game = (Game*)pointer; +Player* player = (Player*)env->GetLongField(p_player, FindCachedField(env, env->GetObjectClass(p_player), "pointer", "J")); +return x_game->setVision(player, (bool)enabled); +} +JNIEXPORT void JNICALL Java_bwapi4_Game_setCommandOptimizationLevel_1native(JNIEnv * env, jobject obj, jlong pointer, jint level){ +Game* x_game = (Game*)pointer; +x_game->setCommandOptimizationLevel(level); +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_countdownTimer_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->countdownTimer(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getRegionAt_1native__JII(JNIEnv * env, jobject obj, jlong pointer, jint x, jint y){ +Game* x_game = (Game*)pointer; +jlong resptr = (jlong)x_game->getRegionAt(x, y); +jclass retcls = FindCachedClass(env, "bwapi4/Region"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Region;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getRegionAt_1native__JLbwapi4_Position_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_position){ +Game* x_game = (Game*)pointer; +Position position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); +jlong resptr = (jlong)x_game->getRegionAt(position); +jclass retcls = FindCachedClass(env, "bwapi4/Region"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Region;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_getLastEventTime_1native(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->getLastEventTime(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setRevealAll_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Game* x_game = (Game*)pointer; +return x_game->setRevealAll(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setRevealAll_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean reveal){ +Game* x_game = (Game*)pointer; +return x_game->setRevealAll((bool)reveal); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBuildLocation_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2I(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jobject p_desiredPosition, jint maxRange){ +Game* x_game = (Game*)pointer; +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +TilePosition desiredPosition((int)env->GetIntField(p_desiredPosition, FindCachedField(env, env->GetObjectClass(p_desiredPosition), "x", "I")), (int)env->GetIntField(p_desiredPosition, FindCachedField(env, env->GetObjectClass(p_desiredPosition), "y", "I"))); +TilePosition cresult = x_game->getBuildLocation(*type, desiredPosition, maxRange); +jclass retcls = FindCachedClass(env, "bwapi/TilePosition"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBuildLocation_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jobject p_desiredPosition){ +Game* x_game = (Game*)pointer; +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +TilePosition desiredPosition((int)env->GetIntField(p_desiredPosition, FindCachedField(env, env->GetObjectClass(p_desiredPosition), "x", "I")), (int)env->GetIntField(p_desiredPosition, FindCachedField(env, env->GetObjectClass(p_desiredPosition), "y", "I"))); +TilePosition cresult = x_game->getBuildLocation(*type, desiredPosition); +jclass retcls = FindCachedClass(env, "bwapi/TilePosition"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBuildLocation_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2IZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jobject p_desiredPosition, jint maxRange, jboolean creep){ +Game* x_game = (Game*)pointer; +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +TilePosition desiredPosition((int)env->GetIntField(p_desiredPosition, FindCachedField(env, env->GetObjectClass(p_desiredPosition), "x", "I")), (int)env->GetIntField(p_desiredPosition, FindCachedField(env, env->GetObjectClass(p_desiredPosition), "y", "I"))); +TilePosition cresult = x_game->getBuildLocation(*type, desiredPosition, maxRange, (bool)creep); +jclass retcls = FindCachedClass(env, "bwapi/TilePosition"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageFrom_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2Lbwapi4_Player_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_fromType, jobject p_toType, jobject p_fromPlayer){ +Game* x_game = (Game*)pointer; +UnitType* fromType = (UnitType*)env->GetLongField(p_fromType, FindCachedField(env, env->GetObjectClass(p_fromType), "pointer", "J")); +UnitType* toType = (UnitType*)env->GetLongField(p_toType, FindCachedField(env, env->GetObjectClass(p_toType), "pointer", "J")); +Player* fromPlayer = (Player*)env->GetLongField(p_fromPlayer, FindCachedField(env, env->GetObjectClass(p_fromPlayer), "pointer", "J")); +return x_game->getDamageFrom(*fromType, *toType, fromPlayer); +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageFrom_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_fromType, jobject p_toType){ +Game* x_game = (Game*)pointer; +UnitType* fromType = (UnitType*)env->GetLongField(p_fromType, FindCachedField(env, env->GetObjectClass(p_fromType), "pointer", "J")); +UnitType* toType = (UnitType*)env->GetLongField(p_toType, FindCachedField(env, env->GetObjectClass(p_toType), "pointer", "J")); +return x_game->getDamageFrom(*fromType, *toType); +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageFrom_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2Lbwapi4_Player_2Lbwapi4_Player_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_fromType, jobject p_toType, jobject p_fromPlayer, jobject p_toPlayer){ +Game* x_game = (Game*)pointer; +UnitType* fromType = (UnitType*)env->GetLongField(p_fromType, FindCachedField(env, env->GetObjectClass(p_fromType), "pointer", "J")); +UnitType* toType = (UnitType*)env->GetLongField(p_toType, FindCachedField(env, env->GetObjectClass(p_toType), "pointer", "J")); +Player* fromPlayer = (Player*)env->GetLongField(p_fromPlayer, FindCachedField(env, env->GetObjectClass(p_fromPlayer), "pointer", "J")); +Player* toPlayer = (Player*)env->GetLongField(p_toPlayer, FindCachedField(env, env->GetObjectClass(p_toPlayer), "pointer", "J")); +return x_game->getDamageFrom(*fromType, *toType, fromPlayer, toPlayer); +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageTo_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2Lbwapi4_Player_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_toType, jobject p_fromType, jobject p_toPlayer){ +Game* x_game = (Game*)pointer; +UnitType* toType = (UnitType*)env->GetLongField(p_toType, FindCachedField(env, env->GetObjectClass(p_toType), "pointer", "J")); +UnitType* fromType = (UnitType*)env->GetLongField(p_fromType, FindCachedField(env, env->GetObjectClass(p_fromType), "pointer", "J")); +Player* toPlayer = (Player*)env->GetLongField(p_toPlayer, FindCachedField(env, env->GetObjectClass(p_toPlayer), "pointer", "J")); +return x_game->getDamageTo(*toType, *fromType, toPlayer); +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageTo_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_toType, jobject p_fromType){ +Game* x_game = (Game*)pointer; +UnitType* toType = (UnitType*)env->GetLongField(p_toType, FindCachedField(env, env->GetObjectClass(p_toType), "pointer", "J")); +UnitType* fromType = (UnitType*)env->GetLongField(p_fromType, FindCachedField(env, env->GetObjectClass(p_fromType), "pointer", "J")); +return x_game->getDamageTo(*toType, *fromType); +} +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageTo_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2Lbwapi4_Player_2Lbwapi4_Player_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_toType, jobject p_fromType, jobject p_toPlayer, jobject p_fromPlayer){ +Game* x_game = (Game*)pointer; +UnitType* toType = (UnitType*)env->GetLongField(p_toType, FindCachedField(env, env->GetObjectClass(p_toType), "pointer", "J")); +UnitType* fromType = (UnitType*)env->GetLongField(p_fromType, FindCachedField(env, env->GetObjectClass(p_fromType), "pointer", "J")); +Player* toPlayer = (Player*)env->GetLongField(p_toPlayer, FindCachedField(env, env->GetObjectClass(p_toPlayer), "pointer", "J")); +Player* fromPlayer = (Player*)env->GetLongField(p_fromPlayer, FindCachedField(env, env->GetObjectClass(p_fromPlayer), "pointer", "J")); +return x_game->getDamageTo(*toType, *fromType, toPlayer, fromPlayer); +} +JNIEXPORT void JNICALL Java_bwapi4_GameWrapper_flush_1native(JNIEnv * env, jobject obj, jlong pointer){ +GameWrapper* x_gameWrapper = (GameWrapper*)pointer; +x_gameWrapper->flush(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_InterfaceEvent_isFinished_1native(JNIEnv * env, jobject obj, jlong pointer){ +InterfaceEvent* x_interfaceEvent = (InterfaceEvent*)pointer; +return x_interfaceEvent->isFinished(); +} +JNIEXPORT void JNICALL Java_bwapi4_InterfaceEvent_removeEvent_1native(JNIEnv * env, jobject obj, jlong pointer){ +InterfaceEvent* x_interfaceEvent = (InterfaceEvent*)pointer; +x_interfaceEvent->removeEvent(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_getID_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->getID(); +} +JNIEXPORT jstring JNICALL Java_bwapi4_Player_getName_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return env->NewStringUTF(x_player->getName().c_str()); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getRace_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +jlong resptr = (jlong)tableRace.find(x_player->getRace())->second; +jclass retcls = FindCachedClass(env, "bwapi4/Race"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Race;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getType_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +jlong resptr = (jlong)x_player->getType(); +jclass retcls = FindCachedClass(env, "bwapi4/PlayerType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/PlayerType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getForce_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +jlong resptr = (jlong)x_player->getForce(); +jclass retcls = FindCachedClass(env, "bwapi4/Force"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Force;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isAlly_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_player){ +Player* x_player = (Player*)pointer; +Player* player = (Player*)env->GetLongField(p_player, FindCachedField(env, env->GetObjectClass(p_player), "pointer", "J")); +return x_player->isAlly(player); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isEnemy_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_player){ +Player* x_player = (Player*)pointer; +Player* player = (Player*)env->GetLongField(p_player, FindCachedField(env, env->GetObjectClass(p_player), "pointer", "J")); +return x_player->isEnemy(player); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isNeutral_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->isNeutral(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getStartLocation_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +TilePosition cresult = x_player->getStartLocation(); +jclass retcls = FindCachedClass(env, "bwapi/TilePosition"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isVictorious_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->isVictorious(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isDefeated_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->isDefeated(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_leftGame_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->leftGame(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_minerals_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->minerals(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_gas_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->gas(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_gatheredMinerals_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->gatheredMinerals(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_gatheredGas_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->gatheredGas(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_repairedMinerals_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->repairedMinerals(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_repairedGas_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->repairedGas(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_refundedMinerals_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->refundedMinerals(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_refundedGas_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->refundedGas(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_spentMinerals_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->spentMinerals(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_spentGas_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->spentGas(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_supplyTotal_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->supplyTotal(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_supplyTotal_1native__JLbwapi4_Race_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_race){ +Player* x_player = (Player*)pointer; +Race* race = (Race*)env->GetLongField(p_race, FindCachedField(env, env->GetObjectClass(p_race), "pointer", "J")); +return x_player->supplyTotal(*race); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_supplyUsed_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->supplyUsed(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_supplyUsed_1native__JLbwapi4_Race_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_race){ +Player* x_player = (Player*)pointer; +Race* race = (Race*)env->GetLongField(p_race, FindCachedField(env, env->GetObjectClass(p_race), "pointer", "J")); +return x_player->supplyUsed(*race); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_allUnitCount_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->allUnitCount(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_allUnitCount_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ +Player* x_player = (Player*)pointer; +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->allUnitCount(*unit); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_visibleUnitCount_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->visibleUnitCount(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_visibleUnitCount_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ +Player* x_player = (Player*)pointer; +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->visibleUnitCount(*unit); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_completedUnitCount_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->completedUnitCount(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_completedUnitCount_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ +Player* x_player = (Player*)pointer; +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->completedUnitCount(*unit); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_incompleteUnitCount_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->incompleteUnitCount(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_incompleteUnitCount_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ +Player* x_player = (Player*)pointer; +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->incompleteUnitCount(*unit); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_deadUnitCount_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->deadUnitCount(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_deadUnitCount_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ +Player* x_player = (Player*)pointer; +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->deadUnitCount(*unit); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_killedUnitCount_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->killedUnitCount(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_killedUnitCount_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ +Player* x_player = (Player*)pointer; +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->killedUnitCount(*unit); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_getUpgradeLevel_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_upgrade){ +Player* x_player = (Player*)pointer; +UpgradeType* upgrade = (UpgradeType*)env->GetLongField(p_upgrade, FindCachedField(env, env->GetObjectClass(p_upgrade), "pointer", "J")); +return x_player->getUpgradeLevel(*upgrade); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_hasResearched_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ +Player* x_player = (Player*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_player->hasResearched(*tech); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isResearching_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ +Player* x_player = (Player*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_player->isResearching(*tech); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isUpgrading_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_upgrade){ +Player* x_player = (Player*)pointer; +UpgradeType* upgrade = (UpgradeType*)env->GetLongField(p_upgrade, FindCachedField(env, env->GetObjectClass(p_upgrade), "pointer", "J")); +return x_player->isUpgrading(*upgrade); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getColor_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +Color cresult = x_player->getColor(); +jclass retcls = FindCachedClass(env, "bwapi4/Color"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(III)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.red(), cresult.green(), cresult.blue()); +return result; +} +JNIEXPORT jchar JNICALL Java_bwapi4_Player_getTextColor_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->getTextColor(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_maxEnergy_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ +Player* x_player = (Player*)pointer; +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->maxEnergy(*unit); +} +JNIEXPORT jdouble JNICALL Java_bwapi4_Player_topSpeed_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ +Player* x_player = (Player*)pointer; +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->topSpeed(*unit); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_weaponMaxRange_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_weapon){ +Player* x_player = (Player*)pointer; +WeaponType* weapon = (WeaponType*)env->GetLongField(p_weapon, FindCachedField(env, env->GetObjectClass(p_weapon), "pointer", "J")); +return x_player->weaponMaxRange(*weapon); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_sightRange_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ +Player* x_player = (Player*)pointer; +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->sightRange(*unit); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_weaponDamageCooldown_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ +Player* x_player = (Player*)pointer; +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->weaponDamageCooldown(*unit); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_armor_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ +Player* x_player = (Player*)pointer; +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->armor(*unit); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_damage_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_wpn){ +Player* x_player = (Player*)pointer; +WeaponType* wpn = (WeaponType*)env->GetLongField(p_wpn, FindCachedField(env, env->GetObjectClass(p_wpn), "pointer", "J")); +return x_player->damage(*wpn); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_getUnitScore_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->getUnitScore(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_getKillScore_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->getKillScore(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_getBuildingScore_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->getBuildingScore(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_getRazingScore_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->getRazingScore(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_getCustomScore_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->getCustomScore(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isObserver_1native(JNIEnv * env, jobject obj, jlong pointer){ +Player* x_player = (Player*)pointer; +return x_player->isObserver(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Player_getMaxUpgradeLevel_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_upgrade){ +Player* x_player = (Player*)pointer; +UpgradeType* upgrade = (UpgradeType*)env->GetLongField(p_upgrade, FindCachedField(env, env->GetObjectClass(p_upgrade), "pointer", "J")); +return x_player->getMaxUpgradeLevel(*upgrade); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isResearchAvailable_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ +Player* x_player = (Player*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_player->isResearchAvailable(*tech); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isUnitAvailable_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_unit){ +Player* x_player = (Player*)pointer; +UnitType* unit = (UnitType*)env->GetLongField(p_unit, FindCachedField(env, env->GetObjectClass(p_unit), "pointer", "J")); +return x_player->isUnitAvailable(*unit); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Playerset_getUnits_1native(JNIEnv * env, jobject obj, jlong pointer){ +Playerset* x_playerset = (Playerset*)pointer; +jlong resptr = (jlong)x_playerset->getUnits(); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT void JNICALL Java_bwapi4_Playerset_setAlliance_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean allies){ +Playerset* x_playerset = (Playerset*)pointer; +x_playerset->setAlliance((bool)allies); +} +JNIEXPORT void JNICALL Java_bwapi4_Playerset_setAlliance_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Playerset* x_playerset = (Playerset*)pointer; +x_playerset->setAlliance(); +} +JNIEXPORT void JNICALL Java_bwapi4_Playerset_setAlliance_1native__JZZ(JNIEnv * env, jobject obj, jlong pointer, jboolean allies, jboolean alliedVictory){ +Playerset* x_playerset = (Playerset*)pointer; +x_playerset->setAlliance((bool)allies, (bool)alliedVictory); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Point_isValid_1native(JNIEnv * env, jobject obj, jlong pointer){ +Point* x_point = (Point*)pointer; +return x_point->isValid(); +} +JNIEXPORT jdouble JNICALL Java_bwapi4_Point_getLength_1native(JNIEnv * env, jobject obj, jlong pointer){ +Point* x_point = (Point*)pointer; +return x_point->getLength(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Position_isValid(JNIEnv * env, jobject obj){ +Position x_position((int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "x", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "y", "I"))); +return x_position.isValid(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Position_makeValid(JNIEnv * env, jobject obj){ +Position x_position((int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "x", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "y", "I"))); +Position cresult = x_position.makeValid(); +jclass retcls = FindCachedClass(env, "bwapi/Position"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT jdouble JNICALL Java_bwapi4_Position_getDistance(JNIEnv * env, jobject obj, jobject p_position){ +Position x_position((int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "x", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "y", "I"))); +Position position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); +return x_position.getDistance(position); +} +JNIEXPORT jint JNICALL Java_bwapi4_Position_getApproxDistance(JNIEnv * env, jobject obj, jobject p_position){ +Position x_position((int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "x", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "y", "I"))); +Position position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); +return x_position.getApproxDistance(position); +} +JNIEXPORT jdouble JNICALL Java_bwapi4_Position_getLength(JNIEnv * env, jobject obj){ +Position x_position((int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "x", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "y", "I"))); +return x_position.getLength(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Position_hasPath(JNIEnv * env, jobject obj, jobject p_position){ +Position x_position((int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "x", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "y", "I"))); +Position position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); +return x_position.hasPath(position); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_PositionOrUnit_isUnit_1native(JNIEnv * env, jobject obj, jlong pointer){ +PositionOrUnit* x_positionOrUnit = (PositionOrUnit*)pointer; +return x_positionOrUnit->isUnit(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_PositionOrUnit_getUnit_1native(JNIEnv * env, jobject obj, jlong pointer){ +PositionOrUnit* x_positionOrUnit = (PositionOrUnit*)pointer; +jlong resptr = (jlong)x_positionOrUnit->getUnit(); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_PositionOrUnit_isPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ +PositionOrUnit* x_positionOrUnit = (PositionOrUnit*)pointer; +return x_positionOrUnit->isPosition(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_PositionOrUnit_getPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ +PositionOrUnit* x_positionOrUnit = (PositionOrUnit*)pointer; +Position cresult = x_positionOrUnit->getPosition(); +jclass retcls = FindCachedClass(env, "bwapi/Position"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT jint JNICALL Java_bwapi4_Region_getID_1native(JNIEnv * env, jobject obj, jlong pointer){ +Region* x_region = (Region*)pointer; +return x_region->getID(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Region_getRegionGroupID_1native(JNIEnv * env, jobject obj, jlong pointer){ +Region* x_region = (Region*)pointer; +return x_region->getRegionGroupID(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Region_getCenter_1native(JNIEnv * env, jobject obj, jlong pointer){ +Region* x_region = (Region*)pointer; +Position cresult = x_region->getCenter(); +jclass retcls = FindCachedClass(env, "bwapi/Position"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Region_isHigherGround_1native(JNIEnv * env, jobject obj, jlong pointer){ +Region* x_region = (Region*)pointer; +return x_region->isHigherGround(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Region_getDefensePriority_1native(JNIEnv * env, jobject obj, jlong pointer){ +Region* x_region = (Region*)pointer; +return x_region->getDefensePriority(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Region_isAccessible_1native(JNIEnv * env, jobject obj, jlong pointer){ +Region* x_region = (Region*)pointer; +return x_region->isAccessible(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Region_getBoundsLeft_1native(JNIEnv * env, jobject obj, jlong pointer){ +Region* x_region = (Region*)pointer; +return x_region->getBoundsLeft(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Region_getBoundsTop_1native(JNIEnv * env, jobject obj, jlong pointer){ +Region* x_region = (Region*)pointer; +return x_region->getBoundsTop(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Region_getBoundsRight_1native(JNIEnv * env, jobject obj, jlong pointer){ +Region* x_region = (Region*)pointer; +return x_region->getBoundsRight(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Region_getBoundsBottom_1native(JNIEnv * env, jobject obj, jlong pointer){ +Region* x_region = (Region*)pointer; +return x_region->getBoundsBottom(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Region_getClosestAccessibleRegion_1native(JNIEnv * env, jobject obj, jlong pointer){ +Region* x_region = (Region*)pointer; +jlong resptr = (jlong)x_region->getClosestAccessibleRegion(); +jclass retcls = FindCachedClass(env, "bwapi4/Region"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Region;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Region_getClosestInaccessibleRegion_1native(JNIEnv * env, jobject obj, jlong pointer){ +Region* x_region = (Region*)pointer; +jlong resptr = (jlong)x_region->getClosestInaccessibleRegion(); +jclass retcls = FindCachedClass(env, "bwapi4/Region"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Region;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jint JNICALL Java_bwapi4_Region_getDistance_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_other){ +Region* x_region = (Region*)pointer; +Region* other = (Region*)env->GetLongField(p_other, FindCachedField(env, env->GetObjectClass(p_other), "pointer", "J")); +return x_region->getDistance(other); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Region_getUnits_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_pred){ +Region* x_region = (Region*)pointer; +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_region->getUnits(pred); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Regionset_getCenter_1native(JNIEnv * env, jobject obj, jlong pointer){ +Regionset* x_regionset = (Regionset*)pointer; +Position cresult = x_regionset->getCenter(); +jclass retcls = FindCachedClass(env, "bwapi/Position"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_Regionset_getUnits_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_pred){ +Regionset* x_regionset = (Regionset*)pointer; +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_regionset->getUnits(pred); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_TilePosition_hasPath(JNIEnv * env, jobject obj, jobject p_position){ +TilePosition x_tilePosition((int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "x", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "y", "I"))); +TilePosition position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); +return x_tilePosition.hasPath(position); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_TilePosition_isValid(JNIEnv * env, jobject obj){ +TilePosition x_tilePosition((int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "x", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "y", "I"))); +return x_tilePosition.isValid(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_TilePosition_makeValid(JNIEnv * env, jobject obj){ +TilePosition x_tilePosition((int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "x", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "y", "I"))); +TilePosition cresult = x_tilePosition.makeValid(); +jclass retcls = FindCachedClass(env, "bwapi/TilePosition"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT jdouble JNICALL Java_bwapi4_TilePosition_getDistance(JNIEnv * env, jobject obj, jobject p_position){ +TilePosition x_tilePosition((int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "x", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "y", "I"))); +TilePosition position((int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "x", "I")), (int)env->GetIntField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "y", "I"))); +return x_tilePosition.getDistance(position); +} +JNIEXPORT jdouble JNICALL Java_bwapi4_TilePosition_getLength(JNIEnv * env, jobject obj){ +TilePosition x_tilePosition((int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "x", "I")), (int)env->GetIntField(obj, FindCachedField(env, env->GetObjectClass(obj), "y", "I"))); +return x_tilePosition.getLength(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getID_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getID(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_exists_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->exists(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getReplayID_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getReplayID(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getPlayer_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)x_unit->getPlayer(); +jclass retcls = FindCachedClass(env, "bwapi4/Player"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Player;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getType_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)tableUnitType.find(x_unit->getType())->second; +jclass retcls = FindCachedClass(env, "bwapi4/UnitType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/UnitType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +Position cresult = x_unit->getPosition(); +jclass retcls = FindCachedClass(env, "bwapi/Position"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTilePosition_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +TilePosition cresult = x_unit->getTilePosition(); +jclass retcls = FindCachedClass(env, "bwapi/TilePosition"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT jdouble JNICALL Java_bwapi4_Unit_getAngle_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getAngle(); +} +JNIEXPORT jdouble JNICALL Java_bwapi4_Unit_getVelocityX_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getVelocityX(); +} +JNIEXPORT jdouble JNICALL Java_bwapi4_Unit_getVelocityY_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getVelocityY(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getRegion_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)x_unit->getRegion(); +jclass retcls = FindCachedClass(env, "bwapi4/Region"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Region;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getLeft_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getLeft(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getTop_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getTop(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRight_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getRight(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getBottom_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getBottom(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getHitPoints_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getHitPoints(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getShields_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getShields(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getEnergy_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getEnergy(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getResources_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getResources(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getResourceGroup_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getResourceGroup(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getDistance_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->getDistance(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_hasPath_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->hasPath(target); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getLastCommandFrame_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getLastCommandFrame(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getLastAttackingPlayer_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)x_unit->getLastAttackingPlayer(); +jclass retcls = FindCachedClass(env, "bwapi4/Player"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Player;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getInitialType_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)tableUnitType.find(x_unit->getInitialType())->second; +jclass retcls = FindCachedClass(env, "bwapi4/UnitType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/UnitType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getInitialPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +Position cresult = x_unit->getInitialPosition(); +jclass retcls = FindCachedClass(env, "bwapi/Position"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getInitialTilePosition_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +TilePosition cresult = x_unit->getInitialTilePosition(); +jclass retcls = FindCachedClass(env, "bwapi/TilePosition"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getInitialHitPoints_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getInitialHitPoints(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getInitialResources_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getInitialResources(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getKillCount_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getKillCount(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getAcidSporeCount_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getAcidSporeCount(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getInterceptorCount_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getInterceptorCount(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getScarabCount_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getScarabCount(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getSpiderMineCount_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getSpiderMineCount(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getGroundWeaponCooldown_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getGroundWeaponCooldown(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getAirWeaponCooldown_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getAirWeaponCooldown(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getSpellCooldown_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getSpellCooldown(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getDefenseMatrixPoints_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getDefenseMatrixPoints(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getDefenseMatrixTimer_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getDefenseMatrixTimer(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getEnsnareTimer_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getEnsnareTimer(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getIrradiateTimer_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getIrradiateTimer(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getLockdownTimer_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getLockdownTimer(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getMaelstromTimer_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getMaelstromTimer(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getOrderTimer_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getOrderTimer(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getPlagueTimer_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getPlagueTimer(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRemoveTimer_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getRemoveTimer(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getStasisTimer_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getStasisTimer(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getStimTimer_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getStimTimer(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getBuildType_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)tableUnitType.find(x_unit->getBuildType())->second; +jclass retcls = FindCachedClass(env, "bwapi4/UnitType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/UnitType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTech_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)tableTechType.find(x_unit->getTech())->second; +jclass retcls = FindCachedClass(env, "bwapi4/TechType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/TechType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getUpgrade_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)tableUpgradeType.find(x_unit->getUpgrade())->second; +jclass retcls = FindCachedClass(env, "bwapi4/UpgradeType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/UpgradeType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRemainingBuildTime_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getRemainingBuildTime(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRemainingTrainTime_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getRemainingTrainTime(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRemainingResearchTime_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getRemainingResearchTime(); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRemainingUpgradeTime_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getRemainingUpgradeTime(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getBuildUnit_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)x_unit->getBuildUnit(); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTarget_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)x_unit->getTarget(); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTargetPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +Position cresult = x_unit->getTargetPosition(); +jclass retcls = FindCachedClass(env, "bwapi/Position"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getOrder_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)tableOrder.find(x_unit->getOrder())->second; +jclass retcls = FindCachedClass(env, "bwapi4/Order"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Order;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getSecondaryOrder_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)tableOrder.find(x_unit->getSecondaryOrder())->second; +jclass retcls = FindCachedClass(env, "bwapi4/Order"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Order;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getOrderTarget_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)x_unit->getOrderTarget(); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getOrderTargetPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +Position cresult = x_unit->getOrderTargetPosition(); +jclass retcls = FindCachedClass(env, "bwapi/Position"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getRallyPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +Position cresult = x_unit->getRallyPosition(); +jclass retcls = FindCachedClass(env, "bwapi/Position"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getRallyUnit_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)x_unit->getRallyUnit(); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getAddon_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)x_unit->getAddon(); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getNydusExit_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)x_unit->getNydusExit(); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getPowerUp_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)x_unit->getPowerUp(); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTransport_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)x_unit->getTransport(); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getLoadedUnits_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)x_unit->getLoadedUnits(); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getSpaceRemaining_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->getSpaceRemaining(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getCarrier_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)x_unit->getCarrier(); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getInterceptors_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)x_unit->getInterceptors(); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getHatchery_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)x_unit->getHatchery(); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getLarva_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +jlong resptr = (jlong)x_unit->getLarva(); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getUnitsInRadius_1native(JNIEnv * env, jobject obj, jlong pointer, jint radius, jobject p_pred){ +Unit* x_unit = (Unit*)pointer; +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_unit->getUnitsInRadius(radius, pred); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getUnitsInWeaponRange_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_weapon, jobject p_pred){ +Unit* x_unit = (Unit*)pointer; +WeaponType* weapon = (WeaponType*)env->GetLongField(p_weapon, FindCachedField(env, env->GetObjectClass(p_weapon), "pointer", "J")); +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_unit->getUnitsInWeaponRange(*weapon, pred); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getClosestUnit_1native__JLbwapi4_UnitFilter_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_pred){ +Unit* x_unit = (Unit*)pointer; +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_unit->getClosestUnit(pred); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getClosestUnit_1native__JLbwapi4_UnitFilter_2I(JNIEnv * env, jobject obj, jlong pointer, jobject p_pred, jint radius){ +Unit* x_unit = (Unit*)pointer; +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_unit->getClosestUnit(pred, radius); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_hasNuke_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->hasNuke(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isAccelerating_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isAccelerating(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isAttacking_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isAttacking(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isAttackFrame_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isAttackFrame(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBeingConstructed_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isBeingConstructed(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBeingGathered_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isBeingGathered(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBeingHealed_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isBeingHealed(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBlind_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isBlind(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBraking_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isBraking(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBurrowed_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isBurrowed(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isCarryingGas_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isCarryingGas(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isCarryingMinerals_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isCarryingMinerals(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isCloaked_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isCloaked(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isCompleted_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isCompleted(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isConstructing_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isConstructing(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isDefenseMatrixed_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isDefenseMatrixed(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isDetected_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isDetected(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isEnsnared_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isEnsnared(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isFlying_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isFlying(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isFollowing_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isFollowing(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isGatheringGas_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isGatheringGas(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isGatheringMinerals_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isGatheringMinerals(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isHallucination_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isHallucination(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isHoldingPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isHoldingPosition(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isIdle_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isIdle(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isInterruptible_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isInterruptible(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isInvincible_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isInvincible(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isInWeaponRange_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +Unit* target = (Unit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->isInWeaponRange(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isIrradiated_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isIrradiated(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isLifted_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isLifted(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isLoaded_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isLoaded(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isLockedDown_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isLockedDown(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isMaelstrommed_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isMaelstrommed(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isMorphing_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isMorphing(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isMoving_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isMoving(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isParasited_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isParasited(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isPatrolling_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isPatrolling(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isPlagued_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isPlagued(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isRepairing_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isRepairing(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isResearching_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isResearching(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isSelected_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isSelected(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isSieged_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isSieged(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isStartingAttack_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isStartingAttack(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isStasised_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isStasised(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isStimmed_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isStimmed(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isStuck_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isStuck(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isTraining_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isTraining(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isUnderAttack_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isUnderAttack(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isUnderDarkSwarm_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isUnderDarkSwarm(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isUnderDisruptionWeb_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isUnderDisruptionWeb(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isUnderStorm_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isUnderStorm(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isPowered_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isPowered(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isUpgrading_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isUpgrading(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isVisible_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isVisible(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isVisible_1native__JLbwapi4_Player_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_player){ +Unit* x_unit = (Unit*)pointer; +Player* player = (Player*)env->GetLongField(p_player, FindCachedField(env, env->GetObjectClass(p_player), "pointer", "J")); +return x_unit->isVisible(player); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isTargetable_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->isTargetable(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_issueCommand_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_command){ +Unit* x_unit = (Unit*)pointer; +UnitCommand* command = (UnitCommand*)env->GetLongField(p_command, FindCachedField(env, env->GetObjectClass(p_command), "pointer", "J")); +return x_unit->issueCommand(*command); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_attack_1native__JLbwapi4_PositionOrUnit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->attack(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_attack_1native__JLbwapi4_PositionOrUnit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean shiftQueueCommand){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->attack(target, (bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_build_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ +Unit* x_unit = (Unit*)pointer; +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unit->build(*type); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_build_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +TilePosition target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unit->build(*type, target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_buildAddon_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ +Unit* x_unit = (Unit*)pointer; +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unit->buildAddon(*type); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_train_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->train(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_train_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ +Unit* x_unit = (Unit*)pointer; +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unit->train(*type); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_morph_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ +Unit* x_unit = (Unit*)pointer; +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unit->morph(*type); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_research_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->research(*tech); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_upgrade_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_upgrade){ +Unit* x_unit = (Unit*)pointer; +UpgradeType* upgrade = (UpgradeType*)env->GetLongField(p_upgrade, FindCachedField(env, env->GetObjectClass(p_upgrade), "pointer", "J")); +return x_unit->upgrade(*upgrade); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_setRallyPoint_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->setRallyPoint(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_move_1native__JLbwapi4_Position_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unit->move(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_move_1native__JLbwapi4_Position_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean shiftQueueCommand){ +Unit* x_unit = (Unit*)pointer; +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unit->move(target, (bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_patrol_1native__JLbwapi4_Position_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unit->patrol(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_patrol_1native__JLbwapi4_Position_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean shiftQueueCommand){ +Unit* x_unit = (Unit*)pointer; +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unit->patrol(target, (bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_holdPosition_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->holdPosition(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_holdPosition_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean shiftQueueCommand){ +Unit* x_unit = (Unit*)pointer; +return x_unit->holdPosition((bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_stop_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->stop(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_stop_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean shiftQueueCommand){ +Unit* x_unit = (Unit*)pointer; +return x_unit->stop((bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_follow_1native__JLbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +Unit* target = (Unit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->follow(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_follow_1native__JLbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean shiftQueueCommand){ +Unit* x_unit = (Unit*)pointer; +Unit* target = (Unit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->follow(target, (bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_gather_1native__JLbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +Unit* target = (Unit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->gather(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_gather_1native__JLbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean shiftQueueCommand){ +Unit* x_unit = (Unit*)pointer; +Unit* target = (Unit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->gather(target, (bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_returnCargo_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->returnCargo(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_returnCargo_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean shiftQueueCommand){ +Unit* x_unit = (Unit*)pointer; +return x_unit->returnCargo((bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_repair_1native__JLbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +Unit* target = (Unit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->repair(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_repair_1native__JLbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean shiftQueueCommand){ +Unit* x_unit = (Unit*)pointer; +Unit* target = (Unit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->repair(target, (bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_burrow_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->burrow(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unburrow_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->unburrow(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cloak_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->cloak(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_decloak_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->decloak(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_siege_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->siege(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unsiege_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->unsiege(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_lift_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->lift(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_land_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +TilePosition target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unit->land(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_load_1native__JLbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +Unit* target = (Unit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->load(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_load_1native__JLbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean shiftQueueCommand){ +Unit* x_unit = (Unit*)pointer; +Unit* target = (Unit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->load(target, (bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unload_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +Unit* target = (Unit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->unload(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unloadAll_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->unloadAll(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unloadAll_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean shiftQueueCommand){ +Unit* x_unit = (Unit*)pointer; +return x_unit->unloadAll((bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unloadAll_1native__JLbwapi4_Position_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unit->unloadAll(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unloadAll_1native__JLbwapi4_Position_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean shiftQueueCommand){ +Unit* x_unit = (Unit*)pointer; +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unit->unloadAll(target, (bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_rightClick_1native__JLbwapi4_PositionOrUnit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->rightClick(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_rightClick_1native__JLbwapi4_PositionOrUnit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean shiftQueueCommand){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->rightClick(target, (bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_haltConstruction_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->haltConstruction(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelConstruction_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->cancelConstruction(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelAddon_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->cancelAddon(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelTrain_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->cancelTrain(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelTrain_1native__JI(JNIEnv * env, jobject obj, jlong pointer, jint slot){ +Unit* x_unit = (Unit*)pointer; +return x_unit->cancelTrain(slot); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelMorph_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->cancelMorph(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelResearch_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->cancelResearch(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelUpgrade_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->cancelUpgrade(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_useTech_1native__JLbwapi4_TechType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->useTech(*tech); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_useTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->useTech(*tech, target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_placeCOP_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +TilePosition target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unit->placeCOP(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2ZZZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_command, jboolean checkCanUseTechPositionOnPositions, jboolean checkCanUseTechUnitOnUnits, jboolean checkCanBuildUnitType, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +UnitCommand* command = (UnitCommand*)env->GetLongField(p_command, FindCachedField(env, env->GetObjectClass(p_command), "pointer", "J")); +return x_unit->canIssueCommand(*command, (bool)checkCanUseTechPositionOnPositions, (bool)checkCanUseTechUnitOnUnits, (bool)checkCanBuildUnitType, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2ZZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_command, jboolean checkCanUseTechPositionOnPositions, jboolean checkCanUseTechUnitOnUnits, jboolean checkCanBuildUnitType, jboolean checkCanTargetUnit){ +Unit* x_unit = (Unit*)pointer; +UnitCommand* command = (UnitCommand*)env->GetLongField(p_command, FindCachedField(env, env->GetObjectClass(p_command), "pointer", "J")); +return x_unit->canIssueCommand(*command, (bool)checkCanUseTechPositionOnPositions, (bool)checkCanUseTechUnitOnUnits, (bool)checkCanBuildUnitType, (bool)checkCanTargetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_command, jboolean checkCanUseTechPositionOnPositions, jboolean checkCanUseTechUnitOnUnits, jboolean checkCanBuildUnitType){ +Unit* x_unit = (Unit*)pointer; +UnitCommand* command = (UnitCommand*)env->GetLongField(p_command, FindCachedField(env, env->GetObjectClass(p_command), "pointer", "J")); +return x_unit->canIssueCommand(*command, (bool)checkCanUseTechPositionOnPositions, (bool)checkCanUseTechUnitOnUnits, (bool)checkCanBuildUnitType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_command, jboolean checkCanUseTechPositionOnPositions, jboolean checkCanUseTechUnitOnUnits){ +Unit* x_unit = (Unit*)pointer; +UnitCommand* command = (UnitCommand*)env->GetLongField(p_command, FindCachedField(env, env->GetObjectClass(p_command), "pointer", "J")); +return x_unit->canIssueCommand(*command, (bool)checkCanUseTechPositionOnPositions, (bool)checkCanUseTechUnitOnUnits); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_command, jboolean checkCanUseTechPositionOnPositions){ +Unit* x_unit = (Unit*)pointer; +UnitCommand* command = (UnitCommand*)env->GetLongField(p_command, FindCachedField(env, env->GetObjectClass(p_command), "pointer", "J")); +return x_unit->canIssueCommand(*command, (bool)checkCanUseTechPositionOnPositions); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_command){ +Unit* x_unit = (Unit*)pointer; +UnitCommand* command = (UnitCommand*)env->GetLongField(p_command, FindCachedField(env, env->GetObjectClass(p_command), "pointer", "J")); +return x_unit->canIssueCommand(*command); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2ZZZZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_command, jboolean checkCanUseTechPositionOnPositions, jboolean checkCanUseTechUnitOnUnits, jboolean checkCanBuildUnitType, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +UnitCommand* command = (UnitCommand*)env->GetLongField(p_command, FindCachedField(env, env->GetObjectClass(p_command), "pointer", "J")); +return x_unit->canIssueCommand(*command, (bool)checkCanUseTechPositionOnPositions, (bool)checkCanUseTechUnitOnUnits, (bool)checkCanBuildUnitType, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2ZZZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_command, jboolean checkCanUseTechPositionOnPositions, jboolean checkCanUseTechUnitOnUnits, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType, jboolean checkCommandibilityGrouped){ +Unit* x_unit = (Unit*)pointer; +UnitCommand* command = (UnitCommand*)env->GetLongField(p_command, FindCachedField(env, env->GetObjectClass(p_command), "pointer", "J")); +return x_unit->canIssueCommandGrouped(*command, (bool)checkCanUseTechPositionOnPositions, (bool)checkCanUseTechUnitOnUnits, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType, (bool)checkCommandibilityGrouped); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2ZZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_command, jboolean checkCanUseTechPositionOnPositions, jboolean checkCanUseTechUnitOnUnits, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +UnitCommand* command = (UnitCommand*)env->GetLongField(p_command, FindCachedField(env, env->GetObjectClass(p_command), "pointer", "J")); +return x_unit->canIssueCommandGrouped(*command, (bool)checkCanUseTechPositionOnPositions, (bool)checkCanUseTechUnitOnUnits, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_command, jboolean checkCanUseTechPositionOnPositions, jboolean checkCanUseTechUnitOnUnits, jboolean checkCanTargetUnit){ +Unit* x_unit = (Unit*)pointer; +UnitCommand* command = (UnitCommand*)env->GetLongField(p_command, FindCachedField(env, env->GetObjectClass(p_command), "pointer", "J")); +return x_unit->canIssueCommandGrouped(*command, (bool)checkCanUseTechPositionOnPositions, (bool)checkCanUseTechUnitOnUnits, (bool)checkCanTargetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_command, jboolean checkCanUseTechPositionOnPositions, jboolean checkCanUseTechUnitOnUnits){ +Unit* x_unit = (Unit*)pointer; +UnitCommand* command = (UnitCommand*)env->GetLongField(p_command, FindCachedField(env, env->GetObjectClass(p_command), "pointer", "J")); +return x_unit->canIssueCommandGrouped(*command, (bool)checkCanUseTechPositionOnPositions, (bool)checkCanUseTechUnitOnUnits); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_command, jboolean checkCanUseTechPositionOnPositions){ +Unit* x_unit = (Unit*)pointer; +UnitCommand* command = (UnitCommand*)env->GetLongField(p_command, FindCachedField(env, env->GetObjectClass(p_command), "pointer", "J")); +return x_unit->canIssueCommandGrouped(*command, (bool)checkCanUseTechPositionOnPositions); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_command){ +Unit* x_unit = (Unit*)pointer; +UnitCommand* command = (UnitCommand*)env->GetLongField(p_command, FindCachedField(env, env->GetObjectClass(p_command), "pointer", "J")); +return x_unit->canIssueCommandGrouped(*command); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2ZZZZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_command, jboolean checkCanUseTechPositionOnPositions, jboolean checkCanUseTechUnitOnUnits, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType, jboolean checkCommandibilityGrouped, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +UnitCommand* command = (UnitCommand*)env->GetLongField(p_command, FindCachedField(env, env->GetObjectClass(p_command), "pointer", "J")); +return x_unit->canIssueCommandGrouped(*command, (bool)checkCanUseTechPositionOnPositions, (bool)checkCanUseTechUnitOnUnits, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType, (bool)checkCommandibilityGrouped, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCommand_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCommand(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCommandGrouped_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCommandGrouped(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCommandGrouped_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCommandGrouped((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandType_1native__JLbwapi4_UnitCommandType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_ct){ +Unit* x_unit = (Unit*)pointer; +UnitCommandType* ct = (UnitCommandType*)env->GetLongField(p_ct, FindCachedField(env, env->GetObjectClass(p_ct), "pointer", "J")); +return x_unit->canIssueCommandType(ct); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandType_1native__JLbwapi4_UnitCommandType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_ct, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +UnitCommandType* ct = (UnitCommandType*)env->GetLongField(p_ct, FindCachedField(env, env->GetObjectClass(p_ct), "pointer", "J")); +return x_unit->canIssueCommandType(ct, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandTypeGrouped_1native__JLbwapi4_UnitCommandType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_ct, jboolean checkCommandibilityGrouped){ +Unit* x_unit = (Unit*)pointer; +UnitCommandType* ct = (UnitCommandType*)env->GetLongField(p_ct, FindCachedField(env, env->GetObjectClass(p_ct), "pointer", "J")); +return x_unit->canIssueCommandTypeGrouped(ct, (bool)checkCommandibilityGrouped); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandTypeGrouped_1native__JLbwapi4_UnitCommandType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_ct){ +Unit* x_unit = (Unit*)pointer; +UnitCommandType* ct = (UnitCommandType*)env->GetLongField(p_ct, FindCachedField(env, env->GetObjectClass(p_ct), "pointer", "J")); +return x_unit->canIssueCommandTypeGrouped(ct); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandTypeGrouped_1native__JLbwapi4_UnitCommandType_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_ct, jboolean checkCommandibilityGrouped, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +UnitCommandType* ct = (UnitCommandType*)env->GetLongField(p_ct, FindCachedField(env, env->GetObjectClass(p_ct), "pointer", "J")); +return x_unit->canIssueCommandTypeGrouped(ct, (bool)checkCommandibilityGrouped, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTargetUnit_1native__JLbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canTargetUnit(targetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTargetUnit_1native__JLbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canTargetUnit(targetUnit, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canAttack(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canAttack((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__JLbwapi4_PositionOrUnit_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canAttack(target, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__JLbwapi4_PositionOrUnit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean checkCanTargetUnit){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canAttack(target, (bool)checkCanTargetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__JLbwapi4_PositionOrUnit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canAttack(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__JLbwapi4_PositionOrUnit_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canAttack(target, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibilityGrouped){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canAttackGrouped((bool)checkCommandibilityGrouped); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canAttackGrouped(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JZZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibilityGrouped, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canAttackGrouped((bool)checkCommandibilityGrouped, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JLbwapi4_PositionOrUnit_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType, jboolean checkCommandibilityGrouped){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canAttackGrouped(target, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType, (bool)checkCommandibilityGrouped); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JLbwapi4_PositionOrUnit_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canAttackGrouped(target, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JLbwapi4_PositionOrUnit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean checkCanTargetUnit){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canAttackGrouped(target, (bool)checkCanTargetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JLbwapi4_PositionOrUnit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canAttackGrouped(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JLbwapi4_PositionOrUnit_2ZZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType, jboolean checkCommandibilityGrouped, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canAttackGrouped(target, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType, (bool)checkCommandibilityGrouped, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackMove_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canAttackMove(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackMove_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canAttackMove((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackMoveGrouped_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibilityGrouped){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canAttackMoveGrouped((bool)checkCommandibilityGrouped); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackMoveGrouped_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canAttackMoveGrouped(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackMoveGrouped_1native__JZZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibilityGrouped, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canAttackMoveGrouped((bool)checkCommandibilityGrouped, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canAttackUnit(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canAttackUnit((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__JLbwapi4_Unit_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canAttackUnit(targetUnit, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__JLbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canAttackUnit(targetUnit, (bool)checkCanTargetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__JLbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canAttackUnit(targetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__JLbwapi4_Unit_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canAttackUnit(targetUnit, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibilityGrouped){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canAttackUnitGrouped((bool)checkCommandibilityGrouped); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canAttackUnitGrouped(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JZZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibilityGrouped, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canAttackUnitGrouped((bool)checkCommandibilityGrouped, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JLbwapi4_Unit_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType, jboolean checkCommandibilityGrouped){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canAttackUnitGrouped(targetUnit, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType, (bool)checkCommandibilityGrouped); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JLbwapi4_Unit_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canAttackUnitGrouped(targetUnit, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JLbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canAttackUnitGrouped(targetUnit, (bool)checkCanTargetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JLbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canAttackUnitGrouped(targetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JLbwapi4_Unit_2ZZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType, jboolean checkCommandibilityGrouped, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canAttackUnitGrouped(targetUnit, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType, (bool)checkCommandibilityGrouped, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canBuild(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canBuild((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canBuild(*uType, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType){ +Unit* x_unit = (Unit*)pointer; +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canBuild(*uType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canBuild(*uType, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jobject p_tilePos, jboolean checkTargetUnitType, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +TilePosition tilePos((int)env->GetIntField(p_tilePos, FindCachedField(env, env->GetObjectClass(p_tilePos), "x", "I")), (int)env->GetIntField(p_tilePos, FindCachedField(env, env->GetObjectClass(p_tilePos), "y", "I"))); +return x_unit->canBuild(*uType, tilePos, (bool)checkTargetUnitType, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jobject p_tilePos, jboolean checkTargetUnitType){ +Unit* x_unit = (Unit*)pointer; +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +TilePosition tilePos((int)env->GetIntField(p_tilePos, FindCachedField(env, env->GetObjectClass(p_tilePos), "x", "I")), (int)env->GetIntField(p_tilePos, FindCachedField(env, env->GetObjectClass(p_tilePos), "y", "I"))); +return x_unit->canBuild(*uType, tilePos, (bool)checkTargetUnitType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jobject p_tilePos){ +Unit* x_unit = (Unit*)pointer; +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +TilePosition tilePos((int)env->GetIntField(p_tilePos, FindCachedField(env, env->GetObjectClass(p_tilePos), "x", "I")), (int)env->GetIntField(p_tilePos, FindCachedField(env, env->GetObjectClass(p_tilePos), "y", "I"))); +return x_unit->canBuild(*uType, tilePos); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jobject p_tilePos, jboolean checkTargetUnitType, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +TilePosition tilePos((int)env->GetIntField(p_tilePos, FindCachedField(env, env->GetObjectClass(p_tilePos), "x", "I")), (int)env->GetIntField(p_tilePos, FindCachedField(env, env->GetObjectClass(p_tilePos), "y", "I"))); +return x_unit->canBuild(*uType, tilePos, (bool)checkTargetUnitType, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canBuildAddon(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canBuildAddon((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__JLbwapi4_UnitType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canBuildAddon(*uType, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType){ +Unit* x_unit = (Unit*)pointer; +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canBuildAddon(*uType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__JLbwapi4_UnitType_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canBuildAddon(*uType, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canTrain(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canTrain((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__JLbwapi4_UnitType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canTrain(*uType, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType){ +Unit* x_unit = (Unit*)pointer; +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canTrain(*uType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__JLbwapi4_UnitType_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canTrain(*uType, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canMorph(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canMorph((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__JLbwapi4_UnitType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canMorph(*uType, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType){ +Unit* x_unit = (Unit*)pointer; +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canMorph(*uType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__JLbwapi4_UnitType_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_uType, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +UnitType* uType = (UnitType*)env->GetLongField(p_uType, FindCachedField(env, env->GetObjectClass(p_uType), "pointer", "J")); +return x_unit->canMorph(*uType, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canResearch_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canResearch(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canResearch_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canResearch((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canResearch_1native__JLbwapi4_TechType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ +Unit* x_unit = (Unit*)pointer; +TechType* type = (TechType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unit->canResearch(*type); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canResearch_1native__JLbwapi4_TechType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +TechType* type = (TechType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unit->canResearch(*type, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUpgrade_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canUpgrade(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUpgrade_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canUpgrade((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUpgrade_1native__JLbwapi4_UpgradeType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ +Unit* x_unit = (Unit*)pointer; +UpgradeType* type = (UpgradeType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unit->canUpgrade(*type); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUpgrade_1native__JLbwapi4_UpgradeType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +UpgradeType* type = (UpgradeType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unit->canUpgrade(*type, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canSetRallyPoint(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canSetRallyPoint((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__JLbwapi4_PositionOrUnit_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canSetRallyPoint(target, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__JLbwapi4_PositionOrUnit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean checkCanTargetUnit){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canSetRallyPoint(target, (bool)checkCanTargetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__JLbwapi4_PositionOrUnit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canSetRallyPoint(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__JLbwapi4_PositionOrUnit_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canSetRallyPoint(target, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPosition_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canSetRallyPosition(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPosition_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canSetRallyPosition((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canSetRallyUnit(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canSetRallyUnit((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__JLbwapi4_Unit_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canSetRallyUnit(targetUnit, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__JLbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canSetRallyUnit(targetUnit, (bool)checkCanTargetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__JLbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canSetRallyUnit(targetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__JLbwapi4_Unit_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canSetRallyUnit(targetUnit, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMove_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canMove(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMove_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canMove((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMoveGrouped_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibilityGrouped){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canMoveGrouped((bool)checkCommandibilityGrouped); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMoveGrouped_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canMoveGrouped(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMoveGrouped_1native__JZZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibilityGrouped, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canMoveGrouped((bool)checkCommandibilityGrouped, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPatrol_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canPatrol(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPatrol_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canPatrol((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPatrolGrouped_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibilityGrouped){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canPatrolGrouped((bool)checkCommandibilityGrouped); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPatrolGrouped_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canPatrolGrouped(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPatrolGrouped_1native__JZZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibilityGrouped, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canPatrolGrouped((bool)checkCommandibilityGrouped, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canFollow(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canFollow((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__JLbwapi4_Unit_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canFollow(targetUnit, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__JLbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canFollow(targetUnit, (bool)checkCanTargetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__JLbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canFollow(targetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__JLbwapi4_Unit_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canFollow(targetUnit, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canGather(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canGather((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__JLbwapi4_Unit_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canGather(targetUnit, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__JLbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canGather(targetUnit, (bool)checkCanTargetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__JLbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canGather(targetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__JLbwapi4_Unit_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canGather(targetUnit, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canReturnCargo_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canReturnCargo(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canReturnCargo_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canReturnCargo((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canHoldPosition_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canHoldPosition(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canHoldPosition_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canHoldPosition((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canStop_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canStop(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canStop_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canStop((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canRepair(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canRepair((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__JLbwapi4_Unit_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canRepair(targetUnit, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__JLbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canRepair(targetUnit, (bool)checkCanTargetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__JLbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canRepair(targetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__JLbwapi4_Unit_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canRepair(targetUnit, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBurrow_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canBurrow(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBurrow_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canBurrow((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnburrow_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canUnburrow(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnburrow_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canUnburrow((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCloak_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCloak(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCloak_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCloak((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canDecloak_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canDecloak(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canDecloak_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canDecloak((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSiege_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canSiege(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSiege_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canSiege((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnsiege_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canUnsiege(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnsiege_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canUnsiege((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLift_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canLift(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLift_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canLift((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLand_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canLand(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLand_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canLand((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLand_1native__JLbwapi4_TilePosition_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +TilePosition target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unit->canLand(target, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLand_1native__JLbwapi4_TilePosition_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +TilePosition target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unit->canLand(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLand_1native__JLbwapi4_TilePosition_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +TilePosition target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unit->canLand(target, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canLoad(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canLoad((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__JLbwapi4_Unit_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canLoad(targetUnit, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__JLbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canLoad(targetUnit, (bool)checkCanTargetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__JLbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canLoad(targetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__JLbwapi4_Unit_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canLoad(targetUnit, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadWithOrWithoutTarget_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canUnloadWithOrWithoutTarget(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadWithOrWithoutTarget_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canUnloadWithOrWithoutTarget((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAtPosition_1native__JLbwapi4_Position_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_targDropPos, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +Position targDropPos((int)env->GetIntField(p_targDropPos, FindCachedField(env, env->GetObjectClass(p_targDropPos), "x", "I")), (int)env->GetIntField(p_targDropPos, FindCachedField(env, env->GetObjectClass(p_targDropPos), "y", "I"))); +return x_unit->canUnloadAtPosition(targDropPos, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAtPosition_1native__JLbwapi4_Position_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_targDropPos){ +Unit* x_unit = (Unit*)pointer; +Position targDropPos((int)env->GetIntField(p_targDropPos, FindCachedField(env, env->GetObjectClass(p_targDropPos), "x", "I")), (int)env->GetIntField(p_targDropPos, FindCachedField(env, env->GetObjectClass(p_targDropPos), "y", "I"))); +return x_unit->canUnloadAtPosition(targDropPos); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAtPosition_1native__JLbwapi4_Position_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targDropPos, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +Position targDropPos((int)env->GetIntField(p_targDropPos, FindCachedField(env, env->GetObjectClass(p_targDropPos), "x", "I")), (int)env->GetIntField(p_targDropPos, FindCachedField(env, env->GetObjectClass(p_targDropPos), "y", "I"))); +return x_unit->canUnloadAtPosition(targDropPos, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canUnload(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canUnload((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JLbwapi4_Unit_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkPosition, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canUnload(targetUnit, (bool)checkCanTargetUnit, (bool)checkPosition, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JLbwapi4_Unit_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkPosition){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canUnload(targetUnit, (bool)checkCanTargetUnit, (bool)checkPosition); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JLbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canUnload(targetUnit, (bool)checkCanTargetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JLbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canUnload(targetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JLbwapi4_Unit_2ZZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkPosition, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canUnload(targetUnit, (bool)checkCanTargetUnit, (bool)checkPosition, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAll_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canUnloadAll(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAll_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canUnloadAll((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAllPosition_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canUnloadAllPosition(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAllPosition_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canUnloadAllPosition((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAllPosition_1native__JLbwapi4_Position_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_targDropPos, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +Position targDropPos((int)env->GetIntField(p_targDropPos, FindCachedField(env, env->GetObjectClass(p_targDropPos), "x", "I")), (int)env->GetIntField(p_targDropPos, FindCachedField(env, env->GetObjectClass(p_targDropPos), "y", "I"))); +return x_unit->canUnloadAllPosition(targDropPos, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAllPosition_1native__JLbwapi4_Position_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_targDropPos){ +Unit* x_unit = (Unit*)pointer; +Position targDropPos((int)env->GetIntField(p_targDropPos, FindCachedField(env, env->GetObjectClass(p_targDropPos), "x", "I")), (int)env->GetIntField(p_targDropPos, FindCachedField(env, env->GetObjectClass(p_targDropPos), "y", "I"))); +return x_unit->canUnloadAllPosition(targDropPos); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAllPosition_1native__JLbwapi4_Position_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targDropPos, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +Position targDropPos((int)env->GetIntField(p_targDropPos, FindCachedField(env, env->GetObjectClass(p_targDropPos), "x", "I")), (int)env->GetIntField(p_targDropPos, FindCachedField(env, env->GetObjectClass(p_targDropPos), "y", "I"))); +return x_unit->canUnloadAllPosition(targDropPos, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canRightClick(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canRightClick((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__JLbwapi4_PositionOrUnit_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canRightClick(target, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__JLbwapi4_PositionOrUnit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean checkCanTargetUnit){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canRightClick(target, (bool)checkCanTargetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__JLbwapi4_PositionOrUnit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canRightClick(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__JLbwapi4_PositionOrUnit_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canRightClick(target, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibilityGrouped){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canRightClickGrouped((bool)checkCommandibilityGrouped); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canRightClickGrouped(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JZZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibilityGrouped, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canRightClickGrouped((bool)checkCommandibilityGrouped, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JLbwapi4_PositionOrUnit_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType, jboolean checkCommandibilityGrouped){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canRightClickGrouped(target, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType, (bool)checkCommandibilityGrouped); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JLbwapi4_PositionOrUnit_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canRightClickGrouped(target, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JLbwapi4_PositionOrUnit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean checkCanTargetUnit){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canRightClickGrouped(target, (bool)checkCanTargetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JLbwapi4_PositionOrUnit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canRightClickGrouped(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JLbwapi4_PositionOrUnit_2ZZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType, jboolean checkCommandibilityGrouped, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canRightClickGrouped(target, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType, (bool)checkCommandibilityGrouped, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickPosition_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canRightClickPosition(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickPosition_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canRightClickPosition((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickPositionGrouped_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibilityGrouped){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canRightClickPositionGrouped((bool)checkCommandibilityGrouped); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickPositionGrouped_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canRightClickPositionGrouped(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickPositionGrouped_1native__JZZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibilityGrouped, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canRightClickPositionGrouped((bool)checkCommandibilityGrouped, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canRightClickUnit(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canRightClickUnit((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__JLbwapi4_Unit_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canRightClickUnit(targetUnit, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__JLbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canRightClickUnit(targetUnit, (bool)checkCanTargetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__JLbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canRightClickUnit(targetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__JLbwapi4_Unit_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canRightClickUnit(targetUnit, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibilityGrouped){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canRightClickUnitGrouped((bool)checkCommandibilityGrouped); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canRightClickUnitGrouped(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JZZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibilityGrouped, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canRightClickUnitGrouped((bool)checkCommandibilityGrouped, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JLbwapi4_Unit_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType, jboolean checkCommandibilityGrouped){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canRightClickUnitGrouped(targetUnit, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType, (bool)checkCommandibilityGrouped); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JLbwapi4_Unit_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canRightClickUnitGrouped(targetUnit, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JLbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canRightClickUnitGrouped(targetUnit, (bool)checkCanTargetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JLbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canRightClickUnitGrouped(targetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JLbwapi4_Unit_2ZZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkCanIssueCommandType, jboolean checkCommandibilityGrouped, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canRightClickUnitGrouped(targetUnit, (bool)checkCanTargetUnit, (bool)checkCanIssueCommandType, (bool)checkCommandibilityGrouped, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canHaltConstruction_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canHaltConstruction(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canHaltConstruction_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canHaltConstruction((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelConstruction_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCancelConstruction(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelConstruction_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCancelConstruction((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelAddon_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCancelAddon(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelAddon_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCancelAddon((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrain_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCancelTrain(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrain_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCancelTrain((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrainSlot_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCancelTrainSlot(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrainSlot_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCancelTrainSlot((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrainSlot_1native__JIZ(JNIEnv * env, jobject obj, jlong pointer, jint slot, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCancelTrainSlot(slot, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrainSlot_1native__JI(JNIEnv * env, jobject obj, jlong pointer, jint slot){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCancelTrainSlot(slot); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrainSlot_1native__JIZZ(JNIEnv * env, jobject obj, jlong pointer, jint slot, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCancelTrainSlot(slot, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelMorph_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCancelMorph(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelMorph_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCancelMorph((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelResearch_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCancelResearch(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelResearch_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCancelResearch((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelUpgrade_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCancelUpgrade(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelUpgrade_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canCancelUpgrade((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canUseTechWithOrWithoutTarget(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canUseTechWithOrWithoutTarget((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__JLbwapi4_TechType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechWithOrWithoutTarget(*tech, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__JLbwapi4_TechType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechWithOrWithoutTarget(*tech); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__JLbwapi4_TechType_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechWithOrWithoutTarget(*tech, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target, jboolean checkCanTargetUnit, jboolean checkTargetsType, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canUseTech(*tech, target, (bool)checkCanTargetUnit, (bool)checkTargetsType, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target, jboolean checkCanTargetUnit, jboolean checkTargetsType){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canUseTech(*tech, target, (bool)checkCanTargetUnit, (bool)checkTargetsType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target, jboolean checkCanTargetUnit){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canUseTech(*tech, target, (bool)checkCanTargetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canUseTech(*tech, target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTech(*tech); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2ZZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target, jboolean checkCanTargetUnit, jboolean checkTargetsType, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unit->canUseTech(*tech, target, (bool)checkCanTargetUnit, (bool)checkTargetsType, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithoutTarget_1native__JLbwapi4_TechType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechWithoutTarget(*tech, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithoutTarget_1native__JLbwapi4_TechType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechWithoutTarget(*tech); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithoutTarget_1native__JLbwapi4_TechType_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechWithoutTarget(*tech, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechUnit(*tech, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechUnit(*tech); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechUnit(*tech, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkTargetsUnits, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canUseTechUnit(*tech, targetUnit, (bool)checkCanTargetUnit, (bool)checkTargetsUnits, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkTargetsUnits){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canUseTechUnit(*tech, targetUnit, (bool)checkCanTargetUnit, (bool)checkTargetsUnits); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_targetUnit, jboolean checkCanTargetUnit){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canUseTechUnit(*tech, targetUnit, (bool)checkCanTargetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_targetUnit){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canUseTechUnit(*tech, targetUnit); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2ZZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_targetUnit, jboolean checkCanTargetUnit, jboolean checkTargetsUnits, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +Unit* targetUnit = (Unit*)env->GetLongField(p_targetUnit, FindCachedField(env, env->GetObjectClass(p_targetUnit), "pointer", "J")); +return x_unit->canUseTechUnit(*tech, targetUnit, (bool)checkCanTargetUnit, (bool)checkTargetsUnits, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechPosition(*tech, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechPosition(*tech); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unit->canUseTechPosition(*tech, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Lbwapi4_Position_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target, jboolean checkTargetsPositions, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unit->canUseTechPosition(*tech, target, (bool)checkTargetsPositions, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Lbwapi4_Position_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target, jboolean checkTargetsPositions){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unit->canUseTechPosition(*tech, target, (bool)checkTargetsPositions); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Lbwapi4_Position_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unit->canUseTechPosition(*tech, target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Lbwapi4_Position_2ZZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target, jboolean checkTargetsPositions, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unit->canUseTechPosition(*tech, target, (bool)checkTargetsPositions, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canPlaceCOP(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +return x_unit->canPlaceCOP((bool)checkCommandibility); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__JLbwapi4_TilePosition_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean checkCanIssueCommandType){ +Unit* x_unit = (Unit*)pointer; +TilePosition target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unit->canPlaceCOP(target, (bool)checkCanIssueCommandType); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__JLbwapi4_TilePosition_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unit* x_unit = (Unit*)pointer; +TilePosition target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unit->canPlaceCOP(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__JLbwapi4_TilePosition_2ZZ(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean checkCanIssueCommandType, jboolean checkCommandibility){ +Unit* x_unit = (Unit*)pointer; +TilePosition target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unit->canPlaceCOP(target, (bool)checkCanIssueCommandType, (bool)checkCommandibility); +} +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_getType_1native(JNIEnv * env, jobject obj, jlong pointer){ +UnitCommand* x_unitCommand = (UnitCommand*)pointer; +jlong resptr = (jlong)x_unitCommand->getType(); +jclass retcls = FindCachedClass(env, "bwapi4/UnitCommandType"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/UnitCommandType;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getPosition_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +Position cresult = x_unitset->getPosition(); +jclass retcls = FindCachedClass(env, "bwapi/Position"); +jmethodID retConsID = FindCachedMethod(env, retcls, "", "(II)V"); +jobject result = env->NewObject(retcls, retConsID, cresult.x(), cresult.y()); +return result; +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getLoadedUnits_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +jlong resptr = (jlong)x_unitset->getLoadedUnits(); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getInterceptors_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +jlong resptr = (jlong)x_unitset->getInterceptors(); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getLarva_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +jlong resptr = (jlong)x_unitset->getLarva(); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT void JNICALL Java_bwapi4_Unitset_setClientInfo_1native__JI(JNIEnv * env, jobject obj, jlong pointer, jint clientInfo){ +Unitset* x_unitset = (Unitset*)pointer; +x_unitset->setClientInfo(clientInfo); +} +JNIEXPORT void JNICALL Java_bwapi4_Unitset_setClientInfo_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +x_unitset->setClientInfo(); +} +JNIEXPORT void JNICALL Java_bwapi4_Unitset_setClientInfo_1native__JII(JNIEnv * env, jobject obj, jlong pointer, jint clientInfo, jint index){ +Unitset* x_unitset = (Unitset*)pointer; +x_unitset->setClientInfo(clientInfo, index); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getUnitsInRadius_1native(JNIEnv * env, jobject obj, jlong pointer, jint radius, jobject p_pred){ +Unitset* x_unitset = (Unitset*)pointer; +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_unitset->getUnitsInRadius(radius, pred); +jclass retcls = FindCachedClass(env, "bwapi4/Unitset"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unitset;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getClosestUnit_1native__JLbwapi4_UnitFilter_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_pred){ +Unitset* x_unitset = (Unitset*)pointer; +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_unitset->getClosestUnit(pred); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getClosestUnit_1native__JLbwapi4_UnitFilter_2I(JNIEnv * env, jobject obj, jlong pointer, jobject p_pred, jint radius){ +Unitset* x_unitset = (Unitset*)pointer; +UnitFilter* pred = (UnitFilter*)env->GetLongField(p_pred, FindCachedField(env, env->GetObjectClass(p_pred), "pointer", "J")); +jlong resptr = (jlong)x_unitset->getClosestUnit(pred, radius); +jclass retcls = FindCachedClass(env, "bwapi4/Unit"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/Unit;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_issueCommand_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_command){ +Unitset* x_unitset = (Unitset*)pointer; +UnitCommand* command = (UnitCommand*)env->GetLongField(p_command, FindCachedField(env, env->GetObjectClass(p_command), "pointer", "J")); +return x_unitset->issueCommand(*command); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_attack_1native__JLbwapi4_PositionOrUnit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unitset* x_unitset = (Unitset*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unitset->attack(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_attack_1native__JLbwapi4_PositionOrUnit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean shiftQueueCommand){ +Unitset* x_unitset = (Unitset*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unitset->attack(target, (bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_build_1native__JLbwapi4_UnitType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ +Unitset* x_unitset = (Unitset*)pointer; +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unitset->build(*type); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_build_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_type, jobject p_target){ +Unitset* x_unitset = (Unitset*)pointer; +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +TilePosition target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unitset->build(*type, target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_buildAddon_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ +Unitset* x_unitset = (Unitset*)pointer; +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unitset->buildAddon(*type); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_train_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ +Unitset* x_unitset = (Unitset*)pointer; +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unitset->train(*type); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_morph_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_type){ +Unitset* x_unitset = (Unitset*)pointer; +UnitType* type = (UnitType*)env->GetLongField(p_type, FindCachedField(env, env->GetObjectClass(p_type), "pointer", "J")); +return x_unitset->morph(*type); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_setRallyPoint_1native(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unitset* x_unitset = (Unitset*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unitset->setRallyPoint(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_move_1native__JLbwapi4_Position_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unitset* x_unitset = (Unitset*)pointer; +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unitset->move(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_move_1native__JLbwapi4_Position_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean shiftQueueCommand){ +Unitset* x_unitset = (Unitset*)pointer; +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unitset->move(target, (bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_patrol_1native__JLbwapi4_Position_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unitset* x_unitset = (Unitset*)pointer; +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unitset->patrol(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_patrol_1native__JLbwapi4_Position_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean shiftQueueCommand){ +Unitset* x_unitset = (Unitset*)pointer; +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unitset->patrol(target, (bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_holdPosition_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->holdPosition(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_holdPosition_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean shiftQueueCommand){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->holdPosition((bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_stop_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->stop(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_stop_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean shiftQueueCommand){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->stop((bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_follow_1native__JLbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unitset* x_unitset = (Unitset*)pointer; +Unit* target = (Unit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unitset->follow(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_follow_1native__JLbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean shiftQueueCommand){ +Unitset* x_unitset = (Unitset*)pointer; +Unit* target = (Unit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unitset->follow(target, (bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_gather_1native__JLbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unitset* x_unitset = (Unitset*)pointer; +Unit* target = (Unit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unitset->gather(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_gather_1native__JLbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean shiftQueueCommand){ +Unitset* x_unitset = (Unitset*)pointer; +Unit* target = (Unit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unitset->gather(target, (bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_returnCargo_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->returnCargo(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_returnCargo_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean shiftQueueCommand){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->returnCargo((bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_repair_1native__JLbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unitset* x_unitset = (Unitset*)pointer; +Unit* target = (Unit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unitset->repair(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_repair_1native__JLbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean shiftQueueCommand){ +Unitset* x_unitset = (Unitset*)pointer; +Unit* target = (Unit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unitset->repair(target, (bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_burrow_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->burrow(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unburrow_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->unburrow(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cloak_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->cloak(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_decloak_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->decloak(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_siege_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->siege(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unsiege_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->unsiege(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_lift_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->lift(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_load_1native__JLbwapi4_Unit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unitset* x_unitset = (Unitset*)pointer; +Unit* target = (Unit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unitset->load(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_load_1native__JLbwapi4_Unit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean shiftQueueCommand){ +Unitset* x_unitset = (Unitset*)pointer; +Unit* target = (Unit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unitset->load(target, (bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unloadAll_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->unloadAll(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unloadAll_1native__JZ(JNIEnv * env, jobject obj, jlong pointer, jboolean shiftQueueCommand){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->unloadAll((bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unloadAll_1native__JLbwapi4_Position_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unitset* x_unitset = (Unitset*)pointer; +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unitset->unloadAll(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unloadAll_1native__JLbwapi4_Position_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean shiftQueueCommand){ +Unitset* x_unitset = (Unitset*)pointer; +Position target((int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "x", "I")), (int)env->GetIntField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "y", "I"))); +return x_unitset->unloadAll(target, (bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_rightClick_1native__JLbwapi4_PositionOrUnit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_target){ +Unitset* x_unitset = (Unitset*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unitset->rightClick(target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_rightClick_1native__JLbwapi4_PositionOrUnit_2Z(JNIEnv * env, jobject obj, jlong pointer, jobject p_target, jboolean shiftQueueCommand){ +Unitset* x_unitset = (Unitset*)pointer; +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unitset->rightClick(target, (bool)shiftQueueCommand); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_haltConstruction_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->haltConstruction(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelConstruction_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->cancelConstruction(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelAddon_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->cancelAddon(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelTrain_1native__J(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->cancelTrain(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelTrain_1native__JI(JNIEnv * env, jobject obj, jlong pointer, jint slot){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->cancelTrain(slot); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelMorph_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->cancelMorph(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelResearch_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->cancelResearch(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelUpgrade_1native(JNIEnv * env, jobject obj, jlong pointer){ +Unitset* x_unitset = (Unitset*)pointer; +return x_unitset->cancelUpgrade(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_useTech_1native__JLbwapi4_TechType_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech){ +Unitset* x_unitset = (Unitset*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +return x_unitset->useTech(*tech); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_useTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2(JNIEnv * env, jobject obj, jlong pointer, jobject p_tech, jobject p_target){ +Unitset* x_unitset = (Unitset*)pointer; +TechType* tech = (TechType*)env->GetLongField(p_tech, FindCachedField(env, env->GetObjectClass(p_tech), "pointer", "J")); +PositionOrUnit* target = (PositionOrUnit*)env->GetLongField(p_target, FindCachedField(env, env->GetObjectClass(p_target), "pointer", "J")); +return x_unitset->useTech(*tech, target); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_WalkPosition_isValid(JNIEnv * env, jobject obj){ +WalkPosition* x_walkPosition = (WalkPosition*)pointer; +return x_walkPosition->isValid(); +} +JNIEXPORT jobject JNICALL Java_bwapi4_WalkPosition_makeValid(JNIEnv * env, jobject obj){ +WalkPosition* x_walkPosition = (WalkPosition*)pointer; +jlong resptr = (jlong)x_walkPosition->makeValid(); +jclass retcls = FindCachedClass(env, "bwapi4/WalkPosition"); +jmethodID mid = FindCachedMethodStatic(env, retcls, "get", "(J)Lbwapi4/WalkPosition;"); +return env->CallStaticObjectMethod(retcls, mid, resptr); +} +JNIEXPORT jdouble JNICALL Java_bwapi4_WalkPosition_getDistance(JNIEnv * env, jobject obj, jobject p_position){ +WalkPosition* x_walkPosition = (WalkPosition*)pointer; +WalkPosition* position = (WalkPosition*)env->GetLongField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "pointer", "J")); +return x_walkPosition->getDistance(position); +} +JNIEXPORT jint JNICALL Java_bwapi4_WalkPosition_getApproxDistance(JNIEnv * env, jobject obj, jobject p_position){ +WalkPosition* x_walkPosition = (WalkPosition*)pointer; +WalkPosition* position = (WalkPosition*)env->GetLongField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "pointer", "J")); +return x_walkPosition->getApproxDistance(position); +} +JNIEXPORT jdouble JNICALL Java_bwapi4_WalkPosition_getLength(JNIEnv * env, jobject obj){ +WalkPosition* x_walkPosition = (WalkPosition*)pointer; +return x_walkPosition->getLength(); +} +JNIEXPORT jboolean JNICALL Java_bwapi4_WalkPosition_hasPath(JNIEnv * env, jobject obj, jobject p_position){ +WalkPosition* x_walkPosition = (WalkPosition*)pointer; +WalkPosition* position = (WalkPosition*)env->GetLongField(p_position, FindCachedField(env, env->GetObjectClass(p_position), "pointer", "J")); +return x_walkPosition->hasPath(position); +} +void reconnect() +{ + while (!BWAPIClient.connect()) { + Sleep(1000); + } +} + + + +void flushPrint(const char * text){ + printf(text); + fflush(stdout); +} + +void println(const char * text){ + printf(text); + flushPrint("\n"); +} + +JNIEXPORT void JNICALL Java_bwapi_Mirror_startGame(JNIEnv * env, jobject obj){ +println("Attempting to init BWAPI..."); + BWAPI_init(); + println("BWAPI ready."); +jclass cls; +jmethodID getId; +cls = env->FindClass("Lbwapi/Color;"); +getId = env->GetMethodID(cls,"", "(III)V"); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Red", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Red.red(), Colors::Red.green(), Colors::Red.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Blue", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Blue.red(), Colors::Blue.green(), Colors::Blue.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Teal", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Teal.red(), Colors::Teal.green(), Colors::Teal.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Purple", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Purple.red(), Colors::Purple.green(), Colors::Purple.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Orange", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Orange.red(), Colors::Orange.green(), Colors::Orange.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Brown", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Brown.red(), Colors::Brown.green(), Colors::Brown.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "White", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::White.red(), Colors::White.green(), Colors::White.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Yellow", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Yellow.red(), Colors::Yellow.green(), Colors::Yellow.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Green", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Green.red(), Colors::Green.green(), Colors::Green.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Cyan", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Cyan.red(), Colors::Cyan.green(), Colors::Cyan.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Black", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Black.red(), Colors::Black.green(), Colors::Black.blue())); +env->SetStaticObjectField(cls, env->GetStaticFieldID(cls, "Grey", "Lbwapi/Color;"), env->NewObject(cls, getId, Colors::Grey.red(), Colors::Grey.green(), Colors::Grey.blue())); +println("Connecting to Broodwar..."); + reconnect(); + println("Connection successful, starting match..."); + + cls = env->GetObjectClass(obj); + jclass gamecls = env->FindClass("Lbwapi/Game;"); + jclass unitCls = env->FindClass("Lbwapi/Unit;"); + jclass playerCls = env->FindClass("Lbwapi/Player;"); + jclass posCls = env->FindClass("Lbwapi/Position;"); + jobject moduleObj = env->GetObjectField(obj, env->GetFieldID(cls, "module", "Lbwapi/AIModule;")); + jclass moduleCls = env->GetObjectClass(moduleObj); + env->SetObjectField(obj, env->GetFieldID(cls, "game", "Lbwapi/Game;"), env->CallStaticObjectMethod(gamecls, env->GetStaticMethodID(gamecls, "get", "(J)Lbwapi/Game;"), (long)Broodwar)); + + jmethodID updateMethodID = env->GetMethodID(env->GetObjectClass(obj), "update", "()V"); + jmethodID matchStartCallback = env->GetMethodID(moduleCls, "onStart", "()V"); + jmethodID matchEndCallback = env->GetMethodID(moduleCls, "onEnd", "(Z)V"); + jmethodID matchFrameCallback = env->GetMethodID(moduleCls, "onFrame", "()V"); + jmethodID sendTextCallback = env->GetMethodID(moduleCls, "onSendText", "(Ljava/lang/String;)V"); + jmethodID receiveTextCallback = env->GetMethodID(moduleCls, "onReceiveText", "(Lbwapi/Player;Ljava/lang/String;)V"); + jmethodID playerLeftCallback = env->GetMethodID(moduleCls, "onPlayerLeft", "(Lbwapi/Player;)V"); + jmethodID nukeDetectCallback = env->GetMethodID(moduleCls, "onNukeDetect", "(Lbwapi/Position;)V"); + jmethodID unitDiscoverCallback = env->GetMethodID(moduleCls, "onUnitDiscover", "(Lbwapi/Unit;)V"); + jmethodID unitEvadeCallback = env->GetMethodID(moduleCls, "onUnitEvade", "(Lbwapi/Unit;)V"); + jmethodID unitShowCallback = env->GetMethodID(moduleCls, "onUnitShow", "(Lbwapi/Unit;)V"); + jmethodID unitHideCallback = env->GetMethodID(moduleCls, "onUnitHide", "(Lbwapi/Unit;)V"); + jmethodID unitCreateCallback = env->GetMethodID(moduleCls, "onUnitCreate", "(Lbwapi/Unit;)V"); + jmethodID unitDestroyCallback = env->GetMethodID(moduleCls, "onUnitDestroy", "(Lbwapi/Unit;)V"); + jmethodID unitMorphCallback = env->GetMethodID(moduleCls, "onUnitMorph", "(Lbwapi/Unit;)V"); + jmethodID unitRenegadeCallback = env->GetMethodID(moduleCls, "onUnitRenegade", "(Lbwapi/Unit;)V"); + jmethodID saveGameCallback = env->GetMethodID(moduleCls, "onSaveGame", "(Ljava/lang/String;)V"); + jmethodID unitCompleteCallback = env->GetMethodID(moduleCls, "onUnitComplete", "(Lbwapi/Unit;)V"); + jmethodID playerDroppedCallback = env->GetMethodID(moduleCls, "onPlayerDropped", "(Lbwapi/Player;)V"); + while (true) { + if (Broodwar != NULL) { + println("Waiting..."); + while (!Broodwar->isInGame()) { + BWAPIClient.update(); + if (Broodwar == NULL) { + println("Match ended."); + return; + } + } + } + + println("Game ready!!!"); + + while (Broodwar->isInGame()) { + + env->CallVoidMethod(obj, updateMethodID); + + + for(std::list::iterator it = Broodwar->getEvents().begin(); it!=Broodwar->getEvents().end(); it++) + { + switch (it->getType()) { + case EventType::MatchStart: + env->CallVoidMethod(moduleObj, matchStartCallback); + break; + case EventType::MatchEnd: + env->CallVoidMethod(moduleObj, matchEndCallback, it->isWinner()); + break; + case EventType::MatchFrame: + env->CallVoidMethod(moduleObj, matchFrameCallback); + break; + case EventType::SendText: + env->CallVoidMethod(moduleObj, sendTextCallback, env->NewStringUTF(it->getText().c_str())); + break; + case EventType::ReceiveText: + env->CallVoidMethod(moduleObj, receiveTextCallback, env->CallStaticObjectMethod(playerCls, env->GetStaticMethodID(playerCls, "get", "(J)Lbwapi/Player;"), (jlong)it->getPlayer()), env->NewStringUTF(it->getText().c_str())); + break; + case EventType::PlayerLeft: + env->CallVoidMethod(moduleObj, playerLeftCallback, env->CallStaticObjectMethod(playerCls, env->GetStaticMethodID(playerCls, "get", "(J)Lbwapi/Player;"), (jlong)it->getPlayer())); + break; + case EventType::NukeDetect: + env->CallVoidMethod(moduleObj, nukeDetectCallback, env->NewObject(posCls, env->GetMethodID(posCls,"", "(II)V"), it->getPosition().x(), it->getPosition().y())); + break; + case EventType::UnitDiscover: + env->CallVoidMethod(moduleObj, unitDiscoverCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi/Unit;"), (jlong)it->getUnit())); + break; + case EventType::UnitEvade: + env->CallVoidMethod(moduleObj, unitEvadeCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi/Unit;"), (jlong)it->getUnit())); + break; + case EventType::UnitShow: + env->CallVoidMethod(moduleObj, unitShowCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi/Unit;"), (jlong)it->getUnit())); + break; + case EventType::UnitHide: + env->CallVoidMethod(moduleObj, unitHideCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi/Unit;"), (jlong)it->getUnit())); + break; + case EventType::UnitCreate: + env->CallVoidMethod(moduleObj, unitCreateCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi/Unit;"), (jlong)it->getUnit())); + break; + case EventType::UnitDestroy: + env->CallVoidMethod(moduleObj, unitDestroyCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi/Unit;"), (jlong)it->getUnit())); + break; + case EventType::UnitMorph: + env->CallVoidMethod(moduleObj, unitMorphCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi/Unit;"), (jlong)it->getUnit())); + break; + case EventType::UnitRenegade: + env->CallVoidMethod(moduleObj, unitRenegadeCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi/Unit;"), (jlong)it->getUnit())); + break; + case EventType::SaveGame: + env->CallVoidMethod(moduleObj, saveGameCallback, env->NewStringUTF(it->getText().c_str())); + break; + case EventType::UnitComplete: + env->CallVoidMethod(moduleObj, unitCompleteCallback, env->CallStaticObjectMethod(unitCls, env->GetStaticMethodID(unitCls, "get", "(J)Lbwapi/Unit;"), (jlong)it->getUnit())); + break; + case EventType::PlayerDropped: + env->CallVoidMethod(moduleObj, playerDroppedCallback, env->CallStaticObjectMethod(playerCls, env->GetStaticMethodID(playerCls, "get", "(J)Lbwapi/Player;"))); + break; + + } + } + BWAPIClient.update(); + if (!BWAPI::BWAPIClient.isConnected()) { + println("Reconnecting..."); + reconnect(); + } + } + } +} + diff --git a/compiled/bwapi/Bullet.class b/compiled/bwapi/Bullet.class index 8e8bfafecc315bf38cda17142d9e9af07a8f0e8e..a20e7f96392561b5607e27c2e15dfe4ecd2866c7 100644 GIT binary patch delta 309 zcmZ9`&q@MO6bA6`nse_Rr-*ArBbZ=ox&0Udpd(X)LIX{4dP^R(Gu!k& zT1$`UDjj8>(=|HI{Gpwf#SKE-qKrG#aL;=Kbh-7Bv)^dQ!oCD&OdD{P!|(_Ak1e3D}3$lq%4rdc&w*>Na7<9q> zHXz>-$k&7Nw*vW|K)ybd|AbADH4w-*n9R>6Ia!!pkUbK}GlZBX!M%Zj0mxMbl59Yl zfguq{8Zjt>jF#Y8gC>~?lr&~A0o%I(Xi_1NZwlp~XBT9wp8SwqpRskaAcwwuHvPhb#Wn8+Z)Fo{8yVKRd@!&C-q apeP3e;~$_SPjD>e?gVNM0SYlOgaQDu%`Y(k diff --git a/compiled/bwapi/BulletType.class b/compiled/bwapi/BulletType.class index 62fdb88fc60d3a2a1356c99f212e6733d75d6b3a..2a8ef2818c6f23840816907319dec601c470b3ac 100644 GIT binary patch delta 123 zcmaFL|BZjcSvE%A$>-R#7zHQ)WYbqqWME-PV&G&*X5eCQWN>0&WUygiU?>5KG6QK- zInF7w7+4uMOm=5C)0Sgk2a2UJurZ`Fa4=*tNHAnE$S`Cxs50a*7&GKCI0I!l8JIZ! VFlbGl&u+~f4>ZjaD8|I#1pv#26r=zE delta 106 zcmeyy|CE2jSvE%D$>-R#7{w?5WYd>VXJBE-VBloPWZ+_OWN>0&WUygiU`PgvG6QMd z$^PtSN@5JGKz0s;07EW=2tyu&EJHqnHbWtUGfMuo`<%zCUE3>*xalP3dN20)hKFMr z3|oR?3y`n`jouP$U=j;( zqd6zmvA*qKT delta 144 zcmew;@KInx4l5(?`dwW415d%3^ELY z3|b6A3>FN+3~me}3?U4n3@Hp^3?&TW3@r>23{w~+8I~|eF>GOwW;g;=eT6}m;R%Br p!xsj5MivGIMiB-@MimAnMiT~QMi&NN1}26G1_mG*!w?Im;{Yaq6@UN$ diff --git a/compiled/bwapi/DamageType.class b/compiled/bwapi/DamageType.class index 859bc092dae8a73c28c713b011485c37cc164f33..0a858ab3455b62bad87803c19fab0c8408ff6a6d 100644 GIT binary patch delta 123 zcmWN}F%E(-7(n4yT7hbeVRIl|07+UEqtS%}aRF~qb>I#roWO*8G5Aj}`G)tkKRdm( z+QyIes))1h+6Kb`OUs&y8ifO%qFQ=)_BFCnQ{0(HaAabhlt9jjJ!eWf8ZO+pN|95N PFZei^epAUUh$S5Vf&LG< delta 106 zcmdnTxt4RoRAxqz$8^ZWRPQEU`PgvG6QMd z$>J<#N@5JGK(--+0D}>O2!k<$EQ1MyHiH?1Do~Vzf$Bv3@O?MGb8_z^ ze1-Yj_R17!5u2x7H#Mi?Rpd6w-+Q?xcj*3ok|Q~#_j9#)1F@;Us0nRzch=)R4g&&) zl=MbwB6Vk_w&pGgE?3+_ZY(#OCwR&x+MnVxr@?}lrS?{A*)UccVEG?r=HMQ~RM&RO GEV3__bs6CR delta 177 zcmW;FJrcoC6o%n9k_btIA;w=qW>92MNntR9j7=z&N=v!hP$(?G4vf`k6h3M0xzBgz zobwKz!Tn=jq(k|uHLdLWai;4;x!H% ys%-HY^Iyv!7>!IxC~_WDQm=M)AqPtori)3@i)*44e#s3|tJR3}y_B3%@E084ix2JVEn_NJ(-Kmn%fts*%m0o#9#*i DR8|f5 diff --git a/compiled/bwapi/Force.class b/compiled/bwapi/Force.class index 8ea3926167e5f15f716c414a92e19987b47a7fbf..ca8c86def4602677eac85a17477a9bd4eb475de6 100644 GIT binary patch delta 129 zcmeC>n#Z+a5i=w2_9OE1~#BN4hCfg2?iCQUR5AeV=!jWU{C_eaxyS+ W{9(|Vyq+bPTM}rRE>Mh#K@R}-1Q5Ic delta 112 zcmbQo)yuVE5i_H}P6Pd>mB%q<7htP2!k HV$cHsy>$*q diff --git a/compiled/bwapi/Game.class b/compiled/bwapi/Game.class index 20841812c0f7d8359a086dfb33739083a10b5b92..bafd0e9790116b093ac00950cb5db235de60e399 100644 GIT binary patch delta 2494 zcmZ8je{fXQ6~5=1_jcbdEBj1#$%YVwDXkFpcXl@k*(AHk=Ep*kVh1|Gh8kO-*b*8l zor#WUoKXjDLgNu;paX53rX8ShNF6%T8KHDaYp68f6g3o3tZ20Zh#i=*R_%8$8OPaw z&b#0FzI*PEJ@=gDar)&r9eTNvJUm&MB>S1AN%Cqp%yf7j_em!1nX;NQk!bhmnYT zK)A$%n0Hlt$k+2eZj6=~4+~3d-rxaVF-Y5&mXu8SP|_Rnu;M1$HkR@g$9MT|7)<{DXMN*e{3- zeG@OnZO1r}Ne+F6_kbsWoio^9WjhW7TQfLU<#mc9aJXh14^(+g@e&+v&LrpZn1aUv zJsQ4N<(1+D|Enruib?IYlVx0;K#)@kl9wk|_<4Pz*c4~ru=T7x2?RN-p^~3ea2oIq z&3=+V%nR&EhNQT}>10^q_vlmTecq?g6`o2)q`1zMg7XGPQ*eIF_oZS|e9F602_k+a z6~zsFmWmq|0?$=}OS1((HhC04a7mvh+7c8g;^jgq0dcwLo+vtVoK7Ob! zWURwzJwK1pMvU&~OLZY@6GnZ|*Qx9+zo#%4Z_iU%i+KG&=>pDkC+|@nNu~UqPLLRK2wHXhNMN8q22XZZHN!n zCvK;aFR^Xh?%rkcxWGQZ-|&QD%|uOA8UxXXbi(& zA$TVbHI%cj5!3g>b$}}ylP($;Ha!ovi)Xidg?BW1T{Izz>9=s*&GR#N@}!z@Sj?v1 z@tciFla64*?|E*f%0(~1dlbS|oM~Rj4`m=c4)%{cqSzB){|t7uV*UMvcRUH@Np@sw zO*$of^fzwJ*3F_bVh+8ENo(jHwp+^iVAgNaS#0Pv{!6xY7EMEX4t&oHzqrZoq6^?J zDkuLn`&HiDc4TRy1#+M{lK ze~WDdpf2NMEeUHLxC(F^^sh0$)wULZTL{nh^!)Bt+gJn*Zm2b7Ee5v)9Qp!|cB<8O z2eGpdJonT0c?W9xZEdy@6>b^hKwH#EV3g#pwy0HuQ7v?R9By352cb$MRy`kYOBfl% z&+;d22`h(D3sn8L)^1ltVYbZk=Jt@)A)K-k+>dnCKh|#3Nlk z)4g+FL9vnQ{cfX2bT9jSd9hQf_xmUfs(R}GMWI@~-^X<687;_TxgASBrD@d&cdqc7 z5}i;E^T8EiDM$Fc`s`#+M@Y)uobHH7xtBL9G|E5k05`^`JAy8`A8`&K&QrQ19VlF8 z95K~9eVTs4gNXpI?({mPYK~8%RHz>CL?>2O-Emmo>R|;{Z`{FlM;TvMP<6%~{ML%O z?C%0po$;soQgdAhc0xgPZ1oRkOINX!ll){?=q@=WisWgmeg=);SyUbpe?oP8Kop7F z@J&=$&+ZWh9pbZH$;t}hz+bAr3sauOab6dt@(ocgr^O<9PQ>MT+JzaGkk0>!B`*ZO QzQ&v-(Rt;1c%|I%e_iQGivR!s delta 2480 zcmZ8jX>gU*89wKH`R|&kbls@N>ah&_-{m!$T_bm6E z_uQZDm)I{ykC({FI8l<2`P)kqvKUFmTd<-ufzGmQjFy(j5KfmSa-!mh5JHI;g%sl$ zD=k2(%#kUi%M!8{LyXNh#Mp_eWl480U2lrNVrD!KO`%-(JmQn$l)(=We~I|53A~56 zpZK&mWAxXFmk^&7=de3E6K+Aklc%Fk%)i4 z@QDNLcST&o2kAUCl;_$9g;zX{1?3U@5Y@xjQXcj{OYR7L{}At+HJzdF_r(9itolL( zDjfd_I`m%tTYQM!6?tf^$dj+&&WdXJC!iuF-^5Fdr(s7ETx(4yzJvq<W^ z>h(Bt#*vc;Kzk^|V8jLRi> zDOoND@xNr$Ue3(Zbmsh~j9*)>(vr->mDp6QPvyFKFo=uzYvki#%5n2F5KreC3h-Xa zk?Zhbs$6cs=PIM}F?_i)!ZR?;xC2KRe~hb@A-M-Ls*?V_!YhBt-X-!5a|Rx)%C!%W z`wg~KMf|@NK6#L8NQRAiwkp?qi0WZ-5o}8rAh+7FpCzg=sF{c-Lq;_U&dprL2}&^| z&C8U=DaB2WSDE9_L>NnvnfITbFTwt!r$3fVXQx-v6-m5&bp#_!ce7On05@`pK`Nox_P1N0vZKFG5}eyEl+(L`g%!r`m+0+Nt(oQrj&UX$bgKT1-)0q~@ZyaVAda z4!vTM>chE)giFn3hk2OR81t$5WbdT$i)d__jfWa(Tu5~hwrO>M>RnXlYc;q!V~^Dm zI+w!TROM3lh&**K+M8;!)qP^Bx}TjE%0+P6imK;NUJ?lNn=t%Xb2 z#CdNR~oq;E`x}AFrjJ0rqJ8Ap@)ul$wY2~nwQ++~Hyw$TB^D*Ay zLVK%Y@1pfd^tVR+d+7Kn9bfsB<1ih+pkpt_Ta)%v9CSbYZI#|p&UcL7WoB~sw>jRY z>3YU6ddGj&=CDLN>M)MB#l63yrmx|k`8A5$9q)70j*+>?^k2~K*w54R0#>#sy~nBP zyLhje{LAf*|7FhX6*6Cw%Q3>DZgn{JYdk2gqoAYQ{tH`gps%Ccdy=hF^sPX+VK(;B zb(Xo#;aEr9euw$r#r2N3_aa-D=vsYq>`sUGaFV)=m7O8)Ri55!)V^-Y{?SfH{tK^l zhU7=v(;@jW!s#+)2@L3ujp1~e%kt5^)|7^m>435(;c`0UvT}vj%0qD%eFf<4qHl)q zSj8CX3i+(r6m=Q@mU%pPWfU9hHZ94A&0}_>Yl_DzA+cT#>3SOcNv1nO@!O{K?9MpH zR-8j7jI3Y69o+$!Rmq{Nu&+C;tU8?5pJwFrgp}2e+MbBAy0B8CIe4;%+86L@PnpkJ zz&s0?XOk&Ozs?+{pE(C8ZXM)y&QQNi7jSVpV4qR;Ru|b zLR`>LKOrMH-#rb%K0^J1Y&DzO+Q(%225ptw%#J+JH$_?N@ZG-9OzRPmWo_W-kMbe- zzTCkl{&`lnr6NmM{FdQNUt)Gp*g{y3iGa0H3|tI447v=A4C)LF3?)EOW*}`U z$2nyd11sZ($q!h}wB;DsfnqicYz(#x91Qjh5)2LuG7OFkstisH#tbeDdO%rD1}2U_ U3|f;dSgpBDfu@-N#h4gO0la$<^8f$< delta 106 zcmeC@{>QZ;jfGKUayp9^qr~J%Ec)_x3@i-x44e!O3|tI447v=A4C)LF49P%IW+1IQ z`2~xak{AOkknPMMz~I6l!r;mv%izYK&EUbH2NdOCVEn_NJ=v4hn%f4b*#s!W#9#^l Dg9{E@ diff --git a/compiled/bwapi/Mirror.class b/compiled/bwapi/Mirror.class index aa1bb393fd470f253abce0c711fabb338aceddd5..81e6583fcb22c779bf0341045048932110463668 100644 GIT binary patch delta 36 scmZ1|xkPfq6D9%vr1Hdq%=o0D%#`$0!+68ZADOzC7!5bqu&S~H0Q#{EkpKVy delta 33 pcmZ1?xlnS$6DD4sr1Hdq%=o0D%#`%h&0m3N<*R!g!0|3{P3(o)m diff --git a/compiled/bwapi/Order.class b/compiled/bwapi/Order.class index d3e9331b5705a8e3da6074d11d026484515655b7..257bde674e8f8aa31c3b83305e37918e378aca8b 100644 GIT binary patch delta 123 zcmX@Ad`)@7S^-Ah$?F8P7zHQa6wp@>WME+oV&G&9X5eDj$*_xokzor1149V|3j;Hd zHkIR?GK+zgal>SFK{IVR26hGp#xMpp#&8A>#z+PU#wZ3E#%Kmr#ux@;#yE!EKpmV6 YOdNk0v?kXJT66mYO*;q_V`4Z200m_hM*si- delta 106 zcmcbnd{lYES^-Ak$?F8P7{w>w6wsFsXJBEBVBlnoWZ+`h$*_xokzor114A+c3j;Hd z)}5>`Xr?5_z{1n8>gjsDgum@ehOc1ZRpLpECfz_YXQ$1^I2T->+|m~BRz zANch{B9yh{WLA*^xkWm|vGkN`O;}>MHJrm}T)WM*ZPxz9wOR_Ti)tB`lPj>FY{6x6 zHAZyNZROc6jOhSDLc49WUDj67I%vDC_0cxb_E@_?>!fvCdrsRy+iNY7)NU7TpS7l> zR^4bx8n=hNp0JmgQTt{Ga4l(6FP@Qy5os{$7#5Q!v6DQF3ORsB4aPmoCA~P|PfyRO zT{6h1FN_j%YoqgMPnqZi9ylUL?fuQGy}wHg`|T5trnI_(_bH>UBat@hCRUQSaFD!> ztK>aACGW$@81(>)GRA$#=`(ivcqZ=1V+>{rjy%C|SVk}&mN8`g0^X)vtoQSdygQuX`w!&Ue*_t z-O`V0F2HKfXc1K}))g4`>e)5S_R2n+&3Y!=NgtH`*1zy<8Na(XYY^EvP%J6VHhlX$59ke6X{`p4xU`(ugu!S7N7&(M{a%|SR1FEqn)(&n0A47%Gw<5GHujaCU4xUwA0pl@b*vUeu!<=UFx><%906TOS~zbFm zU^Jdax*n530SAg*+1Kn{luP!?I-9So!EnMpWTR+w4xfvOen762=sdQOUvZZFh6m&i zyd!_X2@+jEElAwIoW5qKuLQoM4sHb%N3(dDmR9^si@~aprG);pv|%EQ9c{;SS~~DC zjN7#=8SRp#T9FpHE#T5!{IW+SBa2uos73X)C2{#Dbc?T5DQHbrYLAq)SEhJkiRd3G RKST6gTXh4+Ke6e^{C{&OkF@{* diff --git a/compiled/bwapi/PlayerType.class b/compiled/bwapi/PlayerType.class index dcb7c6426c10af80c41cc15161e4443b2a63e610..1e4b3122bb7722559bd133c06d92fefa0cbd7b73 100644 GIT binary patch delta 123 zcmeC-n#;A}3o|3{y zj&sT^23E!mlk-^2wB;Dsfnr7sYz)Q>91Nxm5)5VxG7RPnstguD5i15wpe!c?6UQG0 Tt;xq&thu#;rs)I4m>3KIs*VuF delta 106 zcmbQs)x)*n3p1n0 Dc-sy^ diff --git a/compiled/bwapi/Race.class b/compiled/bwapi/Race.class index 3b9185edfadc673f34c7d2c77c5a15fd6147ae55..b149991d3fadcbffa6ff4e25d017cae577e6d13e 100644 GIT binary patch delta 153 zcmWNJ%?bfw7)H-G<{L9K3kyXtB~5D7j0pM9Pwv9XE#NBbUMnl^VBCqdYf-$L^VB)@ zJi=F)pIsBm#Z62_o^EQY@>bU6r))}UQ`3@zGM1~&Iul%`1k5Orl3{2AC$$CLVHDi% sSd+`gj=B*=bxS-}_^he1p~04z9Rv3Cv<5i-mqhyBu{_qdxjKi%AI&BhhX4Qo delta 136 zcmdnUyMT8?DGQ^> e2xBk+igGY8{$bFb?97(T?FH0q0~BInumu20trnmF diff --git a/compiled/bwapi/Region.class b/compiled/bwapi/Region.class index fabbc97f19329eca9aab482b7413bd53807a1fc8..426ea6249393a6bb8bed9abee7ef28aa56065042 100644 GIT binary patch delta 275 zcmZ9{&q@MO6bA6`TKC==Q*egF8Bjq%M9rB*G$JCz1j9f0Fug;#KCS8*tbw4lFXBpk z3m1KjJ2&U@`wr(E?zg}7lZ{q+`O=Z{WXD>RoQYH@4<^zTD72(tLU}Wuu2F4yqJF6c z)k$@rTGUOdYwPJQ)lD_Fp6yW)Vi}oIkV^ov&T9Aq1J>J9)6btb@8!qF>QVMKZjNz@ zXSkRk%b_91Y8-!Mdhx%e>b`$Kt3-Ovuv3L)Hsy&IIG7>89Azxfz!H6|aL2BTjC16F P*3ReEh}-7OGFbcp0{AID delta 258 zcmX>gv|eb#T2@Ap$?I747$qm)1(I@;dD!$Al_y)X>9J}sFfwRP7GRT{+|DM*ste?4 zO|}Q}wgGuYK%O?3_Y}yp0`hdgJP~$5Rwp1&7tC{J7i9MW^7I(=Cp)rxI z18LpKmKv`_!tBjWEcb) lv>1dKEEt3t+!#a{LKs9DQW$s{m>BdJ7=WY^gE5#k0RZ-<4BY?# diff --git a/compiled/bwapi/TechType.class b/compiled/bwapi/TechType.class index bb611724dbbff5c68dc5a88b10ac04a5968cbbb6..52df2e87e4f15fb59e33099be0c6ee7d09bf4616 100644 GIT binary patch delta 291 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 Cxq0LO diff --git a/compiled/bwapi/UnitCommand.class b/compiled/bwapi/UnitCommand.class index 106e86a7dc8c711d91ee041ea52a5b04f93a1208..8f827a58065db3a1892162a4c065e806f74cc91e 100644 GIT binary patch delta 117 zcmaFF{+WHlS0+Z@$={gt)rA>Y7(^I28AKVl7$g~_7#M*p28I%#C^L{YmE)W;i-DDK z!(y zj&sT^23E!mlcU+qwB;DsfnpU5Yz&nQ91PVA5)3sAG7Pm0stk1u#taP%K0sMc1}2U_ V3|f;nvs-f)0!<47iZL++0|1QL6s`aO delta 106 zcmeAY_{qQFAseIU;Ju@Tky zj&sT^23E!mlYcUsY0ELN1I08L*cdb!I2g1UBp7rUWEgaTdi5BL84Q5tFaS+r;`qa$ TH93&Qnp+WQnif!ui9s6xf;JEW delta 106 zcmZ3%Ih}JuJu{=o!py#0 zM98s)QKXQIpungg7eNt0ErLYs6Vr;w77;BXilqMcEbrzFzxkgz%;xlU40eoFI5LYW zorpBl;#iqOR~)OuLdxYd?1X8~F*2Y2ASom#;>sdwh`8E8zJ}UkVY(YJIu2E^K0yhn z(o-n&rVu~^H6SEv3R=femOom7Xg$wpiyB=HRk5x`4QAhtT6h+9BQ1_uSxu`^YpEq> zbsc&)aqoD{=-tp})?Cb_*F)8E3r#q=lp8m?5#Gw_2B-xP%Y~^)BM^*#{^X;;{h>+ z7p?qaD2V}Yz&7SnkJDf~^OwgD;9=&{Qt&g_!L0N673^f5_V^9#@)%m_|Md?tyL zkA5OL%2ByL`iZ3f57eS#i{))(*dH1-= NRFjxDgIgtM{{xnL=LP@( delta 1022 zcmZA0O-NKx6bJBo=Xtdcv$R9(9S{|b5h>;yMkJ?SEqeh;l z?Wk$$i5fMC-UjY{71in@w41dM)j6Y3qufIu+yW|yX>|?W%V|Ay18QOoKm;|j9znOE zeXNhrJ!rpGXs!R@4-p;UsMsGpM%2PH+KpCIP%G=E(Q=w5jgc>C7WFkPp}rwgV&n`R zE-~sodXI4LlM=0Fp`)zN&?l&!l~bzK7pQ}p6NThK-=I!b7xV)<#+rbBL0zmF=r?rS zDirlUdl6ALM=^i2gy;m%Xo?53r2jWTtv%MzPkR*6x&)35)R>56 z%PqLk%Qx;MFdzo@G2dAxz<%Z*%X07xbMscvE?t`0VwnQZGOt+LwHvSuZS%ca+O<2! zQH4KhMs%K|N`KUfXprYumtp=vaERGkrtt%elo@=T8ProWhuTYdNrMMfCXE_G?=bgX zPil1uy3BeBjX@)<@6b3j$_jb^7jleM=V?jQ=9%?QmB@0c#d0SlR>-T;Zg467N}VE0 zI5=bU)blomgc8E36+x#?eAX$gOZ!EBZoeBD^?$>;k$_uQ76rKBCGP&z?H8Tkrgm6u4zswg!*p$6qt$L++!s(#RNpi9Wy~9JvYexm*G;SmWEn3Do2+Gc(*mHy+^Q5osLZ zn9VA?6Q*69)yTiPhN}`uXQ#&^c+8&o{~0N?Q9uU+ctIJjn8F(xY<)PXA5>&L+X|Yz JcEQZSR1?)OR9dbWkXQ^|EFD;y=+dOV%b<5QbTY8Le}T=| zK_p^ikq8nWu^Kv?B?ga^F6TYJ=Xu|o{AIp#=c-Wd-J;6Kw;QRPpCkx)FQQIyBW_oE7Z1Cm0Gp>-#n$t)Q;`0sWocXs_U6#h1$cu z7;j8M-y}EagPzND)w(HPIwP@fQZ@PzM@YzpHxdLLfI*G#04GqFD}Qv$gouTOg@}cnwWY-RmPEbl zu~McU!3Xd$u(3y2AQt|;nN>IE4`FJRA{A zVO@>FJG3jk1-HO^t{>qzyzlx8PQVAQ+YDXpgb(ScI&TFWB5)JYhfLIsSfXQD4AvHV zQ9Pkjd9#B}Y52_D{9@=lAU+J6GosbBIV&a+b7BoKFUqE^OrX0gDrQvtn7T3rT}X9A zbY%v*l$wR+AV+E)nujVr(;^7ND4cmWc7E&NX6F-laF)c=Ml1al$tqD2_B;qkJAGtH1hcW RC@Fre&tL}Io^a-&=YKKhU;qFB delta 437 zcmZ9|J1;~*6bJA#cCX9c#<k)ha9|Miv3I&P6ezzO8;KLLq7tJ=|a=qp22@y zgm-CAISaSIxzNwB5ATQmhSTst=w@4T(T+wA>8P~div>hzZy_sDiMo-;bfTI@d9w%2 zQ#w;O2e#CE;q&n1H(QE6{SVChPfX(!pq1}&O5%A!E~MrPMm)osf|NdO0BNc zW}s`OA!rE-lvbe?sGxKYtwA?R@6ZNxt7Ljo%R+Z0)z)2>y(`CqUPr?uMa2|Vi)o6{ z13hAV6LVt}r3h*}UwBP6PoBu$%$*9<>;@EK HVsHllu2&vs diff --git a/compiled/bwta/Chokepoint.class b/compiled/bwta/Chokepoint.class index d1a74e919f8eb13e777c614d0fd624c8456b5c68..1d19c3eecce74e46ba439aec71e430aacbb34d97 100644 GIT binary patch delta 133 zcmdnPah79)1T(t;10#b3gXH87OyZNxm<1U{CVMdJt4lGkFi10SGRQD+0kJGljTi$1 zLkUon8AzMTaZZ`Vz{hK|9RTNb5VQaQ delta 116 zcmX@hv4>-W1T(uN10#b3gXH87OyZNxm<1UXCwnmK%d0c6FlaDvGH5bzF~~5;0@a8y zFfb$oMVW!L?&NvQW=diVtU$I7g8+jrg9w8jP?bJ|HiIF998i>lf$M}&fKa% L&1yg)CI)o?#I+8T diff --git a/compiled/bwta/Polygon.class b/compiled/bwta/Polygon.class index 3091f8c2bcead28b270703e69561d8e52e1d62fa..7dc4efd39836c57f1e86811dec1442705783820e 100644 GIT binary patch delta 141 zcmWNJ!3n}Z6hz;~UCp{E9y~+|!9z^MND_&9vl3hIBzE#WiAAIk3$O)y@Ze`)2Hr69 z3E$99teMHw)@Cke^+c|=F{!-NSMs(^SzsygY#5WX#;^eHN(Y+9%s-wu)63GGs*I7c hiXl5=gFAJl@WIh%>Muo|?KvH9J4vRjc!Q?qW(qi%%7JYd;1{MZ;22KVC1}+8_ z22}<|21y16hGd{9GmzGuti)=jB*wrBWIHnmFt{*?Ft{?vGPp5lGk7ql0Yy0&82>P6 TPi|(7=C%Q9HUX_67Jq|Jg`wLDy&#k7>IacuC}GGIrcK6O)ZKX1g^B-T}7nJ}2 delta 138 zcmey%_l9qSH7ld!WE)mJM#ah5KvHw^ELJl{!^sy}%~>rO7#UP2=d(&qR$~)nbewF# zW-jl}z{23cz{%jrz{Q}+paoPR#lXOj3>0Ms(z=tUv6(4}F|Y#JJ`4g3z6>G^ehjh< h{tVg-fk4c_z`?-yhe3PtceZM7SDgwvdPlidDGX1j8oPG9lZhN11{`%*)-vPXX@7gegCkdKQ#5@)AsTfPl zhM1g~O)*N$mY8iZJ7R1xyJDV+$&1+&<0SAVT$#R*z-K77qXaLGvW!)v^E{3h2@J!H zvv zGEu2ZBC|j{@VCz8@_xM}vTnJUQ%kly z){gxmIVbXA;v`O)SiroATUa!)Bwx3&Y~l{mCf>)2i40av+{HZ;ABedxCM#x5%(|Ed zVjhb5P}oQEbq%8?j$dh#B$kh@U4NKx~eT(r5#o22SYSTlDbq`8`J8X^hg2>0XRqKwB#HGmI*leqhJIIBkLm z(1BKT(sKq$9~s9HJ(AGKu_|I=rUz~4W%NYkGDpJ50GAmglEUPn%S=|$9A=JknPEmx z;jGV`K{I09bi3Z#!^}x8bc)e$<9rm;8fM1Gj5B(MfArc_ zAG|jns4dJ)kV!H6LNt>IGiS-1BXcpDX%92!$;^O8qGFQo5 zj%GT;%r!FeWUfRrU18=1nVV#;Ml;=EW|7Pinc3)q>j^V=$fU{4MX%EvW-??}`Ch0w zB<0DaSfWy-iBuJRsT04zs56~7#>c2PoPOZ=Rv*=P%yixm;HE5b@+%!e}WtIw!-)ulX2WM znnazc08Jv$x}`?zmNKndDz$DY*1Dx$>z0zOTdKBhDcriHcI%e%ty?O%ZYkorrH<>C qQm$L7x!%#^Ks-)sx#6pRjp0XC9Qz6V^&4y9?SQ`ugU6Ahe*7;Qq&G+a literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/BestFilter.class b/compiled4/bwapi4/BestFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..86527df13c3388597d0fe6972b18bfdabb64c499 GIT binary patch literal 844 zcma)4O>fgc6r8nFJ9eC=rEP$gra+;jNm_&G0Vz=rAR$yG?I8%%A!gl3Zbc95VRzrWH?!}J_Sc_p-vK2MxM`J)C*Z# z+iFS&SFqw>4)YEi6iw6|)X^}p<)Dmhf%$*NQIrJ-F77j%IrU7A->?yZxfDwcIp`hv z9{ZooAmtI=IF@1JAG{V=P@`Q;)2(8rn`&-U&()l%HqXYK(QBc5MPtTl)g-BO`$&?z3s8gdCX`xi%fWI^}sp z6>sYk^vYM{PB5e42aHbRCzelP99AYUJJV$21bH1V8y`r}Qt2{gcweOO68ADzDO|^O qTqBx?_>H>BD34{VOdnh)Q?0@&tiuWH&(O0@4HhAt_6AQ4tA7DInXuIW literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/BestUnitFilter.class b/compiled4/bwapi4/BestUnitFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..e8e169b7b4b538c08619f68c2383f3cb865eccbf GIT binary patch literal 860 zcma)4O>fgc6r8nFJ9eC=rEP$era+;jNm_&8P$^LlAR$yG^bkJO1GBR_E4a?oJ4nm)^W0-4JG)(dWr`mg9; zX!)Uf8o%qR;WOC{$ml&436yy2AKn7_P9(jzY&Ml}Oo43E3nmZfmBiof^y8tY*bhCI zX4~6ICU$TMs}2^h=)ghVMAbnJbrahTir5iYxp1^Zw&cLYU4g}Ea!=&w4I2_zNVzni zgYJ>?ILrK$N-|?I$1;f3!D}{_j5%9oa`~xm>bY4tcjwHtab7l|nB5@ed%G80|1Sgn zIR<|wK!crR0`{Jw0vQIyv(6I(U}c%8O009Yt7C}j`WI*)i5MN%`Lt3%hDwWCo2g!& z=sdECZu=AT@>gU|FsI=MjCTDeN~bUm%VU`BNwI!{td5uU4-{yrbrEwsFVlF1YY}TS tuHh=Kkj+B;M$IJ3qJ-7SgBw&PU+xsv;TZO3=+jOOUP3zUHSQYL{sL=?w`BkT literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/Bullet.class b/compiled4/bwapi4/Bullet.class new file mode 100644 index 0000000000000000000000000000000000000000..191d546ded606962bd9b63fa9010dd502812fa66 GIT binary patch literal 2418 zcma)+`%@EF6vw}t03pc+!c(yYe6%(^6s_87gS03r&>&zC#Xjs3*SNTB(qt3M|J0d2 zY=>HBoc`9C{!N`uzvu2|6SnS5e>r#eoX(S0cU^@mRz+A`B6`B1$5jq%a0k{5?&fjAviUDZ&=n;KJ@Xc$U0~L7t5e&ILirx#PYd?5t|3!& zjnZ?LPosQkC|#f$%B{Al;%7@r*gIdc{UWl5Si_W;liQZGRobiHd3k_3CNQbvIu>+% ziqCW`;)af!SkiF|w{_gXvW^w3>iAqlLByIE?uubuwr$9^4Q%T87)2c?@J<3%9p9ps zKwZZ*uro79-m8#Tbu`dq&$h?FvQdA=USeA)oqFx-yL)Dd4*J?E8325WO~Y=O>rdqw zu``dFS+-2uukv{|*THyR^PSs#72Cbq;CWZyg8wfEIK|mF#z7lHN^$`W@2bCXYM5(& zPf~Z1oQBi5O3$1|7n=`AsTP|#M1PoH zq@8cl=cn0{am61ZJ3aX;w4Z{^_bJOAdR#`5lOe?i{)xY@M6K*Q_cI12e#77^48`yV zhSz5Q#EI7!-kCVW$eM4QeTC6D9?VK&VyfLo(arAyvYar(95CaYFEiLgp4wh$e`6+r zc`YWxiZ3K4^GdB8S!(6fQY#0SS~w@tf?@n887 zQ<22@X5w!$#xqNkLgc}Dn3;R-J!kGcnO}dteFyLe4{hX7%)-Qq-fr8tgVh|?aM!{; zo5;Ej?pr9?$f9UrLm=yi!$^jn8Vb10V|gNLapVWJmh9J=ZTsC&M)5!iY+uec&ci^4 z-CDC3cI(Z~JK6WQYfs`JP|?BrzN+s~!s_?@Fj4~nu`6IU{Lqhf1k$D5jTbzg_Kv9S zHvLfT#cw-ma3DJY5u>XjfdZ?p&=ttHBk8?ilSw(p6Ua2YU@UHww6@*u#RE@0^R=Ek zX=_VQ>EIfc9L!+WfrGq-vV#h$7B(Feuq812&p4Vg=b(lM%ubwoE{Ct#h`>yOC5G&G zj+Mv$rzep1h;E$7AXfXY1m^T;m(z4BKhaGz*Gm^_&Q<3s|Ob s1vhbnXa?dpDi)&*7O^ybaE(m8a%adMj$nU=G3nG~5t3?{))Cc!rX70K7oVoYxeE<3R3xFNmwUI+P3lpn)xo%?(H*#3VO$)bd zA{#omZJ}Z#i?W4HfvgvdLm9YgEKqD8$z$1wLeFn>X7Wy*i zH`;@s-)#5Z$f0+y@gVYj6^>Qd+@*pw9C$&fMgn3_z-)Pe7w!tAD|?&IxIG*^r*yIH z1?oxkx~E1@WzQ#K^i?RZ$g00(1@hfcy06$`T+QJGGA-9nw2g|Ew!4F9j zYFm%!;1ZS{%wo=ggS>^RgBt1c*NIm2)*`s?GDX1fp5Pi1*$9NBMsV@RgW+ zI6w-vwgc=vj*3L+5zhusG=P}}MpecJce^@)sIGoQ>K!BgF0O?*Q$(7~EV(ufy`1n| zqMEn$9!B{S(kGZn;VaBe{Tr4}VIGzzusTVyeu9jFgZf(%Qn7RiGdwR)c#&%fD-^Eb rDy|UCK>R?>VwAxWmXizD$<$x&6xqWG><=)eoti8{Jnc2^DXjbg?FO&W literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/Client.class b/compiled4/bwapi4/Client.class new file mode 100644 index 0000000000000000000000000000000000000000..c6347eba33c7950aa3dca2b762b09d7bddae8aa5 GIT binary patch literal 1229 zcma)4+fEZv6kVrGb=Dz`M;){(%vhMYjmahsm$T6R+)Sv)Wg&8+V^)$ER0m)HQh?KSaU16V(G0}cQ&$xs$;ueZj0$!z2>-{-4GDl0&%BVsJX6fd3ISKoLYJ= z&{wFHSvy&DT>G*Arerssn58N$niYf!=w+wbQJD2qAmZ1{rpKsA-f{N_rQxoDY1||DQ{2i( zhTq2nfuZio9+}NooKIj-+0*T7toruuOMzj@)@e6am+012H5XDR zVuGr~}pd33hJlq>DJ6^^(rK~>RQ@!s)r@Br+AfPD02uz%r(%+jh%9JrC zbBXOPX?6*-n4WGSlAihk(ajl9o+&xDZTX9WHH&ynVNQoFzz7O{*aT%k1z@f*t;W<^NeDk%-g ob5$=dR=qr06}i-zeO7V86&)k7-@?ErXx&MIbxaU@T0vO;3oX&-YlPW$W6x9*l?4Hg$b}7?5@Eo(1vSZp6!xa$A+{=}F z1rx(hOSa`r+jv%eTQJ;py&%^Km;7N1-nNmfX`7WfCM1@JUoyL7R0KMxGTsN-mn+WWKdg*Q+^{I1y8?nmL)~n@DiE%6`-T z2>-7F7~q?Z^Oq1OwxOM;C^~#R=VPajT|RdE*yH1QA20ZL(Z^mNFL|g+sv*$F9s%_8 z%RBM<30%VCks}rc?2E-wj8QTI*A!#E$Zw4c2(V~y0`V~UqAc|U>c1$!q`pV zO}rJu?HCFPOyF%^yvI-PC`=|uyvr-^DO_T{uQ0{@K;bgeR+wh)Das^=K!%kO<` zAG$NST)x2_MhY~Of2(9aNER3s8K~PxLPLGQ8%%KS4?ccXR~Qy5;+r>*i5mx%x0R+44YXt zSJ+%-bB)b)HaFPJv6*Lclg$E~TWl7QGmv^dVJ?-9yjYgY-<26X*7nxkfm8IUyV>KD zTrS)7`rI+MXNUC9tQ6OMJg((N(_WmSk8XngF1i-`xJ!UYjS8t(A+;-{j)l~;kop!< z>q6>YNCObk41_cWAx%O^!w}LugftQ%O+`q9p^8rNApp9c4~}#Majak!2G&Ro5&4%0 zV0?#DPZ9c>lz~^tM&(_C{MYeX%l|y(( zI}Z5rM}!LTUofLge^vl}RrsyHj=XINI6Fn^Y zf==m_=n>Huby}xIXGD)``iahp9@Fi*UG%u__=%T*w8yZbCf$U|8F$-)D7|k9pwPI)25@_eY<&PMg zON?(O{!PYsZb!mMc(4!m-gCZt&i%fV{{H*@2Y|1Pp7NRE9lFh zS8s(uuhHs$kbUn-{UAK+%Ypmc^CNfA*r$ux550guKpYAfO)v1GeSuW@aOV}bgYXUQ z^DQrMkK(hgJ9sI(J{i5|Mgpt6HQQPs*NLR_o~pU?4RtiKFVx7BH89`Jwze4*&B(TDDKB?r9qB29R#ZYgI zbq-mj+x-l^^bM&C%xU-uqh0%jwM!T$r4h{bxLCVDTF2|!M+&sWx`;WR3p8HgTEqs8 st60TNvT2AvsG3A+tYLlp;1-qY%U&XLGJ^F5`lM5Xmyk?*i@S!6f1j+i#Q*>R literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/CoordinateType/Enum.class b/compiled4/bwapi4/CoordinateType/Enum.class new file mode 100644 index 0000000000000000000000000000000000000000..b7c53d8a793556b450549f1dd20f426d599f4137 GIT binary patch literal 1124 zcmah{T~8B16g|U!c3D~|rARHJg4!0OAfRX~!8DkV6nI!{Y<$|5wOLZOq#qdH{6Riw zQ85|~&;BUmy#s*~753rYIkWeiIrq-|`u*)EfCW4aLB))P`i9q82S7T!WIUA$6W@8e04pTOw7`74PFv1~@VS(`ZkoX+B zyJ}tDd@PmjvAtE<^{Q>Mw$wX`Lfvh(ay?~dbH1obym&9~w2Y>;I!`Zdh~BQgI>!D0 z%4AVyaw#(zrHVdo2N+E76bNew;X0C_hehZ%W&W%##254(L-{~R;08rq{eh^XV(n~6muxw^)3dTLx^)Xae0!BFa~IrVPp`&GAwd*;ww!% H>~H!HuHfB4 literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/DamageType.class b/compiled4/bwapi4/DamageType.class new file mode 100644 index 0000000000000000000000000000000000000000..df19040d49b549d824fea5eb46bfcf2ff6317cdd GIT binary patch literal 844 zcma)4T~8B16g|@|yWQ=UfLN)SW(uNm}F{G7;5)F^jb*ziawrO`U{wqIX zDv}uAO#Ds8cxGu*h&(tCGjq?q=ghq)^Xt#I?*Ja+frBiHHcYJO?Y4tetYxu|I~MLb zL^gDA&qB$8jiQB30oxCUkqkXG6v#J^AF|A~2I+i6Q%) zBjvIG=?SDgq8leNh}HgUfjK?e`5@jnajhbJhAq+8Cl={h04Px}yBQ1o%@- zejXqNNBaTxoLbEHyXgqJfkvWgQrs-L6ld%AoY=vzykN_B$G#)Oq*PXj$R-0 zJffPn^$AAtE7GT!O5q30R`n+q&tM)FN3dGsWc3so123x|NJu5p1x)ciPvHgb1uRpz sf}6NOGz0M)6^l^@i&z>zxK5^C*)!OOBRHR7Ogc4Lgk;)VJX2Wy3yu`9i2wiq literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/Enum/Enum.class b/compiled4/bwapi4/Enum/Enum.class new file mode 100644 index 0000000000000000000000000000000000000000..8fc911321ccab577787e1a7c3c2778f8d33bd857 GIT binary patch literal 7934 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 literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/EventType/Enum.class b/compiled4/bwapi4/EventType/Enum.class new file mode 100644 index 0000000000000000000000000000000000000000..ea8446fd4a22f9a7ee8d9c5f1ee1c347d8f8f17f GIT binary patch literal 1960 zcmZ{kOII9K5Xb)w^SIN~443yK5F;UE7zl&_c|iz~M}h*0G@xUAHNypl3_UpXOl0pz z&~M<V1U~o5Tma^P$3J=0^%+%#RhWFg=BF=9a<)Gp8`g+*Y{CGz!<4 zI||pCy9zg$dkQz1d4(zFzQQ!~k-{xzL1Bh@pm3Y%E6g&BaU5E(SG*v%=LTLWu+Xu* z_1HViPmC^9j32BYADYnxzkD!dL5bUfzx_|dV#zx&77{DQFW1(}HU9Rx`IHhR*G$gj zE2gUK2L$vQin%KV%Nys42ZseJ!9uj+70N_w z$wIt;^Um_df@`7k;i-d&Nx+eX?)2d4UXi&XSKGLp_swegV9S)&y{!W6#3lUxj)kH0 z^1fH`Mhl+5JL(3dyuUj&cw7`D zMDLBHWlK%x3bi;&Lq3Biir}N3KBa;gx&yXbESGX-G0%-8*n5OKa4^SLe%`?+pfhZH zmG1Z-9vj9}EkWj14MuCN(rGr?w(%~dwn*j#6GgUwAgQ*5T$++s7s z<~EyIj9N&&oGlkh2c0VveX6@PeX`~ITl;hmskh0KQ=BV!M@Lg9CiCKW{+*TL+E2#S z+-TCXWAuStqQ8dL*)Hx9AX1}3>QzYX3aMiuH7%sRh19x`x);&_gfs&ojX_A05YjM& zG!G$-L`YK+(qO2fIz9wIck{84jv|2tEW*NFQhh}J*&(d&Q1=}5Uz4(Mk8Dhy+2p^3 zH*5aqDIZ59TM)^7kLYtm{vTlBEiBgpdWjqm%{)cytN-Ngqil3B$Z{>isHZ6cPG+d* z8RD7VZxQ?EMMR380vD*N0VHt|_es^^0TkZGTJ>etpVS=(eDNb9*=AK={|t#Iutg;! z5mAn)hGpPkCQ6HHipNDYi)v9yRI8{q9n)3ccF`R=uB+aiqPw)xRsU|$XLLd* zB)&&Scbvf==&>T`wOV1*HK<+&m!kPn GZ2S#LDS{OM literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/ExplosionType.class b/compiled4/bwapi4/ExplosionType.class new file mode 100644 index 0000000000000000000000000000000000000000..f8703c929df97114e10040761070c51b9c9e1149 GIT binary patch literal 856 zcma)4U2hUW6g|VzU0AlI9~5nCsamZRXwhh*38XJZV;X25Xf%Bs))lv|yBpZ8`mg+m z!P><5X5w!$#xq+IO2UKlFf;eud(PZ@GQabI*zt?DW-^tK@P=E41^n!sK_(vZ?r?E#BBMe+Wa{2;dUqElVz8mccq|5u;&v`r! zUQ#~aa((9@e%p2WN3!b?(RxlKu)?b8(gL%cNZN1MYQo@<0-2`mjr6s$k~cd++_#;l zu994wXl_@HYhe*<7Ur>F!NRP8iiIj_26ikIu`5uRHkV>8S*YW#z{1$IXL9hG?Fh^# zSYpm$_r$R|$lMrGe$kdw>BY|BD}g07<7Aq)&5m^w&8_mKnhVv&W!ea$abe8&9!)9# zF9H4WYGyf4=_$u!Wr%M69TI23^7@RrcMWUuB3L zk1Vg@4g;SddTu&_#lRX2a;g2YdA#3Z$iAJ&lS1r>VL>t{@9ciVSwrjl#`W?%A zV|EEyU~z(9COyuGXCaoqA$kSzHi6+jmL`NEotzLY ze}?p7Mms}lG)UUHmo*5~1)!Bzmo6cfi(eppx?v>g7UWza?{UIEq$q+%Q1CeHf-AhH z?)cjH0r4cG2*M>|7f{0}E{b8KMSs$zFs7GqB95W8F2H81@IRZN7F4QmU1u33(v9Hh EU$M))O8@`> literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/Force.class b/compiled4/bwapi4/Force.class new file mode 100644 index 0000000000000000000000000000000000000000..c1481c6deb000feea548b96a43537478f97045b8 GIT binary patch literal 1209 zcma)5T~8BH5IuJbU3OUt$cF+76cpQ~P*GI06+bXWNCA@?4NqoU*Sc7?P1$1nPd@mW ziX_H26MvI2o_o8}LNKup(>pWg&YU@O_vi1g-vC^}iU9+2Ce6GwX=yH*h+#n{E}Mib zcH=6p>9{U)OVYWa6RV8l+IQBQYKe;?Nq(R^n*&R=w_CATd!6;KX7XTVojj4Gfy9k&BJSsbH+!`rMOxQP!xdAcJ ztmk{dGTS89l26!^cLe(B{6#le3iRXyr}&D~s`k`Lz*0n?ac*yqG-L@9j)lAq<3qBV z5=?1u$gjV}?Jo?Y2uIb=#%NYu<%>Xh$+C#5hI$$8ns!T<&>Oyj(T3z)HR5eWCsYi`xj{HpxU-(6k%qv?o48ygw`-Q<*Vzu(-iHCO117-YYUH@6CNcbo>kSeROH~ z4r4v_1EU8pw#FMU*TZCLAKei=O-U-68gv+)JWo=sI2D>=@oCKRUBwygg7}459aBP+ r&yCt>^2MotK01X+!VZZ{v!eWUAHdpbpywl^tqGcXju1Lah=$Z3gP8D> literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/Forceset.class b/compiled4/bwapi4/Forceset.class new file mode 100644 index 0000000000000000000000000000000000000000..4ee89c210a2b602baaeed401b518bada976159a9 GIT binary patch literal 981 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 literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/GameType.class b/compiled4/bwapi4/GameType.class new file mode 100644 index 0000000000000000000000000000000000000000..4a5045b0ad0a9fd44f6917c6a32d48be6745d1ec GIT binary patch literal 836 zcma)4T~8B16g|@|yX|&MK}uDSqM%sXLj8I$X~T<&8q&f;iH67NGSdJ3S&sSA_z3R{fajVvZ(|YPh|zv{BN^cDo-9T=m$~YT4f{ zZR+_PT*9J*8O%CxkhM^DP(jtghJyk&+0Gw>Xu_O>8tw?pP8@nFhcDTLz)XzAM(lPD zmCMejCy@4rJ{-$lq;_8j%;}*nrs-35q8n?jmCn_isn*Za#t@wfBEI+VALaigz#n4r z(*OzB+6}PxILZ;BMZ6ol(Ew)hjLM7+o_2WzQC|Lt#5+a;^W3N7Ob$sh)8yLp^YWPI z64kto_b`f|kUYUu0$*Xas^7413Uj|Wg4G%)t0zbqcwT)=LL!zfV2bxVh3B~!utebs ruHp*O6vPiyEJi6TU~&B5Dw%p^PLbXp!Ttba(y7TJ#M55mnZVL7gBh)D literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/GameWrapper.class b/compiled4/bwapi4/GameWrapper.class new file mode 100644 index 0000000000000000000000000000000000000000..6d348a9974ab41c141041ae8f90972a92bf209bb GIT binary patch literal 940 zcma)5O>YuW6g_YF7#Ic$1zW9_TCtT`6|5$34@Dho zDpyj@x{k5|0|gx$0&&|Jc+zQG1A&?Pi5$v`@7di-L-wo8HtmihJ>Rtib}naY7j9QN zol3pubgK2%TiLg_D^KOAb>PZ=-*T(Fn7%rGm%6}$EJx2?(2A9;szcH%>FyA zDko+O+X9)%CZEZ{F@>>H5DONz-#W3{94IvjsU31zL)rDM{Ud>_n)Py;%S=vq1J2dr zRLuozbs9Dfae;lG{T^LW{$B)G=J}XBHI0|Ug@7L|@Y0NMUwlUx%OXd6jou1Ed;#%N z=@Y~V+IuB_AW4ign%dbIQX(Xz@}&_%rKQgh6HF?|WD#bAI2#!J3JYUgn^A?^ z_<(T!3nFKTYWNPlQT~C2bLfZp5n_#TvV4Yk2nXeN1ZaVrIVuN5q)C}0=^}1oJ+Poe q@k{+Mw}hq+f^{+E|ISzl1_2W1Fb+pZd_;JnI2w$fpdcIKr literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/InterfaceEvent.class b/compiled4/bwapi4/InterfaceEvent.class new file mode 100644 index 0000000000000000000000000000000000000000..c2a4a0c1854245943cd426ea4a25515b6fd77ad0 GIT binary patch literal 1075 zcma)5T~8B16g|_gZMR!0ARrZ}6~VR?s)CA^@M0iJiagY4@WpJGp)8hd({AgZ^1;tk zBr(33_?wLJ%(kJe!NixFxgY1=d(O=K{QdPCfK?PC2xC#Fxv5NAM+_Mi%j#G{E{bKW zXvnMFE#=(Sa7RZJ84arf5!-3Hren#bK)iTtw#|IYwX6AEvtD4fWLF&1Z8fC8`fzrm z>sC#tk}uYrN}*VOW7h4p{1eBOjYHFtTW#sMg-y26>NQ(M1;mbkZa24W$8H|U0|9?J z^HL!2sCK{+@uKa>r>&E+Y&c~Wb4TY1IL1wtD{yPHI%cQW+-73m5j==@^^ zfmq2kt=Ht_wWS&Yqx~&jk)qw^G}VyXj13Gu&xJRvYHzMyso@+|zL1zzo&}CN5M>Aqabbhg`IODUZ$O5lIMK@?xI$ zd*x$kk^e|Pq^^Uax6Nux?j3SPCCzY}mlEsu^?EL*2Wq-q3xlv;h4&Ez}Td=v_cMND~ne5fBj(h9V*= z7VP@70T#NV*emw(opbIOil2YH&wbw8X78PQcMY%pef((vXdCiW1cb`hBjp?N&2V`< zT>dXoye;3N@@-mrM~QbLQQoEIJtf{Fo>t;C@r)8@h-Z~JOMG96_lX}U@d5EeB|ap6 zq{K(Wb4r{eo>$^L@q!W;h!>T(NW7%PCE{fzE)%aPafSG?5+4&kQQ{NgRVA(xKULyW z;%7>HM!crPHR9(=d`|pAi7$v>D)A-pD`LsWWH(}WCA$-QDA|MPRnklBsbo)LqLPWkBqfuGJ|%s`WF?b{ zy_D=lOi?n0n5twdF-^%dV!D#)#0(`fh?z=e60?-dBKno|6SI}fCiYgcH!+}OfEZLV zNX$_(hnTBmE-_EZJYpXu`w;so*_W8FWInNIh}qYT_Ct z*AUk#xt4gBl6Mi;DY=fgUdi>u4N7hxZd7t3ag&mph<7V_H*vF)n~C=*c@J@ml3R%P zDtRw)tCCxZ_bGWFahsCci1#abKXJQ~+ldb-`2cZ;k~@eGD)}IBr;M9wr`9@(A&$l1GV;hld;!5RqPx(K9zE$Dbu2I%DXxArnToYnfg+qcg7x z{JTn}7bJSK5`7t5XZ~A9rWf>ems<7xeTdrVH?- z7vy+*;>ijM0=}RxkcaENw<@j;$Ma?Qya54t=729JH-O{2<(R(PJehY2rlcn4@E8;Q zSvdheju+3I>C4LH)!E+MAnu4CI?r+c$-1hMHijktAt-aaiiD-BoSXz+v3 z*0_XQr={ZNH-Es^xDgK27sSKb})&;&hpX+ zBOV7z^CH9N!xQ4Y%gW8n_9o$nD_zF>QM!zGrF0qZP3bb;q0(i%Po>Lvw@R1so|P`+ zohx0&`-k%+GdCkAH9G^xk2BGmgjX?&W>>a1;LV|lN>eGfXHLLNvkmvfX`Px$4-8JL zq}06BB>W&aQH0 zPQlw6oQ}6Ocu{X_@S@$;;FNXmOopFcru2v>;#&?cbR5o1UnagT5(|92bLrCK3yqrO zw1Tu$e8vUn(jpT-Pl_LB>5VGKpBwO}V--`nRfa$RKc6H4ujH*`O8CzeN%+qdN%-$^ z{&PhV{&PhV{&PhV{&PhV@QUD7$gnSdTnyMnoRS%(UjitBQo$!Gqx35w;4b0C>KX9& z!55(Yo^oy!$^JkeZvY2#Qy1_h<5P-njhl81=J@d`#Y_6{k%IUQmWbPwy-_85^ZbF- z9AEI3J>7RYUimzKMsB7LA2)jW-f;JYj*pyOPjCD(^u3mp>g8{U0($gtLX?)-0bky~ zC4L3DTe<_hu}y|IzrcPa;<+-sxmk%R1)1JdoIK@kIG^O-Z;~6^;oAzInp+&7o}1rZ zJ#l8-;y5qx+S8=OJ@J;%Qg%izUJLwaB#HjaOq?p#GE=i?9S)y2^x=0R-UNFDJeOU< zXVos@(`uLS`L|2>2Cz#wbM4Y?l;&Hvb2x<6QFFkR#7q1RJ<@}+& zIEd0^{G|3`^a&>B1n@Tfd)@G74VpcgHzxy zE29tJPdYFCR^y*(`2FM_4li9|fX{+UzP_bP0iPcqLEJ1GXA>{<^ZW7p5-%41?(x!Z z6@26JXZm-r?hiZ9)FDMBg#rYA>4w+K^Je7ILlM*e)*qo^ywzm9l8qYQwkkAn{BYbq zE@O0YVOGhwp@oxjh72vjCY<;2j}TC+QO1}dQ-`!H8d5y6WpK)*(ZwS>H@@`*YGmP* zJa;4^jT+-v!n%wu9zCU-fQtXm&Z()5^YDfQM~^HXGNoh^o-DKxSE|dfBD)_R2Dhnk z)0ut6CF8o>eA;gK^Exs(zGTv{!sO93WQ9MuThLIWe)lPlO!Djc)uRkCxAb zJQ*z?m&c;z^C2fN~D6UidOz{iFuN1#g z{7&%)#h(;^QT$Eu4~7H^K_MwZC_*Vb6k!zM6pA8(B9bDCBAOzGB9QdCBs87*=q9H{iipCU8D4J3< zqi9aif}$lwD~i?>Z7AAOw4;cpXiw3Bq9a8DMJI~R6kRB~Qgox}PSJzHOVN`eks^u0 zN0Cg?iz0<0l_HHIog#xGlOl`4PmxX0n<79Fq{yMjrO2b`L(!KapQ0Z{e~JMV11Sbk z6i^JN7(y|WVi?76ib9GJ6eB4{QH-V-Lot@3h+-T?F~xX_2^144CQ(eLm_kuPF_mH( z#dL}p6f-GiQOu^8Lot_P9>si$1r!S@?x0viv6x~B#hnyODV9+zr&vL;l42FbYKk=! zYboxcSVys*VgtoSicJ)EQ*5TVhhhuGy%bw1?xWa7aX-a&iU%lmP&`PnlVTUeZiEdsGktP-mnLN4kO`DazmTx^O?pNXF{p@D=vhC3tLdDzo?*O0n zs7&ua0OWg?r!CJ|p0#}6@&n5cEkCk6XL;W8g5^caOO}@{uULL;`HAIK%TFyov%F^c zx#bs@Us`@;`L*RYmfu=_XZgM550*b#{$zRG@@LCmEPu89&GL84KP>;W{LAuh%YR(b zYnZMxy@{F9GQ={}(qkEB8E&a8BP=5=qb#E>V=QAW<1DqMV_C+stYtaN@|G1WD_T~v ztZZ4uvZ`e@%j%XjENfcUvaD@c$FimMtt>TDG!m zZP~`Mtz|pQc+2*d9V|OqCRlc|>}=V^va4k`%kGvvEWMUJEfX!1EPa;Amc1-fEK@Dh zEYmGBEHf>$Ed7?*mc1FE$3Ozw_ISk(DDw;MV5;#mss9uxzuu*<#NjvmMbk+S+2HRW4YGyF3WY6>n%4} zZnWHFdAH?e%X=)hSl(;7)$%^eZI<_2Znu2Ea);%EmOCwXS?;!c$a0V6!(h;ar@9U! zU5>pKduv@zmuGLo-d2~_71-Oc$Lk8ZB71xG4!WYQ#NLrTL08h1**md!)|GV?_AcyQ zbroHey&HRXT~*`V#@p0`-K(qV>g+w)6Loc6gFT7er)%h%?8)rCbWL50J%v40*V47w z)7aB>ZC!^wgFRE%(RJCg*!{Y$uE(Cu-doqx_1OdLL0w-rV9#OC)eUq*_B{4Jx}k2w z-j_XJH`0yS`?2@ejdc_D0qg^H6Wx@35PN}cs++M7W*?%P>E`T1*@x-ox&`}i_Cno4 zw`3o|K2o>Tt=LDgkJhbpYxXhhV|8oYhP{Y=oNlArvKO_6h70bvqr;K8by@ zj@Rwkr?8jk_PPW6RQ74QgYL*aoqdMxs1w*{vd_{9x)b|s_Bpzf?#w=yeV*>DyRgq^ zU!c3_uIvlh@6cU!H}*yBi*+~MoqY-Wow~d3!M>DzneL&z?916#Xs_m zSF^9ti8_gWE&E+MN&DE>v9H%Yoy@+0eWOm+z1TOg->rM;6!y*R_vjRz%D#pDUY)Ab z*tfFZr_*#g`!@Fbb-K=A-_HJk&d{0cJJ=u8nL3MoC;Kj)rTy%?*&ot=oz1?7{b8N0 zd$aFle?<4z0rq|DkLrL9vhQbqOb2xi`vLZYI!EWS8}>swSLd-GW~&3e@ge${n?*pe@6G$1K3ZpKdT4mf$Yz*Kd%SsLF_NE zpVEVL0sD*WFX;k3nEhq;SM*>#g#A_a*YprQl>K$~H}p_FjQvga|LI|RIQv`dZ|mW@ zko_I@cXgp2!TuimX+1)ZWIw}xR*%%9*xzUWK#$U+**|3eNRQTI*w3+_*JJcp_6zJ6 z^;liReu@3EF4E)Judsit$LV7BPuQ>OVm+SyQ})mFcs+sr8vEyZf}Y6!1^btJqMpS5 z75mqElAg@|4g0rxvYx{J9sBosiY{UQf&E8aqNlR|#C}~*)zjF2X8%P`)6?01W&cf2 z*E86EXa7Ub&@#YuA<#42Hk->xQcbFICKXVai!hLL3dy=S7qF) zEV=_rxGLvX<bO;1bO%;*RnM*JqdTyMs|Ie>5Z!^bTs3m5#^?^*#Z?oxYKrc_ zIgZMp=nmY&RVTOVjPAe|uDZBYS9AyN<*J)obw_t#D_1?-%8Ty6eO&c)t3-4MwsDo@ zRz7qG?&m7mt$Lw5u$`+Ew@O8K-~q1E+$tU2fgN0BxK$>)0}pbQsC0O-*(_DuJ*YV&fRw$_?oNz zZiN%|T?fA5>VR9}tbEUbZ@DsVg;Vgf1K)9V*sXBBopIoMu8z7DPOh^K{J_;Qx5An9 zz5_pUb=<9R+I--^Ph6dFE1V-AI&htoYbF;EW?YoGxl&OjrCHqZp&7-)tlW1t11tbtaDat7KU z${T2hs9>NyqN0J0h)M=JA@C0bT@Y0abVF1%&;wD;Ku<(<14)P)29gmq4WuAy8AwCa zHjsg+V;~Dr*FZL+o`C?OzJVM>0|R-8h6ef~8X4$^Xl!5rqKSb)h^7VxBbpf)ifC?N zIHHAt5r~!sMj=`m7=vhSpa{{%Kry1NfeDCq1|}im4NO6_H!u~^!N7DxM*}kv2?k~( zIvJRY=xksfh~ws16vVk2DTy64Qxkb7}$ZxG_VtqWneeLZ(t81+rVB#Zv*=f0R#IH zK?4U6IR*?O*T7*!o`Iu?J_e2<`WiTn$Tx5T(a*rsi2epnA_f?E4l&Tc3y47mUPKfa zco{L+z^jNM23|)DHSi{4n1Qzt!wtNHC^YaMVuXP+h>-@~M~pJ?A!4+FbBHkpE+EDl zxP&M&a0M~Wz$b`e1D_(s8@Ps;VBibHL<3(TCK>n!G1JV2MQIELVhz7(p zMl>R>HKGaeE+d)|*BQ}*xZa3X#0^HYA#OCH9dVNp?TL3A(UG{>h)%?NjOaq#VnjFM zy+-sPZZ)DO@jfGxh}(=vCf;vE3URv;X~YMN$RO@8B8&K-5!u9@Mg)kvjL0GGHX@Js zkP&@}dyMEueAtKq#JxrgB0gfoVB$U_h7un&VmNWX5hI9?88M1@z=$!#gGLk)jS9yVeU@rV&qh)0c>N_^ai>BM73%p^Wx#BAbmBjysHG-5vSgb@pgPZ_a@__PsA zh|d_Ylz7sJ<-})=SV?@&h}FdBjaW;3!H9LlQ$}nczG%cI;!8$sCcbRM7UC;LY$d*G z#5Uq?2ZNy>X z86%Do&l+)z_`VUxi60nog7~2kPZK{f;w15$5zi6N8}S11f)OtgFBp_%kRb6Fl*$okMy#zQOVgVr(^+Q>p^D@&lATnzDY zBea*hpo2UD9r5qn3Gy^_l2@U#ybfJLJkT|yJah}G58XrJp+|@hydk;JGo%m_LrNei zWHIhXEcB4D^(TL7w_h;E9L99v=+x zXNE zjc5W}Bf7$U5!tXUVi?>XF%`B)EQ1Fkw!)5x$Kb(;=U`{VY1kEU4R%NT0S`sS!k)<5 z@Ni^1*c;gk9*OJ+`y$7|qmlDrf8=_2EOIv-hV!s(dla3*F2oQ>HA@5da34`N<`4`a^4M=@W(xtPD;e5{5Gv322M zY2f&rs@$hl%Lii+hBV3K$1E0n|37^Hj3D;sT!{@O-!54Ai@MT;T_$sbB fd>z*VzKILMw{asN68{ay{g<3q_-{*IaH_$^RU-hr~9(@-Y5O}>+25yx3Lz3gj+hDW>t)-nA6dVJN)u4Ki$)i z(uv&XH}e|$Ip#GCa4cvT(@NznP=}i4Tj!QWzT-=&gM#X z;P}=3+?wCq&NC<_+b`Ak7-DpI;%vIjZ3dOjkKNiE%Cceyf#>*6Ae<7X^pC5&YkN(H zffXriVq>}VV$EVmy}GEJaNl9*PiHRjkyh)Qlrd3qedlR&yW%vS+ZB&)R1v)Xnjw=e zZP~ka&a?em&I%gTYCdy8Nv-At8z&;8=?uwK3a;-43k-edWGNOi8#D~dt@(D)Y*1Ax zEv~de)oaC38uGc;CV>yLaBlqtnz3%xn~kdT$mLDMxbHMqZ{QMN`Iv!atS}_cS&)HA ztQr`>sDTU~a+5WXLZ5+tZU(p+er-%q| z6fg(*V2I0z;WDm(VVoF8{^=puXGD$>{XmRif~+Eb)5(7lS6lw$l#fSrBq3$LKt6`_ ze*mo!=~lo9ArFwVpP;<|CwGdn(eTM~E!PpHE&(GuHGBj$J8}r+<7q^keg*ADq1ANI zW~PWmC`Q8#Ot*?1Qg{4&_YG3HTZ_s^h#f!|tV7ZSGX(3DO;ymipb5o{32F-3rJ8X; zy9G^ZW>U}|Q~6GrqanS%vJ}$aL0JwFx5`Qg(<-YWx~;MnqQ^P_JCi;Nl|&hcqmy1! aoTMi(4--Xn;U#ox9n7g1Rgu*(fV=!~p6~8y zNazF>_{pM%B#%oPhIqWMA;seZ70V1td9PI1+-69Ys_*Q#?qasw4BF0q-VPHifPVKCfUKT8dp;wnnDT3W*7&g=Yp-Ah^ z*QD29ay{pHa8Pwx+jg}(z7V%L{6C$KN@17%|i2 zQOUcW>#uMJ7e$K2^bSMRa_gS$2Q4Zpnc_&x*BaeCk|EA?D7oMT2l>m&uh8&xs~NOv z&Zf&-h=&F{$6GKk!tZX>z(YJ@NL-x1feGXc4C9J{N#yx5Wgvk;14+IN@g;>phS>Q` zxFfonTBGSv)ufpYx!tPnJ2ju2ErkcL-mu&4T!?ly)_+wgFBQ(~(r8Gl^Yoww=xHje zBitWAkt~WxE=44x#OUGe0P#`YJz*J9T*Vj|#tGe|$UnUU_7y!Rhaia4CIrACH2ikW8AAsBScXoH MPJN~6g!`NM3r4BWaR2}S literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/Order.class b/compiled4/bwapi4/Order.class new file mode 100644 index 0000000000000000000000000000000000000000..f3f83605b8a707a2a86d87ec211c0bf42a3a25b1 GIT binary patch literal 824 zcma)4O>fgc6r8nFJ8_(*rEP$grnH5UCTR_V15%=1kPxa8atH$TxN%Kz2~OnL#r<5(W{J?u2 zzw3G73)veG(feK`u*|A?Nr6H)lI~l!mQ->mfo#(qq`G=V$y(iE9J=09UrAX>Glyy{ z8`rR5V+qSPY!pmXZPZXVabTl_LjilXe^tF=!@+%aGIiyd9KYf70!s;&4BzRUc`h4X zoI=VEj(;u(vDbMmu%c#}Pt%^lR5#JwtIX6~sWxV5DMW)tG2eUqkMjQ#;IAD>{uAq$Fiy%7nC&!Kzd%;UtNI5Lv_!gu1>RRFyvDtRO$yg=6E}!v mA%3G~GRk5d8|j0)WU7_FMDAn)>ofFerv{6VOnZx`hRwfZ>8RlV literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/Player.class b/compiled4/bwapi4/Player.class new file mode 100644 index 0000000000000000000000000000000000000000..8cb93cf2b012ef756ad69002e639b591b4f3fdf3 GIT binary patch literal 7364 zcma)>d7KZ;fCKJ&l}x7|TRD~wfjw4Q#Og#3=>_bgAc{DI|WBEJF zKUkh&`6tW2SpLoOEX#jb{>$(gF%(uJzET_>i0$wwQ0b~+S^K*5j#I@jkxe6fNirfxN7h2i9KYfn0N3P zAJ}Q7_+|jXQ`r&p4Nv6I*AeykBVsp*T7=)^<@xsJ2oWCi);NWAt~+5+Yj+qqm`~4n zc(PO2n6)$Lu5$|8>{2mrxne%(Yew9mqLnWWcqyyscv*wGqWHs(Ywz$14tL-&rc>DM zq>5hN@k&_uq*K^n@3XCiFhEDoLlq%v(mo6}Zt%+A}RgR-MObZr(u z-p*N0IS{%+U|%UaS{5O1`z`@A6moX97{#v@ZP8U7ULqL&-W z+2sR^))EJ+@t|$xyzHQLXeUl3Hh8C;>K@S}XPPWH>9Jx!wfnbiurgNK?)N-*)H{gX zTW#etJl2{~(czDfpEs29I3MtU&%tsBP2T_OOO88=RR~;-aP71%DtGjk3Pmpy5ZL(J zM+$a+oO47gaE!hDZM8*8rcTt7!NVaYL)m?wHy(UM@zYt}g6)*{_>Z|&L5$H>NB zY(*p7jluE8YsKkJ9YEd_c?cQPpW>Dc7a#*V_M`U z&aN=~y%Z076udk=%0R8LEGeDsWyw;yo5GwaJ*~0SDV=zK;k%J3v?WTRl52}+Qt8F6 z3-6A$Jho?-no;E))58oJrA*m3V~YGLJKM|BtaNuO**5CHo{1l0*?}!1$E+mZ_Oj$F z?}*K^ED5(qc>(!F;;peM0hrAMg6K=xKGMp*zi?2@b)d{}3o3HNXt9$tB9=`fI-D}b}=suIa$#OqEVA8kf z+a^6o-!bXCjC_wCGU@yD1CxHp&4*cj#PVbI{e(k3!tzs=pRxR$<7}%ihOaOVR`f~T zKC<6V;lte+xwz)QFY8sH@|*1upzh$d&NC z)2G1yuK+X`mE&equob8ru@+>|R?#{K9_%PwzaGAAv>mzwt+`Z*E26sI-kZsoq>Ag% zFz8%pjp%5A?xZ2;RCwiK1#ba3OuICAm5O%&+)aBlc(sa82ly)5tHEnjd=|j-=+yx} zkE*Z;L`gB#MU#|J=Q(%JX zfsbf$Q^i*SPigT66+Z*`sCL&hs`#0}Z7trU;_HC#)8fr4z7cp@i?^sapMo(h-m2n* zz#T2#rsC%U->=2nRh*B;0WIF4;=I>gE#9f(=L64Z@h%m&fM>P%G!?f6?m>6p9KGZ` zO;>pbWKJ7?hKgqdt_?p^J!!K0v zs|2nMf2zt~4gL`E3!ZW-bgTR|ATJVM&MEmGmA@AJ8}xjy%3lxuVtS))Jd0HR2*^w5 zO#!cdcorX4KFYTMyp-Oo!I!Afj{+R^kmhoDij>w(dD0*I`D*Sk^Gx&d+D~Xd9 zKPQDBntb1q8|kdsx6&(*(z*(iOX~+0-$yf!(fYl!C#ioh=v;i1HdN9cab_#T@9s{j z#!v7nYBs8=-Ke2iMuHX@b@XwBtR>?)T9lwq7!_O_f~(;2P*_xm!lFnN7ImVqC>4c8 zwJ0nKMqyDi3X8H)SX7R}qIeV*^`o#TA%#U1DJ%*}VNpv8i*iy}RFuM^s1z1;rLZV1 zg++B4*ki(?#tf|AMx`m*C^m&fy%|`)jjB_$QFscA+B2|z8x^Q%qX-oib!cGyHmXt4 zMnNhpYEofQmI{l?R9FslAr?WWzu@UQ%c zsYpV2Gx0YWw2Hm+gG#tdd{*eDpN+Nhy!V8ccUn*y`{jH4)XHX3-yZ0gi=IeN!N1ZEN}F=V%Q z;5zJoI)#)+bmLI^vAg?LU`~y8IZd|;scxdVR=H4fuG+jvn?Up{jQQS^E6V>%fImg& z=K(UXlpkR4NmL|4lX%y7qXEp!GpaJycv{slM0MpGGM^aOZk~0)4+chS8ZM>&M7xcwPTQLMD+eVT$*83NLUkVVS}; r+{6u{If&n=8H{pR#M0!!RWjAepTOK7!}?NnzGl4)=8%wYL1G#0Tz literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/Playerset.class b/compiled4/bwapi4/Playerset.class new file mode 100644 index 0000000000000000000000000000000000000000..07493b16fd4a8f3fa154743e0e7c7a665776ff5a GIT binary patch literal 1254 zcmZuvYflqV5Iwi0Y`fjIJOt$-1(9}J3Kc;`TTvu2h7>WuN8pRu*0nCyZPN$Ff8{e3 zNsQl2{7uGq?rmwI@MZ43GjnFnoVkDg{rCxB85;rUNa-{S(kx1omgbs{2$p2@y3V|n zAa3BMhFdbWDj&Bs+|d!jl7@^xz;SDJ%PrV7fkx>HJTSrr-Gaf+^0Z&Yo8 z<shkgVmeoLizOrH&?;ret=m-ru_@p$+Vy9yQ)jaw zGjWVi9_9=5ZIoZJRV3%Q_T$F8yj^{2cg(b{OxQXe2n=?Y_{gfg;fMq%pW4-Se%~%om~hu6*T+pASfz%&{klE&=`eQ_ z>ef{?W9Eq;(5jkAoON+cl?MB*o|Aqy`@B;E%H&Zpjgl+) zCkHS`g=3r{j(H?-g;3=$ literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/Point.class b/compiled4/bwapi4/Point.class new file mode 100644 index 0000000000000000000000000000000000000000..b86556dd21b9b72043ae4ff2af2f0ddd5d575e4e GIT binary patch literal 1038 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 POz>PE5c-H|F>L<_C?E%q literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/Regionset.class b/compiled4/bwapi4/Regionset.class new file mode 100644 index 0000000000000000000000000000000000000000..77bf48b383b30dd53a610ccf656676c8b844848d GIT binary patch literal 1157 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 YgaPi$;4kQHlkBa;S%zLBLI9us2V-t>V*mgE literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/Tournament/ActionID.class b/compiled4/bwapi4/Tournament/ActionID.class new file mode 100644 index 0000000000000000000000000000000000000000..aa8437c0a5e5d773f382f61fb5820a12c4b88177 GIT binary patch literal 1622 zcmah}-&Y%D5WP#1&6mv*wm_l9P$;^PeAC|D@q=pSA*`UW~ z{{;U8AAQiYT8|!k`s^R&@y?gn#$T9+x!;|gnQ!jQZhrgy=Vt(3#U}|wao55Y3USe7 z^Y&h`cev*r8?fmqv{>K$tWIj~w(3FnsR8Bs!J!l}5IgZ29TqZ}7hl-lDD7>z2BsgL z-npr>+6HDa+5ZWRZZ;2Df233o{QI4w1HV<40r56nV~6cr%ak5@Ctkkc1+}~zvdP*? z_Vfl+%@6l`okucR(Y#s@>fxG!$$u$UEN1s*R`puog`E~Jk7l$>tyUZTJeFb1@<1nB zLFZ`ov^LhbL(AoAtA3#_l7|0W?y~5yab4cU8#XHV$iUQpzY8{QtM@~a_b zyf!$s&4$-*uMC8}*vVh3GH+rquOG(Au3zT|agm>9YW=+E0Em>Lk!mzjkVb0KNLd=G zOe4iB!5A)GO8kxr${`8rCBl> z)y&pxI2O|^rP+vSYUXHmCLY&pRI@RqG#l6KtYbR8*a^)iow(DBKBxJ4M>)OtDa~JT z5>7(rr!}8;EXUIPg61<$(n)GQ>)5}t>qwWMOeNaoe^VvaMar$1T{vzf-o>a}QC*C? z6^E_~0)6KQbWRZxU8D)zqi&^(EjF$tvg<;OdMv9oG&0&OVbx^<=lrf4!j3LB0 azQS32jR|~%Nj!nYA@@eTfjfHSn|}b%UOhtq literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/UnaryFilter.class b/compiled4/bwapi4/UnaryFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..0a3b286d95f82aea7c2b9dca496db14fe6194afe GIT binary patch literal 848 zcma)4O>fgc6r8nFJ9eC=pDDC71qvli(i#LvNQrtuLa0jUA$+LEjWNN+IFVx)@vrz0 z3Z)X_hQx0|h_P!aspx?{?CzWQX7;_&{`&LnJAk{mW1@hH0Sz0;cGbi+TrXe~H+0-I ziEJgoEge-81}ZwX1q?43MKW;QkwB?^B#)&XN1ktYRj^ketnmB3;$-T5>PD^7G%&8_NG&6#R*nwCMdY#8&s2N#t8mjHi@ z#t#H2FcU+--qWZ=gf8)}@~Eu-2eap literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/Unit.class b/compiled4/bwapi4/Unit.class new file mode 100644 index 0000000000000000000000000000000000000000..3cb6f8b735d87ba4e5dc3cb33a57d4e7b70da1d2 GIT binary patch literal 44585 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 Z_e7u0{^G^gMf@xs9*M@!fmtj*^MCo`EYAP{ literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/UnitCommand.class b/compiled4/bwapi4/UnitCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..a1c58fe631c82924923306ff36980e43833a9f47 GIT binary patch literal 999 zcma)4U2hUm6r2l`g=L{oYOB9*4|1okeYCecPYOUk+8pdN&&J&+lcU#)0A%Qs!%UIE{h&2sS#1!1s za1Zwt>}a@wU4gm(&64!%8usu&AThp(Cwl)i$7d%u=lXqAKQkI!J2p^i0uEDIV+xm#W%2&*sBk02qDAmGGq%NSGtPByVdSKxkVLx6J(wH literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/UnitCommandType.class b/compiled4/bwapi4/UnitCommandType.class new file mode 100644 index 0000000000000000000000000000000000000000..dcd4f7ef63dc889d3654c7d890c28265e24d3788 GIT binary patch literal 864 zcma)4-%ry}7(I6#?bdY+WK3l;R20WHm_{EoTX-QchHUUK)bMy$>MVBcvb7lhD}TgH zBr(33_%|8jxn;?~U}7Kcz2Eu1bH498>CfL^zX5oN2PQHorJ-X*9XCzf!tD%JamT=2 zlgOG1?inbXNTXz6T_ElHqfq*`GZM(Pj^wedN1^N0+j7ugw&V7E8Ad}#;K{{o^DOkF z->bI*zt?DW-^zjesQ%n{!|kBom;T}YyMfc#qK+{LTt9S%0%Au%Z@R465=fSJ)?e`2 z4i4EM*K&PlH|lqt;lAv8M6{k03KUuOFL8lvCzSRZjvI5hs6eV|dy@`YSv4>_K{T|T zr>+vs|25#ITH3-D6fMkQ-hzd!fr^DHY6dne6tF2!xO_XsTd+{aeS!I@d(Y(PHAfPd zi?P_Gz3!1?bDh~Kq1#jpt&6Y literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/UnitFilter.class b/compiled4/bwapi4/UnitFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..54f0c445536164be7ce1d77d7894f340b2dcfc1f GIT binary patch literal 844 zcma)4O>fgc6r8nFJ9eC=rEP$gra+;jNm_&G0Vz>0NC;I4J*0qo+!zyFj1whx`CEJl zg;EJ|L*h3f#H<_1t>}S0?C!jIZ}z>>{`&LnJAj9HV55MF1p{kpyJ_PVZWpkQJ0|Yh zjBF@y&qURRg^Gzy0V{~cv5Y)_EKq76$z$mzaS*y4Ic$>c2K`9J$;cPjxyZK8U?`)$ z+a5&yX1n)Z4uc){c@)G?f-v?+&0R{E!$A-c2#7raqZN?e706ZhHec{~Ja|RzQagzJ zXUV&sKRS@TkP*G_#{y+$U7{;c?8ef2%O=xwjwg_BdEr!CuPSZ3J4i;J&tB9ESzFs` zN(Wc4;$RN*4jdFs)Ev~&FtO#JjBSDWf5uTI3l3b|C!0C-RF2=U5rMfhmKw6(JMumD zKbwV=M|9&@hKaxbT3|tqc9EuA#Y{KV+^C+*Ia6((FPnzw*D&FGk1k37F9H4(gP#Y` zU@Jes-cwX!geLK>^F{;6EE3g-b)I%@0#RH00_`J_z!LY_lqn&{N{h8N9lbiO^B7fi zTc4m;z9M&m84W*RbQ(XgdaIVMH;P)_Zgr!+tDbmT zaelJ3T|KLVD_C_fhj|AMvKC4X%BWb_agfKZz`~TFG-<&>6?Z8)cI>Gfyk;{3b1@bh zbI?9fE~l6sL)t5Paw`2u9lYWTdcezRdX^pQ#+qBjiJA-5+9YiR(Y0R0_a03t|1Sal z7?Ym}NWj*PfW602jtFhy-QbM|Ftf<0#Mt0zmxd6f^{+^LVkEG{eKyYIkR&rru1!y` zj(9Fn&D;45qwo#MGt4CL6K1pW3oGX^j|)Rs%~7&)hLnM$%106sv2-3Yyf0FCiF+Pv u6fWZ$mWiey{-A6zN?`@7qX#$1)GKq2^zjh(7Z~GCO%@@Z_Bzi5*8Tym%d~+2 literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/UnitType.class b/compiled4/bwapi4/UnitType.class new file mode 100644 index 0000000000000000000000000000000000000000..4293d030eb4c68fead2b8083d4739696f68e13c4 GIT binary patch literal 836 zcma)4O>fgc6r8nFJ9eC=rD=ecra+;jNm}!DKuXjL5<*o%4=JD?H^u~);6#aC#J}Q0 zD3nTw8xp?>A!c2pw7`Kq?CzWQX7;_&e*gLT3xGSgWg~~O1p}*UyKLhMuI8|YYbLJS zMAlVs!$ie~g|dka0V@c{kqkY5EKq12$V2JIQP6kWa@b(D6ZAqE#Uo$f_StOnB<#zu z=e7o6uhHthmc!t#`#21uy*ER@u}uMUI0(YX9|?#Z0izi(xh;^X>})*YaewfP%7s=C z`j6sQU4OJEyL}>h&yNI(toln;Am53k_mT}J#T-o_+w}UWv|drlc4rWeJpVzU)bhVu z+EVj5IEQ5ibC`GFAaA1TpoY4MO$Q}xv7J8#QG^8tE^Z3UPaS$F$1m7~z+8eQM(lPE ze2<;aP9fzDeK?f;*x!9Fu%L!Io2F0sscxdVUO82BqS`o3OCdTnjQQTZf0X~10Dp+V zPXlPMl^bC1NmL+0i+I<0qXEnm8C4nUJniZPqPqGK+B-%9i`-|EOaU1(Epl!8c|PTN zL=|uIJ@oP?WR5VS;VX=G{Tr5!VeFSDFxzReeuS)!r}eiaXo++QGrSimyvV(T6$;mI q5f_MNA%37{GRk5J%jtt_WU7@rhP6L|{Q>&4Q-eiFroF^d!^$t+Y_0_W literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/Unitset.class b/compiled4/bwapi4/Unitset.class new file mode 100644 index 0000000000000000000000000000000000000000..f5c581adc4862ca4f71cf1e795d0c35a1e0dfd1e GIT binary patch literal 7052 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 literal 0 HcmV?d00001 diff --git a/compiled4/bwapi4/WalkPosition.class b/compiled4/bwapi4/WalkPosition.class new file mode 100644 index 0000000000000000000000000000000000000000..620f79a2fdae1715083170e1faaf1c725da02bac GIT binary patch literal 1916 zcmah}T~`xV6x}x;OcDk{_z(*STB;36FjAD-5>W)v!~|$jC|X;GFbyMdk|qk|*PEl|r^UHa6u`kP!`-S^JaM2+prn)`Xq+2`ziZvOiF_dftkqZq*e7Q@hSO%6*M zu165SVhA_noRvc^gqtDc<+7k*S=z10VKsu!@OdZJa4W*?ZMj<4un|EY7Bze!AfE8c z^7~Fe%i52Ovb8NRkl%W2RIT&r4WqofTB%!(Rk3FU0?QTKq~UFQ*RDLa1;UnHcMQ8| z)&-*Z2gV~K-EgdOx?ogk9$vFbw&65t^qG16Hsfx~hFwbMD|TtNE#e%5Xw`~kJ7$eJ z<^(!2mTft60>OATJF(7`7Ao5eAI)2~x!icTW!7#PTVPQd9kef}CWPaN)%9Lav-ct9<)&sNX%*sl;)*Pd_ zOOX^;>=@ETupO7nKs+az^)r}+&b^C?P^MV+)F3=PB5RdKt!OS;lK)t1@0^vbp<^8L zI*wsb$8ih_4624vJ>ZIRwPBUFmDG22Y~qd_?h5!)C#n8D9Umet(AP#69jEZVjuRNw z@THD>_)5dqI_7X+f?m>LV2dd=8}tUNW&Hv@%^X~UNS{%ynl_)oWGj7M+q~ULUeau+ zk$CpMuDhF1vgIi-pIgIR`Gz$~mS4YSysl=xD%Ufu`TQ$qi<@^u>8cG%cd?E6+t#hP zUI3D*^G^rR;FEH3<&%nW4&yxxsd?C&N7NjV+(TeY*`B051>ri%vvGXD@iceSJon4f z#34jtcptvR$Ugi}c_eU#V=w=~fKHA&p}Nq`pOCV90j@BBphf%$fz3k%dpi!GC4PnP z0HNNnyY|aaGX_{WdCmbaywnxfTBKaeNfxYAl=-(sg-%CD+UXV~Jem}?) zZv5Q%)g~ar`V?(L=-~Ps^_oHtSsuUzvOj|~VLs&z3DrU`5z{cM6E*WH%_#=((I6&a zGCgC%I}+l4X1JMhw^Hm9f_zO;T&6i6l$UyfcT&%Y(sOJdT}>%nziX6oiBeuig#MR3 zzamei-{jBe9{ml`XXx=kR-5`0Lr2gzM-LGzc$cYX==EbGCADeZ{wqIX zDv}uAO#Ds8cxKt85P5JOX6BxI&zXBq=GUKZ-vKD5XgG|D3rddMgoP_i9D6{DD?XEwhS7~cD$Z1!)T}kwy$QJ7hzxe zy?Sfl_ZqG4I~jP}^+P3tfxrJgP>mf*Si!*aLp2l-y8>p@^Sy9KAYI*G{$+(>331pgXKM^;|THEdnqM@svds?qB zX=_VQ>EH&I9L!+WfrGq-ii0X@7B(Feu_ZA3&p4Vg=b(;9%ubwoAxE#-h`>yY#fI#4 zPn664rzep1h;E$9ex&w}1?Kcs(rX$eHXf{5=uy{7!X1o%@- zejXqNTl)d_9!CWtG>LbEHyXgqJfjL@gQr~?LsVA2AoY=vzykN_I8#8H%q+P!9le?G zT%ww{`3XkpE7E6}O5q30cI_t?&tV>w#<1E+vUY}yfy3Gd5>l~r5mUU+Q+R=U5z7>= s;x=v(%|QG{)nb&vB9@W|SIN{XcaH4Q81`ovlTJ+*A)fXQ&lHyb0vN2ZH2?qr literal 0 HcmV?d00001 diff --git a/concat_header4.h b/concat_header4.h new file mode 100644 index 0000000..a25c3ae --- /dev/null +++ b/concat_header4.h @@ -0,0 +1,7630 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_AIModule */ + +#ifndef _Included_bwapi4_AIModule +#define _Included_bwapi4_AIModule +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_AIModule + * Method: onStart_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onStart_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_AIModule + * Method: onEnd_native + * Signature: (JZ)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onEnd_1native + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_AIModule + * Method: onFrame_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onFrame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_AIModule + * Method: onSendText_native + * Signature: (JLjava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onSendText_1native + (JNIEnv *, jobject, jlong, jstring); + +/* + * Class: bwapi4_AIModule + * Method: onReceiveText_native + * Signature: (JLbwapi4/Player;Ljava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onReceiveText_1native + (JNIEnv *, jobject, jlong, jobject, jstring); + +/* + * Class: bwapi4_AIModule + * Method: onPlayerLeft_native + * Signature: (JLbwapi4/Player;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onPlayerLeft_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onNukeDetect_native + * Signature: (JLbwapi4/Position;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onNukeDetect_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitDiscover_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitDiscover_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitEvade_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitEvade_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitShow_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitShow_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitHide_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitHide_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitCreate_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitCreate_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitDestroy_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitDestroy_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitMorph_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitMorph_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitRenegade_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitRenegade_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onSaveGame_native + * Signature: (JLjava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onSaveGame_1native + (JNIEnv *, jobject, jlong, jstring); + +/* + * Class: bwapi4_AIModule + * Method: onUnitComplete_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitComplete_1native + (JNIEnv *, jobject, jlong, jobject); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_BestFilter */ + +#ifndef _Included_bwapi4_BestFilter +#define _Included_bwapi4_BestFilter +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_BestUnitFilter */ + +#ifndef _Included_bwapi4_BestUnitFilter +#define _Included_bwapi4_BestUnitFilter +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_Bullet */ + +#ifndef _Included_bwapi4_Bullet +#define _Included_bwapi4_Bullet +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Bullet + * Method: getID_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Bullet_getID_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: exists_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Bullet_exists_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getPlayer_native + * Signature: (J)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getPlayer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getType_native + * Signature: (J)Lbwapi4/BulletType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getSource_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getSource_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getAngle_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Bullet_getAngle_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getVelocityX_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Bullet_getVelocityX_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getVelocityY_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Bullet_getVelocityY_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getTarget_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getTarget_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getTargetPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getTargetPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getRemoveTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Bullet_getRemoveTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: isVisible_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Bullet_isVisible_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: isVisible_native + * Signature: (JLbwapi4/Player;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Bullet_isVisible_1native__JLbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_Bulletset */ + +#ifndef _Included_bwapi4_Bulletset +#define _Included_bwapi4_Bulletset +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_BulletType */ + +#ifndef _Included_bwapi4_BulletType +#define _Included_bwapi4_BulletType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_Client */ + +#ifndef _Included_bwapi4_Client +#define _Included_bwapi4_Client +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Client + * Method: isConnected_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Client_isConnected_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Client + * Method: connect_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Client_connect_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Client + * Method: disconnect_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Client_disconnect_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Client + * Method: update_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Client_update_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_Color */ + +#ifndef _Included_bwapi4_Color +#define _Included_bwapi4_Color +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Color + * Method: red_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Color_red_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Color + * Method: green_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Color_green_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Color + * Method: blue_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Color_blue_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_CompareFilter */ + +#ifndef _Included_bwapi4_CompareFilter +#define _Included_bwapi4_CompareFilter +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_DamageType */ + +#ifndef _Included_bwapi4_DamageType +#define _Included_bwapi4_DamageType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_Error */ + +#ifndef _Included_bwapi4_Error +#define _Included_bwapi4_Error +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_Event */ + +#ifndef _Included_bwapi4_Event +#define _Included_bwapi4_Event +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Event + * Method: getPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Event_getPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Event + * Method: getText_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Event_getText_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Event + * Method: getUnit_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Event_getUnit_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Event + * Method: getPlayer_native + * Signature: (J)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Event_getPlayer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Event + * Method: isWinner_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Event_isWinner_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_ExplosionType */ + +#ifndef _Included_bwapi4_ExplosionType +#define _Included_bwapi4_ExplosionType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_Force */ + +#ifndef _Included_bwapi4_Force +#define _Included_bwapi4_Force +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Force + * Method: getID_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Force_getID_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Force + * Method: getName_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Force_getName_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Force + * Method: getPlayers_native + * Signature: (J)Lbwapi4/Playerset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Force_getPlayers_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_Forceset */ + +#ifndef _Included_bwapi4_Forceset +#define _Included_bwapi4_Forceset +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Forceset + * Method: getPlayers_native + * Signature: (J)Lbwapi4/Playerset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Forceset_getPlayers_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_Game */ + +#ifndef _Included_bwapi4_Game +#define _Included_bwapi4_Game +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Game + * Method: getForces_native + * Signature: (J)Lbwapi4/Forceset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getForces_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getPlayers_native + * Signature: (J)Lbwapi4/Playerset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getPlayers_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getAllUnits_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getAllUnits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getMinerals_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getGeysers_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getGeysers_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getNeutralUnits_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getNeutralUnits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getStaticMinerals_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getStaticMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getStaticGeysers_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getStaticGeysers_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getStaticNeutralUnits_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getStaticNeutralUnits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getBullets_native + * Signature: (J)Lbwapi4/Bulletset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBullets_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getForce_native + * Signature: (JI)Lbwapi4/Force; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getForce_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: getPlayer_native + * Signature: (JI)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getPlayer_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: getUnit_native + * Signature: (JI)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnit_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: indexToUnit_native + * Signature: (JI)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_indexToUnit_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: getRegion_native + * Signature: (JI)Lbwapi4/Region; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getRegion_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: getGameType_native + * Signature: (J)Lbwapi4/GameType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getGameType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getLatency_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getLatency_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getFrameCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getFrameCount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getReplayFrameCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getReplayFrameCount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getFPS_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getFPS_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getAverageFPS_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Game_getAverageFPS_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getMousePosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getMousePosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getMouseState_native + * Signature: (JLbwapi4/MouseButton;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_getMouseState_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: getKeyState_native + * Signature: (JLbwapi4/Key;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_getKeyState_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: getScreenPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getScreenPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setScreenPosition_native + * Signature: (JII)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setScreenPosition_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: setScreenPosition_native + * Signature: (JLbwapi4/Position;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setScreenPosition_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: pingMinimap_native + * Signature: (JII)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_pingMinimap_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: pingMinimap_native + * Signature: (JLbwapi4/Position;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_pingMinimap_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: isFlagEnabled_native + * Signature: (JI)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isFlagEnabled_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: enableFlag_native + * Signature: (JI)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_enableFlag_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: getUnitsOnTile_native + * Signature: (JIILbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsOnTile_1native__JIILbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: getUnitsOnTile_native + * Signature: (JLbwapi4/TilePosition;Lbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsOnTile_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getUnitsInRectangle_native + * Signature: (JIIIILbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsInRectangle_1native__JIIIILbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: getUnitsInRectangle_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsInRectangle_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getUnitsInRadius_native + * Signature: (JIIILbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsInRadius_1native__JIIILbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: getUnitsInRadius_native + * Signature: (JLbwapi4/Position;ILbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsInRadius_1native__JLbwapi4_Position_2ILbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: getClosestUnit_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitFilter;)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnit_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getClosestUnit_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitFilter;I)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnit_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2I + (JNIEnv *, jobject, jlong, jobject, jobject, jint); + +/* + * Class: bwapi4_Game + * Method: getClosestUnitInRectangle_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitFilter;III)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnitInRectangle_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2III + (JNIEnv *, jobject, jlong, jobject, jobject, jint, jint, jint); + +/* + * Class: bwapi4_Game + * Method: getClosestUnitInRectangle_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitFilter;II)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnitInRectangle_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2II + (JNIEnv *, jobject, jlong, jobject, jobject, jint, jint); + +/* + * Class: bwapi4_Game + * Method: getClosestUnitInRectangle_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitFilter;I)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnitInRectangle_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2I + (JNIEnv *, jobject, jlong, jobject, jobject, jint); + +/* + * Class: bwapi4_Game + * Method: getClosestUnitInRectangle_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitFilter;)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnitInRectangle_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getClosestUnitInRectangle_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitFilter;IIII)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnitInRectangle_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2IIII + (JNIEnv *, jobject, jlong, jobject, jobject, jint, jint, jint, jint); + +/* + * Class: bwapi4_Game + * Method: getBestUnit_native + * Signature: (JLbwapi4/BestUnitFilter;Lbwapi4/UnitFilter;Lbwapi4/Position;)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBestUnit_1native__JLbwapi4_BestUnitFilter_2Lbwapi4_UnitFilter_2Lbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getBestUnit_native + * Signature: (JLbwapi4/BestUnitFilter;Lbwapi4/UnitFilter;)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBestUnit_1native__JLbwapi4_BestUnitFilter_2Lbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getBestUnit_native + * Signature: (JLbwapi4/BestUnitFilter;Lbwapi4/UnitFilter;Lbwapi4/Position;I)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBestUnit_1native__JLbwapi4_BestUnitFilter_2Lbwapi4_UnitFilter_2Lbwapi4_Position_2I + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jint); + +/* + * Class: bwapi4_Game + * Method: getLastError_native + * Signature: (J)Lbwapi4/Error; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getLastError_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setLastError_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setLastError_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setLastError_native + * Signature: (JLbwapi4/Error;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setLastError_1native__JLbwapi4_Error_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: mapWidth_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_mapWidth_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: mapHeight_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_mapHeight_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: mapFileName_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Game_mapFileName_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: mapPathName_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Game_mapPathName_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: mapName_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Game_mapName_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: mapHash_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Game_mapHash_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: isWalkable_native + * Signature: (JII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isWalkable_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: isWalkable_native + * Signature: (JLbwapi4/WalkPosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isWalkable_1native__JLbwapi4_WalkPosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: isBuildable_native + * Signature: (JII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isBuildable_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: isBuildable_native + * Signature: (JIIZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isBuildable_1native__JIIZ + (JNIEnv *, jobject, jlong, jint, jint, jboolean); + +/* + * Class: bwapi4_Game + * Method: isBuildable_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isBuildable_1native__JLbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: isBuildable_native + * Signature: (JLbwapi4/TilePosition;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isBuildable_1native__JLbwapi4_TilePosition_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: isVisible_native + * Signature: (JII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isVisible_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: isVisible_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isVisible_1native__JLbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: isExplored_native + * Signature: (JII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isExplored_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: isExplored_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isExplored_1native__JLbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: hasCreep_native + * Signature: (JII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasCreep_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: hasCreep_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasCreep_1native__JLbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPowerPrecise_native + * Signature: (JII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPowerPrecise_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: hasPowerPrecise_native + * Signature: (JIILbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPowerPrecise_1native__JIILbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPowerPrecise_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPowerPrecise_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPowerPrecise_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPowerPrecise_1native__JLbwapi4_Position_2Lbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JIILbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JIILbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JLbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JLbwapi4/TilePosition;Lbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JIIII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JIIII + (JNIEnv *, jobject, jlong, jint, jint, jint, jint); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JIIIILbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JIIIILbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JLbwapi4/TilePosition;II)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JLbwapi4_TilePosition_2II + (JNIEnv *, jobject, jlong, jobject, jint, jint); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JLbwapi4/TilePosition;IILbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JLbwapi4_TilePosition_2IILbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: canBuildHere_native + * Signature: (JLbwapi4/TilePosition;Lbwapi4/UnitType;Lbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canBuildHere_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitType_2Lbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: canBuildHere_native + * Signature: (JLbwapi4/TilePosition;Lbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canBuildHere_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: canBuildHere_native + * Signature: (JLbwapi4/TilePosition;Lbwapi4/UnitType;Lbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canBuildHere_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitType_2Lbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: canMake_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canMake_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: canMake_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canMake_1native__JLbwapi4_UnitType_2Lbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: canResearch_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canResearch_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: canResearch_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canResearch_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: canResearch_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canResearch_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: canUpgrade_native + * Signature: (JLbwapi4/UpgradeType;Lbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canUpgrade_1native__JLbwapi4_UpgradeType_2Lbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: canUpgrade_native + * Signature: (JLbwapi4/UpgradeType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canUpgrade_1native__JLbwapi4_UpgradeType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: canUpgrade_native + * Signature: (JLbwapi4/UpgradeType;Lbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canUpgrade_1native__JLbwapi4_UpgradeType_2Lbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: vPrintf_native + * Signature: (JLjava/lang/String;[Ljava/lang/Object;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_vPrintf_1native + (JNIEnv *, jobject, jlong, jstring, jobjectArray); + +/* + * Class: bwapi4_Game + * Method: vSendText_native + * Signature: (JLjava/lang/String;[Ljava/lang/Object;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_vSendText_1native + (JNIEnv *, jobject, jlong, jstring, jobjectArray); + +/* + * Class: bwapi4_Game + * Method: vSendTextEx_native + * Signature: (JZLjava/lang/String;[Ljava/lang/Object;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_vSendTextEx_1native + (JNIEnv *, jobject, jlong, jboolean, jstring, jobjectArray); + +/* + * Class: bwapi4_Game + * Method: isInGame_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isInGame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: isMultiplayer_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isMultiplayer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: isBattleNet_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isBattleNet_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: isPaused_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isPaused_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: isReplay_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isReplay_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: pauseGame_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_pauseGame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: resumeGame_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_resumeGame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: leaveGame_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_leaveGame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: restartGame_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_restartGame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setLocalSpeed_native + * Signature: (JI)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setLocalSpeed_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: issueCommand_native + * Signature: (JLbwapi4/Unitset;Lbwapi4/UnitCommand;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_issueCommand_1native + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getSelectedUnits_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getSelectedUnits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: self_native + * Signature: (J)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_self_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: enemy_native + * Signature: (J)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_enemy_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: neutral_native + * Signature: (J)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_neutral_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: allies_native + * Signature: (J)Lbwapi4/Playerset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_allies_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: enemies_native + * Signature: (J)Lbwapi4/Playerset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_enemies_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: observers_native + * Signature: (J)Lbwapi4/Playerset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_observers_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setTextSize_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setTextSize_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setTextSize_native + * Signature: (JLbwapi4/Text/Size/Enum;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setTextSize_1native__JLbwapi4_Text_Size_Enum_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: vDrawText_native + * Signature: (JLbwapi4/CoordinateType/Enum;IILjava/lang/String;[Ljava/lang/Object;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_vDrawText_1native + (JNIEnv *, jobject, jlong, jobject, jint, jint, jstring, jobjectArray); + +/* + * Class: bwapi4_Game + * Method: drawBox_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBox_1native__JLbwapi4_CoordinateType_Enum_2IIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawBox_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBox_1native__JLbwapi4_CoordinateType_Enum_2IIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawBoxMap_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMap_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawBoxMap_native + * Signature: (JIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMap_1native__JIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawBoxMap_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMap_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawBoxMap_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMap_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawBoxMouse_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMouse_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawBoxMouse_native + * Signature: (JIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMouse_1native__JIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawBoxMouse_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMouse_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawBoxMouse_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMouse_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawBoxScreen_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxScreen_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawBoxScreen_native + * Signature: (JIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxScreen_1native__JIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawBoxScreen_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxScreen_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawBoxScreen_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxScreen_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawTriangle_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangle_1native__JLbwapi4_CoordinateType_Enum_2IIIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawTriangle_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangle_1native__JLbwapi4_CoordinateType_Enum_2IIIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMap_native + * Signature: (JIIIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMap_1native__JIIIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMap_native + * Signature: (JIIIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMap_1native__JIIIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMap_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMap_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMap_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMap_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMouse_native + * Signature: (JIIIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMouse_1native__JIIIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMouse_native + * Signature: (JIIIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMouse_1native__JIIIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMouse_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMouse_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMouse_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMouse_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawTriangleScreen_native + * Signature: (JIIIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleScreen_1native__JIIIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawTriangleScreen_native + * Signature: (JIIIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleScreen_1native__JIIIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawTriangleScreen_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleScreen_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawTriangleScreen_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleScreen_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawCircle_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircle_1native__JLbwapi4_CoordinateType_Enum_2IIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawCircle_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircle_1native__JLbwapi4_CoordinateType_Enum_2IIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawCircleMap_native + * Signature: (JIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMap_1native__JIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawCircleMap_native + * Signature: (JIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMap_1native__JIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawCircleMap_native + * Signature: (JLbwapi4/Position;ILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMap_1native__JLbwapi4_Position_2ILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawCircleMap_native + * Signature: (JLbwapi4/Position;ILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMap_1native__JLbwapi4_Position_2ILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawCircleMouse_native + * Signature: (JIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMouse_1native__JIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawCircleMouse_native + * Signature: (JIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMouse_1native__JIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawCircleMouse_native + * Signature: (JLbwapi4/Position;ILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMouse_1native__JLbwapi4_Position_2ILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawCircleMouse_native + * Signature: (JLbwapi4/Position;ILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMouse_1native__JLbwapi4_Position_2ILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawCircleScreen_native + * Signature: (JIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleScreen_1native__JIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawCircleScreen_native + * Signature: (JIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleScreen_1native__JIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawCircleScreen_native + * Signature: (JLbwapi4/Position;ILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleScreen_1native__JLbwapi4_Position_2ILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawCircleScreen_native + * Signature: (JLbwapi4/Position;ILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleScreen_1native__JLbwapi4_Position_2ILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawEllipse_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipse_1native__JLbwapi4_CoordinateType_Enum_2IIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawEllipse_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipse_1native__JLbwapi4_CoordinateType_Enum_2IIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMap_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMap_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMap_native + * Signature: (JIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMap_1native__JIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMap_native + * Signature: (JLbwapi4/Position;IILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMap_1native__JLbwapi4_Position_2IILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMap_native + * Signature: (JLbwapi4/Position;IILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMap_1native__JLbwapi4_Position_2IILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMouse_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMouse_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMouse_native + * Signature: (JIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMouse_1native__JIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMouse_native + * Signature: (JLbwapi4/Position;IILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMouse_1native__JLbwapi4_Position_2IILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMouse_native + * Signature: (JLbwapi4/Position;IILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMouse_1native__JLbwapi4_Position_2IILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawEllipseScreen_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseScreen_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawEllipseScreen_native + * Signature: (JIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseScreen_1native__JIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawEllipseScreen_native + * Signature: (JLbwapi4/Position;IILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseScreen_1native__JLbwapi4_Position_2IILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawEllipseScreen_native + * Signature: (JLbwapi4/Position;IILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseScreen_1native__JLbwapi4_Position_2IILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawDot_native + * Signature: (JLbwapi4/CoordinateType/Enum;IILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDot_1native + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawDotMap_native + * Signature: (JIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotMap_1native__JIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawDotMap_native + * Signature: (JLbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotMap_1native__JLbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawDotMouse_native + * Signature: (JIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotMouse_1native__JIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawDotMouse_native + * Signature: (JLbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotMouse_1native__JLbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawDotScreen_native + * Signature: (JIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotScreen_1native__JIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawDotScreen_native + * Signature: (JLbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotScreen_1native__JLbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawLine_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLine_1native + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawLineMap_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineMap_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawLineMap_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineMap_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawLineMouse_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineMouse_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawLineMouse_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineMouse_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawLineScreen_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineScreen_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawLineScreen_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineScreen_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getLatencyFrames_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getLatencyFrames_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getLatencyTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getLatencyTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getRemainingLatencyFrames_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getRemainingLatencyFrames_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getRemainingLatencyTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getRemainingLatencyTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getRevision_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getRevision_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: isDebug_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isDebug_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: isLatComEnabled_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isLatComEnabled_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setLatCom_native + * Signature: (JZ)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setLatCom_1native + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Game + * Method: isGUIEnabled_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isGUIEnabled_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setGUI_native + * Signature: (JZ)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setGUI_1native + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Game + * Method: getInstanceNumber_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getInstanceNumber_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getAPM_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getAPM_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getAPM_native + * Signature: (JZ)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getAPM_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Game + * Method: setMap_native + * Signature: (JLjava/lang/String;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setMap_1native + (JNIEnv *, jobject, jlong, jstring); + +/* + * Class: bwapi4_Game + * Method: setFrameSkip_native + * Signature: (JI)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setFrameSkip_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: hasPath_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPath_1native + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: setAlliance_native + * Signature: (JLbwapi4/Player;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setAlliance_1native__JLbwapi4_Player_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: setAlliance_native + * Signature: (JLbwapi4/Player;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setAlliance_1native__JLbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: setAlliance_native + * Signature: (JLbwapi4/Player;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setAlliance_1native__JLbwapi4_Player_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Game + * Method: setVision_native + * Signature: (JLbwapi4/Player;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setVision_1native__JLbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: setVision_native + * Signature: (JLbwapi4/Player;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setVision_1native__JLbwapi4_Player_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: setCommandOptimizationLevel_native + * Signature: (JI)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setCommandOptimizationLevel_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: countdownTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_countdownTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getRegionAt_native + * Signature: (JII)Lbwapi4/Region; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getRegionAt_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: getRegionAt_native + * Signature: (JLbwapi4/Position;)Lbwapi4/Region; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getRegionAt_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: getLastEventTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getLastEventTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setRevealAll_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setRevealAll_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setRevealAll_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setRevealAll_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Game + * Method: getBuildLocation_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;I)Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBuildLocation_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2I + (JNIEnv *, jobject, jlong, jobject, jobject, jint); + +/* + * Class: bwapi4_Game + * Method: getBuildLocation_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;)Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBuildLocation_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getBuildLocation_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;IZ)Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBuildLocation_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2IZ + (JNIEnv *, jobject, jlong, jobject, jobject, jint, jboolean); + +/* + * Class: bwapi4_Game + * Method: getDamageFrom_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/UnitType;Lbwapi4/Player;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageFrom_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2Lbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getDamageFrom_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageFrom_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getDamageFrom_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/UnitType;Lbwapi4/Player;Lbwapi4/Player;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageFrom_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2Lbwapi4_Player_2Lbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getDamageTo_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/UnitType;Lbwapi4/Player;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageTo_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2Lbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getDamageTo_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageTo_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getDamageTo_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/UnitType;Lbwapi4/Player;Lbwapi4/Player;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageTo_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2Lbwapi4_Player_2Lbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_GameType */ + +#ifndef _Included_bwapi4_GameType +#define _Included_bwapi4_GameType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_GameWrapper */ + +#ifndef _Included_bwapi4_GameWrapper +#define _Included_bwapi4_GameWrapper +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_GameWrapper + * Method: flush_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_GameWrapper_flush_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_InterfaceEvent */ + +#ifndef _Included_bwapi4_InterfaceEvent +#define _Included_bwapi4_InterfaceEvent +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_InterfaceEvent + * Method: isFinished_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_InterfaceEvent_isFinished_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_InterfaceEvent + * Method: removeEvent_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_InterfaceEvent_removeEvent_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_Key */ + +#ifndef _Included_bwapi4_Key +#define _Included_bwapi4_Key +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_MouseButton */ + +#ifndef _Included_bwapi4_MouseButton +#define _Included_bwapi4_MouseButton +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_Order */ + +#ifndef _Included_bwapi4_Order +#define _Included_bwapi4_Order +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_Player */ + +#ifndef _Included_bwapi4_Player +#define _Included_bwapi4_Player +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Player + * Method: getID_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getID_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getName_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Player_getName_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getRace_native + * Signature: (J)Lbwapi4/Race; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getRace_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getType_native + * Signature: (J)Lbwapi4/PlayerType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getForce_native + * Signature: (J)Lbwapi4/Force; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getForce_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: isAlly_native + * Signature: (JLbwapi4/Player;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isAlly_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: isEnemy_native + * Signature: (JLbwapi4/Player;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isEnemy_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: isNeutral_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isNeutral_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getStartLocation_native + * Signature: (J)Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getStartLocation_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: isVictorious_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isVictorious_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: isDefeated_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isDefeated_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: leftGame_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_leftGame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: minerals_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_minerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: gas_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_gas_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: gatheredMinerals_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_gatheredMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: gatheredGas_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_gatheredGas_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: repairedMinerals_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_repairedMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: repairedGas_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_repairedGas_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: refundedMinerals_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_refundedMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: refundedGas_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_refundedGas_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: spentMinerals_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_spentMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: spentGas_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_spentGas_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: supplyTotal_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_supplyTotal_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: supplyTotal_native + * Signature: (JLbwapi4/Race;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_supplyTotal_1native__JLbwapi4_Race_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: supplyUsed_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_supplyUsed_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: supplyUsed_native + * Signature: (JLbwapi4/Race;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_supplyUsed_1native__JLbwapi4_Race_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: allUnitCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_allUnitCount_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: allUnitCount_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_allUnitCount_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: visibleUnitCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_visibleUnitCount_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: visibleUnitCount_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_visibleUnitCount_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: completedUnitCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_completedUnitCount_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: completedUnitCount_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_completedUnitCount_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: incompleteUnitCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_incompleteUnitCount_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: incompleteUnitCount_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_incompleteUnitCount_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: deadUnitCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_deadUnitCount_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: deadUnitCount_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_deadUnitCount_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: killedUnitCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_killedUnitCount_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: killedUnitCount_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_killedUnitCount_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: getUpgradeLevel_native + * Signature: (JLbwapi4/UpgradeType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getUpgradeLevel_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: hasResearched_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_hasResearched_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: isResearching_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isResearching_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: isUpgrading_native + * Signature: (JLbwapi4/UpgradeType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isUpgrading_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: getColor_native + * Signature: (J)Lbwapi4/Color; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getColor_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getTextColor_native + * Signature: (J)C + */ +JNIEXPORT jchar JNICALL Java_bwapi4_Player_getTextColor_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: maxEnergy_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_maxEnergy_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: topSpeed_native + * Signature: (JLbwapi4/UnitType;)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Player_topSpeed_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: weaponMaxRange_native + * Signature: (JLbwapi4/WeaponType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_weaponMaxRange_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: sightRange_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_sightRange_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: weaponDamageCooldown_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_weaponDamageCooldown_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: armor_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_armor_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: damage_native + * Signature: (JLbwapi4/WeaponType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_damage_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: getUnitScore_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getUnitScore_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getKillScore_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getKillScore_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getBuildingScore_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getBuildingScore_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getRazingScore_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getRazingScore_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getCustomScore_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getCustomScore_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: isObserver_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isObserver_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getMaxUpgradeLevel_native + * Signature: (JLbwapi4/UpgradeType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getMaxUpgradeLevel_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: isResearchAvailable_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isResearchAvailable_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: isUnitAvailable_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isUnitAvailable_1native + (JNIEnv *, jobject, jlong, jobject); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_Playerset */ + +#ifndef _Included_bwapi4_Playerset +#define _Included_bwapi4_Playerset +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Playerset + * Method: getUnits_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Playerset_getUnits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Playerset + * Method: setAlliance_native + * Signature: (JZ)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Playerset_setAlliance_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Playerset + * Method: setAlliance_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Playerset_setAlliance_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Playerset + * Method: setAlliance_native + * Signature: (JZZ)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Playerset_setAlliance_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_PlayerType */ + +#ifndef _Included_bwapi4_PlayerType +#define _Included_bwapi4_PlayerType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_Point */ + +#ifndef _Included_bwapi4_Point +#define _Included_bwapi4_Point +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Point + * Method: isValid_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Point_isValid_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Point + * Method: getLength_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Point_getLength_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_Position */ + +#ifndef _Included_bwapi4_Position +#define _Included_bwapi4_Position +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Position + * Method: isValid + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Position_isValid + (JNIEnv *, jobject); + +/* + * Class: bwapi4_Position + * Method: makeValid + * Signature: ()Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Position_makeValid + (JNIEnv *, jobject); + +/* + * Class: bwapi4_Position + * Method: getDistance + * Signature: (Lbwapi4/Position;)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Position_getDistance + (JNIEnv *, jobject, jobject); + +/* + * Class: bwapi4_Position + * Method: getApproxDistance + * Signature: (Lbwapi4/Position;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Position_getApproxDistance + (JNIEnv *, jobject, jobject); + +/* + * Class: bwapi4_Position + * Method: getLength + * Signature: ()D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Position_getLength + (JNIEnv *, jobject); + +/* + * Class: bwapi4_Position + * Method: hasPath + * Signature: (Lbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Position_hasPath + (JNIEnv *, jobject, jobject); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_PositionOrUnit */ + +#ifndef _Included_bwapi4_PositionOrUnit +#define _Included_bwapi4_PositionOrUnit +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_PositionOrUnit + * Method: isUnit_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_PositionOrUnit_isUnit_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_PositionOrUnit + * Method: getUnit_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_PositionOrUnit_getUnit_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_PositionOrUnit + * Method: isPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_PositionOrUnit_isPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_PositionOrUnit + * Method: getPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_PositionOrUnit_getPosition_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_Race */ + +#ifndef _Included_bwapi4_Race +#define _Included_bwapi4_Race +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_Region */ + +#ifndef _Included_bwapi4_Region +#define _Included_bwapi4_Region +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Region + * Method: getID_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getID_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getRegionGroupID_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getRegionGroupID_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getCenter_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Region_getCenter_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: isHigherGround_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Region_isHigherGround_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getDefensePriority_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getDefensePriority_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: isAccessible_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Region_isAccessible_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getBoundsLeft_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getBoundsLeft_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getBoundsTop_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getBoundsTop_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getBoundsRight_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getBoundsRight_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getBoundsBottom_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getBoundsBottom_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getClosestAccessibleRegion_native + * Signature: (J)Lbwapi4/Region; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Region_getClosestAccessibleRegion_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getClosestInaccessibleRegion_native + * Signature: (J)Lbwapi4/Region; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Region_getClosestInaccessibleRegion_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getDistance_native + * Signature: (JLbwapi4/Region;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getDistance_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Region + * Method: getUnits_native + * Signature: (JLbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Region_getUnits_1native + (JNIEnv *, jobject, jlong, jobject); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_Regionset */ + +#ifndef _Included_bwapi4_Regionset +#define _Included_bwapi4_Regionset +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Regionset + * Method: getCenter_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Regionset_getCenter_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Regionset + * Method: getUnits_native + * Signature: (JLbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Regionset_getUnits_1native + (JNIEnv *, jobject, jlong, jobject); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_TechType */ + +#ifndef _Included_bwapi4_TechType +#define _Included_bwapi4_TechType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_TilePosition */ + +#ifndef _Included_bwapi4_TilePosition +#define _Included_bwapi4_TilePosition +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_TilePosition + * Method: hasPath + * Signature: (Lbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_TilePosition_hasPath + (JNIEnv *, jobject, jobject); + +/* + * Class: bwapi4_TilePosition + * Method: isValid + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_TilePosition_isValid + (JNIEnv *, jobject); + +/* + * Class: bwapi4_TilePosition + * Method: makeValid + * Signature: ()Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_TilePosition_makeValid + (JNIEnv *, jobject); + +/* + * Class: bwapi4_TilePosition + * Method: getDistance + * Signature: (Lbwapi4/TilePosition;)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_TilePosition_getDistance + (JNIEnv *, jobject, jobject); + +/* + * Class: bwapi4_TilePosition + * Method: getLength + * Signature: ()D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_TilePosition_getLength + (JNIEnv *, jobject); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_UnaryFilter */ + +#ifndef _Included_bwapi4_UnaryFilter +#define _Included_bwapi4_UnaryFilter +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_Unit */ + +#ifndef _Included_bwapi4_Unit +#define _Included_bwapi4_Unit +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Unit + * Method: getID_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getID_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: exists_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_exists_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getReplayID_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getReplayID_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getPlayer_native + * Signature: (J)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getPlayer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getType_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getTilePosition_native + * Signature: (J)Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTilePosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getAngle_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Unit_getAngle_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getVelocityX_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Unit_getVelocityX_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getVelocityY_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Unit_getVelocityY_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRegion_native + * Signature: (J)Lbwapi4/Region; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getRegion_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getLeft_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getLeft_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getTop_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getTop_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRight_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRight_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getBottom_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getBottom_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getHitPoints_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getHitPoints_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getShields_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getShields_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getEnergy_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getEnergy_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getResources_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getResources_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getResourceGroup_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getResourceGroup_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getDistance_native + * Signature: (JLbwapi4/PositionOrUnit;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getDistance_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: hasPath_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_hasPath_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: getLastCommandFrame_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getLastCommandFrame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getLastAttackingPlayer_native + * Signature: (J)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getLastAttackingPlayer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getInitialType_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getInitialType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getInitialPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getInitialPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getInitialTilePosition_native + * Signature: (J)Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getInitialTilePosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getInitialHitPoints_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getInitialHitPoints_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getInitialResources_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getInitialResources_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getKillCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getKillCount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getAcidSporeCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getAcidSporeCount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getInterceptorCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getInterceptorCount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getScarabCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getScarabCount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getSpiderMineCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getSpiderMineCount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getGroundWeaponCooldown_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getGroundWeaponCooldown_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getAirWeaponCooldown_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getAirWeaponCooldown_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getSpellCooldown_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getSpellCooldown_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getDefenseMatrixPoints_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getDefenseMatrixPoints_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getDefenseMatrixTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getDefenseMatrixTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getEnsnareTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getEnsnareTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getIrradiateTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getIrradiateTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getLockdownTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getLockdownTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getMaelstromTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getMaelstromTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getOrderTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getOrderTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getPlagueTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getPlagueTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRemoveTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRemoveTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getStasisTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getStasisTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getStimTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getStimTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getBuildType_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getBuildType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getTech_native + * Signature: (J)Lbwapi4/TechType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTech_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getUpgrade_native + * Signature: (J)Lbwapi4/UpgradeType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getUpgrade_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRemainingBuildTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRemainingBuildTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRemainingTrainTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRemainingTrainTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRemainingResearchTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRemainingResearchTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRemainingUpgradeTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRemainingUpgradeTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getBuildUnit_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getBuildUnit_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getTarget_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTarget_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getTargetPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTargetPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getOrder_native + * Signature: (J)Lbwapi4/Order; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getOrder_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getSecondaryOrder_native + * Signature: (J)Lbwapi4/Order; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getSecondaryOrder_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getOrderTarget_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getOrderTarget_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getOrderTargetPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getOrderTargetPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRallyPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getRallyPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRallyUnit_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getRallyUnit_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getAddon_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getAddon_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getNydusExit_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getNydusExit_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getPowerUp_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getPowerUp_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getTransport_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTransport_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getLoadedUnits_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getLoadedUnits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getSpaceRemaining_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getSpaceRemaining_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getCarrier_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getCarrier_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getInterceptors_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getInterceptors_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getHatchery_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getHatchery_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getLarva_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getLarva_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getUnitsInRadius_native + * Signature: (JILbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getUnitsInRadius_1native + (JNIEnv *, jobject, jlong, jint, jobject); + +/* + * Class: bwapi4_Unit + * Method: getUnitsInWeaponRange_native + * Signature: (JLbwapi4/WeaponType;Lbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getUnitsInWeaponRange_1native + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unit + * Method: getClosestUnit_native + * Signature: (JLbwapi4/UnitFilter;)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getClosestUnit_1native__JLbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: getClosestUnit_native + * Signature: (JLbwapi4/UnitFilter;I)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getClosestUnit_1native__JLbwapi4_UnitFilter_2I + (JNIEnv *, jobject, jlong, jobject, jint); + +/* + * Class: bwapi4_Unit + * Method: hasNuke_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_hasNuke_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isAccelerating_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isAccelerating_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isAttacking_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isAttacking_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isAttackFrame_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isAttackFrame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isBeingConstructed_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBeingConstructed_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isBeingGathered_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBeingGathered_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isBeingHealed_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBeingHealed_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isBlind_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBlind_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isBraking_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBraking_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isBurrowed_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBurrowed_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isCarryingGas_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isCarryingGas_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isCarryingMinerals_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isCarryingMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isCloaked_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isCloaked_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isCompleted_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isCompleted_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isConstructing_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isConstructing_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isDefenseMatrixed_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isDefenseMatrixed_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isDetected_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isDetected_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isEnsnared_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isEnsnared_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isFlying_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isFlying_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isFollowing_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isFollowing_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isGatheringGas_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isGatheringGas_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isGatheringMinerals_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isGatheringMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isHallucination_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isHallucination_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isHoldingPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isHoldingPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isIdle_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isIdle_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isInterruptible_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isInterruptible_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isInvincible_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isInvincible_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isInWeaponRange_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isInWeaponRange_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: isIrradiated_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isIrradiated_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isLifted_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isLifted_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isLoaded_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isLoaded_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isLockedDown_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isLockedDown_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isMaelstrommed_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isMaelstrommed_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isMorphing_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isMorphing_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isMoving_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isMoving_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isParasited_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isParasited_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isPatrolling_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isPatrolling_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isPlagued_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isPlagued_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isRepairing_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isRepairing_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isResearching_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isResearching_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isSelected_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isSelected_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isSieged_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isSieged_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isStartingAttack_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isStartingAttack_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isStasised_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isStasised_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isStimmed_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isStimmed_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isStuck_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isStuck_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isTraining_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isTraining_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isUnderAttack_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isUnderAttack_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isUnderDarkSwarm_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isUnderDarkSwarm_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isUnderDisruptionWeb_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isUnderDisruptionWeb_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isUnderStorm_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isUnderStorm_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isPowered_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isPowered_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isUpgrading_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isUpgrading_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isVisible_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isVisible_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isVisible_native + * Signature: (JLbwapi4/Player;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isVisible_1native__JLbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: isTargetable_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isTargetable_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: issueCommand_native + * Signature: (JLbwapi4/UnitCommand;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_issueCommand_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: attack_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_attack_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: attack_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_attack_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: build_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_build_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: build_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_build_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unit + * Method: buildAddon_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_buildAddon_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: train_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_train_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: train_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_train_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: morph_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_morph_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: research_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_research_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: upgrade_native + * Signature: (JLbwapi4/UpgradeType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_upgrade_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: setRallyPoint_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_setRallyPoint_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: move_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_move_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: move_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_move_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: patrol_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_patrol_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: patrol_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_patrol_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: holdPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_holdPosition_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: holdPosition_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_holdPosition_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: stop_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_stop_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: stop_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_stop_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: follow_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_follow_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: follow_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_follow_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: gather_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_gather_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: gather_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_gather_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: returnCargo_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_returnCargo_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: returnCargo_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_returnCargo_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: repair_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_repair_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: repair_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_repair_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: burrow_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_burrow_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: unburrow_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unburrow_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: cloak_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cloak_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: decloak_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_decloak_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: siege_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_siege_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: unsiege_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unsiege_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: lift_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_lift_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: land_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_land_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: load_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_load_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: load_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_load_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: unload_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unload_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: unloadAll_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unloadAll_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: unloadAll_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unloadAll_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: unloadAll_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unloadAll_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: unloadAll_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unloadAll_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: rightClick_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_rightClick_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: rightClick_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_rightClick_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: haltConstruction_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_haltConstruction_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: cancelConstruction_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelConstruction_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: cancelAddon_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelAddon_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: cancelTrain_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelTrain_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: cancelTrain_native + * Signature: (JI)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelTrain_1native__JI + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Unit + * Method: cancelMorph_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelMorph_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: cancelResearch_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelResearch_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: cancelUpgrade_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelUpgrade_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: useTech_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_useTech_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: useTech_native + * Signature: (JLbwapi4/TechType;Lbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_useTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unit + * Method: placeCOP_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_placeCOP_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommand_native + * Signature: (JLbwapi4/UnitCommand;ZZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2ZZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommand_native + * Signature: (JLbwapi4/UnitCommand;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommand_native + * Signature: (JLbwapi4/UnitCommand;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommand_native + * Signature: (JLbwapi4/UnitCommand;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommand_native + * Signature: (JLbwapi4/UnitCommand;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommand_native + * Signature: (JLbwapi4/UnitCommand;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommand_native + * Signature: (JLbwapi4/UnitCommand;ZZZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2ZZZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandGrouped_native + * Signature: (JLbwapi4/UnitCommand;ZZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2ZZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandGrouped_native + * Signature: (JLbwapi4/UnitCommand;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandGrouped_native + * Signature: (JLbwapi4/UnitCommand;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandGrouped_native + * Signature: (JLbwapi4/UnitCommand;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandGrouped_native + * Signature: (JLbwapi4/UnitCommand;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandGrouped_native + * Signature: (JLbwapi4/UnitCommand;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandGrouped_native + * Signature: (JLbwapi4/UnitCommand;ZZZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2ZZZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCommand_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCommand_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCommandGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCommandGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCommandGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCommandGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandType_native + * Signature: (JLbwapi4/UnitCommandType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandType_1native__JLbwapi4_UnitCommandType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandType_native + * Signature: (JLbwapi4/UnitCommandType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandType_1native__JLbwapi4_UnitCommandType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandTypeGrouped_native + * Signature: (JLbwapi4/UnitCommandType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandTypeGrouped_1native__JLbwapi4_UnitCommandType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandTypeGrouped_native + * Signature: (JLbwapi4/UnitCommandType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandTypeGrouped_1native__JLbwapi4_UnitCommandType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandTypeGrouped_native + * Signature: (JLbwapi4/UnitCommandType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandTypeGrouped_1native__JLbwapi4_UnitCommandType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canTargetUnit_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTargetUnit_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canTargetUnit_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTargetUnit_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttack_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canAttack_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttack_native + * Signature: (JLbwapi4/PositionOrUnit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__JLbwapi4_PositionOrUnit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttack_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttack_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canAttack_native + * Signature: (JLbwapi4/PositionOrUnit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__JLbwapi4_PositionOrUnit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JLbwapi4_PositionOrUnit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JLbwapi4_PositionOrUnit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JLbwapi4_PositionOrUnit_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackMove_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackMove_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canAttackMove_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackMove_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackMoveGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackMoveGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackMoveGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackMoveGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canAttackMoveGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackMoveGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnit_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnit_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnit_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnit_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnit_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnit_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (JLbwapi4/Unit;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JLbwapi4_Unit_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JLbwapi4/UnitType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JLbwapi4/UnitType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2ZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuildAddon_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canBuildAddon_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuildAddon_native + * Signature: (JLbwapi4/UnitType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__JLbwapi4_UnitType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuildAddon_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canBuildAddon_native + * Signature: (JLbwapi4/UnitType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__JLbwapi4_UnitType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canTrain_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canTrain_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canTrain_native + * Signature: (JLbwapi4/UnitType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__JLbwapi4_UnitType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canTrain_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canTrain_native + * Signature: (JLbwapi4/UnitType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__JLbwapi4_UnitType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canMorph_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canMorph_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canMorph_native + * Signature: (JLbwapi4/UnitType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__JLbwapi4_UnitType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canMorph_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canMorph_native + * Signature: (JLbwapi4/UnitType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__JLbwapi4_UnitType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canResearch_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canResearch_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canResearch_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canResearch_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canResearch_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canResearch_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canResearch_native + * Signature: (JLbwapi4/TechType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canResearch_1native__JLbwapi4_TechType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUpgrade_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUpgrade_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUpgrade_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUpgrade_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUpgrade_native + * Signature: (JLbwapi4/UpgradeType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUpgrade_1native__JLbwapi4_UpgradeType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUpgrade_native + * Signature: (JLbwapi4/UpgradeType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUpgrade_1native__JLbwapi4_UpgradeType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPoint_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPoint_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPoint_native + * Signature: (JLbwapi4/PositionOrUnit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__JLbwapi4_PositionOrUnit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPoint_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPoint_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPoint_native + * Signature: (JLbwapi4/PositionOrUnit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__JLbwapi4_PositionOrUnit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPosition_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPosition_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPosition_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyUnit_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyUnit_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyUnit_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyUnit_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyUnit_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyUnit_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canMove_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMove_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canMove_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMove_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canMoveGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMoveGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canMoveGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMoveGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canMoveGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMoveGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canPatrol_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPatrol_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canPatrol_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPatrol_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canPatrolGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPatrolGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canPatrolGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPatrolGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canPatrolGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPatrolGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canFollow_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canFollow_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canFollow_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canFollow_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canFollow_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canFollow_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canGather_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canGather_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canGather_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canGather_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canGather_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canGather_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canReturnCargo_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canReturnCargo_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canReturnCargo_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canReturnCargo_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canHoldPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canHoldPosition_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canHoldPosition_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canHoldPosition_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canStop_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canStop_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canStop_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canStop_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRepair_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canRepair_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRepair_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRepair_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRepair_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canRepair_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBurrow_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBurrow_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canBurrow_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBurrow_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnburrow_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnburrow_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUnburrow_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnburrow_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCloak_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCloak_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCloak_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCloak_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canDecloak_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canDecloak_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canDecloak_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canDecloak_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSiege_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSiege_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canSiege_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSiege_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnsiege_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnsiege_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUnsiege_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnsiege_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLift_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLift_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canLift_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLift_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLand_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLand_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canLand_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLand_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLand_native + * Signature: (JLbwapi4/TilePosition;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLand_1native__JLbwapi4_TilePosition_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLand_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLand_1native__JLbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canLand_native + * Signature: (JLbwapi4/TilePosition;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLand_1native__JLbwapi4_TilePosition_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLoad_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canLoad_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLoad_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLoad_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLoad_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canLoad_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnloadWithOrWithoutTarget_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadWithOrWithoutTarget_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUnloadWithOrWithoutTarget_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadWithOrWithoutTarget_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAtPosition_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAtPosition_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAtPosition_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAtPosition_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAtPosition_native + * Signature: (JLbwapi4/Position;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAtPosition_1native__JLbwapi4_Position_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnload_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUnload_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnload_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnload_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnload_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnload_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUnload_native + * Signature: (JLbwapi4/Unit;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JLbwapi4_Unit_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAll_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAll_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAll_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAll_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAllPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAllPosition_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAllPosition_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAllPosition_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAllPosition_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAllPosition_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAllPosition_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAllPosition_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAllPosition_native + * Signature: (JLbwapi4/Position;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAllPosition_1native__JLbwapi4_Position_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClick_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canRightClick_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClick_native + * Signature: (JLbwapi4/PositionOrUnit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__JLbwapi4_PositionOrUnit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClick_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClick_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canRightClick_native + * Signature: (JLbwapi4/PositionOrUnit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__JLbwapi4_PositionOrUnit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JLbwapi4_PositionOrUnit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JLbwapi4_PositionOrUnit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JLbwapi4_PositionOrUnit_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickPosition_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canRightClickPosition_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickPosition_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickPositionGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickPositionGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickPositionGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickPositionGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canRightClickPositionGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickPositionGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnit_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnit_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnit_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnit_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnit_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnit_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (JLbwapi4/Unit;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JLbwapi4_Unit_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canHaltConstruction_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canHaltConstruction_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canHaltConstruction_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canHaltConstruction_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelConstruction_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelConstruction_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCancelConstruction_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelConstruction_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelAddon_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelAddon_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCancelAddon_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelAddon_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelTrain_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrain_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCancelTrain_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrain_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelTrainSlot_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrainSlot_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCancelTrainSlot_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrainSlot_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelTrainSlot_native + * Signature: (JIZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrainSlot_1native__JIZ + (JNIEnv *, jobject, jlong, jint, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelTrainSlot_native + * Signature: (JI)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrainSlot_1native__JI + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Unit + * Method: canCancelTrainSlot_native + * Signature: (JIZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrainSlot_1native__JIZZ + (JNIEnv *, jobject, jlong, jint, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelMorph_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelMorph_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCancelMorph_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelMorph_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelResearch_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelResearch_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCancelResearch_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelResearch_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelUpgrade_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelUpgrade_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCancelUpgrade_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelUpgrade_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithOrWithoutTarget_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithOrWithoutTarget_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithOrWithoutTarget_native + * Signature: (JLbwapi4/TechType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__JLbwapi4_TechType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithOrWithoutTarget_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithOrWithoutTarget_native + * Signature: (JLbwapi4/TechType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__JLbwapi4_TechType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTech_native + * Signature: (JLbwapi4/TechType;Lbwapi4/PositionOrUnit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTech_native + * Signature: (JLbwapi4/TechType;Lbwapi4/PositionOrUnit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTech_native + * Signature: (JLbwapi4/TechType;Lbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTech_native + * Signature: (JLbwapi4/TechType;Lbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTech_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTech_native + * Signature: (JLbwapi4/TechType;Lbwapi4/PositionOrUnit;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithoutTarget_native + * Signature: (JLbwapi4/TechType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithoutTarget_1native__JLbwapi4_TechType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithoutTarget_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithoutTarget_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithoutTarget_native + * Signature: (JLbwapi4/TechType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithoutTarget_1native__JLbwapi4_TechType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Unit;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechPosition_native + * Signature: (JLbwapi4/TechType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechPosition_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTechPosition_native + * Signature: (JLbwapi4/TechType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechPosition_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Position;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Lbwapi4_Position_2ZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechPosition_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Lbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechPosition_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Lbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTechPosition_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Position;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Lbwapi4_Position_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canPlaceCOP_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canPlaceCOP_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canPlaceCOP_native + * Signature: (JLbwapi4/TilePosition;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__JLbwapi4_TilePosition_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canPlaceCOP_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__JLbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canPlaceCOP_native + * Signature: (JLbwapi4/TilePosition;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__JLbwapi4_TilePosition_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_UnitCommand */ + +#ifndef _Included_bwapi4_UnitCommand +#define _Included_bwapi4_UnitCommand +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_UnitCommand + * Method: getType_native + * Signature: (J)Lbwapi4/UnitCommandType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_getType_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_UnitCommandType */ + +#ifndef _Included_bwapi4_UnitCommandType +#define _Included_bwapi4_UnitCommandType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_UnitFilter */ + +#ifndef _Included_bwapi4_UnitFilter +#define _Included_bwapi4_UnitFilter +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_Unitset */ + +#ifndef _Included_bwapi4_Unitset +#define _Included_bwapi4_Unitset +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Unitset + * Method: getPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: getLoadedUnits_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getLoadedUnits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: getInterceptors_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getInterceptors_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: getLarva_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getLarva_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: setClientInfo_native + * Signature: (JI)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Unitset_setClientInfo_1native__JI + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Unitset + * Method: setClientInfo_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Unitset_setClientInfo_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: setClientInfo_native + * Signature: (JII)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Unitset_setClientInfo_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Unitset + * Method: getUnitsInRadius_native + * Signature: (JILbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getUnitsInRadius_1native + (JNIEnv *, jobject, jlong, jint, jobject); + +/* + * Class: bwapi4_Unitset + * Method: getClosestUnit_native + * Signature: (JLbwapi4/UnitFilter;)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getClosestUnit_1native__JLbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: getClosestUnit_native + * Signature: (JLbwapi4/UnitFilter;I)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getClosestUnit_1native__JLbwapi4_UnitFilter_2I + (JNIEnv *, jobject, jlong, jobject, jint); + +/* + * Class: bwapi4_Unitset + * Method: issueCommand_native + * Signature: (JLbwapi4/UnitCommand;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_issueCommand_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: attack_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_attack_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: attack_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_attack_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: build_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_build_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: build_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_build_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unitset + * Method: buildAddon_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_buildAddon_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: train_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_train_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: morph_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_morph_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: setRallyPoint_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_setRallyPoint_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: move_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_move_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: move_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_move_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: patrol_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_patrol_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: patrol_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_patrol_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: holdPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_holdPosition_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: holdPosition_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_holdPosition_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: stop_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_stop_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: stop_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_stop_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: follow_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_follow_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: follow_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_follow_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: gather_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_gather_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: gather_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_gather_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: returnCargo_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_returnCargo_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: returnCargo_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_returnCargo_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: repair_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_repair_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: repair_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_repair_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: burrow_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_burrow_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: unburrow_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unburrow_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: cloak_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cloak_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: decloak_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_decloak_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: siege_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_siege_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: unsiege_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unsiege_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: lift_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_lift_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: load_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_load_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: load_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_load_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: unloadAll_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unloadAll_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: unloadAll_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unloadAll_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: unloadAll_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unloadAll_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: unloadAll_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unloadAll_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: rightClick_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_rightClick_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: rightClick_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_rightClick_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: haltConstruction_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_haltConstruction_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: cancelConstruction_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelConstruction_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: cancelAddon_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelAddon_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: cancelTrain_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelTrain_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: cancelTrain_native + * Signature: (JI)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelTrain_1native__JI + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Unitset + * Method: cancelMorph_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelMorph_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: cancelResearch_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelResearch_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: cancelUpgrade_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelUpgrade_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: useTech_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_useTech_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: useTech_native + * Signature: (JLbwapi4/TechType;Lbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_useTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_UnitSizeType */ + +#ifndef _Included_bwapi4_UnitSizeType +#define _Included_bwapi4_UnitSizeType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_UnitType */ + +#ifndef _Included_bwapi4_UnitType +#define _Included_bwapi4_UnitType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_UpgradeType */ + +#ifndef _Included_bwapi4_UpgradeType +#define _Included_bwapi4_UpgradeType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_WalkPosition */ + +#ifndef _Included_bwapi4_WalkPosition +#define _Included_bwapi4_WalkPosition +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_WalkPosition + * Method: isValid + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WalkPosition_isValid + (JNIEnv *, jobject); + +/* + * Class: bwapi4_WalkPosition + * Method: makeValid + * Signature: ()Lbwapi4/WalkPosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_WalkPosition_makeValid + (JNIEnv *, jobject); + +/* + * Class: bwapi4_WalkPosition + * Method: getDistance + * Signature: (Lbwapi4/WalkPosition;)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_WalkPosition_getDistance + (JNIEnv *, jobject, jobject); + +/* + * Class: bwapi4_WalkPosition + * Method: getApproxDistance + * Signature: (Lbwapi4/WalkPosition;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_WalkPosition_getApproxDistance + (JNIEnv *, jobject, jobject); + +/* + * Class: bwapi4_WalkPosition + * Method: getLength + * Signature: ()D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_WalkPosition_getLength + (JNIEnv *, jobject); + +/* + * Class: bwapi4_WalkPosition + * Method: hasPath + * Signature: (Lbwapi4/WalkPosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WalkPosition_hasPath + (JNIEnv *, jobject, jobject); + +#ifdef __cplusplus +} +#endif +#endif +/* Header for class bwapi4_WeaponType */ + +#ifndef _Included_bwapi4_WeaponType +#define _Included_bwapi4_WeaponType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_AIModule.h b/headers/bwapi4_AIModule.h new file mode 100644 index 0000000..c2f9575 --- /dev/null +++ b/headers/bwapi4_AIModule.h @@ -0,0 +1,149 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_AIModule */ + +#ifndef _Included_bwapi4_AIModule +#define _Included_bwapi4_AIModule +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_AIModule + * Method: onStart_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onStart_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_AIModule + * Method: onEnd_native + * Signature: (JZ)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onEnd_1native + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_AIModule + * Method: onFrame_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onFrame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_AIModule + * Method: onSendText_native + * Signature: (JLjava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onSendText_1native + (JNIEnv *, jobject, jlong, jstring); + +/* + * Class: bwapi4_AIModule + * Method: onReceiveText_native + * Signature: (JLbwapi4/Player;Ljava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onReceiveText_1native + (JNIEnv *, jobject, jlong, jobject, jstring); + +/* + * Class: bwapi4_AIModule + * Method: onPlayerLeft_native + * Signature: (JLbwapi4/Player;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onPlayerLeft_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onNukeDetect_native + * Signature: (JLbwapi4/Position;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onNukeDetect_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitDiscover_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitDiscover_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitEvade_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitEvade_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitShow_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitShow_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitHide_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitHide_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitCreate_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitCreate_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitDestroy_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitDestroy_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitMorph_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitMorph_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitRenegade_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitRenegade_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onSaveGame_native + * Signature: (JLjava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onSaveGame_1native + (JNIEnv *, jobject, jlong, jstring); + +/* + * Class: bwapi4_AIModule + * Method: onUnitComplete_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitComplete_1native + (JNIEnv *, jobject, jlong, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_BestFilter.h b/headers/bwapi4_BestFilter.h new file mode 100644 index 0000000..25506c7 --- /dev/null +++ b/headers/bwapi4_BestFilter.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_BestFilter */ + +#ifndef _Included_bwapi4_BestFilter +#define _Included_bwapi4_BestFilter +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_BestUnitFilter.h b/headers/bwapi4_BestUnitFilter.h new file mode 100644 index 0000000..cddb3f2 --- /dev/null +++ b/headers/bwapi4_BestUnitFilter.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_BestUnitFilter */ + +#ifndef _Included_bwapi4_BestUnitFilter +#define _Included_bwapi4_BestUnitFilter +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_Bullet.h b/headers/bwapi4_Bullet.h new file mode 100644 index 0000000..0d49eb4 --- /dev/null +++ b/headers/bwapi4_Bullet.h @@ -0,0 +1,125 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Bullet */ + +#ifndef _Included_bwapi4_Bullet +#define _Included_bwapi4_Bullet +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Bullet + * Method: getID_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Bullet_getID_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: exists_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Bullet_exists_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getPlayer_native + * Signature: (J)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getPlayer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getType_native + * Signature: (J)Lbwapi4/BulletType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getSource_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getSource_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getAngle_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Bullet_getAngle_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getVelocityX_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Bullet_getVelocityX_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getVelocityY_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Bullet_getVelocityY_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getTarget_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getTarget_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getTargetPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getTargetPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getRemoveTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Bullet_getRemoveTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: isVisible_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Bullet_isVisible_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: isVisible_native + * Signature: (JLbwapi4/Player;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Bullet_isVisible_1native__JLbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_BulletType.h b/headers/bwapi4_BulletType.h new file mode 100644 index 0000000..91de9e2 --- /dev/null +++ b/headers/bwapi4_BulletType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_BulletType */ + +#ifndef _Included_bwapi4_BulletType +#define _Included_bwapi4_BulletType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_Bulletset.h b/headers/bwapi4_Bulletset.h new file mode 100644 index 0000000..986b189 --- /dev/null +++ b/headers/bwapi4_Bulletset.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Bulletset */ + +#ifndef _Included_bwapi4_Bulletset +#define _Included_bwapi4_Bulletset +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_Client.h b/headers/bwapi4_Client.h new file mode 100644 index 0000000..4ac7f4d --- /dev/null +++ b/headers/bwapi4_Client.h @@ -0,0 +1,45 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Client */ + +#ifndef _Included_bwapi4_Client +#define _Included_bwapi4_Client +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Client + * Method: isConnected_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Client_isConnected_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Client + * Method: connect_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Client_connect_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Client + * Method: disconnect_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Client_disconnect_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Client + * Method: update_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Client_update_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_Color.h b/headers/bwapi4_Color.h new file mode 100644 index 0000000..85487c9 --- /dev/null +++ b/headers/bwapi4_Color.h @@ -0,0 +1,37 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Color */ + +#ifndef _Included_bwapi4_Color +#define _Included_bwapi4_Color +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Color + * Method: red_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Color_red_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Color + * Method: green_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Color_green_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Color + * Method: blue_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Color_blue_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_CompareFilter.h b/headers/bwapi4_CompareFilter.h new file mode 100644 index 0000000..180dece --- /dev/null +++ b/headers/bwapi4_CompareFilter.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_CompareFilter */ + +#ifndef _Included_bwapi4_CompareFilter +#define _Included_bwapi4_CompareFilter +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_DamageType.h b/headers/bwapi4_DamageType.h new file mode 100644 index 0000000..cf0d066 --- /dev/null +++ b/headers/bwapi4_DamageType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_DamageType */ + +#ifndef _Included_bwapi4_DamageType +#define _Included_bwapi4_DamageType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_Error.h b/headers/bwapi4_Error.h new file mode 100644 index 0000000..d715edf --- /dev/null +++ b/headers/bwapi4_Error.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Error */ + +#ifndef _Included_bwapi4_Error +#define _Included_bwapi4_Error +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_Event.h b/headers/bwapi4_Event.h new file mode 100644 index 0000000..6532651 --- /dev/null +++ b/headers/bwapi4_Event.h @@ -0,0 +1,53 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Event */ + +#ifndef _Included_bwapi4_Event +#define _Included_bwapi4_Event +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Event + * Method: getPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Event_getPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Event + * Method: getText_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Event_getText_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Event + * Method: getUnit_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Event_getUnit_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Event + * Method: getPlayer_native + * Signature: (J)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Event_getPlayer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Event + * Method: isWinner_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Event_isWinner_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_ExplosionType.h b/headers/bwapi4_ExplosionType.h new file mode 100644 index 0000000..9517002 --- /dev/null +++ b/headers/bwapi4_ExplosionType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_ExplosionType */ + +#ifndef _Included_bwapi4_ExplosionType +#define _Included_bwapi4_ExplosionType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_Force.h b/headers/bwapi4_Force.h new file mode 100644 index 0000000..a64f65d --- /dev/null +++ b/headers/bwapi4_Force.h @@ -0,0 +1,37 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Force */ + +#ifndef _Included_bwapi4_Force +#define _Included_bwapi4_Force +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Force + * Method: getID_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Force_getID_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Force + * Method: getName_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Force_getName_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Force + * Method: getPlayers_native + * Signature: (J)Lbwapi4/Playerset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Force_getPlayers_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_Forceset.h b/headers/bwapi4_Forceset.h new file mode 100644 index 0000000..2b1d86f --- /dev/null +++ b/headers/bwapi4_Forceset.h @@ -0,0 +1,21 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Forceset */ + +#ifndef _Included_bwapi4_Forceset +#define _Included_bwapi4_Forceset +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Forceset + * Method: getPlayers_native + * Signature: (J)Lbwapi4/Playerset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Forceset_getPlayers_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_Game.h b/headers/bwapi4_Game.h new file mode 100644 index 0000000..87bfe25 --- /dev/null +++ b/headers/bwapi4_Game.h @@ -0,0 +1,1789 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Game */ + +#ifndef _Included_bwapi4_Game +#define _Included_bwapi4_Game +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Game + * Method: getForces_native + * Signature: (J)Lbwapi4/Forceset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getForces_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getPlayers_native + * Signature: (J)Lbwapi4/Playerset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getPlayers_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getAllUnits_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getAllUnits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getMinerals_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getGeysers_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getGeysers_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getNeutralUnits_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getNeutralUnits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getStaticMinerals_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getStaticMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getStaticGeysers_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getStaticGeysers_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getStaticNeutralUnits_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getStaticNeutralUnits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getBullets_native + * Signature: (J)Lbwapi4/Bulletset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBullets_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getForce_native + * Signature: (JI)Lbwapi4/Force; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getForce_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: getPlayer_native + * Signature: (JI)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getPlayer_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: getUnit_native + * Signature: (JI)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnit_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: indexToUnit_native + * Signature: (JI)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_indexToUnit_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: getRegion_native + * Signature: (JI)Lbwapi4/Region; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getRegion_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: getGameType_native + * Signature: (J)Lbwapi4/GameType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getGameType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getLatency_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getLatency_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getFrameCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getFrameCount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getReplayFrameCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getReplayFrameCount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getFPS_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getFPS_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getAverageFPS_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Game_getAverageFPS_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getMousePosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getMousePosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getMouseState_native + * Signature: (JLbwapi4/MouseButton;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_getMouseState_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: getKeyState_native + * Signature: (JLbwapi4/Key;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_getKeyState_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: getScreenPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getScreenPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setScreenPosition_native + * Signature: (JII)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setScreenPosition_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: setScreenPosition_native + * Signature: (JLbwapi4/Position;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setScreenPosition_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: pingMinimap_native + * Signature: (JII)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_pingMinimap_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: pingMinimap_native + * Signature: (JLbwapi4/Position;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_pingMinimap_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: isFlagEnabled_native + * Signature: (JI)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isFlagEnabled_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: enableFlag_native + * Signature: (JI)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_enableFlag_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: getUnitsOnTile_native + * Signature: (JIILbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsOnTile_1native__JIILbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: getUnitsOnTile_native + * Signature: (JLbwapi4/TilePosition;Lbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsOnTile_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getUnitsInRectangle_native + * Signature: (JIIIILbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsInRectangle_1native__JIIIILbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: getUnitsInRectangle_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsInRectangle_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getUnitsInRadius_native + * Signature: (JIIILbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsInRadius_1native__JIIILbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: getUnitsInRadius_native + * Signature: (JLbwapi4/Position;ILbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsInRadius_1native__JLbwapi4_Position_2ILbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: getClosestUnit_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitFilter;)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnit_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getClosestUnit_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitFilter;I)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnit_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2I + (JNIEnv *, jobject, jlong, jobject, jobject, jint); + +/* + * Class: bwapi4_Game + * Method: getClosestUnitInRectangle_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitFilter;III)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnitInRectangle_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2III + (JNIEnv *, jobject, jlong, jobject, jobject, jint, jint, jint); + +/* + * Class: bwapi4_Game + * Method: getClosestUnitInRectangle_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitFilter;II)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnitInRectangle_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2II + (JNIEnv *, jobject, jlong, jobject, jobject, jint, jint); + +/* + * Class: bwapi4_Game + * Method: getClosestUnitInRectangle_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitFilter;I)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnitInRectangle_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2I + (JNIEnv *, jobject, jlong, jobject, jobject, jint); + +/* + * Class: bwapi4_Game + * Method: getClosestUnitInRectangle_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitFilter;)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnitInRectangle_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getClosestUnitInRectangle_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitFilter;IIII)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnitInRectangle_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2IIII + (JNIEnv *, jobject, jlong, jobject, jobject, jint, jint, jint, jint); + +/* + * Class: bwapi4_Game + * Method: getBestUnit_native + * Signature: (JLbwapi4/BestUnitFilter;Lbwapi4/UnitFilter;Lbwapi4/Position;)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBestUnit_1native__JLbwapi4_BestUnitFilter_2Lbwapi4_UnitFilter_2Lbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getBestUnit_native + * Signature: (JLbwapi4/BestUnitFilter;Lbwapi4/UnitFilter;)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBestUnit_1native__JLbwapi4_BestUnitFilter_2Lbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getBestUnit_native + * Signature: (JLbwapi4/BestUnitFilter;Lbwapi4/UnitFilter;Lbwapi4/Position;I)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBestUnit_1native__JLbwapi4_BestUnitFilter_2Lbwapi4_UnitFilter_2Lbwapi4_Position_2I + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jint); + +/* + * Class: bwapi4_Game + * Method: getLastError_native + * Signature: (J)Lbwapi4/Error; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getLastError_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setLastError_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setLastError_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setLastError_native + * Signature: (JLbwapi4/Error;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setLastError_1native__JLbwapi4_Error_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: mapWidth_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_mapWidth_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: mapHeight_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_mapHeight_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: mapFileName_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Game_mapFileName_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: mapPathName_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Game_mapPathName_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: mapName_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Game_mapName_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: mapHash_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Game_mapHash_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: isWalkable_native + * Signature: (JII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isWalkable_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: isWalkable_native + * Signature: (JLbwapi4/WalkPosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isWalkable_1native__JLbwapi4_WalkPosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: isBuildable_native + * Signature: (JII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isBuildable_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: isBuildable_native + * Signature: (JIIZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isBuildable_1native__JIIZ + (JNIEnv *, jobject, jlong, jint, jint, jboolean); + +/* + * Class: bwapi4_Game + * Method: isBuildable_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isBuildable_1native__JLbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: isBuildable_native + * Signature: (JLbwapi4/TilePosition;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isBuildable_1native__JLbwapi4_TilePosition_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: isVisible_native + * Signature: (JII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isVisible_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: isVisible_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isVisible_1native__JLbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: isExplored_native + * Signature: (JII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isExplored_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: isExplored_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isExplored_1native__JLbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: hasCreep_native + * Signature: (JII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasCreep_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: hasCreep_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasCreep_1native__JLbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPowerPrecise_native + * Signature: (JII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPowerPrecise_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: hasPowerPrecise_native + * Signature: (JIILbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPowerPrecise_1native__JIILbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPowerPrecise_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPowerPrecise_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPowerPrecise_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPowerPrecise_1native__JLbwapi4_Position_2Lbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JIILbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JIILbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JLbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JLbwapi4/TilePosition;Lbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JIIII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JIIII + (JNIEnv *, jobject, jlong, jint, jint, jint, jint); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JIIIILbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JIIIILbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JLbwapi4/TilePosition;II)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JLbwapi4_TilePosition_2II + (JNIEnv *, jobject, jlong, jobject, jint, jint); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JLbwapi4/TilePosition;IILbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JLbwapi4_TilePosition_2IILbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: canBuildHere_native + * Signature: (JLbwapi4/TilePosition;Lbwapi4/UnitType;Lbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canBuildHere_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitType_2Lbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: canBuildHere_native + * Signature: (JLbwapi4/TilePosition;Lbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canBuildHere_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: canBuildHere_native + * Signature: (JLbwapi4/TilePosition;Lbwapi4/UnitType;Lbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canBuildHere_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitType_2Lbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: canMake_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canMake_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: canMake_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canMake_1native__JLbwapi4_UnitType_2Lbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: canResearch_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canResearch_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: canResearch_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canResearch_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: canResearch_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canResearch_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: canUpgrade_native + * Signature: (JLbwapi4/UpgradeType;Lbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canUpgrade_1native__JLbwapi4_UpgradeType_2Lbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: canUpgrade_native + * Signature: (JLbwapi4/UpgradeType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canUpgrade_1native__JLbwapi4_UpgradeType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: canUpgrade_native + * Signature: (JLbwapi4/UpgradeType;Lbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canUpgrade_1native__JLbwapi4_UpgradeType_2Lbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: vPrintf_native + * Signature: (JLjava/lang/String;[Ljava/lang/Object;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_vPrintf_1native + (JNIEnv *, jobject, jlong, jstring, jobjectArray); + +/* + * Class: bwapi4_Game + * Method: vSendText_native + * Signature: (JLjava/lang/String;[Ljava/lang/Object;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_vSendText_1native + (JNIEnv *, jobject, jlong, jstring, jobjectArray); + +/* + * Class: bwapi4_Game + * Method: vSendTextEx_native + * Signature: (JZLjava/lang/String;[Ljava/lang/Object;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_vSendTextEx_1native + (JNIEnv *, jobject, jlong, jboolean, jstring, jobjectArray); + +/* + * Class: bwapi4_Game + * Method: isInGame_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isInGame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: isMultiplayer_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isMultiplayer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: isBattleNet_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isBattleNet_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: isPaused_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isPaused_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: isReplay_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isReplay_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: pauseGame_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_pauseGame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: resumeGame_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_resumeGame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: leaveGame_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_leaveGame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: restartGame_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_restartGame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setLocalSpeed_native + * Signature: (JI)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setLocalSpeed_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: issueCommand_native + * Signature: (JLbwapi4/Unitset;Lbwapi4/UnitCommand;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_issueCommand_1native + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getSelectedUnits_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getSelectedUnits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: self_native + * Signature: (J)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_self_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: enemy_native + * Signature: (J)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_enemy_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: neutral_native + * Signature: (J)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_neutral_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: allies_native + * Signature: (J)Lbwapi4/Playerset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_allies_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: enemies_native + * Signature: (J)Lbwapi4/Playerset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_enemies_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: observers_native + * Signature: (J)Lbwapi4/Playerset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_observers_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setTextSize_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setTextSize_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setTextSize_native + * Signature: (JLbwapi4/Text/Size/Enum;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setTextSize_1native__JLbwapi4_Text_Size_Enum_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: vDrawText_native + * Signature: (JLbwapi4/CoordinateType/Enum;IILjava/lang/String;[Ljava/lang/Object;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_vDrawText_1native + (JNIEnv *, jobject, jlong, jobject, jint, jint, jstring, jobjectArray); + +/* + * Class: bwapi4_Game + * Method: drawBox_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBox_1native__JLbwapi4_CoordinateType_Enum_2IIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawBox_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBox_1native__JLbwapi4_CoordinateType_Enum_2IIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawBoxMap_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMap_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawBoxMap_native + * Signature: (JIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMap_1native__JIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawBoxMap_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMap_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawBoxMap_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMap_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawBoxMouse_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMouse_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawBoxMouse_native + * Signature: (JIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMouse_1native__JIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawBoxMouse_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMouse_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawBoxMouse_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMouse_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawBoxScreen_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxScreen_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawBoxScreen_native + * Signature: (JIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxScreen_1native__JIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawBoxScreen_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxScreen_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawBoxScreen_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxScreen_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawTriangle_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangle_1native__JLbwapi4_CoordinateType_Enum_2IIIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawTriangle_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangle_1native__JLbwapi4_CoordinateType_Enum_2IIIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMap_native + * Signature: (JIIIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMap_1native__JIIIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMap_native + * Signature: (JIIIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMap_1native__JIIIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMap_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMap_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMap_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMap_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMouse_native + * Signature: (JIIIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMouse_1native__JIIIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMouse_native + * Signature: (JIIIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMouse_1native__JIIIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMouse_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMouse_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMouse_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMouse_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawTriangleScreen_native + * Signature: (JIIIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleScreen_1native__JIIIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawTriangleScreen_native + * Signature: (JIIIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleScreen_1native__JIIIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawTriangleScreen_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleScreen_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawTriangleScreen_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleScreen_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawCircle_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircle_1native__JLbwapi4_CoordinateType_Enum_2IIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawCircle_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircle_1native__JLbwapi4_CoordinateType_Enum_2IIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawCircleMap_native + * Signature: (JIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMap_1native__JIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawCircleMap_native + * Signature: (JIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMap_1native__JIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawCircleMap_native + * Signature: (JLbwapi4/Position;ILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMap_1native__JLbwapi4_Position_2ILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawCircleMap_native + * Signature: (JLbwapi4/Position;ILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMap_1native__JLbwapi4_Position_2ILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawCircleMouse_native + * Signature: (JIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMouse_1native__JIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawCircleMouse_native + * Signature: (JIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMouse_1native__JIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawCircleMouse_native + * Signature: (JLbwapi4/Position;ILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMouse_1native__JLbwapi4_Position_2ILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawCircleMouse_native + * Signature: (JLbwapi4/Position;ILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMouse_1native__JLbwapi4_Position_2ILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawCircleScreen_native + * Signature: (JIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleScreen_1native__JIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawCircleScreen_native + * Signature: (JIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleScreen_1native__JIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawCircleScreen_native + * Signature: (JLbwapi4/Position;ILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleScreen_1native__JLbwapi4_Position_2ILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawCircleScreen_native + * Signature: (JLbwapi4/Position;ILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleScreen_1native__JLbwapi4_Position_2ILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawEllipse_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipse_1native__JLbwapi4_CoordinateType_Enum_2IIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawEllipse_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipse_1native__JLbwapi4_CoordinateType_Enum_2IIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMap_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMap_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMap_native + * Signature: (JIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMap_1native__JIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMap_native + * Signature: (JLbwapi4/Position;IILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMap_1native__JLbwapi4_Position_2IILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMap_native + * Signature: (JLbwapi4/Position;IILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMap_1native__JLbwapi4_Position_2IILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMouse_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMouse_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMouse_native + * Signature: (JIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMouse_1native__JIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMouse_native + * Signature: (JLbwapi4/Position;IILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMouse_1native__JLbwapi4_Position_2IILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMouse_native + * Signature: (JLbwapi4/Position;IILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMouse_1native__JLbwapi4_Position_2IILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawEllipseScreen_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseScreen_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawEllipseScreen_native + * Signature: (JIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseScreen_1native__JIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawEllipseScreen_native + * Signature: (JLbwapi4/Position;IILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseScreen_1native__JLbwapi4_Position_2IILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawEllipseScreen_native + * Signature: (JLbwapi4/Position;IILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseScreen_1native__JLbwapi4_Position_2IILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawDot_native + * Signature: (JLbwapi4/CoordinateType/Enum;IILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDot_1native + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawDotMap_native + * Signature: (JIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotMap_1native__JIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawDotMap_native + * Signature: (JLbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotMap_1native__JLbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawDotMouse_native + * Signature: (JIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotMouse_1native__JIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawDotMouse_native + * Signature: (JLbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotMouse_1native__JLbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawDotScreen_native + * Signature: (JIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotScreen_1native__JIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawDotScreen_native + * Signature: (JLbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotScreen_1native__JLbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawLine_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLine_1native + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawLineMap_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineMap_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawLineMap_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineMap_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawLineMouse_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineMouse_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawLineMouse_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineMouse_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawLineScreen_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineScreen_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawLineScreen_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineScreen_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getLatencyFrames_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getLatencyFrames_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getLatencyTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getLatencyTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getRemainingLatencyFrames_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getRemainingLatencyFrames_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getRemainingLatencyTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getRemainingLatencyTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getRevision_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getRevision_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: isDebug_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isDebug_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: isLatComEnabled_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isLatComEnabled_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setLatCom_native + * Signature: (JZ)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setLatCom_1native + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Game + * Method: isGUIEnabled_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isGUIEnabled_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setGUI_native + * Signature: (JZ)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setGUI_1native + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Game + * Method: getInstanceNumber_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getInstanceNumber_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getAPM_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getAPM_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getAPM_native + * Signature: (JZ)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getAPM_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Game + * Method: setMap_native + * Signature: (JLjava/lang/String;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setMap_1native + (JNIEnv *, jobject, jlong, jstring); + +/* + * Class: bwapi4_Game + * Method: setFrameSkip_native + * Signature: (JI)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setFrameSkip_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: hasPath_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPath_1native + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: setAlliance_native + * Signature: (JLbwapi4/Player;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setAlliance_1native__JLbwapi4_Player_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: setAlliance_native + * Signature: (JLbwapi4/Player;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setAlliance_1native__JLbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: setAlliance_native + * Signature: (JLbwapi4/Player;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setAlliance_1native__JLbwapi4_Player_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Game + * Method: setVision_native + * Signature: (JLbwapi4/Player;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setVision_1native__JLbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: setVision_native + * Signature: (JLbwapi4/Player;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setVision_1native__JLbwapi4_Player_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: setCommandOptimizationLevel_native + * Signature: (JI)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setCommandOptimizationLevel_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: countdownTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_countdownTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getRegionAt_native + * Signature: (JII)Lbwapi4/Region; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getRegionAt_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: getRegionAt_native + * Signature: (JLbwapi4/Position;)Lbwapi4/Region; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getRegionAt_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: getLastEventTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getLastEventTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setRevealAll_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setRevealAll_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setRevealAll_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setRevealAll_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Game + * Method: getBuildLocation_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;I)Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBuildLocation_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2I + (JNIEnv *, jobject, jlong, jobject, jobject, jint); + +/* + * Class: bwapi4_Game + * Method: getBuildLocation_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;)Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBuildLocation_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getBuildLocation_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;IZ)Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBuildLocation_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2IZ + (JNIEnv *, jobject, jlong, jobject, jobject, jint, jboolean); + +/* + * Class: bwapi4_Game + * Method: getDamageFrom_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/UnitType;Lbwapi4/Player;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageFrom_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2Lbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getDamageFrom_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageFrom_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getDamageFrom_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/UnitType;Lbwapi4/Player;Lbwapi4/Player;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageFrom_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2Lbwapi4_Player_2Lbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getDamageTo_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/UnitType;Lbwapi4/Player;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageTo_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2Lbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getDamageTo_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageTo_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getDamageTo_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/UnitType;Lbwapi4/Player;Lbwapi4/Player;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageTo_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2Lbwapi4_Player_2Lbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_GameType.h b/headers/bwapi4_GameType.h new file mode 100644 index 0000000..3a0a18e --- /dev/null +++ b/headers/bwapi4_GameType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_GameType */ + +#ifndef _Included_bwapi4_GameType +#define _Included_bwapi4_GameType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_GameWrapper.h b/headers/bwapi4_GameWrapper.h new file mode 100644 index 0000000..0e36b0a --- /dev/null +++ b/headers/bwapi4_GameWrapper.h @@ -0,0 +1,21 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_GameWrapper */ + +#ifndef _Included_bwapi4_GameWrapper +#define _Included_bwapi4_GameWrapper +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_GameWrapper + * Method: flush_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_GameWrapper_flush_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_InterfaceEvent.h b/headers/bwapi4_InterfaceEvent.h new file mode 100644 index 0000000..4b198e6 --- /dev/null +++ b/headers/bwapi4_InterfaceEvent.h @@ -0,0 +1,29 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_InterfaceEvent */ + +#ifndef _Included_bwapi4_InterfaceEvent +#define _Included_bwapi4_InterfaceEvent +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_InterfaceEvent + * Method: isFinished_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_InterfaceEvent_isFinished_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_InterfaceEvent + * Method: removeEvent_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_InterfaceEvent_removeEvent_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_Key.h b/headers/bwapi4_Key.h new file mode 100644 index 0000000..aa8ceca --- /dev/null +++ b/headers/bwapi4_Key.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Key */ + +#ifndef _Included_bwapi4_Key +#define _Included_bwapi4_Key +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_MouseButton.h b/headers/bwapi4_MouseButton.h new file mode 100644 index 0000000..9937859 --- /dev/null +++ b/headers/bwapi4_MouseButton.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_MouseButton */ + +#ifndef _Included_bwapi4_MouseButton +#define _Included_bwapi4_MouseButton +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_Order.h b/headers/bwapi4_Order.h new file mode 100644 index 0000000..d664ddd --- /dev/null +++ b/headers/bwapi4_Order.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Order */ + +#ifndef _Included_bwapi4_Order +#define _Included_bwapi4_Order +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_Player.h b/headers/bwapi4_Player.h new file mode 100644 index 0000000..361040f --- /dev/null +++ b/headers/bwapi4_Player.h @@ -0,0 +1,493 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Player */ + +#ifndef _Included_bwapi4_Player +#define _Included_bwapi4_Player +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Player + * Method: getID_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getID_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getName_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Player_getName_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getRace_native + * Signature: (J)Lbwapi4/Race; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getRace_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getType_native + * Signature: (J)Lbwapi4/PlayerType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getForce_native + * Signature: (J)Lbwapi4/Force; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getForce_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: isAlly_native + * Signature: (JLbwapi4/Player;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isAlly_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: isEnemy_native + * Signature: (JLbwapi4/Player;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isEnemy_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: isNeutral_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isNeutral_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getStartLocation_native + * Signature: (J)Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getStartLocation_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: isVictorious_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isVictorious_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: isDefeated_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isDefeated_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: leftGame_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_leftGame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: minerals_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_minerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: gas_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_gas_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: gatheredMinerals_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_gatheredMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: gatheredGas_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_gatheredGas_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: repairedMinerals_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_repairedMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: repairedGas_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_repairedGas_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: refundedMinerals_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_refundedMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: refundedGas_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_refundedGas_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: spentMinerals_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_spentMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: spentGas_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_spentGas_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: supplyTotal_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_supplyTotal_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: supplyTotal_native + * Signature: (JLbwapi4/Race;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_supplyTotal_1native__JLbwapi4_Race_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: supplyUsed_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_supplyUsed_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: supplyUsed_native + * Signature: (JLbwapi4/Race;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_supplyUsed_1native__JLbwapi4_Race_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: allUnitCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_allUnitCount_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: allUnitCount_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_allUnitCount_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: visibleUnitCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_visibleUnitCount_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: visibleUnitCount_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_visibleUnitCount_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: completedUnitCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_completedUnitCount_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: completedUnitCount_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_completedUnitCount_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: incompleteUnitCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_incompleteUnitCount_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: incompleteUnitCount_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_incompleteUnitCount_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: deadUnitCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_deadUnitCount_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: deadUnitCount_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_deadUnitCount_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: killedUnitCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_killedUnitCount_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: killedUnitCount_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_killedUnitCount_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: getUpgradeLevel_native + * Signature: (JLbwapi4/UpgradeType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getUpgradeLevel_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: hasResearched_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_hasResearched_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: isResearching_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isResearching_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: isUpgrading_native + * Signature: (JLbwapi4/UpgradeType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isUpgrading_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: getColor_native + * Signature: (J)Lbwapi4/Color; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getColor_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getTextColor_native + * Signature: (J)C + */ +JNIEXPORT jchar JNICALL Java_bwapi4_Player_getTextColor_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: maxEnergy_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_maxEnergy_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: topSpeed_native + * Signature: (JLbwapi4/UnitType;)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Player_topSpeed_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: weaponMaxRange_native + * Signature: (JLbwapi4/WeaponType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_weaponMaxRange_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: sightRange_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_sightRange_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: weaponDamageCooldown_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_weaponDamageCooldown_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: armor_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_armor_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: damage_native + * Signature: (JLbwapi4/WeaponType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_damage_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: getUnitScore_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getUnitScore_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getKillScore_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getKillScore_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getBuildingScore_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getBuildingScore_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getRazingScore_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getRazingScore_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getCustomScore_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getCustomScore_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: isObserver_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isObserver_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getMaxUpgradeLevel_native + * Signature: (JLbwapi4/UpgradeType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getMaxUpgradeLevel_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: isResearchAvailable_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isResearchAvailable_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: isUnitAvailable_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isUnitAvailable_1native + (JNIEnv *, jobject, jlong, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_PlayerType.h b/headers/bwapi4_PlayerType.h new file mode 100644 index 0000000..7a56deb --- /dev/null +++ b/headers/bwapi4_PlayerType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_PlayerType */ + +#ifndef _Included_bwapi4_PlayerType +#define _Included_bwapi4_PlayerType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_Playerset.h b/headers/bwapi4_Playerset.h new file mode 100644 index 0000000..75e9a08 --- /dev/null +++ b/headers/bwapi4_Playerset.h @@ -0,0 +1,45 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Playerset */ + +#ifndef _Included_bwapi4_Playerset +#define _Included_bwapi4_Playerset +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Playerset + * Method: getUnits_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Playerset_getUnits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Playerset + * Method: setAlliance_native + * Signature: (JZ)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Playerset_setAlliance_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Playerset + * Method: setAlliance_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Playerset_setAlliance_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Playerset + * Method: setAlliance_native + * Signature: (JZZ)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Playerset_setAlliance_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_Point.h b/headers/bwapi4_Point.h new file mode 100644 index 0000000..ae67c38 --- /dev/null +++ b/headers/bwapi4_Point.h @@ -0,0 +1,29 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Point */ + +#ifndef _Included_bwapi4_Point +#define _Included_bwapi4_Point +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Point + * Method: isValid_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Point_isValid_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Point + * Method: getLength_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Point_getLength_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_Position.h b/headers/bwapi4_Position.h new file mode 100644 index 0000000..0ce0ea9 --- /dev/null +++ b/headers/bwapi4_Position.h @@ -0,0 +1,61 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Position */ + +#ifndef _Included_bwapi4_Position +#define _Included_bwapi4_Position +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Position + * Method: isValid + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Position_isValid + (JNIEnv *, jobject); + +/* + * Class: bwapi4_Position + * Method: makeValid + * Signature: ()Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Position_makeValid + (JNIEnv *, jobject); + +/* + * Class: bwapi4_Position + * Method: getDistance + * Signature: (Lbwapi4/Position;)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Position_getDistance + (JNIEnv *, jobject, jobject); + +/* + * Class: bwapi4_Position + * Method: getApproxDistance + * Signature: (Lbwapi4/Position;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Position_getApproxDistance + (JNIEnv *, jobject, jobject); + +/* + * Class: bwapi4_Position + * Method: getLength + * Signature: ()D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Position_getLength + (JNIEnv *, jobject); + +/* + * Class: bwapi4_Position + * Method: hasPath + * Signature: (Lbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Position_hasPath + (JNIEnv *, jobject, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_PositionOrUnit.h b/headers/bwapi4_PositionOrUnit.h new file mode 100644 index 0000000..08db275 --- /dev/null +++ b/headers/bwapi4_PositionOrUnit.h @@ -0,0 +1,45 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_PositionOrUnit */ + +#ifndef _Included_bwapi4_PositionOrUnit +#define _Included_bwapi4_PositionOrUnit +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_PositionOrUnit + * Method: isUnit_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_PositionOrUnit_isUnit_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_PositionOrUnit + * Method: getUnit_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_PositionOrUnit_getUnit_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_PositionOrUnit + * Method: isPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_PositionOrUnit_isPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_PositionOrUnit + * Method: getPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_PositionOrUnit_getPosition_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_Race.h b/headers/bwapi4_Race.h new file mode 100644 index 0000000..7a8433f --- /dev/null +++ b/headers/bwapi4_Race.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Race */ + +#ifndef _Included_bwapi4_Race +#define _Included_bwapi4_Race +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_Region.h b/headers/bwapi4_Region.h new file mode 100644 index 0000000..959830a --- /dev/null +++ b/headers/bwapi4_Region.h @@ -0,0 +1,125 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Region */ + +#ifndef _Included_bwapi4_Region +#define _Included_bwapi4_Region +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Region + * Method: getID_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getID_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getRegionGroupID_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getRegionGroupID_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getCenter_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Region_getCenter_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: isHigherGround_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Region_isHigherGround_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getDefensePriority_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getDefensePriority_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: isAccessible_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Region_isAccessible_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getBoundsLeft_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getBoundsLeft_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getBoundsTop_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getBoundsTop_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getBoundsRight_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getBoundsRight_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getBoundsBottom_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getBoundsBottom_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getClosestAccessibleRegion_native + * Signature: (J)Lbwapi4/Region; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Region_getClosestAccessibleRegion_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getClosestInaccessibleRegion_native + * Signature: (J)Lbwapi4/Region; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Region_getClosestInaccessibleRegion_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getDistance_native + * Signature: (JLbwapi4/Region;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getDistance_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Region + * Method: getUnits_native + * Signature: (JLbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Region_getUnits_1native + (JNIEnv *, jobject, jlong, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_Regionset.h b/headers/bwapi4_Regionset.h new file mode 100644 index 0000000..21eb2f4 --- /dev/null +++ b/headers/bwapi4_Regionset.h @@ -0,0 +1,29 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Regionset */ + +#ifndef _Included_bwapi4_Regionset +#define _Included_bwapi4_Regionset +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Regionset + * Method: getCenter_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Regionset_getCenter_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Regionset + * Method: getUnits_native + * Signature: (JLbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Regionset_getUnits_1native + (JNIEnv *, jobject, jlong, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_TechType.h b/headers/bwapi4_TechType.h new file mode 100644 index 0000000..c7dd387 --- /dev/null +++ b/headers/bwapi4_TechType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_TechType */ + +#ifndef _Included_bwapi4_TechType +#define _Included_bwapi4_TechType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_TilePosition.h b/headers/bwapi4_TilePosition.h new file mode 100644 index 0000000..268685c --- /dev/null +++ b/headers/bwapi4_TilePosition.h @@ -0,0 +1,53 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_TilePosition */ + +#ifndef _Included_bwapi4_TilePosition +#define _Included_bwapi4_TilePosition +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_TilePosition + * Method: hasPath + * Signature: (Lbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_TilePosition_hasPath + (JNIEnv *, jobject, jobject); + +/* + * Class: bwapi4_TilePosition + * Method: isValid + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_TilePosition_isValid + (JNIEnv *, jobject); + +/* + * Class: bwapi4_TilePosition + * Method: makeValid + * Signature: ()Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_TilePosition_makeValid + (JNIEnv *, jobject); + +/* + * Class: bwapi4_TilePosition + * Method: getDistance + * Signature: (Lbwapi4/TilePosition;)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_TilePosition_getDistance + (JNIEnv *, jobject, jobject); + +/* + * Class: bwapi4_TilePosition + * Method: getLength + * Signature: ()D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_TilePosition_getLength + (JNIEnv *, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_UnaryFilter.h b/headers/bwapi4_UnaryFilter.h new file mode 100644 index 0000000..5458efa --- /dev/null +++ b/headers/bwapi4_UnaryFilter.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_UnaryFilter */ + +#ifndef _Included_bwapi4_UnaryFilter +#define _Included_bwapi4_UnaryFilter +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_Unit.h b/headers/bwapi4_Unit.h new file mode 100644 index 0000000..95b845f --- /dev/null +++ b/headers/bwapi4_Unit.h @@ -0,0 +1,3669 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Unit */ + +#ifndef _Included_bwapi4_Unit +#define _Included_bwapi4_Unit +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Unit + * Method: getID_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getID_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: exists_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_exists_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getReplayID_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getReplayID_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getPlayer_native + * Signature: (J)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getPlayer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getType_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getTilePosition_native + * Signature: (J)Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTilePosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getAngle_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Unit_getAngle_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getVelocityX_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Unit_getVelocityX_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getVelocityY_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Unit_getVelocityY_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRegion_native + * Signature: (J)Lbwapi4/Region; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getRegion_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getLeft_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getLeft_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getTop_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getTop_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRight_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRight_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getBottom_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getBottom_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getHitPoints_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getHitPoints_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getShields_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getShields_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getEnergy_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getEnergy_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getResources_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getResources_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getResourceGroup_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getResourceGroup_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getDistance_native + * Signature: (JLbwapi4/PositionOrUnit;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getDistance_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: hasPath_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_hasPath_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: getLastCommandFrame_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getLastCommandFrame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getLastAttackingPlayer_native + * Signature: (J)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getLastAttackingPlayer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getInitialType_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getInitialType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getInitialPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getInitialPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getInitialTilePosition_native + * Signature: (J)Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getInitialTilePosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getInitialHitPoints_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getInitialHitPoints_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getInitialResources_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getInitialResources_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getKillCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getKillCount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getAcidSporeCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getAcidSporeCount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getInterceptorCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getInterceptorCount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getScarabCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getScarabCount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getSpiderMineCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getSpiderMineCount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getGroundWeaponCooldown_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getGroundWeaponCooldown_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getAirWeaponCooldown_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getAirWeaponCooldown_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getSpellCooldown_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getSpellCooldown_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getDefenseMatrixPoints_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getDefenseMatrixPoints_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getDefenseMatrixTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getDefenseMatrixTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getEnsnareTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getEnsnareTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getIrradiateTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getIrradiateTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getLockdownTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getLockdownTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getMaelstromTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getMaelstromTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getOrderTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getOrderTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getPlagueTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getPlagueTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRemoveTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRemoveTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getStasisTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getStasisTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getStimTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getStimTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getBuildType_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getBuildType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getTech_native + * Signature: (J)Lbwapi4/TechType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTech_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getUpgrade_native + * Signature: (J)Lbwapi4/UpgradeType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getUpgrade_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRemainingBuildTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRemainingBuildTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRemainingTrainTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRemainingTrainTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRemainingResearchTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRemainingResearchTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRemainingUpgradeTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRemainingUpgradeTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getBuildUnit_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getBuildUnit_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getTarget_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTarget_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getTargetPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTargetPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getOrder_native + * Signature: (J)Lbwapi4/Order; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getOrder_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getSecondaryOrder_native + * Signature: (J)Lbwapi4/Order; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getSecondaryOrder_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getOrderTarget_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getOrderTarget_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getOrderTargetPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getOrderTargetPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRallyPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getRallyPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRallyUnit_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getRallyUnit_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getAddon_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getAddon_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getNydusExit_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getNydusExit_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getPowerUp_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getPowerUp_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getTransport_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTransport_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getLoadedUnits_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getLoadedUnits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getSpaceRemaining_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getSpaceRemaining_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getCarrier_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getCarrier_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getInterceptors_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getInterceptors_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getHatchery_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getHatchery_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getLarva_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getLarva_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getUnitsInRadius_native + * Signature: (JILbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getUnitsInRadius_1native + (JNIEnv *, jobject, jlong, jint, jobject); + +/* + * Class: bwapi4_Unit + * Method: getUnitsInWeaponRange_native + * Signature: (JLbwapi4/WeaponType;Lbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getUnitsInWeaponRange_1native + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unit + * Method: getClosestUnit_native + * Signature: (JLbwapi4/UnitFilter;)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getClosestUnit_1native__JLbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: getClosestUnit_native + * Signature: (JLbwapi4/UnitFilter;I)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getClosestUnit_1native__JLbwapi4_UnitFilter_2I + (JNIEnv *, jobject, jlong, jobject, jint); + +/* + * Class: bwapi4_Unit + * Method: hasNuke_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_hasNuke_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isAccelerating_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isAccelerating_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isAttacking_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isAttacking_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isAttackFrame_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isAttackFrame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isBeingConstructed_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBeingConstructed_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isBeingGathered_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBeingGathered_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isBeingHealed_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBeingHealed_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isBlind_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBlind_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isBraking_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBraking_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isBurrowed_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBurrowed_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isCarryingGas_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isCarryingGas_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isCarryingMinerals_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isCarryingMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isCloaked_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isCloaked_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isCompleted_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isCompleted_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isConstructing_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isConstructing_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isDefenseMatrixed_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isDefenseMatrixed_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isDetected_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isDetected_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isEnsnared_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isEnsnared_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isFlying_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isFlying_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isFollowing_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isFollowing_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isGatheringGas_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isGatheringGas_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isGatheringMinerals_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isGatheringMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isHallucination_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isHallucination_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isHoldingPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isHoldingPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isIdle_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isIdle_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isInterruptible_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isInterruptible_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isInvincible_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isInvincible_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isInWeaponRange_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isInWeaponRange_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: isIrradiated_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isIrradiated_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isLifted_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isLifted_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isLoaded_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isLoaded_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isLockedDown_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isLockedDown_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isMaelstrommed_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isMaelstrommed_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isMorphing_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isMorphing_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isMoving_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isMoving_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isParasited_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isParasited_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isPatrolling_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isPatrolling_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isPlagued_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isPlagued_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isRepairing_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isRepairing_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isResearching_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isResearching_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isSelected_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isSelected_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isSieged_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isSieged_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isStartingAttack_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isStartingAttack_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isStasised_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isStasised_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isStimmed_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isStimmed_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isStuck_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isStuck_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isTraining_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isTraining_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isUnderAttack_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isUnderAttack_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isUnderDarkSwarm_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isUnderDarkSwarm_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isUnderDisruptionWeb_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isUnderDisruptionWeb_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isUnderStorm_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isUnderStorm_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isPowered_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isPowered_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isUpgrading_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isUpgrading_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isVisible_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isVisible_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isVisible_native + * Signature: (JLbwapi4/Player;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isVisible_1native__JLbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: isTargetable_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isTargetable_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: issueCommand_native + * Signature: (JLbwapi4/UnitCommand;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_issueCommand_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: attack_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_attack_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: attack_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_attack_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: build_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_build_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: build_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_build_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unit + * Method: buildAddon_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_buildAddon_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: train_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_train_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: train_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_train_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: morph_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_morph_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: research_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_research_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: upgrade_native + * Signature: (JLbwapi4/UpgradeType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_upgrade_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: setRallyPoint_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_setRallyPoint_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: move_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_move_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: move_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_move_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: patrol_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_patrol_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: patrol_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_patrol_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: holdPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_holdPosition_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: holdPosition_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_holdPosition_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: stop_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_stop_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: stop_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_stop_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: follow_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_follow_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: follow_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_follow_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: gather_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_gather_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: gather_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_gather_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: returnCargo_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_returnCargo_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: returnCargo_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_returnCargo_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: repair_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_repair_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: repair_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_repair_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: burrow_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_burrow_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: unburrow_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unburrow_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: cloak_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cloak_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: decloak_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_decloak_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: siege_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_siege_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: unsiege_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unsiege_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: lift_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_lift_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: land_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_land_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: load_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_load_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: load_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_load_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: unload_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unload_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: unloadAll_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unloadAll_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: unloadAll_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unloadAll_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: unloadAll_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unloadAll_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: unloadAll_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unloadAll_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: rightClick_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_rightClick_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: rightClick_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_rightClick_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: haltConstruction_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_haltConstruction_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: cancelConstruction_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelConstruction_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: cancelAddon_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelAddon_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: cancelTrain_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelTrain_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: cancelTrain_native + * Signature: (JI)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelTrain_1native__JI + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Unit + * Method: cancelMorph_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelMorph_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: cancelResearch_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelResearch_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: cancelUpgrade_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelUpgrade_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: useTech_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_useTech_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: useTech_native + * Signature: (JLbwapi4/TechType;Lbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_useTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unit + * Method: placeCOP_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_placeCOP_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommand_native + * Signature: (JLbwapi4/UnitCommand;ZZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2ZZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommand_native + * Signature: (JLbwapi4/UnitCommand;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommand_native + * Signature: (JLbwapi4/UnitCommand;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommand_native + * Signature: (JLbwapi4/UnitCommand;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommand_native + * Signature: (JLbwapi4/UnitCommand;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommand_native + * Signature: (JLbwapi4/UnitCommand;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommand_native + * Signature: (JLbwapi4/UnitCommand;ZZZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2ZZZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandGrouped_native + * Signature: (JLbwapi4/UnitCommand;ZZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2ZZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandGrouped_native + * Signature: (JLbwapi4/UnitCommand;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandGrouped_native + * Signature: (JLbwapi4/UnitCommand;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandGrouped_native + * Signature: (JLbwapi4/UnitCommand;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandGrouped_native + * Signature: (JLbwapi4/UnitCommand;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandGrouped_native + * Signature: (JLbwapi4/UnitCommand;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandGrouped_native + * Signature: (JLbwapi4/UnitCommand;ZZZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2ZZZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCommand_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCommand_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCommandGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCommandGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCommandGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCommandGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandType_native + * Signature: (JLbwapi4/UnitCommandType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandType_1native__JLbwapi4_UnitCommandType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandType_native + * Signature: (JLbwapi4/UnitCommandType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandType_1native__JLbwapi4_UnitCommandType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandTypeGrouped_native + * Signature: (JLbwapi4/UnitCommandType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandTypeGrouped_1native__JLbwapi4_UnitCommandType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandTypeGrouped_native + * Signature: (JLbwapi4/UnitCommandType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandTypeGrouped_1native__JLbwapi4_UnitCommandType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandTypeGrouped_native + * Signature: (JLbwapi4/UnitCommandType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandTypeGrouped_1native__JLbwapi4_UnitCommandType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canTargetUnit_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTargetUnit_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canTargetUnit_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTargetUnit_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttack_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canAttack_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttack_native + * Signature: (JLbwapi4/PositionOrUnit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__JLbwapi4_PositionOrUnit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttack_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttack_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canAttack_native + * Signature: (JLbwapi4/PositionOrUnit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__JLbwapi4_PositionOrUnit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JLbwapi4_PositionOrUnit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JLbwapi4_PositionOrUnit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JLbwapi4_PositionOrUnit_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackMove_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackMove_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canAttackMove_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackMove_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackMoveGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackMoveGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackMoveGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackMoveGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canAttackMoveGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackMoveGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnit_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnit_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnit_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnit_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnit_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnit_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (JLbwapi4/Unit;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JLbwapi4_Unit_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JLbwapi4/UnitType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JLbwapi4/UnitType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2ZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuildAddon_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canBuildAddon_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuildAddon_native + * Signature: (JLbwapi4/UnitType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__JLbwapi4_UnitType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuildAddon_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canBuildAddon_native + * Signature: (JLbwapi4/UnitType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__JLbwapi4_UnitType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canTrain_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canTrain_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canTrain_native + * Signature: (JLbwapi4/UnitType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__JLbwapi4_UnitType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canTrain_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canTrain_native + * Signature: (JLbwapi4/UnitType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__JLbwapi4_UnitType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canMorph_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canMorph_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canMorph_native + * Signature: (JLbwapi4/UnitType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__JLbwapi4_UnitType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canMorph_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canMorph_native + * Signature: (JLbwapi4/UnitType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__JLbwapi4_UnitType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canResearch_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canResearch_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canResearch_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canResearch_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canResearch_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canResearch_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canResearch_native + * Signature: (JLbwapi4/TechType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canResearch_1native__JLbwapi4_TechType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUpgrade_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUpgrade_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUpgrade_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUpgrade_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUpgrade_native + * Signature: (JLbwapi4/UpgradeType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUpgrade_1native__JLbwapi4_UpgradeType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUpgrade_native + * Signature: (JLbwapi4/UpgradeType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUpgrade_1native__JLbwapi4_UpgradeType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPoint_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPoint_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPoint_native + * Signature: (JLbwapi4/PositionOrUnit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__JLbwapi4_PositionOrUnit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPoint_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPoint_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPoint_native + * Signature: (JLbwapi4/PositionOrUnit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__JLbwapi4_PositionOrUnit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPosition_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPosition_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPosition_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyUnit_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyUnit_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyUnit_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyUnit_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyUnit_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyUnit_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canMove_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMove_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canMove_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMove_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canMoveGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMoveGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canMoveGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMoveGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canMoveGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMoveGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canPatrol_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPatrol_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canPatrol_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPatrol_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canPatrolGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPatrolGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canPatrolGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPatrolGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canPatrolGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPatrolGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canFollow_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canFollow_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canFollow_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canFollow_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canFollow_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canFollow_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canGather_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canGather_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canGather_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canGather_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canGather_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canGather_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canReturnCargo_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canReturnCargo_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canReturnCargo_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canReturnCargo_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canHoldPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canHoldPosition_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canHoldPosition_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canHoldPosition_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canStop_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canStop_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canStop_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canStop_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRepair_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canRepair_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRepair_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRepair_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRepair_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canRepair_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBurrow_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBurrow_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canBurrow_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBurrow_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnburrow_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnburrow_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUnburrow_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnburrow_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCloak_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCloak_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCloak_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCloak_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canDecloak_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canDecloak_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canDecloak_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canDecloak_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSiege_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSiege_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canSiege_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSiege_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnsiege_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnsiege_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUnsiege_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnsiege_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLift_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLift_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canLift_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLift_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLand_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLand_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canLand_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLand_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLand_native + * Signature: (JLbwapi4/TilePosition;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLand_1native__JLbwapi4_TilePosition_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLand_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLand_1native__JLbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canLand_native + * Signature: (JLbwapi4/TilePosition;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLand_1native__JLbwapi4_TilePosition_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLoad_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canLoad_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLoad_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLoad_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLoad_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canLoad_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnloadWithOrWithoutTarget_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadWithOrWithoutTarget_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUnloadWithOrWithoutTarget_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadWithOrWithoutTarget_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAtPosition_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAtPosition_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAtPosition_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAtPosition_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAtPosition_native + * Signature: (JLbwapi4/Position;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAtPosition_1native__JLbwapi4_Position_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnload_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUnload_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnload_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnload_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnload_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnload_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUnload_native + * Signature: (JLbwapi4/Unit;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JLbwapi4_Unit_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAll_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAll_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAll_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAll_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAllPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAllPosition_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAllPosition_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAllPosition_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAllPosition_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAllPosition_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAllPosition_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAllPosition_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAllPosition_native + * Signature: (JLbwapi4/Position;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAllPosition_1native__JLbwapi4_Position_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClick_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canRightClick_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClick_native + * Signature: (JLbwapi4/PositionOrUnit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__JLbwapi4_PositionOrUnit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClick_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClick_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canRightClick_native + * Signature: (JLbwapi4/PositionOrUnit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__JLbwapi4_PositionOrUnit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JLbwapi4_PositionOrUnit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JLbwapi4_PositionOrUnit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JLbwapi4_PositionOrUnit_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickPosition_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canRightClickPosition_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickPosition_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickPositionGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickPositionGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickPositionGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickPositionGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canRightClickPositionGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickPositionGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnit_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnit_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnit_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnit_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnit_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnit_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (JLbwapi4/Unit;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JLbwapi4_Unit_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canHaltConstruction_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canHaltConstruction_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canHaltConstruction_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canHaltConstruction_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelConstruction_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelConstruction_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCancelConstruction_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelConstruction_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelAddon_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelAddon_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCancelAddon_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelAddon_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelTrain_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrain_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCancelTrain_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrain_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelTrainSlot_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrainSlot_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCancelTrainSlot_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrainSlot_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelTrainSlot_native + * Signature: (JIZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrainSlot_1native__JIZ + (JNIEnv *, jobject, jlong, jint, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelTrainSlot_native + * Signature: (JI)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrainSlot_1native__JI + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Unit + * Method: canCancelTrainSlot_native + * Signature: (JIZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrainSlot_1native__JIZZ + (JNIEnv *, jobject, jlong, jint, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelMorph_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelMorph_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCancelMorph_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelMorph_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelResearch_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelResearch_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCancelResearch_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelResearch_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelUpgrade_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelUpgrade_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCancelUpgrade_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelUpgrade_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithOrWithoutTarget_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithOrWithoutTarget_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithOrWithoutTarget_native + * Signature: (JLbwapi4/TechType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__JLbwapi4_TechType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithOrWithoutTarget_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithOrWithoutTarget_native + * Signature: (JLbwapi4/TechType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__JLbwapi4_TechType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTech_native + * Signature: (JLbwapi4/TechType;Lbwapi4/PositionOrUnit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTech_native + * Signature: (JLbwapi4/TechType;Lbwapi4/PositionOrUnit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTech_native + * Signature: (JLbwapi4/TechType;Lbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTech_native + * Signature: (JLbwapi4/TechType;Lbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTech_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTech_native + * Signature: (JLbwapi4/TechType;Lbwapi4/PositionOrUnit;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithoutTarget_native + * Signature: (JLbwapi4/TechType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithoutTarget_1native__JLbwapi4_TechType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithoutTarget_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithoutTarget_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithoutTarget_native + * Signature: (JLbwapi4/TechType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithoutTarget_1native__JLbwapi4_TechType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Unit;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechPosition_native + * Signature: (JLbwapi4/TechType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechPosition_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTechPosition_native + * Signature: (JLbwapi4/TechType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechPosition_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Position;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Lbwapi4_Position_2ZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechPosition_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Lbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechPosition_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Lbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTechPosition_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Position;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Lbwapi4_Position_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canPlaceCOP_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canPlaceCOP_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canPlaceCOP_native + * Signature: (JLbwapi4/TilePosition;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__JLbwapi4_TilePosition_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canPlaceCOP_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__JLbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canPlaceCOP_native + * Signature: (JLbwapi4/TilePosition;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__JLbwapi4_TilePosition_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_UnitCommand.h b/headers/bwapi4_UnitCommand.h new file mode 100644 index 0000000..6b034f8 --- /dev/null +++ b/headers/bwapi4_UnitCommand.h @@ -0,0 +1,21 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_UnitCommand */ + +#ifndef _Included_bwapi4_UnitCommand +#define _Included_bwapi4_UnitCommand +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_UnitCommand + * Method: getType_native + * Signature: (J)Lbwapi4/UnitCommandType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_getType_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_UnitCommandType.h b/headers/bwapi4_UnitCommandType.h new file mode 100644 index 0000000..fefaf49 --- /dev/null +++ b/headers/bwapi4_UnitCommandType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_UnitCommandType */ + +#ifndef _Included_bwapi4_UnitCommandType +#define _Included_bwapi4_UnitCommandType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_UnitFilter.h b/headers/bwapi4_UnitFilter.h new file mode 100644 index 0000000..bb29f88 --- /dev/null +++ b/headers/bwapi4_UnitFilter.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_UnitFilter */ + +#ifndef _Included_bwapi4_UnitFilter +#define _Included_bwapi4_UnitFilter +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_UnitSizeType.h b/headers/bwapi4_UnitSizeType.h new file mode 100644 index 0000000..a6cbe83 --- /dev/null +++ b/headers/bwapi4_UnitSizeType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_UnitSizeType */ + +#ifndef _Included_bwapi4_UnitSizeType +#define _Included_bwapi4_UnitSizeType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_UnitType.h b/headers/bwapi4_UnitType.h new file mode 100644 index 0000000..5c79932 --- /dev/null +++ b/headers/bwapi4_UnitType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_UnitType */ + +#ifndef _Included_bwapi4_UnitType +#define _Included_bwapi4_UnitType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_Unitset.h b/headers/bwapi4_Unitset.h new file mode 100644 index 0000000..65ea203 --- /dev/null +++ b/headers/bwapi4_Unitset.h @@ -0,0 +1,493 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Unitset */ + +#ifndef _Included_bwapi4_Unitset +#define _Included_bwapi4_Unitset +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Unitset + * Method: getPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: getLoadedUnits_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getLoadedUnits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: getInterceptors_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getInterceptors_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: getLarva_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getLarva_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: setClientInfo_native + * Signature: (JI)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Unitset_setClientInfo_1native__JI + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Unitset + * Method: setClientInfo_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Unitset_setClientInfo_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: setClientInfo_native + * Signature: (JII)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Unitset_setClientInfo_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Unitset + * Method: getUnitsInRadius_native + * Signature: (JILbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getUnitsInRadius_1native + (JNIEnv *, jobject, jlong, jint, jobject); + +/* + * Class: bwapi4_Unitset + * Method: getClosestUnit_native + * Signature: (JLbwapi4/UnitFilter;)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getClosestUnit_1native__JLbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: getClosestUnit_native + * Signature: (JLbwapi4/UnitFilter;I)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getClosestUnit_1native__JLbwapi4_UnitFilter_2I + (JNIEnv *, jobject, jlong, jobject, jint); + +/* + * Class: bwapi4_Unitset + * Method: issueCommand_native + * Signature: (JLbwapi4/UnitCommand;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_issueCommand_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: attack_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_attack_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: attack_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_attack_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: build_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_build_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: build_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_build_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unitset + * Method: buildAddon_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_buildAddon_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: train_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_train_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: morph_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_morph_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: setRallyPoint_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_setRallyPoint_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: move_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_move_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: move_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_move_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: patrol_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_patrol_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: patrol_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_patrol_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: holdPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_holdPosition_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: holdPosition_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_holdPosition_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: stop_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_stop_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: stop_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_stop_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: follow_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_follow_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: follow_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_follow_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: gather_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_gather_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: gather_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_gather_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: returnCargo_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_returnCargo_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: returnCargo_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_returnCargo_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: repair_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_repair_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: repair_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_repair_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: burrow_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_burrow_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: unburrow_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unburrow_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: cloak_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cloak_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: decloak_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_decloak_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: siege_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_siege_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: unsiege_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unsiege_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: lift_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_lift_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: load_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_load_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: load_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_load_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: unloadAll_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unloadAll_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: unloadAll_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unloadAll_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: unloadAll_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unloadAll_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: unloadAll_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unloadAll_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: rightClick_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_rightClick_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: rightClick_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_rightClick_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: haltConstruction_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_haltConstruction_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: cancelConstruction_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelConstruction_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: cancelAddon_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelAddon_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: cancelTrain_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelTrain_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: cancelTrain_native + * Signature: (JI)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelTrain_1native__JI + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Unitset + * Method: cancelMorph_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelMorph_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: cancelResearch_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelResearch_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: cancelUpgrade_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelUpgrade_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: useTech_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_useTech_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: useTech_native + * Signature: (JLbwapi4/TechType;Lbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_useTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_UpgradeType.h b/headers/bwapi4_UpgradeType.h new file mode 100644 index 0000000..a312670 --- /dev/null +++ b/headers/bwapi4_UpgradeType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_UpgradeType */ + +#ifndef _Included_bwapi4_UpgradeType +#define _Included_bwapi4_UpgradeType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_WalkPosition.h b/headers/bwapi4_WalkPosition.h new file mode 100644 index 0000000..7031bfc --- /dev/null +++ b/headers/bwapi4_WalkPosition.h @@ -0,0 +1,61 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_WalkPosition */ + +#ifndef _Included_bwapi4_WalkPosition +#define _Included_bwapi4_WalkPosition +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_WalkPosition + * Method: isValid + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WalkPosition_isValid + (JNIEnv *, jobject); + +/* + * Class: bwapi4_WalkPosition + * Method: makeValid + * Signature: ()Lbwapi4/WalkPosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_WalkPosition_makeValid + (JNIEnv *, jobject); + +/* + * Class: bwapi4_WalkPosition + * Method: getDistance + * Signature: (Lbwapi4/WalkPosition;)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_WalkPosition_getDistance + (JNIEnv *, jobject, jobject); + +/* + * Class: bwapi4_WalkPosition + * Method: getApproxDistance + * Signature: (Lbwapi4/WalkPosition;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_WalkPosition_getApproxDistance + (JNIEnv *, jobject, jobject); + +/* + * Class: bwapi4_WalkPosition + * Method: getLength + * Signature: ()D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_WalkPosition_getLength + (JNIEnv *, jobject); + +/* + * Class: bwapi4_WalkPosition + * Method: hasPath + * Signature: (Lbwapi4/WalkPosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WalkPosition_hasPath + (JNIEnv *, jobject, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers/bwapi4_WeaponType.h b/headers/bwapi4_WeaponType.h new file mode 100644 index 0000000..5d88862 --- /dev/null +++ b/headers/bwapi4_WeaponType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_WeaponType */ + +#ifndef _Included_bwapi4_WeaponType +#define _Included_bwapi4_WeaponType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_AIModule.h b/headers4/bwapi4_AIModule.h new file mode 100644 index 0000000..c2f9575 --- /dev/null +++ b/headers4/bwapi4_AIModule.h @@ -0,0 +1,149 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_AIModule */ + +#ifndef _Included_bwapi4_AIModule +#define _Included_bwapi4_AIModule +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_AIModule + * Method: onStart_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onStart_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_AIModule + * Method: onEnd_native + * Signature: (JZ)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onEnd_1native + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_AIModule + * Method: onFrame_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onFrame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_AIModule + * Method: onSendText_native + * Signature: (JLjava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onSendText_1native + (JNIEnv *, jobject, jlong, jstring); + +/* + * Class: bwapi4_AIModule + * Method: onReceiveText_native + * Signature: (JLbwapi4/Player;Ljava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onReceiveText_1native + (JNIEnv *, jobject, jlong, jobject, jstring); + +/* + * Class: bwapi4_AIModule + * Method: onPlayerLeft_native + * Signature: (JLbwapi4/Player;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onPlayerLeft_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onNukeDetect_native + * Signature: (JLbwapi4/Position;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onNukeDetect_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitDiscover_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitDiscover_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitEvade_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitEvade_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitShow_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitShow_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitHide_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitHide_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitCreate_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitCreate_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitDestroy_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitDestroy_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitMorph_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitMorph_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onUnitRenegade_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitRenegade_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_AIModule + * Method: onSaveGame_native + * Signature: (JLjava/lang/String;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onSaveGame_1native + (JNIEnv *, jobject, jlong, jstring); + +/* + * Class: bwapi4_AIModule + * Method: onUnitComplete_native + * Signature: (JLbwapi4/Unit;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_AIModule_onUnitComplete_1native + (JNIEnv *, jobject, jlong, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_BestFilter.h b/headers4/bwapi4_BestFilter.h new file mode 100644 index 0000000..25506c7 --- /dev/null +++ b/headers4/bwapi4_BestFilter.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_BestFilter */ + +#ifndef _Included_bwapi4_BestFilter +#define _Included_bwapi4_BestFilter +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_BestUnitFilter.h b/headers4/bwapi4_BestUnitFilter.h new file mode 100644 index 0000000..cddb3f2 --- /dev/null +++ b/headers4/bwapi4_BestUnitFilter.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_BestUnitFilter */ + +#ifndef _Included_bwapi4_BestUnitFilter +#define _Included_bwapi4_BestUnitFilter +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_Bullet.h b/headers4/bwapi4_Bullet.h new file mode 100644 index 0000000..0d49eb4 --- /dev/null +++ b/headers4/bwapi4_Bullet.h @@ -0,0 +1,125 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Bullet */ + +#ifndef _Included_bwapi4_Bullet +#define _Included_bwapi4_Bullet +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Bullet + * Method: getID_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Bullet_getID_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: exists_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Bullet_exists_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getPlayer_native + * Signature: (J)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getPlayer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getType_native + * Signature: (J)Lbwapi4/BulletType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getSource_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getSource_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getAngle_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Bullet_getAngle_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getVelocityX_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Bullet_getVelocityX_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getVelocityY_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Bullet_getVelocityY_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getTarget_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getTarget_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getTargetPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Bullet_getTargetPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: getRemoveTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Bullet_getRemoveTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: isVisible_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Bullet_isVisible_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Bullet + * Method: isVisible_native + * Signature: (JLbwapi4/Player;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Bullet_isVisible_1native__JLbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_BulletType.h b/headers4/bwapi4_BulletType.h new file mode 100644 index 0000000..91de9e2 --- /dev/null +++ b/headers4/bwapi4_BulletType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_BulletType */ + +#ifndef _Included_bwapi4_BulletType +#define _Included_bwapi4_BulletType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_Bulletset.h b/headers4/bwapi4_Bulletset.h new file mode 100644 index 0000000..986b189 --- /dev/null +++ b/headers4/bwapi4_Bulletset.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Bulletset */ + +#ifndef _Included_bwapi4_Bulletset +#define _Included_bwapi4_Bulletset +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_Client.h b/headers4/bwapi4_Client.h new file mode 100644 index 0000000..4ac7f4d --- /dev/null +++ b/headers4/bwapi4_Client.h @@ -0,0 +1,45 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Client */ + +#ifndef _Included_bwapi4_Client +#define _Included_bwapi4_Client +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Client + * Method: isConnected_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Client_isConnected_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Client + * Method: connect_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Client_connect_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Client + * Method: disconnect_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Client_disconnect_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Client + * Method: update_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Client_update_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_Color.h b/headers4/bwapi4_Color.h new file mode 100644 index 0000000..85487c9 --- /dev/null +++ b/headers4/bwapi4_Color.h @@ -0,0 +1,37 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Color */ + +#ifndef _Included_bwapi4_Color +#define _Included_bwapi4_Color +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Color + * Method: red_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Color_red_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Color + * Method: green_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Color_green_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Color + * Method: blue_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Color_blue_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_CompareFilter.h b/headers4/bwapi4_CompareFilter.h new file mode 100644 index 0000000..180dece --- /dev/null +++ b/headers4/bwapi4_CompareFilter.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_CompareFilter */ + +#ifndef _Included_bwapi4_CompareFilter +#define _Included_bwapi4_CompareFilter +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_DamageType.h b/headers4/bwapi4_DamageType.h new file mode 100644 index 0000000..cf0d066 --- /dev/null +++ b/headers4/bwapi4_DamageType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_DamageType */ + +#ifndef _Included_bwapi4_DamageType +#define _Included_bwapi4_DamageType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_Error.h b/headers4/bwapi4_Error.h new file mode 100644 index 0000000..d715edf --- /dev/null +++ b/headers4/bwapi4_Error.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Error */ + +#ifndef _Included_bwapi4_Error +#define _Included_bwapi4_Error +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_Event.h b/headers4/bwapi4_Event.h new file mode 100644 index 0000000..6532651 --- /dev/null +++ b/headers4/bwapi4_Event.h @@ -0,0 +1,53 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Event */ + +#ifndef _Included_bwapi4_Event +#define _Included_bwapi4_Event +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Event + * Method: getPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Event_getPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Event + * Method: getText_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Event_getText_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Event + * Method: getUnit_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Event_getUnit_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Event + * Method: getPlayer_native + * Signature: (J)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Event_getPlayer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Event + * Method: isWinner_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Event_isWinner_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_ExplosionType.h b/headers4/bwapi4_ExplosionType.h new file mode 100644 index 0000000..9517002 --- /dev/null +++ b/headers4/bwapi4_ExplosionType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_ExplosionType */ + +#ifndef _Included_bwapi4_ExplosionType +#define _Included_bwapi4_ExplosionType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_Force.h b/headers4/bwapi4_Force.h new file mode 100644 index 0000000..a64f65d --- /dev/null +++ b/headers4/bwapi4_Force.h @@ -0,0 +1,37 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Force */ + +#ifndef _Included_bwapi4_Force +#define _Included_bwapi4_Force +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Force + * Method: getID_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Force_getID_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Force + * Method: getName_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Force_getName_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Force + * Method: getPlayers_native + * Signature: (J)Lbwapi4/Playerset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Force_getPlayers_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_Forceset.h b/headers4/bwapi4_Forceset.h new file mode 100644 index 0000000..2b1d86f --- /dev/null +++ b/headers4/bwapi4_Forceset.h @@ -0,0 +1,21 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Forceset */ + +#ifndef _Included_bwapi4_Forceset +#define _Included_bwapi4_Forceset +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Forceset + * Method: getPlayers_native + * Signature: (J)Lbwapi4/Playerset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Forceset_getPlayers_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_Game.h b/headers4/bwapi4_Game.h new file mode 100644 index 0000000..87bfe25 --- /dev/null +++ b/headers4/bwapi4_Game.h @@ -0,0 +1,1789 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Game */ + +#ifndef _Included_bwapi4_Game +#define _Included_bwapi4_Game +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Game + * Method: getForces_native + * Signature: (J)Lbwapi4/Forceset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getForces_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getPlayers_native + * Signature: (J)Lbwapi4/Playerset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getPlayers_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getAllUnits_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getAllUnits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getMinerals_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getGeysers_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getGeysers_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getNeutralUnits_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getNeutralUnits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getStaticMinerals_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getStaticMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getStaticGeysers_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getStaticGeysers_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getStaticNeutralUnits_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getStaticNeutralUnits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getBullets_native + * Signature: (J)Lbwapi4/Bulletset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBullets_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getForce_native + * Signature: (JI)Lbwapi4/Force; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getForce_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: getPlayer_native + * Signature: (JI)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getPlayer_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: getUnit_native + * Signature: (JI)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnit_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: indexToUnit_native + * Signature: (JI)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_indexToUnit_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: getRegion_native + * Signature: (JI)Lbwapi4/Region; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getRegion_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: getGameType_native + * Signature: (J)Lbwapi4/GameType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getGameType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getLatency_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getLatency_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getFrameCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getFrameCount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getReplayFrameCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getReplayFrameCount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getFPS_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getFPS_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getAverageFPS_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Game_getAverageFPS_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getMousePosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getMousePosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getMouseState_native + * Signature: (JLbwapi4/MouseButton;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_getMouseState_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: getKeyState_native + * Signature: (JLbwapi4/Key;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_getKeyState_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: getScreenPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getScreenPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setScreenPosition_native + * Signature: (JII)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setScreenPosition_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: setScreenPosition_native + * Signature: (JLbwapi4/Position;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setScreenPosition_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: pingMinimap_native + * Signature: (JII)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_pingMinimap_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: pingMinimap_native + * Signature: (JLbwapi4/Position;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_pingMinimap_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: isFlagEnabled_native + * Signature: (JI)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isFlagEnabled_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: enableFlag_native + * Signature: (JI)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_enableFlag_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: getUnitsOnTile_native + * Signature: (JIILbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsOnTile_1native__JIILbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: getUnitsOnTile_native + * Signature: (JLbwapi4/TilePosition;Lbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsOnTile_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getUnitsInRectangle_native + * Signature: (JIIIILbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsInRectangle_1native__JIIIILbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: getUnitsInRectangle_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsInRectangle_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getUnitsInRadius_native + * Signature: (JIIILbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsInRadius_1native__JIIILbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: getUnitsInRadius_native + * Signature: (JLbwapi4/Position;ILbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getUnitsInRadius_1native__JLbwapi4_Position_2ILbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: getClosestUnit_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitFilter;)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnit_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getClosestUnit_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitFilter;I)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnit_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2I + (JNIEnv *, jobject, jlong, jobject, jobject, jint); + +/* + * Class: bwapi4_Game + * Method: getClosestUnitInRectangle_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitFilter;III)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnitInRectangle_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2III + (JNIEnv *, jobject, jlong, jobject, jobject, jint, jint, jint); + +/* + * Class: bwapi4_Game + * Method: getClosestUnitInRectangle_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitFilter;II)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnitInRectangle_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2II + (JNIEnv *, jobject, jlong, jobject, jobject, jint, jint); + +/* + * Class: bwapi4_Game + * Method: getClosestUnitInRectangle_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitFilter;I)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnitInRectangle_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2I + (JNIEnv *, jobject, jlong, jobject, jobject, jint); + +/* + * Class: bwapi4_Game + * Method: getClosestUnitInRectangle_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitFilter;)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnitInRectangle_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getClosestUnitInRectangle_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitFilter;IIII)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getClosestUnitInRectangle_1native__JLbwapi4_Position_2Lbwapi4_UnitFilter_2IIII + (JNIEnv *, jobject, jlong, jobject, jobject, jint, jint, jint, jint); + +/* + * Class: bwapi4_Game + * Method: getBestUnit_native + * Signature: (JLbwapi4/BestUnitFilter;Lbwapi4/UnitFilter;Lbwapi4/Position;)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBestUnit_1native__JLbwapi4_BestUnitFilter_2Lbwapi4_UnitFilter_2Lbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getBestUnit_native + * Signature: (JLbwapi4/BestUnitFilter;Lbwapi4/UnitFilter;)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBestUnit_1native__JLbwapi4_BestUnitFilter_2Lbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getBestUnit_native + * Signature: (JLbwapi4/BestUnitFilter;Lbwapi4/UnitFilter;Lbwapi4/Position;I)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBestUnit_1native__JLbwapi4_BestUnitFilter_2Lbwapi4_UnitFilter_2Lbwapi4_Position_2I + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jint); + +/* + * Class: bwapi4_Game + * Method: getLastError_native + * Signature: (J)Lbwapi4/Error; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getLastError_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setLastError_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setLastError_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setLastError_native + * Signature: (JLbwapi4/Error;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setLastError_1native__JLbwapi4_Error_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: mapWidth_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_mapWidth_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: mapHeight_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_mapHeight_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: mapFileName_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Game_mapFileName_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: mapPathName_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Game_mapPathName_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: mapName_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Game_mapName_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: mapHash_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Game_mapHash_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: isWalkable_native + * Signature: (JII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isWalkable_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: isWalkable_native + * Signature: (JLbwapi4/WalkPosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isWalkable_1native__JLbwapi4_WalkPosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: isBuildable_native + * Signature: (JII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isBuildable_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: isBuildable_native + * Signature: (JIIZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isBuildable_1native__JIIZ + (JNIEnv *, jobject, jlong, jint, jint, jboolean); + +/* + * Class: bwapi4_Game + * Method: isBuildable_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isBuildable_1native__JLbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: isBuildable_native + * Signature: (JLbwapi4/TilePosition;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isBuildable_1native__JLbwapi4_TilePosition_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: isVisible_native + * Signature: (JII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isVisible_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: isVisible_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isVisible_1native__JLbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: isExplored_native + * Signature: (JII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isExplored_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: isExplored_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isExplored_1native__JLbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: hasCreep_native + * Signature: (JII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasCreep_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: hasCreep_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasCreep_1native__JLbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPowerPrecise_native + * Signature: (JII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPowerPrecise_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: hasPowerPrecise_native + * Signature: (JIILbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPowerPrecise_1native__JIILbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPowerPrecise_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPowerPrecise_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPowerPrecise_native + * Signature: (JLbwapi4/Position;Lbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPowerPrecise_1native__JLbwapi4_Position_2Lbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JIILbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JIILbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JLbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JLbwapi4/TilePosition;Lbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JIIII)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JIIII + (JNIEnv *, jobject, jlong, jint, jint, jint, jint); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JIIIILbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JIIIILbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JLbwapi4/TilePosition;II)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JLbwapi4_TilePosition_2II + (JNIEnv *, jobject, jlong, jobject, jint, jint); + +/* + * Class: bwapi4_Game + * Method: hasPower_native + * Signature: (JLbwapi4/TilePosition;IILbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPower_1native__JLbwapi4_TilePosition_2IILbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: canBuildHere_native + * Signature: (JLbwapi4/TilePosition;Lbwapi4/UnitType;Lbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canBuildHere_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitType_2Lbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: canBuildHere_native + * Signature: (JLbwapi4/TilePosition;Lbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canBuildHere_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: canBuildHere_native + * Signature: (JLbwapi4/TilePosition;Lbwapi4/UnitType;Lbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canBuildHere_1native__JLbwapi4_TilePosition_2Lbwapi4_UnitType_2Lbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: canMake_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canMake_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: canMake_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canMake_1native__JLbwapi4_UnitType_2Lbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: canResearch_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canResearch_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: canResearch_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canResearch_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: canResearch_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canResearch_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: canUpgrade_native + * Signature: (JLbwapi4/UpgradeType;Lbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canUpgrade_1native__JLbwapi4_UpgradeType_2Lbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: canUpgrade_native + * Signature: (JLbwapi4/UpgradeType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canUpgrade_1native__JLbwapi4_UpgradeType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: canUpgrade_native + * Signature: (JLbwapi4/UpgradeType;Lbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_canUpgrade_1native__JLbwapi4_UpgradeType_2Lbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: vPrintf_native + * Signature: (JLjava/lang/String;[Ljava/lang/Object;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_vPrintf_1native + (JNIEnv *, jobject, jlong, jstring, jobjectArray); + +/* + * Class: bwapi4_Game + * Method: vSendText_native + * Signature: (JLjava/lang/String;[Ljava/lang/Object;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_vSendText_1native + (JNIEnv *, jobject, jlong, jstring, jobjectArray); + +/* + * Class: bwapi4_Game + * Method: vSendTextEx_native + * Signature: (JZLjava/lang/String;[Ljava/lang/Object;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_vSendTextEx_1native + (JNIEnv *, jobject, jlong, jboolean, jstring, jobjectArray); + +/* + * Class: bwapi4_Game + * Method: isInGame_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isInGame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: isMultiplayer_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isMultiplayer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: isBattleNet_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isBattleNet_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: isPaused_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isPaused_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: isReplay_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isReplay_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: pauseGame_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_pauseGame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: resumeGame_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_resumeGame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: leaveGame_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_leaveGame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: restartGame_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_restartGame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setLocalSpeed_native + * Signature: (JI)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setLocalSpeed_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: issueCommand_native + * Signature: (JLbwapi4/Unitset;Lbwapi4/UnitCommand;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_issueCommand_1native + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getSelectedUnits_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getSelectedUnits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: self_native + * Signature: (J)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_self_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: enemy_native + * Signature: (J)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_enemy_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: neutral_native + * Signature: (J)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_neutral_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: allies_native + * Signature: (J)Lbwapi4/Playerset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_allies_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: enemies_native + * Signature: (J)Lbwapi4/Playerset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_enemies_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: observers_native + * Signature: (J)Lbwapi4/Playerset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_observers_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setTextSize_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setTextSize_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setTextSize_native + * Signature: (JLbwapi4/Text/Size/Enum;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setTextSize_1native__JLbwapi4_Text_Size_Enum_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: vDrawText_native + * Signature: (JLbwapi4/CoordinateType/Enum;IILjava/lang/String;[Ljava/lang/Object;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_vDrawText_1native + (JNIEnv *, jobject, jlong, jobject, jint, jint, jstring, jobjectArray); + +/* + * Class: bwapi4_Game + * Method: drawBox_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBox_1native__JLbwapi4_CoordinateType_Enum_2IIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawBox_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBox_1native__JLbwapi4_CoordinateType_Enum_2IIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawBoxMap_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMap_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawBoxMap_native + * Signature: (JIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMap_1native__JIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawBoxMap_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMap_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawBoxMap_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMap_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawBoxMouse_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMouse_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawBoxMouse_native + * Signature: (JIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMouse_1native__JIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawBoxMouse_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMouse_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawBoxMouse_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxMouse_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawBoxScreen_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxScreen_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawBoxScreen_native + * Signature: (JIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxScreen_1native__JIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawBoxScreen_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxScreen_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawBoxScreen_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawBoxScreen_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawTriangle_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangle_1native__JLbwapi4_CoordinateType_Enum_2IIIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawTriangle_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangle_1native__JLbwapi4_CoordinateType_Enum_2IIIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMap_native + * Signature: (JIIIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMap_1native__JIIIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMap_native + * Signature: (JIIIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMap_1native__JIIIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMap_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMap_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMap_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMap_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMouse_native + * Signature: (JIIIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMouse_1native__JIIIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMouse_native + * Signature: (JIIIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMouse_1native__JIIIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMouse_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMouse_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawTriangleMouse_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleMouse_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawTriangleScreen_native + * Signature: (JIIIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleScreen_1native__JIIIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawTriangleScreen_native + * Signature: (JIIIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleScreen_1native__JIIIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawTriangleScreen_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleScreen_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawTriangleScreen_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawTriangleScreen_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawCircle_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircle_1native__JLbwapi4_CoordinateType_Enum_2IIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawCircle_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircle_1native__JLbwapi4_CoordinateType_Enum_2IIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawCircleMap_native + * Signature: (JIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMap_1native__JIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawCircleMap_native + * Signature: (JIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMap_1native__JIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawCircleMap_native + * Signature: (JLbwapi4/Position;ILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMap_1native__JLbwapi4_Position_2ILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawCircleMap_native + * Signature: (JLbwapi4/Position;ILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMap_1native__JLbwapi4_Position_2ILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawCircleMouse_native + * Signature: (JIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMouse_1native__JIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawCircleMouse_native + * Signature: (JIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMouse_1native__JIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawCircleMouse_native + * Signature: (JLbwapi4/Position;ILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMouse_1native__JLbwapi4_Position_2ILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawCircleMouse_native + * Signature: (JLbwapi4/Position;ILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleMouse_1native__JLbwapi4_Position_2ILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawCircleScreen_native + * Signature: (JIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleScreen_1native__JIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawCircleScreen_native + * Signature: (JIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleScreen_1native__JIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawCircleScreen_native + * Signature: (JLbwapi4/Position;ILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleScreen_1native__JLbwapi4_Position_2ILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawCircleScreen_native + * Signature: (JLbwapi4/Position;ILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawCircleScreen_1native__JLbwapi4_Position_2ILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawEllipse_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipse_1native__JLbwapi4_CoordinateType_Enum_2IIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawEllipse_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipse_1native__JLbwapi4_CoordinateType_Enum_2IIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMap_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMap_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMap_native + * Signature: (JIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMap_1native__JIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMap_native + * Signature: (JLbwapi4/Position;IILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMap_1native__JLbwapi4_Position_2IILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMap_native + * Signature: (JLbwapi4/Position;IILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMap_1native__JLbwapi4_Position_2IILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMouse_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMouse_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMouse_native + * Signature: (JIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMouse_1native__JIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMouse_native + * Signature: (JLbwapi4/Position;IILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMouse_1native__JLbwapi4_Position_2IILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawEllipseMouse_native + * Signature: (JLbwapi4/Position;IILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseMouse_1native__JLbwapi4_Position_2IILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawEllipseScreen_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseScreen_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawEllipseScreen_native + * Signature: (JIIIILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseScreen_1native__JIIIILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawEllipseScreen_native + * Signature: (JLbwapi4/Position;IILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseScreen_1native__JLbwapi4_Position_2IILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawEllipseScreen_native + * Signature: (JLbwapi4/Position;IILbwapi4/Color;Z)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawEllipseScreen_1native__JLbwapi4_Position_2IILbwapi4_Color_2Z + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: drawDot_native + * Signature: (JLbwapi4/CoordinateType/Enum;IILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDot_1native + (JNIEnv *, jobject, jlong, jobject, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawDotMap_native + * Signature: (JIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotMap_1native__JIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawDotMap_native + * Signature: (JLbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotMap_1native__JLbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawDotMouse_native + * Signature: (JIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotMouse_1native__JIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawDotMouse_native + * Signature: (JLbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotMouse_1native__JLbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawDotScreen_native + * Signature: (JIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotScreen_1native__JIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawDotScreen_native + * Signature: (JLbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawDotScreen_1native__JLbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawLine_native + * Signature: (JLbwapi4/CoordinateType/Enum;IIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLine_1native + (JNIEnv *, jobject, jlong, jobject, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawLineMap_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineMap_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawLineMap_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineMap_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawLineMouse_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineMouse_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawLineMouse_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineMouse_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: drawLineScreen_native + * Signature: (JIIIILbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineScreen_1native__JIIIILbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jint, jint, jint, jint, jobject); + +/* + * Class: bwapi4_Game + * Method: drawLineScreen_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;Lbwapi4/Color;)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_drawLineScreen_1native__JLbwapi4_Position_2Lbwapi4_Position_2Lbwapi4_Color_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getLatencyFrames_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getLatencyFrames_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getLatencyTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getLatencyTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getRemainingLatencyFrames_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getRemainingLatencyFrames_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getRemainingLatencyTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getRemainingLatencyTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getRevision_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getRevision_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: isDebug_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isDebug_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: isLatComEnabled_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isLatComEnabled_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setLatCom_native + * Signature: (JZ)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setLatCom_1native + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Game + * Method: isGUIEnabled_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_isGUIEnabled_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setGUI_native + * Signature: (JZ)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setGUI_1native + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Game + * Method: getInstanceNumber_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getInstanceNumber_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getAPM_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getAPM_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getAPM_native + * Signature: (JZ)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getAPM_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Game + * Method: setMap_native + * Signature: (JLjava/lang/String;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setMap_1native + (JNIEnv *, jobject, jlong, jstring); + +/* + * Class: bwapi4_Game + * Method: setFrameSkip_native + * Signature: (JI)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setFrameSkip_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: hasPath_native + * Signature: (JLbwapi4/Position;Lbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_hasPath_1native + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: setAlliance_native + * Signature: (JLbwapi4/Player;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setAlliance_1native__JLbwapi4_Player_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: setAlliance_native + * Signature: (JLbwapi4/Player;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setAlliance_1native__JLbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: setAlliance_native + * Signature: (JLbwapi4/Player;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setAlliance_1native__JLbwapi4_Player_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Game + * Method: setVision_native + * Signature: (JLbwapi4/Player;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setVision_1native__JLbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: setVision_native + * Signature: (JLbwapi4/Player;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setVision_1native__JLbwapi4_Player_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Game + * Method: setCommandOptimizationLevel_native + * Signature: (JI)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Game_setCommandOptimizationLevel_1native + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Game + * Method: countdownTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_countdownTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: getRegionAt_native + * Signature: (JII)Lbwapi4/Region; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getRegionAt_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Game + * Method: getRegionAt_native + * Signature: (JLbwapi4/Position;)Lbwapi4/Region; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getRegionAt_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Game + * Method: getLastEventTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getLastEventTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setRevealAll_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setRevealAll_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Game + * Method: setRevealAll_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Game_setRevealAll_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Game + * Method: getBuildLocation_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;I)Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBuildLocation_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2I + (JNIEnv *, jobject, jlong, jobject, jobject, jint); + +/* + * Class: bwapi4_Game + * Method: getBuildLocation_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;)Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBuildLocation_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getBuildLocation_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;IZ)Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Game_getBuildLocation_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2IZ + (JNIEnv *, jobject, jlong, jobject, jobject, jint, jboolean); + +/* + * Class: bwapi4_Game + * Method: getDamageFrom_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/UnitType;Lbwapi4/Player;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageFrom_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2Lbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getDamageFrom_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageFrom_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getDamageFrom_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/UnitType;Lbwapi4/Player;Lbwapi4/Player;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageFrom_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2Lbwapi4_Player_2Lbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getDamageTo_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/UnitType;Lbwapi4/Player;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageTo_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2Lbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getDamageTo_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageTo_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Game + * Method: getDamageTo_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/UnitType;Lbwapi4/Player;Lbwapi4/Player;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Game_getDamageTo_1native__JLbwapi4_UnitType_2Lbwapi4_UnitType_2Lbwapi4_Player_2Lbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject, jobject, jobject, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_GameType.h b/headers4/bwapi4_GameType.h new file mode 100644 index 0000000..3a0a18e --- /dev/null +++ b/headers4/bwapi4_GameType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_GameType */ + +#ifndef _Included_bwapi4_GameType +#define _Included_bwapi4_GameType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_GameWrapper.h b/headers4/bwapi4_GameWrapper.h new file mode 100644 index 0000000..0e36b0a --- /dev/null +++ b/headers4/bwapi4_GameWrapper.h @@ -0,0 +1,21 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_GameWrapper */ + +#ifndef _Included_bwapi4_GameWrapper +#define _Included_bwapi4_GameWrapper +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_GameWrapper + * Method: flush_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_GameWrapper_flush_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_InterfaceEvent.h b/headers4/bwapi4_InterfaceEvent.h new file mode 100644 index 0000000..4b198e6 --- /dev/null +++ b/headers4/bwapi4_InterfaceEvent.h @@ -0,0 +1,29 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_InterfaceEvent */ + +#ifndef _Included_bwapi4_InterfaceEvent +#define _Included_bwapi4_InterfaceEvent +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_InterfaceEvent + * Method: isFinished_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_InterfaceEvent_isFinished_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_InterfaceEvent + * Method: removeEvent_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_InterfaceEvent_removeEvent_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_Key.h b/headers4/bwapi4_Key.h new file mode 100644 index 0000000..aa8ceca --- /dev/null +++ b/headers4/bwapi4_Key.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Key */ + +#ifndef _Included_bwapi4_Key +#define _Included_bwapi4_Key +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_MouseButton.h b/headers4/bwapi4_MouseButton.h new file mode 100644 index 0000000..9937859 --- /dev/null +++ b/headers4/bwapi4_MouseButton.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_MouseButton */ + +#ifndef _Included_bwapi4_MouseButton +#define _Included_bwapi4_MouseButton +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_Order.h b/headers4/bwapi4_Order.h new file mode 100644 index 0000000..d664ddd --- /dev/null +++ b/headers4/bwapi4_Order.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Order */ + +#ifndef _Included_bwapi4_Order +#define _Included_bwapi4_Order +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_Player.h b/headers4/bwapi4_Player.h new file mode 100644 index 0000000..361040f --- /dev/null +++ b/headers4/bwapi4_Player.h @@ -0,0 +1,493 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Player */ + +#ifndef _Included_bwapi4_Player +#define _Included_bwapi4_Player +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Player + * Method: getID_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getID_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getName_native + * Signature: (J)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_bwapi4_Player_getName_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getRace_native + * Signature: (J)Lbwapi4/Race; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getRace_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getType_native + * Signature: (J)Lbwapi4/PlayerType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getForce_native + * Signature: (J)Lbwapi4/Force; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getForce_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: isAlly_native + * Signature: (JLbwapi4/Player;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isAlly_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: isEnemy_native + * Signature: (JLbwapi4/Player;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isEnemy_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: isNeutral_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isNeutral_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getStartLocation_native + * Signature: (J)Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getStartLocation_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: isVictorious_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isVictorious_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: isDefeated_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isDefeated_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: leftGame_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_leftGame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: minerals_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_minerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: gas_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_gas_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: gatheredMinerals_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_gatheredMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: gatheredGas_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_gatheredGas_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: repairedMinerals_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_repairedMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: repairedGas_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_repairedGas_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: refundedMinerals_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_refundedMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: refundedGas_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_refundedGas_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: spentMinerals_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_spentMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: spentGas_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_spentGas_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: supplyTotal_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_supplyTotal_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: supplyTotal_native + * Signature: (JLbwapi4/Race;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_supplyTotal_1native__JLbwapi4_Race_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: supplyUsed_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_supplyUsed_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: supplyUsed_native + * Signature: (JLbwapi4/Race;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_supplyUsed_1native__JLbwapi4_Race_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: allUnitCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_allUnitCount_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: allUnitCount_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_allUnitCount_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: visibleUnitCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_visibleUnitCount_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: visibleUnitCount_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_visibleUnitCount_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: completedUnitCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_completedUnitCount_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: completedUnitCount_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_completedUnitCount_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: incompleteUnitCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_incompleteUnitCount_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: incompleteUnitCount_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_incompleteUnitCount_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: deadUnitCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_deadUnitCount_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: deadUnitCount_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_deadUnitCount_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: killedUnitCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_killedUnitCount_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: killedUnitCount_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_killedUnitCount_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: getUpgradeLevel_native + * Signature: (JLbwapi4/UpgradeType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getUpgradeLevel_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: hasResearched_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_hasResearched_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: isResearching_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isResearching_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: isUpgrading_native + * Signature: (JLbwapi4/UpgradeType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isUpgrading_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: getColor_native + * Signature: (J)Lbwapi4/Color; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Player_getColor_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getTextColor_native + * Signature: (J)C + */ +JNIEXPORT jchar JNICALL Java_bwapi4_Player_getTextColor_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: maxEnergy_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_maxEnergy_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: topSpeed_native + * Signature: (JLbwapi4/UnitType;)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Player_topSpeed_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: weaponMaxRange_native + * Signature: (JLbwapi4/WeaponType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_weaponMaxRange_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: sightRange_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_sightRange_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: weaponDamageCooldown_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_weaponDamageCooldown_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: armor_native + * Signature: (JLbwapi4/UnitType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_armor_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: damage_native + * Signature: (JLbwapi4/WeaponType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_damage_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: getUnitScore_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getUnitScore_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getKillScore_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getKillScore_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getBuildingScore_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getBuildingScore_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getRazingScore_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getRazingScore_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getCustomScore_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getCustomScore_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: isObserver_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isObserver_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Player + * Method: getMaxUpgradeLevel_native + * Signature: (JLbwapi4/UpgradeType;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Player_getMaxUpgradeLevel_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: isResearchAvailable_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isResearchAvailable_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Player + * Method: isUnitAvailable_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Player_isUnitAvailable_1native + (JNIEnv *, jobject, jlong, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_PlayerType.h b/headers4/bwapi4_PlayerType.h new file mode 100644 index 0000000..7a56deb --- /dev/null +++ b/headers4/bwapi4_PlayerType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_PlayerType */ + +#ifndef _Included_bwapi4_PlayerType +#define _Included_bwapi4_PlayerType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_Playerset.h b/headers4/bwapi4_Playerset.h new file mode 100644 index 0000000..75e9a08 --- /dev/null +++ b/headers4/bwapi4_Playerset.h @@ -0,0 +1,45 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Playerset */ + +#ifndef _Included_bwapi4_Playerset +#define _Included_bwapi4_Playerset +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Playerset + * Method: getUnits_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Playerset_getUnits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Playerset + * Method: setAlliance_native + * Signature: (JZ)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Playerset_setAlliance_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Playerset + * Method: setAlliance_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Playerset_setAlliance_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Playerset + * Method: setAlliance_native + * Signature: (JZZ)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Playerset_setAlliance_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_Point.h b/headers4/bwapi4_Point.h new file mode 100644 index 0000000..ae67c38 --- /dev/null +++ b/headers4/bwapi4_Point.h @@ -0,0 +1,29 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Point */ + +#ifndef _Included_bwapi4_Point +#define _Included_bwapi4_Point +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Point + * Method: isValid_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Point_isValid_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Point + * Method: getLength_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Point_getLength_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_Position.h b/headers4/bwapi4_Position.h new file mode 100644 index 0000000..0ce0ea9 --- /dev/null +++ b/headers4/bwapi4_Position.h @@ -0,0 +1,61 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Position */ + +#ifndef _Included_bwapi4_Position +#define _Included_bwapi4_Position +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Position + * Method: isValid + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Position_isValid + (JNIEnv *, jobject); + +/* + * Class: bwapi4_Position + * Method: makeValid + * Signature: ()Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Position_makeValid + (JNIEnv *, jobject); + +/* + * Class: bwapi4_Position + * Method: getDistance + * Signature: (Lbwapi4/Position;)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Position_getDistance + (JNIEnv *, jobject, jobject); + +/* + * Class: bwapi4_Position + * Method: getApproxDistance + * Signature: (Lbwapi4/Position;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Position_getApproxDistance + (JNIEnv *, jobject, jobject); + +/* + * Class: bwapi4_Position + * Method: getLength + * Signature: ()D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Position_getLength + (JNIEnv *, jobject); + +/* + * Class: bwapi4_Position + * Method: hasPath + * Signature: (Lbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Position_hasPath + (JNIEnv *, jobject, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_PositionOrUnit.h b/headers4/bwapi4_PositionOrUnit.h new file mode 100644 index 0000000..08db275 --- /dev/null +++ b/headers4/bwapi4_PositionOrUnit.h @@ -0,0 +1,45 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_PositionOrUnit */ + +#ifndef _Included_bwapi4_PositionOrUnit +#define _Included_bwapi4_PositionOrUnit +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_PositionOrUnit + * Method: isUnit_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_PositionOrUnit_isUnit_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_PositionOrUnit + * Method: getUnit_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_PositionOrUnit_getUnit_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_PositionOrUnit + * Method: isPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_PositionOrUnit_isPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_PositionOrUnit + * Method: getPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_PositionOrUnit_getPosition_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_Race.h b/headers4/bwapi4_Race.h new file mode 100644 index 0000000..7a8433f --- /dev/null +++ b/headers4/bwapi4_Race.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Race */ + +#ifndef _Included_bwapi4_Race +#define _Included_bwapi4_Race +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_Region.h b/headers4/bwapi4_Region.h new file mode 100644 index 0000000..959830a --- /dev/null +++ b/headers4/bwapi4_Region.h @@ -0,0 +1,125 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Region */ + +#ifndef _Included_bwapi4_Region +#define _Included_bwapi4_Region +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Region + * Method: getID_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getID_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getRegionGroupID_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getRegionGroupID_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getCenter_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Region_getCenter_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: isHigherGround_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Region_isHigherGround_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getDefensePriority_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getDefensePriority_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: isAccessible_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Region_isAccessible_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getBoundsLeft_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getBoundsLeft_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getBoundsTop_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getBoundsTop_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getBoundsRight_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getBoundsRight_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getBoundsBottom_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getBoundsBottom_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getClosestAccessibleRegion_native + * Signature: (J)Lbwapi4/Region; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Region_getClosestAccessibleRegion_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getClosestInaccessibleRegion_native + * Signature: (J)Lbwapi4/Region; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Region_getClosestInaccessibleRegion_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Region + * Method: getDistance_native + * Signature: (JLbwapi4/Region;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Region_getDistance_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Region + * Method: getUnits_native + * Signature: (JLbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Region_getUnits_1native + (JNIEnv *, jobject, jlong, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_Regionset.h b/headers4/bwapi4_Regionset.h new file mode 100644 index 0000000..21eb2f4 --- /dev/null +++ b/headers4/bwapi4_Regionset.h @@ -0,0 +1,29 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Regionset */ + +#ifndef _Included_bwapi4_Regionset +#define _Included_bwapi4_Regionset +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Regionset + * Method: getCenter_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Regionset_getCenter_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Regionset + * Method: getUnits_native + * Signature: (JLbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Regionset_getUnits_1native + (JNIEnv *, jobject, jlong, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_TechType.h b/headers4/bwapi4_TechType.h new file mode 100644 index 0000000..c7dd387 --- /dev/null +++ b/headers4/bwapi4_TechType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_TechType */ + +#ifndef _Included_bwapi4_TechType +#define _Included_bwapi4_TechType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_TilePosition.h b/headers4/bwapi4_TilePosition.h new file mode 100644 index 0000000..268685c --- /dev/null +++ b/headers4/bwapi4_TilePosition.h @@ -0,0 +1,53 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_TilePosition */ + +#ifndef _Included_bwapi4_TilePosition +#define _Included_bwapi4_TilePosition +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_TilePosition + * Method: hasPath + * Signature: (Lbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_TilePosition_hasPath + (JNIEnv *, jobject, jobject); + +/* + * Class: bwapi4_TilePosition + * Method: isValid + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_TilePosition_isValid + (JNIEnv *, jobject); + +/* + * Class: bwapi4_TilePosition + * Method: makeValid + * Signature: ()Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_TilePosition_makeValid + (JNIEnv *, jobject); + +/* + * Class: bwapi4_TilePosition + * Method: getDistance + * Signature: (Lbwapi4/TilePosition;)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_TilePosition_getDistance + (JNIEnv *, jobject, jobject); + +/* + * Class: bwapi4_TilePosition + * Method: getLength + * Signature: ()D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_TilePosition_getLength + (JNIEnv *, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_UnaryFilter.h b/headers4/bwapi4_UnaryFilter.h new file mode 100644 index 0000000..5458efa --- /dev/null +++ b/headers4/bwapi4_UnaryFilter.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_UnaryFilter */ + +#ifndef _Included_bwapi4_UnaryFilter +#define _Included_bwapi4_UnaryFilter +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_Unit.h b/headers4/bwapi4_Unit.h new file mode 100644 index 0000000..95b845f --- /dev/null +++ b/headers4/bwapi4_Unit.h @@ -0,0 +1,3669 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Unit */ + +#ifndef _Included_bwapi4_Unit +#define _Included_bwapi4_Unit +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Unit + * Method: getID_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getID_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: exists_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_exists_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getReplayID_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getReplayID_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getPlayer_native + * Signature: (J)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getPlayer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getType_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getTilePosition_native + * Signature: (J)Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTilePosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getAngle_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Unit_getAngle_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getVelocityX_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Unit_getVelocityX_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getVelocityY_native + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_Unit_getVelocityY_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRegion_native + * Signature: (J)Lbwapi4/Region; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getRegion_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getLeft_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getLeft_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getTop_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getTop_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRight_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRight_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getBottom_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getBottom_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getHitPoints_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getHitPoints_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getShields_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getShields_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getEnergy_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getEnergy_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getResources_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getResources_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getResourceGroup_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getResourceGroup_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getDistance_native + * Signature: (JLbwapi4/PositionOrUnit;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getDistance_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: hasPath_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_hasPath_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: getLastCommandFrame_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getLastCommandFrame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getLastAttackingPlayer_native + * Signature: (J)Lbwapi4/Player; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getLastAttackingPlayer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getInitialType_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getInitialType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getInitialPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getInitialPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getInitialTilePosition_native + * Signature: (J)Lbwapi4/TilePosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getInitialTilePosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getInitialHitPoints_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getInitialHitPoints_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getInitialResources_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getInitialResources_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getKillCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getKillCount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getAcidSporeCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getAcidSporeCount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getInterceptorCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getInterceptorCount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getScarabCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getScarabCount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getSpiderMineCount_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getSpiderMineCount_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getGroundWeaponCooldown_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getGroundWeaponCooldown_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getAirWeaponCooldown_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getAirWeaponCooldown_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getSpellCooldown_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getSpellCooldown_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getDefenseMatrixPoints_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getDefenseMatrixPoints_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getDefenseMatrixTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getDefenseMatrixTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getEnsnareTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getEnsnareTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getIrradiateTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getIrradiateTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getLockdownTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getLockdownTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getMaelstromTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getMaelstromTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getOrderTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getOrderTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getPlagueTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getPlagueTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRemoveTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRemoveTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getStasisTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getStasisTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getStimTimer_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getStimTimer_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getBuildType_native + * Signature: (J)Lbwapi4/UnitType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getBuildType_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getTech_native + * Signature: (J)Lbwapi4/TechType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTech_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getUpgrade_native + * Signature: (J)Lbwapi4/UpgradeType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getUpgrade_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRemainingBuildTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRemainingBuildTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRemainingTrainTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRemainingTrainTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRemainingResearchTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRemainingResearchTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRemainingUpgradeTime_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getRemainingUpgradeTime_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getBuildUnit_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getBuildUnit_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getTarget_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTarget_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getTargetPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTargetPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getOrder_native + * Signature: (J)Lbwapi4/Order; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getOrder_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getSecondaryOrder_native + * Signature: (J)Lbwapi4/Order; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getSecondaryOrder_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getOrderTarget_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getOrderTarget_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getOrderTargetPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getOrderTargetPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRallyPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getRallyPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getRallyUnit_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getRallyUnit_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getAddon_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getAddon_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getNydusExit_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getNydusExit_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getPowerUp_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getPowerUp_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getTransport_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getTransport_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getLoadedUnits_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getLoadedUnits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getSpaceRemaining_native + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_Unit_getSpaceRemaining_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getCarrier_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getCarrier_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getInterceptors_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getInterceptors_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getHatchery_native + * Signature: (J)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getHatchery_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getLarva_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getLarva_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: getUnitsInRadius_native + * Signature: (JILbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getUnitsInRadius_1native + (JNIEnv *, jobject, jlong, jint, jobject); + +/* + * Class: bwapi4_Unit + * Method: getUnitsInWeaponRange_native + * Signature: (JLbwapi4/WeaponType;Lbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getUnitsInWeaponRange_1native + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unit + * Method: getClosestUnit_native + * Signature: (JLbwapi4/UnitFilter;)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getClosestUnit_1native__JLbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: getClosestUnit_native + * Signature: (JLbwapi4/UnitFilter;I)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unit_getClosestUnit_1native__JLbwapi4_UnitFilter_2I + (JNIEnv *, jobject, jlong, jobject, jint); + +/* + * Class: bwapi4_Unit + * Method: hasNuke_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_hasNuke_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isAccelerating_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isAccelerating_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isAttacking_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isAttacking_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isAttackFrame_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isAttackFrame_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isBeingConstructed_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBeingConstructed_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isBeingGathered_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBeingGathered_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isBeingHealed_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBeingHealed_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isBlind_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBlind_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isBraking_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBraking_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isBurrowed_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isBurrowed_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isCarryingGas_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isCarryingGas_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isCarryingMinerals_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isCarryingMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isCloaked_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isCloaked_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isCompleted_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isCompleted_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isConstructing_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isConstructing_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isDefenseMatrixed_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isDefenseMatrixed_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isDetected_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isDetected_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isEnsnared_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isEnsnared_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isFlying_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isFlying_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isFollowing_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isFollowing_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isGatheringGas_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isGatheringGas_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isGatheringMinerals_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isGatheringMinerals_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isHallucination_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isHallucination_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isHoldingPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isHoldingPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isIdle_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isIdle_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isInterruptible_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isInterruptible_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isInvincible_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isInvincible_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isInWeaponRange_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isInWeaponRange_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: isIrradiated_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isIrradiated_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isLifted_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isLifted_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isLoaded_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isLoaded_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isLockedDown_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isLockedDown_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isMaelstrommed_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isMaelstrommed_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isMorphing_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isMorphing_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isMoving_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isMoving_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isParasited_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isParasited_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isPatrolling_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isPatrolling_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isPlagued_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isPlagued_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isRepairing_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isRepairing_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isResearching_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isResearching_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isSelected_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isSelected_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isSieged_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isSieged_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isStartingAttack_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isStartingAttack_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isStasised_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isStasised_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isStimmed_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isStimmed_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isStuck_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isStuck_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isTraining_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isTraining_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isUnderAttack_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isUnderAttack_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isUnderDarkSwarm_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isUnderDarkSwarm_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isUnderDisruptionWeb_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isUnderDisruptionWeb_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isUnderStorm_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isUnderStorm_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isPowered_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isPowered_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isUpgrading_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isUpgrading_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isVisible_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isVisible_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: isVisible_native + * Signature: (JLbwapi4/Player;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isVisible_1native__JLbwapi4_Player_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: isTargetable_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_isTargetable_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: issueCommand_native + * Signature: (JLbwapi4/UnitCommand;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_issueCommand_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: attack_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_attack_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: attack_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_attack_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: build_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_build_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: build_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_build_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unit + * Method: buildAddon_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_buildAddon_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: train_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_train_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: train_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_train_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: morph_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_morph_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: research_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_research_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: upgrade_native + * Signature: (JLbwapi4/UpgradeType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_upgrade_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: setRallyPoint_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_setRallyPoint_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: move_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_move_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: move_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_move_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: patrol_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_patrol_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: patrol_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_patrol_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: holdPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_holdPosition_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: holdPosition_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_holdPosition_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: stop_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_stop_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: stop_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_stop_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: follow_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_follow_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: follow_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_follow_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: gather_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_gather_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: gather_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_gather_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: returnCargo_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_returnCargo_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: returnCargo_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_returnCargo_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: repair_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_repair_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: repair_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_repair_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: burrow_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_burrow_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: unburrow_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unburrow_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: cloak_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cloak_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: decloak_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_decloak_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: siege_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_siege_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: unsiege_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unsiege_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: lift_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_lift_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: land_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_land_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: load_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_load_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: load_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_load_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: unload_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unload_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: unloadAll_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unloadAll_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: unloadAll_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unloadAll_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: unloadAll_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unloadAll_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: unloadAll_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_unloadAll_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: rightClick_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_rightClick_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: rightClick_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_rightClick_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: haltConstruction_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_haltConstruction_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: cancelConstruction_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelConstruction_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: cancelAddon_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelAddon_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: cancelTrain_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelTrain_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: cancelTrain_native + * Signature: (JI)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelTrain_1native__JI + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Unit + * Method: cancelMorph_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelMorph_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: cancelResearch_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelResearch_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: cancelUpgrade_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_cancelUpgrade_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: useTech_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_useTech_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: useTech_native + * Signature: (JLbwapi4/TechType;Lbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_useTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unit + * Method: placeCOP_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_placeCOP_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommand_native + * Signature: (JLbwapi4/UnitCommand;ZZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2ZZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommand_native + * Signature: (JLbwapi4/UnitCommand;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommand_native + * Signature: (JLbwapi4/UnitCommand;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommand_native + * Signature: (JLbwapi4/UnitCommand;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommand_native + * Signature: (JLbwapi4/UnitCommand;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommand_native + * Signature: (JLbwapi4/UnitCommand;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommand_native + * Signature: (JLbwapi4/UnitCommand;ZZZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommand_1native__JLbwapi4_UnitCommand_2ZZZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandGrouped_native + * Signature: (JLbwapi4/UnitCommand;ZZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2ZZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandGrouped_native + * Signature: (JLbwapi4/UnitCommand;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandGrouped_native + * Signature: (JLbwapi4/UnitCommand;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandGrouped_native + * Signature: (JLbwapi4/UnitCommand;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandGrouped_native + * Signature: (JLbwapi4/UnitCommand;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandGrouped_native + * Signature: (JLbwapi4/UnitCommand;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandGrouped_native + * Signature: (JLbwapi4/UnitCommand;ZZZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandGrouped_1native__JLbwapi4_UnitCommand_2ZZZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCommand_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCommand_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCommandGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCommandGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCommandGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCommandGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandType_native + * Signature: (JLbwapi4/UnitCommandType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandType_1native__JLbwapi4_UnitCommandType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandType_native + * Signature: (JLbwapi4/UnitCommandType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandType_1native__JLbwapi4_UnitCommandType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandTypeGrouped_native + * Signature: (JLbwapi4/UnitCommandType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandTypeGrouped_1native__JLbwapi4_UnitCommandType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandTypeGrouped_native + * Signature: (JLbwapi4/UnitCommandType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandTypeGrouped_1native__JLbwapi4_UnitCommandType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canIssueCommandTypeGrouped_native + * Signature: (JLbwapi4/UnitCommandType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canIssueCommandTypeGrouped_1native__JLbwapi4_UnitCommandType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canTargetUnit_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTargetUnit_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canTargetUnit_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTargetUnit_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttack_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canAttack_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttack_native + * Signature: (JLbwapi4/PositionOrUnit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__JLbwapi4_PositionOrUnit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttack_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttack_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canAttack_native + * Signature: (JLbwapi4/PositionOrUnit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttack_1native__JLbwapi4_PositionOrUnit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JLbwapi4_PositionOrUnit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JLbwapi4_PositionOrUnit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canAttackGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackGrouped_1native__JLbwapi4_PositionOrUnit_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackMove_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackMove_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canAttackMove_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackMove_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackMoveGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackMoveGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackMoveGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackMoveGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canAttackMoveGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackMoveGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnit_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnit_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnit_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnit_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnit_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnit_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnit_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canAttackUnitGrouped_native + * Signature: (JLbwapi4/Unit;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canAttackUnitGrouped_1native__JLbwapi4_Unit_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JLbwapi4/UnitType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JLbwapi4/UnitType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2ZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unit + * Method: canBuild_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuild_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuildAddon_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canBuildAddon_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuildAddon_native + * Signature: (JLbwapi4/UnitType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__JLbwapi4_UnitType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBuildAddon_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canBuildAddon_native + * Signature: (JLbwapi4/UnitType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBuildAddon_1native__JLbwapi4_UnitType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canTrain_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canTrain_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canTrain_native + * Signature: (JLbwapi4/UnitType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__JLbwapi4_UnitType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canTrain_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canTrain_native + * Signature: (JLbwapi4/UnitType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canTrain_1native__JLbwapi4_UnitType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canMorph_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canMorph_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canMorph_native + * Signature: (JLbwapi4/UnitType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__JLbwapi4_UnitType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canMorph_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canMorph_native + * Signature: (JLbwapi4/UnitType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMorph_1native__JLbwapi4_UnitType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canResearch_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canResearch_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canResearch_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canResearch_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canResearch_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canResearch_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canResearch_native + * Signature: (JLbwapi4/TechType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canResearch_1native__JLbwapi4_TechType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUpgrade_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUpgrade_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUpgrade_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUpgrade_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUpgrade_native + * Signature: (JLbwapi4/UpgradeType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUpgrade_1native__JLbwapi4_UpgradeType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUpgrade_native + * Signature: (JLbwapi4/UpgradeType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUpgrade_1native__JLbwapi4_UpgradeType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPoint_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPoint_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPoint_native + * Signature: (JLbwapi4/PositionOrUnit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__JLbwapi4_PositionOrUnit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPoint_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPoint_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPoint_native + * Signature: (JLbwapi4/PositionOrUnit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPoint_1native__JLbwapi4_PositionOrUnit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPosition_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyPosition_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyPosition_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyUnit_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyUnit_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyUnit_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyUnit_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyUnit_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canSetRallyUnit_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSetRallyUnit_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canMove_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMove_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canMove_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMove_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canMoveGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMoveGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canMoveGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMoveGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canMoveGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canMoveGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canPatrol_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPatrol_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canPatrol_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPatrol_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canPatrolGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPatrolGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canPatrolGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPatrolGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canPatrolGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPatrolGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canFollow_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canFollow_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canFollow_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canFollow_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canFollow_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canFollow_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canFollow_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canGather_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canGather_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canGather_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canGather_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canGather_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canGather_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canGather_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canReturnCargo_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canReturnCargo_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canReturnCargo_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canReturnCargo_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canHoldPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canHoldPosition_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canHoldPosition_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canHoldPosition_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canStop_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canStop_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canStop_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canStop_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRepair_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canRepair_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRepair_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRepair_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRepair_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canRepair_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRepair_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canBurrow_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBurrow_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canBurrow_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canBurrow_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnburrow_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnburrow_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUnburrow_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnburrow_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCloak_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCloak_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCloak_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCloak_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canDecloak_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canDecloak_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canDecloak_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canDecloak_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canSiege_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSiege_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canSiege_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canSiege_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnsiege_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnsiege_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUnsiege_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnsiege_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLift_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLift_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canLift_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLift_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLand_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLand_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canLand_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLand_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLand_native + * Signature: (JLbwapi4/TilePosition;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLand_1native__JLbwapi4_TilePosition_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLand_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLand_1native__JLbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canLand_native + * Signature: (JLbwapi4/TilePosition;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLand_1native__JLbwapi4_TilePosition_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLoad_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canLoad_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLoad_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLoad_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canLoad_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canLoad_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canLoad_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnloadWithOrWithoutTarget_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadWithOrWithoutTarget_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUnloadWithOrWithoutTarget_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadWithOrWithoutTarget_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAtPosition_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAtPosition_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAtPosition_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAtPosition_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAtPosition_native + * Signature: (JLbwapi4/Position;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAtPosition_1native__JLbwapi4_Position_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnload_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUnload_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnload_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnload_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnload_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnload_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUnload_native + * Signature: (JLbwapi4/Unit;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnload_1native__JLbwapi4_Unit_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAll_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAll_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAll_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAll_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAllPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAllPosition_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAllPosition_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAllPosition_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAllPosition_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAllPosition_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAllPosition_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAllPosition_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUnloadAllPosition_native + * Signature: (JLbwapi4/Position;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUnloadAllPosition_1native__JLbwapi4_Position_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClick_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canRightClick_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClick_native + * Signature: (JLbwapi4/PositionOrUnit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__JLbwapi4_PositionOrUnit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClick_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClick_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canRightClick_native + * Signature: (JLbwapi4/PositionOrUnit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClick_1native__JLbwapi4_PositionOrUnit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JLbwapi4_PositionOrUnit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JLbwapi4_PositionOrUnit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canRightClickGrouped_native + * Signature: (JLbwapi4/PositionOrUnit;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickGrouped_1native__JLbwapi4_PositionOrUnit_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickPosition_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canRightClickPosition_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickPosition_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickPositionGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickPositionGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickPositionGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickPositionGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canRightClickPositionGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickPositionGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnit_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnit_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnit_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnit_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnit_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnit_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnit_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (JZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JZZ + (JNIEnv *, jobject, jlong, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (JLbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JLbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (JLbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JLbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canRightClickUnitGrouped_native + * Signature: (JLbwapi4/Unit;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canRightClickUnitGrouped_1native__JLbwapi4_Unit_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canHaltConstruction_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canHaltConstruction_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canHaltConstruction_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canHaltConstruction_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelConstruction_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelConstruction_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCancelConstruction_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelConstruction_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelAddon_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelAddon_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCancelAddon_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelAddon_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelTrain_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrain_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCancelTrain_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrain_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelTrainSlot_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrainSlot_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCancelTrainSlot_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrainSlot_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelTrainSlot_native + * Signature: (JIZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrainSlot_1native__JIZ + (JNIEnv *, jobject, jlong, jint, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelTrainSlot_native + * Signature: (JI)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrainSlot_1native__JI + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Unit + * Method: canCancelTrainSlot_native + * Signature: (JIZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelTrainSlot_1native__JIZZ + (JNIEnv *, jobject, jlong, jint, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelMorph_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelMorph_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCancelMorph_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelMorph_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelResearch_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelResearch_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCancelResearch_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelResearch_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canCancelUpgrade_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelUpgrade_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canCancelUpgrade_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canCancelUpgrade_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithOrWithoutTarget_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithOrWithoutTarget_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithOrWithoutTarget_native + * Signature: (JLbwapi4/TechType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__JLbwapi4_TechType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithOrWithoutTarget_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithOrWithoutTarget_native + * Signature: (JLbwapi4/TechType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithOrWithoutTarget_1native__JLbwapi4_TechType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTech_native + * Signature: (JLbwapi4/TechType;Lbwapi4/PositionOrUnit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTech_native + * Signature: (JLbwapi4/TechType;Lbwapi4/PositionOrUnit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTech_native + * Signature: (JLbwapi4/TechType;Lbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTech_native + * Signature: (JLbwapi4/TechType;Lbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTech_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTech_native + * Signature: (JLbwapi4/TechType;Lbwapi4/PositionOrUnit;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithoutTarget_native + * Signature: (JLbwapi4/TechType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithoutTarget_1native__JLbwapi4_TechType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithoutTarget_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithoutTarget_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTechWithoutTarget_native + * Signature: (JLbwapi4/TechType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechWithoutTarget_1native__JLbwapi4_TechType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Unit;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Unit;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2ZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTechUnit_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Unit;ZZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechUnit_1native__JLbwapi4_TechType_2Lbwapi4_Unit_2ZZZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechPosition_native + * Signature: (JLbwapi4/TechType;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechPosition_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTechPosition_native + * Signature: (JLbwapi4/TechType;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechPosition_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Position;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Lbwapi4_Position_2ZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechPosition_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Lbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canUseTechPosition_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Lbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unit + * Method: canUseTechPosition_native + * Signature: (JLbwapi4/TechType;Lbwapi4/Position;ZZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canUseTechPosition_1native__JLbwapi4_TechType_2Lbwapi4_Position_2ZZZ + (JNIEnv *, jobject, jlong, jobject, jobject, jboolean, jboolean, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canPlaceCOP_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unit + * Method: canPlaceCOP_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canPlaceCOP_native + * Signature: (JLbwapi4/TilePosition;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__JLbwapi4_TilePosition_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unit + * Method: canPlaceCOP_native + * Signature: (JLbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__JLbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unit + * Method: canPlaceCOP_native + * Signature: (JLbwapi4/TilePosition;ZZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unit_canPlaceCOP_1native__JLbwapi4_TilePosition_2ZZ + (JNIEnv *, jobject, jlong, jobject, jboolean, jboolean); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_UnitCommand.h b/headers4/bwapi4_UnitCommand.h new file mode 100644 index 0000000..6b034f8 --- /dev/null +++ b/headers4/bwapi4_UnitCommand.h @@ -0,0 +1,21 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_UnitCommand */ + +#ifndef _Included_bwapi4_UnitCommand +#define _Included_bwapi4_UnitCommand +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_UnitCommand + * Method: getType_native + * Signature: (J)Lbwapi4/UnitCommandType; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_UnitCommand_getType_1native + (JNIEnv *, jobject, jlong); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_UnitCommandType.h b/headers4/bwapi4_UnitCommandType.h new file mode 100644 index 0000000..fefaf49 --- /dev/null +++ b/headers4/bwapi4_UnitCommandType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_UnitCommandType */ + +#ifndef _Included_bwapi4_UnitCommandType +#define _Included_bwapi4_UnitCommandType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_UnitFilter.h b/headers4/bwapi4_UnitFilter.h new file mode 100644 index 0000000..bb29f88 --- /dev/null +++ b/headers4/bwapi4_UnitFilter.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_UnitFilter */ + +#ifndef _Included_bwapi4_UnitFilter +#define _Included_bwapi4_UnitFilter +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_UnitSizeType.h b/headers4/bwapi4_UnitSizeType.h new file mode 100644 index 0000000..a6cbe83 --- /dev/null +++ b/headers4/bwapi4_UnitSizeType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_UnitSizeType */ + +#ifndef _Included_bwapi4_UnitSizeType +#define _Included_bwapi4_UnitSizeType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_UnitType.h b/headers4/bwapi4_UnitType.h new file mode 100644 index 0000000..5c79932 --- /dev/null +++ b/headers4/bwapi4_UnitType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_UnitType */ + +#ifndef _Included_bwapi4_UnitType +#define _Included_bwapi4_UnitType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_Unitset.h b/headers4/bwapi4_Unitset.h new file mode 100644 index 0000000..65ea203 --- /dev/null +++ b/headers4/bwapi4_Unitset.h @@ -0,0 +1,493 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_Unitset */ + +#ifndef _Included_bwapi4_Unitset +#define _Included_bwapi4_Unitset +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_Unitset + * Method: getPosition_native + * Signature: (J)Lbwapi4/Position; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getPosition_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: getLoadedUnits_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getLoadedUnits_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: getInterceptors_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getInterceptors_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: getLarva_native + * Signature: (J)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getLarva_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: setClientInfo_native + * Signature: (JI)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Unitset_setClientInfo_1native__JI + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Unitset + * Method: setClientInfo_native + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Unitset_setClientInfo_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: setClientInfo_native + * Signature: (JII)V + */ +JNIEXPORT void JNICALL Java_bwapi4_Unitset_setClientInfo_1native__JII + (JNIEnv *, jobject, jlong, jint, jint); + +/* + * Class: bwapi4_Unitset + * Method: getUnitsInRadius_native + * Signature: (JILbwapi4/UnitFilter;)Lbwapi4/Unitset; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getUnitsInRadius_1native + (JNIEnv *, jobject, jlong, jint, jobject); + +/* + * Class: bwapi4_Unitset + * Method: getClosestUnit_native + * Signature: (JLbwapi4/UnitFilter;)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getClosestUnit_1native__JLbwapi4_UnitFilter_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: getClosestUnit_native + * Signature: (JLbwapi4/UnitFilter;I)Lbwapi4/Unit; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_Unitset_getClosestUnit_1native__JLbwapi4_UnitFilter_2I + (JNIEnv *, jobject, jlong, jobject, jint); + +/* + * Class: bwapi4_Unitset + * Method: issueCommand_native + * Signature: (JLbwapi4/UnitCommand;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_issueCommand_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: attack_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_attack_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: attack_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_attack_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: build_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_build_1native__JLbwapi4_UnitType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: build_native + * Signature: (JLbwapi4/UnitType;Lbwapi4/TilePosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_build_1native__JLbwapi4_UnitType_2Lbwapi4_TilePosition_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +/* + * Class: bwapi4_Unitset + * Method: buildAddon_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_buildAddon_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: train_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_train_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: morph_native + * Signature: (JLbwapi4/UnitType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_morph_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: setRallyPoint_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_setRallyPoint_1native + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: move_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_move_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: move_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_move_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: patrol_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_patrol_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: patrol_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_patrol_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: holdPosition_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_holdPosition_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: holdPosition_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_holdPosition_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: stop_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_stop_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: stop_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_stop_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: follow_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_follow_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: follow_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_follow_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: gather_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_gather_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: gather_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_gather_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: returnCargo_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_returnCargo_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: returnCargo_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_returnCargo_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: repair_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_repair_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: repair_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_repair_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: burrow_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_burrow_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: unburrow_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unburrow_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: cloak_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cloak_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: decloak_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_decloak_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: siege_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_siege_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: unsiege_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unsiege_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: lift_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_lift_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: load_native + * Signature: (JLbwapi4/Unit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_load_1native__JLbwapi4_Unit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: load_native + * Signature: (JLbwapi4/Unit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_load_1native__JLbwapi4_Unit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: unloadAll_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unloadAll_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: unloadAll_native + * Signature: (JZ)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unloadAll_1native__JZ + (JNIEnv *, jobject, jlong, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: unloadAll_native + * Signature: (JLbwapi4/Position;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unloadAll_1native__JLbwapi4_Position_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: unloadAll_native + * Signature: (JLbwapi4/Position;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_unloadAll_1native__JLbwapi4_Position_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: rightClick_native + * Signature: (JLbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_rightClick_1native__JLbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: rightClick_native + * Signature: (JLbwapi4/PositionOrUnit;Z)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_rightClick_1native__JLbwapi4_PositionOrUnit_2Z + (JNIEnv *, jobject, jlong, jobject, jboolean); + +/* + * Class: bwapi4_Unitset + * Method: haltConstruction_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_haltConstruction_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: cancelConstruction_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelConstruction_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: cancelAddon_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelAddon_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: cancelTrain_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelTrain_1native__J + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: cancelTrain_native + * Signature: (JI)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelTrain_1native__JI + (JNIEnv *, jobject, jlong, jint); + +/* + * Class: bwapi4_Unitset + * Method: cancelMorph_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelMorph_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: cancelResearch_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelResearch_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: cancelUpgrade_native + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_cancelUpgrade_1native + (JNIEnv *, jobject, jlong); + +/* + * Class: bwapi4_Unitset + * Method: useTech_native + * Signature: (JLbwapi4/TechType;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_useTech_1native__JLbwapi4_TechType_2 + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: bwapi4_Unitset + * Method: useTech_native + * Signature: (JLbwapi4/TechType;Lbwapi4/PositionOrUnit;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_Unitset_useTech_1native__JLbwapi4_TechType_2Lbwapi4_PositionOrUnit_2 + (JNIEnv *, jobject, jlong, jobject, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_UpgradeType.h b/headers4/bwapi4_UpgradeType.h new file mode 100644 index 0000000..a312670 --- /dev/null +++ b/headers4/bwapi4_UpgradeType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_UpgradeType */ + +#ifndef _Included_bwapi4_UpgradeType +#define _Included_bwapi4_UpgradeType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_WalkPosition.h b/headers4/bwapi4_WalkPosition.h new file mode 100644 index 0000000..7031bfc --- /dev/null +++ b/headers4/bwapi4_WalkPosition.h @@ -0,0 +1,61 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_WalkPosition */ + +#ifndef _Included_bwapi4_WalkPosition +#define _Included_bwapi4_WalkPosition +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: bwapi4_WalkPosition + * Method: isValid + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WalkPosition_isValid + (JNIEnv *, jobject); + +/* + * Class: bwapi4_WalkPosition + * Method: makeValid + * Signature: ()Lbwapi4/WalkPosition; + */ +JNIEXPORT jobject JNICALL Java_bwapi4_WalkPosition_makeValid + (JNIEnv *, jobject); + +/* + * Class: bwapi4_WalkPosition + * Method: getDistance + * Signature: (Lbwapi4/WalkPosition;)D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_WalkPosition_getDistance + (JNIEnv *, jobject, jobject); + +/* + * Class: bwapi4_WalkPosition + * Method: getApproxDistance + * Signature: (Lbwapi4/WalkPosition;)I + */ +JNIEXPORT jint JNICALL Java_bwapi4_WalkPosition_getApproxDistance + (JNIEnv *, jobject, jobject); + +/* + * Class: bwapi4_WalkPosition + * Method: getLength + * Signature: ()D + */ +JNIEXPORT jdouble JNICALL Java_bwapi4_WalkPosition_getLength + (JNIEnv *, jobject); + +/* + * Class: bwapi4_WalkPosition + * Method: hasPath + * Signature: (Lbwapi4/WalkPosition;)Z + */ +JNIEXPORT jboolean JNICALL Java_bwapi4_WalkPosition_hasPath + (JNIEnv *, jobject, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/headers4/bwapi4_WeaponType.h b/headers4/bwapi4_WeaponType.h new file mode 100644 index 0000000..5d88862 --- /dev/null +++ b/headers4/bwapi4_WeaponType.h @@ -0,0 +1,13 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class bwapi4_WeaponType */ + +#ifndef _Included_bwapi4_WeaponType +#define _Included_bwapi4_WeaponType +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/manual-bwapi/Mirror.java b/manual-bwapi/Mirror.java index e249ae9..72d4682 100644 --- a/manual-bwapi/Mirror.java +++ b/manual-bwapi/Mirror.java @@ -56,11 +56,11 @@ public class Mirror { private static final boolean EXTRACT_JAR = true; - private static final String VERSION = "1_0"; + private static final String VERSION = "1_1"; static { String arch = System.getProperty("os.arch"); - String dllNames[] = {"bwapi_bridge", "gmp-vc90-mt", "mpfr-vc90-mt"}; + String dllNames[] = {"bwapi_bridge" + VERSION, "gmp-vc90-mt", "mpfr-vc90-mt"}; if(!arch.equals("x86")){ throw new UnsupportedOperationException("BWMirror API supports only x86 architecture."); } diff --git a/manual-bwapi4/BestUnitFilter.java b/manual-bwapi4/BestUnitFilter.java new file mode 100644 index 0000000..4a90ead --- /dev/null +++ b/manual-bwapi4/BestUnitFilter.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class BestUnitFilter { + + + private static Map instances = new HashMap(); + + private BestUnitFilter(long pointer) { + this.pointer = pointer; + } + + private static BestUnitFilter get(long pointer) { + BestUnitFilter instance = instances.get(pointer); + if (instance == null ) { + instance = new BestUnitFilter(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/manual-bwapi4/Position.java b/manual-bwapi4/Position.java new file mode 100644 index 0000000..3cef294 --- /dev/null +++ b/manual-bwapi4/Position.java @@ -0,0 +1,86 @@ +package bwapi4; + +import java.lang.Override; +import java.util.HashMap; +import java.util.Map; + +/** + * Positions are measured in pixels and are the highest resolution. + */ +public class Position { + + private int x, y; + + public Position(int x, int y) { + this.x = x; + this.y = y; + } + + public String toString() { + return "[" + x + ", " + y + "]"; + } + + public native boolean isValid(); + + public native Position makeValid(); + + public native double getDistance(Position position); + + public native int getApproxDistance(Position position); + + public native double getLength(); + + public native boolean hasPath(Position position); + + public int getX() { + return x; + } + + public int getY() { + return y; + } + + public static Position Invalid; + + public static Position None; + + public static Position Unknown; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof Position)) return false; + + Position position = (Position) o; + + if (x != position.x) return false; + if (y != position.y) return false; + + return true; + } + + @Override + public int hashCode() { + int result = x; + result = 31 * result + y; + return result; + } + + + private static Map instances = new HashMap(); + + private Position(long pointer) { + this.pointer = pointer; + } + + private static Position get(long pointer) { + Position instance = instances.get(pointer); + if (instance == null) { + instance = new Position(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; +} \ No newline at end of file diff --git a/manual-bwapi4/TilePosition.java b/manual-bwapi4/TilePosition.java new file mode 100644 index 0000000..a5d85c3 --- /dev/null +++ b/manual-bwapi4/TilePosition.java @@ -0,0 +1,85 @@ +package bwapi4; + +import java.lang.Override; +import java.util.HashMap; +import java.util.Map; + +/** + * Build Tiles - each build tile is a 4x4 square of walk tiles, or a 32x32 square of pixels. + * These are called build tiles because buildability data is available at this resolution, and correspond to the tiles seen in game. + * For example, a Command Center occupies an area of 4x3 build tiles. + */ +public class TilePosition { + private int x, y; + + public TilePosition(int x, int y) { + this.x = x; + this.y = y; + } + + public String toString() { + return "[" + x + ", " + y + "]"; + } + + public native boolean hasPath(TilePosition position); + + public native boolean isValid(); + + public native TilePosition makeValid(); + + public native double getDistance(TilePosition position); + + public native double getLength(); + + public int getX() { + return x; + } + + public int getY() { + return y; + } + + public static TilePosition Invalid; + + public static TilePosition None; + + public static TilePosition Unknown; + + private static Map instances = new HashMap(); + + private TilePosition(long pointer) { + this.pointer = pointer; + } + + private static TilePosition get(long pointer) { + TilePosition instance = instances.get(pointer); + if (instance == null) { + instance = new TilePosition(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof TilePosition)) return false; + + TilePosition that = (TilePosition) o; + + if (x != that.x) return false; + if (y != that.y) return false; + + return true; + } + + @Override + public int hashCode() { + int result = x; + result = 31 * result + y; + return result; + } +} \ No newline at end of file diff --git a/manual-bwapi4/UnitFilter.java b/manual-bwapi4/UnitFilter.java new file mode 100644 index 0000000..99f65d6 --- /dev/null +++ b/manual-bwapi4/UnitFilter.java @@ -0,0 +1,31 @@ +package bwapi4; + +import bwapi4.*; + +import java.util.Map; +import java.util.HashMap; +import java.util.Collection; +import java.util.List; + +public class UnitFilter { + + + private static Map instances = new HashMap(); + + private UnitFilter(long pointer) { + this.pointer = pointer; + } + + private static UnitFilter get(long pointer) { + UnitFilter instance = instances.get(pointer); + if (instance == null ) { + instance = new UnitFilter(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; + + +} diff --git a/manual-bwapi4/WalkPosition.java b/manual-bwapi4/WalkPosition.java new file mode 100644 index 0000000..c7696e8 --- /dev/null +++ b/manual-bwapi4/WalkPosition.java @@ -0,0 +1,83 @@ +package bwapi4; + +import java.lang.Override; +import java.util.HashMap; +import java.util.Map; + +public class WalkPosition { + + private int x, y; + + public WalkPosition(int x, int y) { + this.x = x; + this.y = y; + } + + public String toString() { + return "[" + x + ", " + y + "]"; + } + + public native boolean isValid(); + + public native WalkPosition makeValid(); + + public native double getDistance(WalkPosition position); + + public native int getApproxDistance(WalkPosition position); + + public native double getLength(); + + public native boolean hasPath(WalkPosition position); + + public int getX() { + return x; + } + + public int getY() { + return y; + } + + public static WalkPosition Invalid; + + public static WalkPosition None; + + public static WalkPosition Unknown; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof WalkPosition)) return false; + + WalkPosition position = (WalkPosition) o; + + if (x != position.x) return false; + if (y != position.y) return false; + + return true; + } + + @Override + public int hashCode() { + int result = x; + result = 31 * result + y; + return result; + } + + + private static Map instances = new HashMap(); + + private WalkPosition(long pointer) { + this.pointer = pointer; + } + + private static WalkPosition get(long pointer) { + WalkPosition instance = instances.get(pointer); + if (instance == null) { + instance = new WalkPosition(pointer); + instances.put(pointer, instance); + } + return instance; + } + + private long pointer; +} \ No newline at end of file diff --git a/out/production/InvokeGenerator/generator/CJavaPipeline$1.class b/out/production/InvokeGenerator/generator/CJavaPipeline$1.class index 90c814966e250f5d65a36d5810f401fb07af868a..6a45d4055b13834fba0f23ae62379593fc79c781 100644 GIT binary patch delta 19 acmZ3>x|Vf=5fh`!WMd|0M)%3(OlAN#@dYCQ delta 19 acmZ3>x|Vf=5fh`&WMd|0M*qp>OlAN$aRoB~ diff --git a/out/production/InvokeGenerator/generator/CJavaPipeline$2.class b/out/production/InvokeGenerator/generator/CJavaPipeline$2.class index 34f717038f6977992766e930b22f8aa37ca93b10..b73ae0f0cfa3c0c94e7001a0d7b3294a70dd9454 100644 GIT binary patch delta 19 bcmZ3%zJh%N6Eows$;{0DjJqZWGlv2II&=lB delta 19 bcmZ3%zJh%N6Eow!$;{0DjE5!%Glv2II`jp+ diff --git a/out/production/InvokeGenerator/generator/CJavaPipeline.class b/out/production/InvokeGenerator/generator/CJavaPipeline.class index ee295d41646d580af078cf2269242d66b5518f09..16eaf6517f9171c9871d82a73ef0f83c75e858de 100644 GIT binary patch literal 8991 zcmbVS349dw^?z?R*_oZ491Lu5@j?aU3Q@o)8$go~FqnjxL@;>7WwV6U&F;E~g4TM` zdTYIlcd3f^fwG7Zw4U{7tJb!*+EzTP{#*UqT2ZU%_sz^+L2WX*`;!shoW4rlfrJDRn}DY=;W3iT_=sbDjPcKGOy6dV3&|rs$8X0 z6`Qg$T2{u$8J~=5WNoY*-Nnm(9_Qs0owgyg=g?87@?LkxmQ5 z0*C6fkXuz=tka<~KTPE|joWoPj5~B%%u7`6)M*LN6S~8N$a-|C+^tiOT+<^fJ=~-5 z5jrJ#q7W_>?#om@Qm3Q2S0rDq@lmpUv^)IlzbOV#88$`i$CK+a$Fk*YIJ&y)s z19jc$WF$7wFds+8G%soIY;9}lThQ9o*V(nCv!$!2m&x3j8nlPDG%kQVBWU+%?rUxD zY-?$6>F83Ja55bUry4{kSK@>LroH|n2Z$d`CMPiM{hx0G zZ8RJMtrEe*2rUSQqCuztQN*jEy5^!4aZ!J-H1~x#FT_!L6N0{WJg|92~^18tHEihE`dQFW4+p z*J>|=Lbu(Qg5C(+6_HrKWMnaI6V^ajQ<|nZ5kwiWLjkDfjtp_Zp^EM_qN6>Su<~1_ z2LZ!?Xw+hqVU;fdtfT&_{3Fy*l^#VIL*Yj8LbXD5LSaHpvdU2>N)1W`WE~7fkWe+q zf9w8Y@3QKv>d()TLt?z zCX>N6QVkHWBT&KMtLbJ0Y=KXSm=pGAB1qU81D-nIA^d-A@H)Q6;A`n7gRkT34ZeZ4 z8GIvS`V+bxt}%E${}i4v_-4Mv;9GeE(54i{47yQ{-^RBad1A{t)A7^-D7mF?icL+q*HOCWc>;O>t34@>Hr&NC0 z;Ai;fITM4j2o()}*7B(XApL#)5nS;cKM&3YBbNe+i2j1XzYvX!d|iSZ01i9n`b4b! zEM@V>`ClTP3;Y)sW6b!%`ZvRdc=T5#=ZnyyNX;UY$l1w>T7YIE;{XUSNP^6gQ#fBK zj~AJCw+!nX*r`?+{1U%x@UQv$lBmvuj=`^pUCSgP4gL-P*5KcXXUes&N*Mee z-t9B^5B!?Juk#;)(KA-b=AR7yGry42ue3y=<`!A4PSDKYHxTG_1Fb{hD{Ova^T1SY z0Z9%}Y6pWU3&V}UU@Q}i);haxQKvS9+eStwvc;mA(HT!g>@L8x7kc3T!lDgWGdiQe zHQ}Vn+YNq`--4Z*mi08EOR(6EsGf!L2A$sKcaTvIoC6_+6`(#;C+?gP zN+e36vjis)!Gz4z3UWa+0O@RSvSbPE#h?1(j81GqRV*$wCbv0s>5nJ@pZBsSr)Sl1W3m_gK0P}@2z~z zmUURg9ZV#`(wWveB9?^bPO0Sd130LqpL=Zti*i<%jW#*6^3t#7UThZ0aazvz4rdBLd(H5*uu zd@P&1T(lIJa}vYO_Y!0+1xlfxQjkKt9s{`J4ftu;ITyV6WhdPl>kqG9vT_7WI5;u| zKOT8fnH4GP_Z!KF)>g;!#R1Q>PwBPaV&pM-mD|JVRdIas;X@P1onMw-C|A-fk6Kj} zB<^6!E@cx-zOHg;W_!611M)kH_~al*tYYviiipzV#YEqMJxggXI-Rb@k7gSA>BqDV zA2HWprqH#RUsp80o;=dhVQ-v#j)3kb7TtQxe@Zv!&&|R7mZEtR=C>Bj+c4iyG;gFb zoW=JYo_By_9p3nsqVlPmiSM_rxD!vewYVqUg|T51(A{(oW-Kigo;d7z0cwoH4}#B4 z>!{sUU*@VW_m%s~*3%xfzVev?_Yf()e)ogq+Dv5+QTf_(-Y~p-laq+`V!D4!N^``z2>Rad>{(|qcBdfV^zX)^Qw5zzgf2dVOD^7-{4s_LC; zO*d0@mPX0Ye430}YmlYUev5camV5!Pzbs2Ne(x3<%M>vD#unOzVcTP6>z$=(&|TkF z?{(E1KEvl-PhEc9XUq&#_$#tBJxjH6$q>zend;;SZr;z_9}n4|iFcM}SrQ0s*;bm} z>)J>MbU#G(%hnnYptD* zSx@`;HJ?5cHdZZndu@07-C3HqRtM+TbMDoq1w4MwwtC%F@AY|o`g&N<vk{U^H=FRxQu7ckz-~(bQLwPruWzPB0q+nUinZ2& z!GVe)S`1?xhW|u~Hd~3!)V`TI0u`cZrN1&uoqn%a=WxFvuP(gGv(!CAJ>YYMkjU~< zp;7{5;P4b3s9d7lrQAzPTo<{na;>8wiGaQBt1dB^cz}EuhP-<7dnPMrDM6A z`nZaMY*L7KrGB1*KakAA-*V>AAa_xWms5gIp%eKLydS3wq)YKLl;#((|1zD%+v)rK z0iB_^=uD*s@7?GeWg?xc%%}5|!|*M=!g-V<*Q&!XE%Gq?Kav@!bi&? zcU?tK!8%X4uB9hkH(~u&(A`DPBE4R84be-k$LVF)v-FA}sWKOKs-Y^nABf@x=ue>s z2r+^2MA`(%DFf*5O<9b}VW&3QOb<~7a5s##Ex_Sb^gKOGNGMqI3VH-(!3%r8V)64( zD}8M7bHm~vTKrTx95xny_`47_(N@|<72Hq9g6>iL!6yP=$h}^U!aG8TUyyM3WAroZ zcF`#|XP!$}*_^qNF10!H0=n4d46Bc}=)C+_loQcN<434zMJ1srNx&jon^cdqhm8FXZ|3J7j^OT*3|Xd-?-aAm08-uhHvNiD-L`{s_)hh@mR_ z6aAU0=?&!Fct~RVemi_`OR}BHom0k=n@ziaO&*orV%|Y}4I{cRc^h+;-cjjY zmEKe7FV;5ESG1o>@2m7d^;hJ#mOuO#O;zdtcKd?-Uyw3PlgPdEX`-)5w^$6r!4*3b zSbG-dzcMVkgN|rY>2F_F+B2Lj~lpO8;~Z1Eog)_lH#aOeF{iqY@3%A{zTYoh_JT7&!-v@9Y=b3Q(^^ z=%V{`JS=%W5^Z*TPSB_Pf7S<1q4Vf-`oiw)6nv*6(uw!oNGG^&qT7ckigGd7HqDG} zBG)vjPi7poY!i*KCkbmZ)uC&jZXOA`=@#9IHr;ghR!a7|%v5)8nVIhHEjKghKTg_2 z=5+JqO;kBVt8vAej#_h$c}kW}T~=#0ncuSqjpk|gpw0Zg42I}*(4JAg6=J!jf#LM- z+AN(3Vbz-`gI3Nw%kCx$a-W@-du_4YKgh{#T@JbDm_L*o&}*3I*n>v%Tzk-Fo>z1^ zx+v>%bW~?b_a;5ja05f3Ll6Ro=4khF_N^O-lF5_9ZJ%> zbSk|^YXQ_3(fa_}4*^Gi0}Oo(i2ej1^mjnaKfvu%P<=)pA(M8{=ZL{CSf?*}G=0UB z5RlTS&qpDt0_=SWaAVwd68#G!1$Q(c&7XmU&!Ak`yB}d+))a9va(Ni%0UZDk-)gnHP5Vy3LEadsXw|?q1Ejq`SA;ZT<*P z)w~o>&Abdxk9j$sx_JejUh_)v|7N=C0oqjz$d&=||4v{$3DGwl{}%;hz*FH-c$?U% L!dw0wZNL5vALoqg delta 4663 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 diff --git a/out/production/InvokeGenerator/generator/MirrorContext.class b/out/production/InvokeGenerator/generator/MirrorContext.class index 773ca093b46efa1c70d4f12dcb95cb93f89892a3..4b015cc762af6f415a2e42de574892d31b6955b8 100644 GIT binary patch delta 1502 zcmZ`&TX$1c5dO}|WuG2)yI2WAbuARcDkPPFEr<=REdiuhOQ5tBMesBpN+2X5O{sW` z^{(~G@rD5bfTg# zC8ny4IHpCMvM?hz4_i1b`Vk9{ihhiuhQ|dyVWB4aNfEOao)Z1E&^)8?tc?!jEIcRr zc`?2q=tZgJC51WheObgSEqE2LS$N&T8*)CQ;3>RmU`g4@9d{<(VdsQvAU1T&Ipw4Z zPH{4|@YfO3nDa(Me}wvQr#BE@-hDf^7>N5W)75+-HBhNIr-$-WRgE;Z8VFC6N(BQ- zlC-!P}(b2Mk1{ zRPvn1mm2#pqVbg^{2JdFSbFv0Bh^a2I4M~!Xnc$B6u#HEh;akai5aJy=L3`vy4Pzg z;L_!CWSv=Ks!6x#R-9_7lFIC6)@;7)7V<^5wRPM0Kz8u(*p7W8gL{SC&!!Z zYnwWrIqFnK+>_I8G3TcL&%UndBB(Tt)#&QsiUJ|doxLV9!C}F`9X{^inGF+kln)57$E& zmIq#S2KxIoaWb+3b*>b(I+WXsDd5h!?d~a^@ z)eYa>xZC&bYPqQ6~LRx%G0nZ#To;bCl=XL+Ye z##St%{Q_a|{Gf~tO;1-1N`<{>-Ao2U7EYMF-&^*x+gt1#(pP(xX#`{#ApZMFABNev zjCeGNW^08239d+o)o;Ud2Yf{$AE&`t>YDwBsMFQ8=)yUG-D3w)=2D zZ~MvCJW+LJqF08r*H5UyZ^D_^^8~wjkSq`2P@N@9ZPLfzF(o?|)F15FC}YQ(8Xav^ Z9Ify7VMYXdBbHur2U#8@a{QKJ;y)?@>4g9Q delta 1287 zcmZ8fM^hA05dLP^-8T#m18aey41l3r&_zWQ5DX|LRFXO1sw*t6ps-+e6?4KcW(*j) zc+fH&Jb3ir)w@-C^WZ;`` zDSu)Xy2N%{I3V^Qj|LnPc-X=bu}9@NX5qNlxX7GPIB8=Nnk@8)JtfZ5g3d@SXBEy# z?0GpZC|p#y^yWv8X`FMyX+P7-Q0~-uvWsV-*nqz^)Ex?T#Ujz*!j6v6p_)i%Ok)n_ z8u09BZ;u*KV#1*|jmx;=^m#_dXJDpA6&4#Xw@f!+1T}hb)qr-jBJIKINHnam1dBDw za82VnZcwf>9Gj=%poSEJo47?#sc{>(H16Q8#y!zA$~5kyPh1ap3urtCb&L-vSvS) zVL4fuENKOiNz4(64!PyL%bQg}R?Y{Ed_|aAe^E*sR8mr56*6a1!H{u^lGAH9ZkFmt zGYdGKY))r9N?6xiqEdFcJVmN1DOE)&QK}`&1G8`haa}@_p6~Q|Xj`0$jBVM4pP>o| z;3<$Ur@39ugXMh5$c@Xe0t~I-i0jedwxA`Mq-8M43@%C|)0u9%q3}-njeLc*Bh&(( z%)Ack`Sbs&s{g0DI%PQSR1Y(KVjDM5Wg|8Xs?^d-cYT3^_fT(=WheHmo_p4i(v{Rb aOKkLJG7`(UrA$6V9DGxq4b7rr#*Z$6Lt+V&q=Z~2q z*W`XGoF4-g^1a1uS}it_4st!4Eiydp4sDut3qP%zEfxXSZVk}kE_GULqs#TSyF<4o zYZ0NxW(U0%kI-kclU?qx+opkji# zhEi7C8cW*Vq=}iBJxoj7ikYfZNxY;8)wwp53dKWX$*?yWiA7@JVanp6SfnZyU2uU& zb3A&M=s8L~tR0A`(eYnLnd)q^V>6D6GeHEe5CI`F&JlYcT2PH@wVdY^=1c4KGRv7` z=H~Wrog79vBVtc6S9WY3mnh>0D)>>zpShM_NKjy*vZz+`NvZ~FR3j--t5r?ZsdX$; zEi7h%=>EoZ(Th+e%^hW*DBMCdAr6Rck{ZI&OmnCeFCx9zn4?a>64ujM1l^m^Rs?Nn z?af8du#$tMgbT{b$s*@x5hseA<~C^;S1=&O&6fCLf@+#XYPnTn7WG2hj+Rn=+`$q# zBRL@|<)a|yx=Te`6@zz*=b==sl9!g@Wu~fUId{pP-J}xS%{?MfAk7LIrU7;^i u?)jVWWqkjd0yUb4lxF>3)GXC(@XwIX-6#cmXknFDOE#iGejF?P!G8dZlHb1o delta 955 zcmZ{j$8S?X5XOJ n*fnuJ7#m>LvHgs6ce5PI*uw?OC}Lhq)8PH2zbd+(-~U_e|D zXT*)a03;4bfdgTlk+>l}&Cc8TzM0u?XRp-#Ry+3L_wx#%4et!~DK<=IN{Ggk7^X7K zGt)IQ3;~KYGYvs+ofTxZ7n)<3%RJAU@0kUfg@$w%IV`5su!N-!%UJH26%PGbX;{T- zFUcAYveqGg9qS#|u|X3Hv5`$dHfy#x)S=9GentV;U=74bBA1O_<4q99eS(=b5ILl#Pk8Fq^S8)+#&gXJ%S&EqDlD%_xRd=^fj2a@yp6B- zm->zGE1GJc8n~6FXOH4&AQH?g3PnSYNjpw^Z>?5jqNbw2Nhz=q8*wg>9W@b~R}^mk zg7k6G@Dr*(Bg4m-GOMmueQ{qoS?av|$tkOzQ0XdDG)<+MTz@e&-FdcAY!lfcu_#R= zPEe0??G^Cw)mVpeWz2HI;nVZA~=)jCv5~%4c!{h;jQnWrr5(@EIcG}TV_CC^+PJ+?W zf}bvQ6`4dNX|biW;d$L8wMu&3#q*J&(&!Jbo8KW7iqbD nS|$G96zW{YDb4tw6n5842uSA>rIe3JA{Zj2k~g%B0fEpTWoN35 diff --git a/out/production/InvokeGenerator/generator/c/HeaderMaker.class b/out/production/InvokeGenerator/generator/c/HeaderMaker.class index e7f928500927f16b3d5bf05a1f386bbd16f5e812..c8c5d3c550cb3aa7f62a0f071c32d41fdf80bdf9 100644 GIT binary patch delta 1421 zcmbV~X>(I$6vuxz+jDcdQ=rm@pwcKyrAb<#YBjQ1X|;+9f=g5^X$x(zZEBm=-4qq9 zpa|Z&;L^HRaV^EfF(cy(#~B=kH}V1e0)7CUfqI_XrY@sz%uLR6p8xqjXSwJ9L-^#9 z+)o$2Jq6TLu&5!WXtVH;nnybw^VrQEZ8{ZQinN8vUd4kJ7QOnCG3nFvhfMnQeZWGI z)n-t`LyCtj7LhV}M4ykEJf>+w7OQw%BSRZ4p5RGso>Jr#!xsB^+Mv^SSji!i7Zfil4o?=pGcIaVyyRYwNRw`>4bCCYPNT_LV^l5NvNtu9s_Rbm zcGhjr_NRM0olSv|V|#bSt;}GyZ!p`O?%r(>oVjdH_Zz78Oixd$w?lE%?dqUG(i!&F z|3|KZHxh^vGpKatdnzjwM{Hikk*;h;dBx^cUUN*}a&MH^ojTv@Sd?QnZ}6sp5wUrT zx5cTo8Dre$9p1HhkN0gpVB8?&WK?Law5O-&io`SSgAWbtNW8r}H89YZ%6191mU_iU zHWPeo^9jeDUwjQKj@o?6XEsqj*X9eGFBw;SWi!bM#gxrSzIN967nkLA`=uHkQ-l7L zck3z2e#C0UZGiBxXioXs&3m6b=JwC}WGFw4= z8`$Vp9buE?^T?ZFu9sY1$y@43vo;H>DJM`PzVj?lG%IeLmL`IVn-ndIn`bb^Es8CM zj5;j^{r`xZTRNqIY4^@wtvFHHsoKUZW?vOq<7Wu8!6{^g6s#PWpmt(5!Ur6y&{8d_5xeAZL4)zh-MGqTaMvYnr0ds-WZDHCdxZQLP>XrWS+ zvO^THP4GKK2d1R+a~F3@bZm|{HODK?@y^ciWF;lNaEK!an Hr~Li^Q+56? delta 1343 zcmaiz+jCP@6vlriImu2Bdll-7{87HFGFDk5qF zUT9Uo%khRS;svcY)D}q`YZ)ILAAI*e@Dcw2oq@V`h?$N)a30oPYwfkawf6qL^Zk-v zLb=~A{&)^p%Nd7yIu%_G9y%BB7^wy9ByCK$qDRr|5a4k|pM%356Z8idFy(^*GA15! zP&{GGUX#u$h8?Qt4Dh5`_nDfk!y2A4p?Le7d0H$76wfH0b$E^uhvnoPmT}OSLlr#F z3l1;xlH#z#HH-!rQ@pHrW$N6lRoSI@wHO|e35#>CcaM2?SS#K0o)vDBx4TNEGXn#u zLAk`yVw=Mj>)fBcYu%t->y6OhChVn^M>NNHO|Uet^M>Y4T({q@^+$NiBIKU*2i?N%A(TrY1)-(YTvqff4XOAcvognGfjgL2=4NMp_qBN| z*9iaS^I}P>2C-2$R#9EoC^^4GpotZ&@qILLt*jn1xY($>r{cKP==z*hIaAdu8hL;^ z5!MY<(88^(W4++Cl3)WHMIxKo#Es$wSj~3g68Ts}R&veQf-qL($nlT<7A1r|vYMcbSiL21o|?El z!?NTI%ab8H&x!)!0xRRbkT1{G$+-Vl7EZG&8`X5##|6*~gV!QtWEsFVx Y68n$HLp>_TJnUe%td6L`kyXBb0NvN}5&!@I diff --git a/out/production/InvokeGenerator/generator/java/ClassMirror.class b/out/production/InvokeGenerator/generator/java/ClassMirror.class index dae2ca26dcab04308971429d1461fd3d96f094c5..1289b199d5fa1ddd3a6cd01427e92d9825ac2990 100644 GIT binary patch literal 7464 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 literal 7361 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 diff --git a/out/production/InvokeGenerator/generator/java/EnumMirror.class b/out/production/InvokeGenerator/generator/java/EnumMirror.class index 8a7e5be647ecbb1697993a14db808df27dba8232..cc30f9a52fe8e46cf9854407135a0863c1736c09 100644 GIT binary patch literal 3466 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 literal 3054 zcmZuz`F9gl6#k|SooPBO4ZB6HfZB$%BZ!LD4bmdTG@ykdh}LN`rUTPVm`teqzAK6f zYF%)*?t(&UK|T5lp5qVxK^%|z-I=saDE*=H?tAy$``zy@FMs`e`ZoYq>&wdC)W*GoLg1eb3J4 zx)jV!y7{7S=KTTFDOnocQqb7n)7P8amfDt9(9oOS(Ub1h@U{Xi-Lq>j)tm0o@Q#9d zx8y5W9NM&9V>=D{G;5h7G^=LZyl*`~jpeDFmA5?8cRi!e_B_|4M>!JbSvOM}vGTs@ z+iqUL(!d%wjqd6LvFDgYpPNK1Hhj^HX--N|#24EN_Q7R>6Yv?~{{$-^}dqGYbJ^)*8JQgxhJa zi`!-=Qv8PCw)3``BLShjZb!@_V74PbJ5AO##EGDn8Wl5r{=2bxG!oj^|gR zHY!BuxEZ&o_*lm$VkI&(>eKwE_)Nj-Vc#zlZ!nAuliHbc-JD}}X50~@V2GA6YVWrV z9iL-B$5z~~;|sj6V;o=VxD^{!e5K=StkG(;29Y;4=vV#n? z(oAQZ4O0=tVW(uElc{EHET6T%#VihoXDeo%C0)m{GL@oSGV3^H7kz>_iBl@dIwtTl zv#Vngr*)jcFFI1_Ba{m^K@Az(hW617Ln8c0EB_e9+$ftP;H##96wIq_7giISY3o$U zFJeEP&oblIWKfuPo`upT2J^UJEYQ4jRt3pf#ACnOJIuObBAS zCmLwcbm*(5hr%cWFVUjqZ!(M4PLDk-!ys*ruoYBKpcKi(nre`hDH;aGPM9^e77OTE z2OMIToUP>#F2cls8n#*HgZs zO722L#ux8KWH<#jI8XwaBahz(+U5l0{~k&k=tJQ*8lQj?S5Bes1f@D`mOXxfW?EW} z+qlw0O>99g%|~QzaW^6@7+O;XDb;iD^qNW3D>#c=!$mAo#+)%Mi=RZ@Ssdf1L6&8x z<2Wo*s75&+u83nC2iN=oZ4AjXXxu%4Xde}u%FttT%a}KY#zbs>84Kcxcp1%;h$$#z z;VCSl)}phR7nkozES|s;S^bH~iEwA>87$jPFT5~;O#g21Wsji|bAB2!> z+)YWYwlJ=S*orbPmc^RNH+BgZGr5e>Gl;v9IGX9}BIZyKEeTCbdv6I4u~@Ndx<&@c zh}1}j*gu0ynT*!hWo4|SED7N%wu=ACSY2^m#^p1v=LIE^!sVna!O&+)siWdHg1e@i zDJ!WhB{W{`?21}vS6^(;{g;%9X@BJU*HrO!$ diff --git a/out/production/InvokeGenerator/impl/CApiParser$1.class b/out/production/InvokeGenerator/impl/CApiParser$1.class index b67532a572b5fe20b57035e5f3ade657b160bc95..bdd9bd4cf661316d3843ff73ec28e486dcfd566f 100644 GIT binary patch delta 19 bcmcc4cAag*CML!olQ%Q@GX9>-$Q%X$Q^5z8 delta 19 bcmcc4cAag*CML$0lQ%Q@GQOG2$Q%X$Qqc!^ diff --git a/out/production/InvokeGenerator/impl/CApiParser.class b/out/production/InvokeGenerator/impl/CApiParser.class index da2745925e15843a68431ed5460aac772e0f719a..ac5e13948604a9aa75cbbea0cbc92abfba9c8fa6 100644 GIT binary patch delta 5891 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 LGy8Qsz@PsCYFYUp diff --git a/out/production/InvokeGenerator/test/FunctionRegexTest.class b/out/production/InvokeGenerator/test/FunctionRegexTest.class index d3aec007db142976860cd1a269ae167fb8260352..0c589f4a798aad3c646199f5d72171c26cecd237 100644 GIT binary patch delta 197 zcmeyyHIIA4E=I=o$-5b~l{BraH0?Dsic?E$G-8UiG@Qa613W=uG3DAZTJ}Jp$v+qk zxNKvJ4XlBJK&~N^Pf(x&5R_#Wm6RstD3s-ArYNKoC6L`Gi z6%eXYMsuNWwmkyxalm6l(Wn^>Zwpr@y&sbH&MV6Cuu2h$x!PJRY11_2-xnmm^! ekXIDQ6Jro$5ND8NkevLRC5lxBC?Y!ErR~Yt_nmj=otbBznc4jQ;@77DhVg@e zJ-DDF9mPchAxz0~$v`hI$M6BJ=$JMT#f2!Y%Kl-Dni-L<$?}nbSzM3ehP?h*Og|CR zPeuAHikk*3%<0JJ$QtN`ZJ-15vgBl0(BT-^g+;Nsr6aFnNg-15Ezeg-q!+E*Rw{3~ zxzx1pId1N_Ld$r;rQY>ttbEz#<-FtCB?UD}dEUv3+;qZm9e-3Ioa~=b(8dc{-rSnz z&8hOzob6q;=JI@#NEb3ze#Y_~IoDol{(?gvt!dvb`6;m}jTg$UZ+nbxWJC;JGTfY< zb6kZjRh&*Cb&m1tw@!PWwZb6D8?WjGlA0$h%k%aT)@y1i^0rGw$l=m5?OT~!7p-D| zPRB78N})M`F-=A!jd*f%0Nu6k2pWaXx^k>MKW}?>_KIy~gKQMlZB=zZ^4aB#UG$xT zdpxL^Lnup@WZ1r*Lt`xhYAr7(WYuzLR4YVJWLTV_5XN+&>}BjKqIe^zhor_PlIT}3 zgL>C^Wbl%gNr}oeQ9#ke5QcSpZo&g&cD&vkV`V4LycBc^QyS?t;iGKgP3#xxwuw7f z*0EyZ3os`=Kq0sKHT$)?7GaQPxTCp3cmP*9(PRS1vmxk!y z)Km?wrdLY7%{dDf%HpuzAD1~|J_pUVme|BiRppW*g8#7cJ4z-HW6Nhc444`$P+X@hQ5aA>?&djqk`tgFe_-OU`qvC8&ul@RlKg+z|f8e z{dN*d7vk7K96NCy-E}+$MsXNN0z90_8lK;XT>4^}S-P%O>_`t*u=9bW(@LrP+GE7! zTKwV5znGzDcR!-v7M#Ku|Lv+d9zrwy53;}qs7bNhhl31L#DA2(Q^Y*ROvahRd5i=( z_tLhH1sSDQQKR8KoTfya0S}TVkU&$*b9Cq!i#@~EF&*O?b322xwcLhyM{LM^&qmR! ujdzj}M(c&<9h_ry@SlF7-gte1HJdTa9Ql~yL^X8pHku{)W|Hqic>f=b7050C diff --git a/out/production/InvokeGenerator/test/RegexTest.class b/out/production/InvokeGenerator/test/RegexTest.class deleted file mode 100644 index 904ddd79998512bf8ba8a1cdd4fcac4f4bd2de0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1369 zcmaJ>=~5Fx5dJ0!*(59kgP?dIAYc-X5rWEPRN{pOj0UmP(yAdD$YQd)ZYCa&;3N1L z`Xg9cmY)NlJ zY?Vn9%Q^*7-V~mt&n;y@m8>d5PgcpQ;!os`{IEg0CBmr)%Vy}0zs&B6cY>FNy~Fd$ zv+SKE%@cHL%B?Al+jdXh!rLL--XokDn9DHG^r|VV%soxZb3!TU*+ku8*$re?Im&KL zs6t74WY?8fqVQ%-xQ%2Cqz&9KaFZdDcWPci-nDez-G8&1)`6Ocp_k!Id^))-hDx5? zzCQBub^28@5g$n>NSh!a6SuI!u=>|xo1hjs=b1(Rv?{$S&t>>(QHq@B?8<_w@|9=V z)fKJ@icW!Vy%(;`s_~^>&2mxkrn_@F@2X`4dM`xx>s!|@E9Zi|Ihx-OrO+3Iu zhExAnbERgLi_)W-deR*-k;R&cbv!bVGw~QtD8s|eqjvtoc(kSC+lOs0_aWnEdyg<~ z)ttd7I2E^1)~R@V-xJ3))u=T4#*jMbnJEb`FW=UrU64!d{{NaC*tYCqW5{1Hm{f|g z&>i-wl-&41#Qhm<5ASfUAFE2zfca^T8Ty*mmcw&2;fgS%sL+T7h3iVqdrZ0qUPh}| zP(Q4SK(JneKK zb3`^sJe_s0DO|u11r??r;4t0#$Ulh@TqN|-1}^)Jc>`kx#tmE|%Q$I$ GNc;ic0!`om diff --git a/out/production/InvokeGenerator/util/FileUtils.class b/out/production/InvokeGenerator/util/FileUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..eeba503659749bb3109dc60cb618e53b50fa1e4e GIT binary patch literal 793 zcmZWm%Wl&^6g`vpK^*syhEPH&&$LbA5F=W#Xsd_{goNb6qEIAQImrN1OpF`{!JeP! zmQB}e3S!YE3x0t=;1ducoN*Dfs^z)wx#!$F-+q5N0I-bf4o=~cgUh(0#Z@h84s0xF zYthD%jkw2QWg1kRU{wL7_PBFUq&*OcT^&KX`H+hDAj|V@J;BeI4fMs(4O&%z~u1^S%gVa zW0R*R5|JD*A?^v}6b(~1AcI2xKhVTh8ungphOaY{HX1f60?t-EN_tXrB;Y@)ZOzF= z0S*gYG~u~u;hKxKwx&^X;ltyN;}de`Y?vqWvel71i*_wyeYb@uh4&qyBPW4>*)XdOo$FHk+RyK4xi`(#nDkCTP2d1(?JX zy@DQw5qKT;S;h(~Sfzgp=Q3g)g4b|{*)mMZHcqo5 z$Kx?N%Z_JJ=b44UUMr|Fqi5aV{WA3&&k~F=OH3Q*ZOro*toVgF`afZg*;mkHp}+;o H94`I=F=mo( literal 0 HcmV?d00001 diff --git a/src/generator/CJavaPipeline.java b/src/generator/CJavaPipeline.java index 8f5f96e..07dd3c4 100644 --- a/src/generator/CJavaPipeline.java +++ b/src/generator/CJavaPipeline.java @@ -4,13 +4,14 @@ import c.CClass; import c.CDeclaration; import c.CEnum; import c.DeclarationType; -import generator.ccalls.CallImplementer; import generator.c.Bind; import generator.c.HeaderMaker; import generator.c.IdCache; import generator.c.TypeTable; +import generator.ccalls.CallImplementer; import impl.CApiParser; import impl.Clazz; +import util.FileUtils; import java.io.*; import java.nio.file.Files; @@ -29,36 +30,27 @@ import java.util.Properties; @SuppressWarnings("ConstantConditions") public class CJavaPipeline { + public static final int BWAPI_V3 = 3; + + public static final int BWAPI_V4 = 4; + + + public static int BWAPI_VERSION = BWAPI_V3; + /** * Classes from BWAPI 4 that don't need mirroring * Not used in mirroring BWAPI 3 */ - private static final List ignoredClasses = Arrays.asList("Vectorset", "ConstVectorset", "VSetIterator", - "Interface", "RectangleArray", "UnitImpl", "PlayerImpl", "GameImpl", "BulletImpl", "ForceImpl", "TournamentModule", "RegionImpl"); + private static final List ignoredClasses = new ArrayList<>(Arrays.asList("Vectorset", "ConstVectorset", "VSetIterator", + "Interface", "RectangleArray", "UnitImpl", "PlayerImpl", "GameImpl", "BulletImpl", "ForceImpl", "TournamentModule", "RegionImpl")); - @SuppressWarnings("ResultOfMethodCallIgnored") - public static void deleteDirectory(File directory) { - if (directory.exists()) { - File[] files = directory.listFiles(); - if (files != null) { - for (File file : files) { - if (file.isDirectory()) { - deleteDirectory(file); - } else { - file.delete(); - } - } - } - } - } - public void run(PackageProcessOptions[] packages, Properties processingOptions) { /** Init */ for (PackageProcessOptions pkg : packages) { - deleteDirectory(new File(pkg.packageName)); + FileUtils.deleteDirectory(new File(pkg.packageName)); } MirrorContext context = new MirrorContext(); @@ -145,7 +137,7 @@ public class CJavaPipeline { packageDirNames.add(pkg.packageName); } HeaderMaker hm = new HeaderMaker(); - hm.run(packageDirNames, javaOut); + hm.run(packageDirNames, javaOut, processingOptions.getProperty(HEADER_FILE_PROPERTY) , processingOptions.getProperty(HEADERS_DIR_PROPERTY)); /** * Phase 6 - implementation of native functions @@ -221,28 +213,51 @@ public class CJavaPipeline { public static void main(String... args) { - PackageProcessOptions bwapiOptions = new PackageProcessOptions(); - bwapiOptions.packageName = "bwapi"; - bwapiOptions.cHeadersDir = new File("bwapi-master"); - bwapiOptions.manualCopyClassesDir = new File("manual-bwapi"); + if (BWAPI_VERSION == BWAPI_V3) { - PackageProcessOptions bwtaOptions = new PackageProcessOptions(); - bwtaOptions.packageName = "bwta"; - bwtaOptions.cHeadersDir = new File("bwta-c"); - bwtaOptions.additionalImportClasses = Arrays.asList("bwapi.Position", "bwapi.TilePosition", "bwapi.Player"); - bwtaOptions.globalClassName = "BWTA"; + PackageProcessOptions bwapiOptions = new PackageProcessOptions(); + bwapiOptions.packageName = "bwapi"; + bwapiOptions.cHeadersDir = new File("bwapi-master"); + bwapiOptions.manualCopyClassesDir = new File("manual-bwapi"); - Properties props = new Properties(); - props.put(COMPILE_DIR_PROPERTY, "compiled"); - props.put(HEADERS_DIR_PROPERTY, "headers"); - props.put(C_IMPLEMENTATION_FILE_PROPERTY, "c/impl.cpp"); + PackageProcessOptions bwtaOptions = new PackageProcessOptions(); + bwtaOptions.packageName = "bwta"; + bwtaOptions.cHeadersDir = new File("bwta-c"); + bwtaOptions.additionalImportClasses = Arrays.asList("bwapi.Position", "bwapi.TilePosition", "bwapi.Player"); + bwtaOptions.globalClassName = "BWTA"; - new CJavaPipeline().run(new PackageProcessOptions[]{bwapiOptions, bwtaOptions}, props); + Properties props = new Properties(); + props.put(COMPILE_DIR_PROPERTY, "compiled"); + props.put(HEADERS_DIR_PROPERTY, "headers"); + props.put(HEADER_FILE_PROPERTY, "concat_header.h"); + props.put(C_IMPLEMENTATION_FILE_PROPERTY, "c/impl.cpp"); + + new CJavaPipeline().run(new PackageProcessOptions[]{bwapiOptions, bwtaOptions}, props); + } + + if (BWAPI_VERSION == BWAPI_V4) { + + ignoredClasses.add("Position"); + + PackageProcessOptions bwapiOptions = new PackageProcessOptions(); + bwapiOptions.packageName = "bwapi4"; + bwapiOptions.cHeadersDir = new File("bwapi4-includes"); + bwapiOptions.manualCopyClassesDir = new File("manual-bwapi4"); + + Properties props = new Properties(); + props.put(COMPILE_DIR_PROPERTY, "compiled4"); + props.put(HEADERS_DIR_PROPERTY, "headers4"); + props.put(HEADER_FILE_PROPERTY, "concat_header4.h"); + props.put(C_IMPLEMENTATION_FILE_PROPERTY, "c4/impl.cpp"); + + new CJavaPipeline().run(new PackageProcessOptions[]{bwapiOptions}, props); + } } private static final String COMPILE_DIR_PROPERTY = "compiled_dir"; private static final String HEADERS_DIR_PROPERTY = "headers_dir"; private static final String C_IMPLEMENTATION_FILE_PROPERTY = "impl_file"; + private static final String HEADER_FILE_PROPERTY = "header_file"; } diff --git a/src/generator/MirrorContext.java b/src/generator/MirrorContext.java index 71bd9fb..afdd583 100644 --- a/src/generator/MirrorContext.java +++ b/src/generator/MirrorContext.java @@ -71,6 +71,9 @@ public class MirrorContext { if( cType.endsWith("*")){ return cType.substring(0, cType.length() - 1); } + if(CJavaPipeline.BWAPI_VERSION == CJavaPipeline.BWAPI_V4 && cType.contains("bwapi.")){ + cType = cType.replace("bwapi.", "bwapi4."); + } return result != null ? result : cType; } diff --git a/src/generator/MyJavaCompiler.java b/src/generator/MyJavaCompiler.java index c12047e..ee1046f 100644 --- a/src/generator/MyJavaCompiler.java +++ b/src/generator/MyJavaCompiler.java @@ -30,7 +30,14 @@ public class MyJavaCompiler { for (File file : inDir.listFiles()) { if(file.isDirectory()){ for(File ffile : file.listFiles()){ + if(ffile.isDirectory()){ + for(File fffile : ffile.listFiles()){ + javaFileObjects.add(new JavaSourceFile(fffile)); + } + continue; + } javaFileObjects.add(new JavaSourceFile(ffile)); + } continue; } diff --git a/src/generator/c/HeaderMaker.java b/src/generator/c/HeaderMaker.java index ee2de53..f7041a9 100644 --- a/src/generator/c/HeaderMaker.java +++ b/src/generator/c/HeaderMaker.java @@ -33,10 +33,10 @@ public class HeaderMaker { return result.toString(); } - public void run(List javaRoot, File clpath) { + public void run(List javaRoot, File clpath, String outputFile, String outputDir) { String command; - command = "javah -o concat_header.h -classpath " + clpath.toString() + prepareClassList(javaRoot, clpath); + command = "javah -o " + outputFile +" -classpath " + clpath.toString() + prepareClassList(javaRoot, clpath); // System.out.println(command); try { Process process = Runtime.getRuntime().exec(command); @@ -49,7 +49,7 @@ public class HeaderMaker { } catch (IOException e) { e.printStackTrace(); } - command = "javah -d headers -classpath " + clpath.toString() + prepareClassList(javaRoot, clpath); + command = "javah -d " + outputDir +" -classpath " + clpath.toString() + prepareClassList(javaRoot, clpath); try { Process process = Runtime.getRuntime().exec(command); //process.getErrorStream() diff --git a/src/generator/java/ClassMirror.java b/src/generator/java/ClassMirror.java index d1bdb82..86a5d67 100644 --- a/src/generator/java/ClassMirror.java +++ b/src/generator/java/ClassMirror.java @@ -56,6 +56,9 @@ public class ClassMirror extends Mirror { private void writeInstanceGetter() { out.println(INTEND + "private" + SPACE + "static" + SPACE + cClass.getName() + SPACE + "get(long pointer)" + SPACE + "{"); + out.println(INTEND + INTEND + "if (pointer == 0 ) {"); + out.println(INTEND + INTEND + INTEND + "return null" + SEMICOLON); + out.println(INTEND + INTEND + "}"); out.println(INTEND + INTEND + cClass.getName() + SPACE + "instance = instances.get(pointer)" + SEMICOLON); out.println(INTEND + INTEND + "if (instance == null ) {"); out.println(INTEND + INTEND + INTEND + "instance = new" + SPACE + cClass.getName() + "(pointer)" + SEMICOLON); diff --git a/src/generator/java/EnumMirror.java b/src/generator/java/EnumMirror.java index 93ec4d8..b69cf42 100644 --- a/src/generator/java/EnumMirror.java +++ b/src/generator/java/EnumMirror.java @@ -36,7 +36,13 @@ public class EnumMirror extends Mirror { File innerDir = new File(root, context.getPackageDirs()); if (cEnum.getNameSpaceName() != null) { - innerDir = new File(innerDir, cEnum.getNameSpaceName()); + String namespace = cEnum.getNameSpaceName(); + if(namespace.contains(".")){ + innerDir = new File(innerDir,namespace.substring(0, namespace.indexOf("."))); + innerDir.mkdirs(); + namespace = namespace.substring(namespace.indexOf(".") + 1); + } + innerDir = new File(innerDir,namespace); innerDir.mkdirs(); } File file = new File(innerDir, cEnum.getName() + ".java"); diff --git a/src/generator/java/Mirror.java b/src/generator/java/Mirror.java index ea9ad5d..47f2779 100644 --- a/src/generator/java/Mirror.java +++ b/src/generator/java/Mirror.java @@ -15,6 +15,9 @@ import java.io.PrintStream; * Time: 14:27 */ public abstract class Mirror { + + private static final boolean WRITE_DOC = false; + protected static final String SPACE = " "; protected static final String SEMICOLON = ";"; @@ -36,32 +39,34 @@ public abstract class Mirror { protected String lastDoc = null; protected void writeJavadoc(CDeclaration field) { - if (field.getJavadoc() != null) { - if (field.getJavadoc().contains("copydoc")) { - if (lastDoc != null) { - out.print(lastDoc); + if (WRITE_DOC) { + if (field.getJavadoc() != null) { + if (field.getJavadoc().contains("copydoc")) { + if (lastDoc != null) { + out.print(lastDoc); + } + } else { + out.print(field.getJavadoc()); + lastDoc = field.getJavadoc(); } } else { - out.print(field.getJavadoc()); - lastDoc = field.getJavadoc(); - } - } else { - if (field instanceof CClass) { - Crawler cl = new Crawler(); - if(context.getPackage().equals("bwta")){ - cl.setBaseUrl("https://code.google.com/p/bwta/wiki/"); + if (field instanceof CClass) { + Crawler cl = new Crawler(); + if (context.getPackage().equals("bwta")) { + cl.setBaseUrl("https://code.google.com/p/bwta/wiki/"); + } + documentation = cl.request(getDecl().getName()); + if (documentation != null) { + printJavadoc(documentation.header); + } } - documentation = cl.request(getDecl().getName()); - if (documentation != null) { - printJavadoc(documentation.header); + if (documentation == null) { + return; + } + String javadoc = documentation.fields.get(new DocumentedField(field.getName())); + if (javadoc != null) { + printJavadoc(javadoc); } - } - if (documentation == null) { - return; - } - String javadoc = documentation.fields.get(new DocumentedField(field.getName())); - if (javadoc != null) { - printJavadoc(javadoc); } } } diff --git a/src/impl/CApiParser.java b/src/impl/CApiParser.java index 8d64942..bf57254 100644 --- a/src/impl/CApiParser.java +++ b/src/impl/CApiParser.java @@ -42,7 +42,8 @@ public class CApiParser { //String FUNC_REGEX = "^(\\s*)(virtual)?\\s(BWAPI::)?([\\w\\*]+)\\s([\\w\\*]+)\\((.*)\\)((\\sconst)?\\s=\\s0;)?"; //String FUNC_REGEX = "^(\\s*)(virtual)?\\s((BWAPI)|(std)::)?([\\w\\*]+)\\s([\\w\\*]+)\\((.*)\\)((\\sconst)?\\s=\\s0;)?"; // 1 2 3 45 6 78 9 10 11 12 13,14 15,16 - String FUNC_REGEX = "^(\\s*)(virtual)?\\s(const\\s)?((BWAPI::)|(std)::)?((set<(\\s*(BWAPI::)?\\w+\\*?\\s*)>)|([\\w\\*]+))&?\\s([\\w\\*]+)\\((.*)\\)((\\sconst)?\\s=\\s0;)?"; + String FUNC_REGEX = "^(\\s*)(virtual)?\\s(const\\s)?((BWAPI::)|(std)::)?((set<(\\s*(BWAPI::)?\\w+\\*?\\s*)>)|([\\w\\*]+))&?\\s([\\w\\*]+)\\((.*)\\)((\\sconst)?\\s=\\s0;)?\\s*"; + static final int F_REGEX_RETURN_TYPE = 7; static final int F_REGEX_NAME = 12; static final int F_REGEX_PARAMS = 13; @@ -72,7 +73,7 @@ public class CApiParser { private LineState processLine(String line) { line = line.trim(); if (javadoc == null && line.contains("/*")) { - if(line.endsWith("*")){ + if (line.endsWith("*")) { line += "

"; } if (line.contains("*/")) { @@ -81,7 +82,7 @@ public class CApiParser { javadoc = "\t" + line.substring(line.indexOf("/*")) + "\n"; } } else if (javadoc != null && !javadoc.endsWith("*/\n")) { - if(line.endsWith("*")){ + if (line.endsWith("*")) { line += "

"; } if (line.contains("*/")) { @@ -261,22 +262,34 @@ public class CApiParser { } if (matcher.group(F_REGEX_PARAMS) != null) { - String paramStrings[] = matcher.group(F_REGEX_PARAMS).split("\\,\\s"); + String paramsString = matcher.group(F_REGEX_PARAMS); + String paramStrings[] = paramsString.split("\\,"); for (String param : paramStrings) { if (param.isEmpty()) { continue; } - String[] arg = param.trim().split("\\s"); + param = param.trim(); + + String[] arg = param.split("\\s"); if (arg[0].equals("...")) { //function.args.add(new Param("Object[]", "arr")); continue; } + if (!param.contains(" ")) { + System.err.println("Macro function skipped " + function.name); + return null; + } + try { String argType = ""; String argName = ""; - if (arg[0].equals("const") || arg[0].equals("unsigned")) { + if (arg[0].equals("const") || arg[0].equals("unsigned")) { + if (arg.length == 2) { + System.err.println("Macro function skipped " + function.name); + return null; + } argType = arg[1]; argName = arg[2]; } else { @@ -368,10 +381,9 @@ public class CApiParser { return null; } - if(arg.length > 2 && arg[2].equals("=")){ + if (arg.length > 2 && arg[2].equals("=")) { function.args.add(new Param(argType, argName, arg[3])); - } - else{ + } else { function.args.add(new Param(argType, argName)); } } catch (Exception e) { @@ -451,6 +463,9 @@ public class CApiParser { } if (lineState == LineState.ENUM_DEF) { String enumName = line.trim().split(" ")[1]; + if (currentNamespace != null && currentNamespace.equals("Size")) { + currentNamespace = "Text.Size"; + } Enum e = new Enum(enumName, currentNamespace); if (javadoc != null) { e.setJavadoc(javadoc); diff --git a/src/test/FunctionRegexTest.java b/src/test/FunctionRegexTest.java index 1a29fa4..6d5a24c 100644 --- a/src/test/FunctionRegexTest.java +++ b/src/test/FunctionRegexTest.java @@ -11,13 +11,14 @@ import java.util.regex.Pattern; public class FunctionRegexTest { // 1 2 3 4 56 7 89 10 11 12,13 14,15 - String FUNC_REGEX = "^(\\s*)(virtual)?\\s(const\\s)?((BWAPI::)|(std::))?((set<(\\w+\\*?)>)|([\\w\\*]+))&?\\s([\\w\\*]+)\\((.*)\\)((\\sconst)?\\s*=\\s*0;)?"; + //String FUNC_REGEX = "^(\\s*)(virtual)?\\s(const\\s)?((BWAPI::)|(std::))?((set<(\\w+\\*?)>)|([\\w\\*]+))&?\\s([\\w\\*]+)\\((.*)\\)((\\sconst)?\\s*=\\s*0;)?"; + String FUNC_REGEX = "^(\\s*)(virtual)?\\s(const\\s)?((BWAPI::)|(std)::)?((set<(\\s*(BWAPI::)?\\w+\\*?\\s*)>)|([\\w\\*]+))&?\\s([\\w\\*]+)\\((.*)\\)((\\sconst)?\\s=\\s0;)?\\s*"; String ENUM_VALUE_REGEX = "^(\\s*)(\\w+)(\\s*=\\s*(0x)?([0-9A-Fa-f]+))?\\s*[\\,;]"; Pattern funcPattern = Pattern.compile(FUNC_REGEX); public void run() { - Matcher matcher = funcPattern.matcher(" virtual BWAPI::TilePosition getTilePosition() const=0;"); + Matcher matcher = funcPattern.matcher(" virtual void drawText(int ctype, int x, int y, const char *format, ...) = 0; "); if (matcher.matches()) { System.out.println("match"); } diff --git a/src/util/FileUtils.java b/src/util/FileUtils.java new file mode 100644 index 0000000..69b8a81 --- /dev/null +++ b/src/util/FileUtils.java @@ -0,0 +1,28 @@ +package util; + +import java.io.File; + +/** + * User: PC + * Date: 14. 8. 2014 + * Time: 10:11 + */ +public class FileUtils { + + @SuppressWarnings("ResultOfMethodCallIgnored") + public static void deleteDirectory(File directory) { + if (directory.exists()) { + File[] files = directory.listFiles(); + if (files != null) { + for (File file : files) { + if (file.isDirectory()) { + deleteDirectory(file); + } else { + file.delete(); + } + } + } + } + } + +}

%i4Rdz4qH$-v!BJ9B8_= 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 *h@y=H>#s~S+33Ko6Oj&ChCy)R-W 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