├── .gitignore ├── .gitmodules ├── LICENSE ├── README.md ├── android ├── AndroidManifest.xml ├── build.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── ic_launcher-web.png ├── local.properties ├── proguard-rules.pro ├── project.properties ├── res │ ├── drawable-hdpi │ │ └── ic_launcher.png │ ├── drawable-mdpi │ │ └── ic_launcher.png │ ├── drawable-xhdpi │ │ └── ic_launcher.png │ ├── drawable-xxhdpi │ │ └── ic_launcher.png │ ├── drawable │ │ ├── down_arrow.png │ │ ├── left_arrow.png │ │ ├── mouse.png │ │ ├── right_arrow.png │ │ ├── toggle.png │ │ └── up_arrow.png │ ├── layout │ │ ├── main_activity.xml │ │ ├── screen_controls.xml │ │ └── tv_activity.xml │ ├── menu │ │ └── menu.xml │ ├── mipmap-xhdpi │ │ ├── ic_banner.png │ │ └── ic_banner_foreground.png │ ├── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── ic_banner_background.xml │ │ ├── strings.xml │ │ ├── styles.xml │ │ └── themes.xml │ └── xml │ │ ├── backup_rules.xml │ │ ├── data_extraction_rules.xml │ │ └── settings.xml └── src │ └── main │ └── java │ └── net │ └── warsmash │ └── phone │ ├── CustomExceptionHandler.kt │ ├── ExceptionsHandlerApplication.kt │ ├── android │ └── engine │ │ ├── ANGLEInstancedArraysGLES30.java │ │ ├── DynamicShadowExtensionGLES30.java │ │ ├── Engine.kt │ │ └── activity │ │ └── EngineActivity.kt │ ├── interfaces │ └── SettingsFragmentMvpView.kt │ ├── presenter │ ├── MainActivityPresenter.kt │ └── SettingsFragmentPresenter.kt │ ├── ui │ ├── activity │ │ ├── ConfigureControlsActivity.kt │ │ ├── MainActivity.kt │ │ └── TVActivity.kt │ ├── controls │ │ ├── ScreenControlsManager.kt │ │ └── views │ │ │ ├── MouseButton.kt │ │ │ ├── ScrollableImageButton.kt │ │ │ └── TouchScreenImageButton.kt │ └── fragment │ │ ├── MvpAppCompatFragment.java │ │ └── SettingsFragment.kt │ └── utils │ ├── Consts.kt │ ├── Utils.kt │ └── extensions │ └── Extensions.kt ├── assets ├── gles3.2 │ ├── MdxShaders.fsHd.glsl │ └── MdxShaders.vsHd.glsl ├── resources │ ├── Scripts │ │ ├── Abilities │ │ │ ├── Human │ │ │ │ ├── Archmage │ │ │ │ │ ├── Blizzard.j │ │ │ │ │ ├── Brilliance.j │ │ │ │ │ ├── MassTeleport.j │ │ │ │ │ └── SummonWaterElemental.j │ │ │ │ ├── MountainKing │ │ │ │ │ ├── Avatar.j │ │ │ │ │ ├── StormBolt.j │ │ │ │ │ └── ThunderClap.j │ │ │ │ └── Paladin │ │ │ │ │ ├── Devotion.j │ │ │ │ │ ├── DivineShield.j │ │ │ │ │ ├── HolyLight.j │ │ │ │ │ └── Resurrect.j │ │ │ └── Orc │ │ │ │ └── TaurenChieftain │ │ │ │ └── AbilityWarStomp.j │ │ ├── abilitiesCommon.j │ │ ├── abilitiesCommon2.j │ │ ├── abilitiesCommon3.j │ │ ├── abilitiesDefaults.j │ │ ├── abilitiesUtils.j │ │ ├── common.jui │ │ └── melee.jui │ └── UI │ │ └── FrameDef │ │ ├── SmashFrameDef.toc │ │ └── SmashUI │ │ ├── InventoryCover.fdf │ │ ├── SmashConsoleUI.fdf │ │ ├── TimeOfDayIndicator.fdf │ │ ├── ToolTip.fdf │ │ └── UnitPortrait.fdf └── warsmash.ini ├── build.gradle ├── core ├── AndroidManifest.xml ├── assets │ ├── abilityBehaviors │ │ ├── RaiseDead.json │ │ ├── Transformations.json │ │ ├── auras.json │ │ ├── generalPassives.json │ │ ├── humanHeroActives.json │ │ ├── humanUnitActives.json │ │ ├── itemSimple.json │ │ ├── neutralHeroUnitActives.json │ │ ├── neutralUnitActives.json │ │ ├── nightElfHeroUnitActives.json │ │ ├── nightElfUnitActives.json │ │ ├── orcHeroActives.json │ │ ├── reactions.json │ │ ├── undeadHeroUnitActives.json │ │ └── undeadUnitActives.json │ ├── resources │ │ ├── Icon128.png │ │ ├── Icon16.png │ │ ├── Icon32.png │ │ └── Icon64.png │ ├── warsmash.ini │ ├── warsmash131notworking.ini │ ├── warsmashPRSCMOD.ini │ ├── warsmashRF.ini │ ├── warsmashTTOR.ini │ ├── warsmashUF.ini │ ├── warsmash_131.ini │ └── warsmash_myHD.ini ├── build.gradle ├── src │ ├── com │ │ ├── etheller │ │ │ └── warsmash │ │ │ │ ├── AudioLoader.kt │ │ │ │ ├── CodeCounter.java │ │ │ │ ├── KeysEmulator.kt │ │ │ │ ├── MathSpeedBenchmark.java │ │ │ │ ├── SingleModelScreen.java │ │ │ │ ├── Utils.java │ │ │ │ ├── WarsmashGdxFDFTestRenderScreen.java │ │ │ │ ├── WarsmashGdxGame.java │ │ │ │ ├── WarsmashGdxMapScreen.java │ │ │ │ ├── WarsmashGdxMenuScreen.java │ │ │ │ ├── WarsmashGdxMultiScreenGame.java │ │ │ │ ├── WarsmashGdxTerrainEditor.java │ │ │ │ ├── WarsmashPreviewApplication.java │ │ │ │ ├── WarsmashTestGame.java │ │ │ │ ├── WarsmashTestGame2.java │ │ │ │ ├── WarsmashTestGame3.java │ │ │ │ ├── WarsmashTestGameAttributes.java │ │ │ │ ├── WarsmashTestGameAttributes2.java │ │ │ │ ├── WarsmashTestGameTextureBuffer.java │ │ │ │ ├── WarsmashTestGameTextureBuffer2.java │ │ │ │ ├── WarsmashTestMyTextureGame.java │ │ │ │ ├── common │ │ │ │ ├── FetchDataTypeName.java │ │ │ │ └── LoadGenericCallback.java │ │ │ │ ├── datasources │ │ │ │ ├── CascDataSource.java │ │ │ │ ├── CascDataSourceDescriptor.java │ │ │ │ ├── CompoundDataSource.java │ │ │ │ ├── CompoundDataSourceDescriptor.java │ │ │ │ ├── DataSource.java │ │ │ │ ├── DataSourceDescriptor.java │ │ │ │ ├── FolderDataSource.java │ │ │ │ ├── FolderDataSourceDescriptor.java │ │ │ │ ├── MpqDataSource.java │ │ │ │ ├── MpqDataSourceDescriptor.java │ │ │ │ └── SubdirDataSource.java │ │ │ │ ├── networking │ │ │ │ ├── WarsmashClient.java │ │ │ │ ├── WarsmashClientSendingOrderListener.java │ │ │ │ ├── WarsmashClientTestingUtility.java │ │ │ │ └── uberserver │ │ │ │ │ └── GamingNetworkConnectionImpl.java │ │ │ │ ├── parsers │ │ │ │ ├── fdf │ │ │ │ │ ├── DataSourceFDFParserBuilder.java │ │ │ │ │ ├── DynamicFontGeneratorHolder.java │ │ │ │ │ ├── FontGeneratorHolder.java │ │ │ │ │ ├── GameSkin.java │ │ │ │ │ ├── GameUI.java │ │ │ │ │ ├── Main.java │ │ │ │ │ ├── ModelExport.java │ │ │ │ │ └── frames │ │ │ │ │ │ ├── AbstractRenderableFrame.java │ │ │ │ │ │ ├── AbstractUIFrame.java │ │ │ │ │ │ ├── AnchorPoint.java │ │ │ │ │ │ ├── BackdropFrame.java │ │ │ │ │ │ ├── CheckBoxFrame.java │ │ │ │ │ │ ├── ClickConsumingTextureFrame.java │ │ │ │ │ │ ├── ControlFrame.java │ │ │ │ │ │ ├── EditBoxFrame.java │ │ │ │ │ │ ├── FilterModeTextureFrame.java │ │ │ │ │ │ ├── FramePointAssignment.java │ │ │ │ │ │ ├── GlueButtonFrame.java │ │ │ │ │ │ ├── GlueTextButtonFrame.java │ │ │ │ │ │ ├── ListBoxFrame.java │ │ │ │ │ │ ├── MenuFrame.java │ │ │ │ │ │ ├── PopupMenuFrame.java │ │ │ │ │ │ ├── ScrollBarFrame.java │ │ │ │ │ │ ├── SetPoint.java │ │ │ │ │ │ ├── SimpleButtonFrame.java │ │ │ │ │ │ ├── SimpleFrame.java │ │ │ │ │ │ ├── SimpleStatusBarFrame.java │ │ │ │ │ │ ├── SingleStringFrame.java │ │ │ │ │ │ ├── SmartBackdropFrame.java │ │ │ │ │ │ ├── SpriteFrame.java │ │ │ │ │ │ ├── SpriteFrame2.java │ │ │ │ │ │ ├── StringFrame.java │ │ │ │ │ │ ├── TextAreaFrame.java │ │ │ │ │ │ ├── TextButtonFrame.java │ │ │ │ │ │ ├── TextureFrame.java │ │ │ │ │ │ └── UIFrame.java │ │ │ │ ├── jass │ │ │ │ │ ├── Jass2.java │ │ │ │ │ ├── JassAIEnvironment.java │ │ │ │ │ ├── JassTest.java │ │ │ │ │ ├── JassTextGenerator.java │ │ │ │ │ ├── JassTextGeneratorCallStmt.java │ │ │ │ │ ├── JassTextGeneratorExpr.java │ │ │ │ │ ├── JassTextGeneratorImpl1.java │ │ │ │ │ ├── JassTextGeneratorStmt.java │ │ │ │ │ ├── JassTextGeneratorType.java │ │ │ │ │ ├── Tmpgen.java │ │ │ │ │ ├── Tmpgen2.java │ │ │ │ │ ├── scope │ │ │ │ │ │ └── CommonTriggerExecutionScope.java │ │ │ │ │ └── triggers │ │ │ │ │ │ ├── BoolExprAnd.java │ │ │ │ │ │ ├── BoolExprCondition.java │ │ │ │ │ │ ├── BoolExprFilter.java │ │ │ │ │ │ ├── BoolExprNot.java │ │ │ │ │ │ ├── BoolExprOr.java │ │ │ │ │ │ ├── EnumSetHandle.java │ │ │ │ │ │ ├── HandleList.java │ │ │ │ │ │ ├── IntExpr.java │ │ │ │ │ │ ├── LocationJass.java │ │ │ │ │ │ ├── StringList.java │ │ │ │ │ │ ├── TriggerAction.java │ │ │ │ │ │ ├── TriggerCondition.java │ │ │ │ │ │ └── UnitGroup.java │ │ │ │ └── w3x │ │ │ │ │ ├── War3Map.java │ │ │ │ │ ├── doo │ │ │ │ │ ├── Doodad.java │ │ │ │ │ ├── RandomItem.java │ │ │ │ │ ├── RandomItemSet.java │ │ │ │ │ ├── TerrainDoodad.java │ │ │ │ │ └── War3MapDoo.java │ │ │ │ │ ├── objectdata │ │ │ │ │ ├── MakeMeTFTBeROC.java │ │ │ │ │ ├── Warcraft3MapObjectData.java │ │ │ │ │ └── Warcraft3MapRuntimeObjectData.java │ │ │ │ │ ├── unitsdoo │ │ │ │ │ ├── DroppedItem.java │ │ │ │ │ ├── DroppedItemSet.java │ │ │ │ │ ├── InventoryItem.java │ │ │ │ │ ├── ModifiedAbility.java │ │ │ │ │ ├── RandomUnit.java │ │ │ │ │ ├── Unit.java │ │ │ │ │ └── War3MapUnitsDoo.java │ │ │ │ │ ├── w3e │ │ │ │ │ ├── Corner.java │ │ │ │ │ └── War3MapW3e.java │ │ │ │ │ ├── w3i │ │ │ │ │ ├── Force.java │ │ │ │ │ ├── Player.java │ │ │ │ │ ├── RandomItem.java │ │ │ │ │ ├── RandomItemSet.java │ │ │ │ │ ├── RandomItemTable.java │ │ │ │ │ ├── RandomUnit.java │ │ │ │ │ ├── RandomUnitTable.java │ │ │ │ │ ├── TechAvailabilityChange.java │ │ │ │ │ ├── UpgradeAvailabilityChange.java │ │ │ │ │ ├── War3MapW3i.java │ │ │ │ │ └── War3MapW3iFlags.java │ │ │ │ │ ├── w3r │ │ │ │ │ ├── Region.java │ │ │ │ │ └── War3MapW3r.java │ │ │ │ │ └── wpm │ │ │ │ │ └── War3MapWpm.java │ │ │ │ ├── pjblp │ │ │ │ ├── AbstractBitmap.java │ │ │ │ ├── BitConvert.java │ │ │ │ ├── Blp2.java │ │ │ │ ├── DDSReader.java │ │ │ │ ├── DataView.java │ │ │ │ ├── JpegImage.java │ │ │ │ ├── blpDataFormat.java │ │ │ │ ├── blpImage.java │ │ │ │ ├── imageData.java │ │ │ │ └── mipmap.java │ │ │ │ ├── units │ │ │ │ ├── DataTable.java │ │ │ │ ├── Element.java │ │ │ │ ├── GameObject.java │ │ │ │ ├── HashedGameObject.java │ │ │ │ ├── LMUnit.java │ │ │ │ ├── ObjectData.java │ │ │ │ ├── StandardObjectData.java │ │ │ │ ├── StringKey.java │ │ │ │ ├── collapsed │ │ │ │ │ └── CollapsedObjectData.java │ │ │ │ ├── custom │ │ │ │ │ ├── Change.java │ │ │ │ │ ├── ChangeMap.java │ │ │ │ │ ├── ObjectDataChangeEntry.java │ │ │ │ │ ├── ObjectMap.java │ │ │ │ │ ├── WTS.java │ │ │ │ │ ├── WTSFile.java │ │ │ │ │ └── War3ObjectDataChangeset.java │ │ │ │ └── manager │ │ │ │ │ ├── MutableObjectData.java │ │ │ │ │ ├── MutableObjectDataChangeListener.java │ │ │ │ │ └── MutableObjectDataChangeNotifier.java │ │ │ │ ├── util │ │ │ │ ├── AbstractListItemDisplay.java │ │ │ │ ├── AbstractListItemProperty.java │ │ │ │ ├── DataSourceFileHandle.java │ │ │ │ ├── Descriptor.java │ │ │ │ ├── FastNumberFormat.java │ │ │ │ ├── FixedIntersector.java │ │ │ │ ├── ImageUtils.java │ │ │ │ ├── IniFile.java │ │ │ │ ├── InputManager.kt │ │ │ │ ├── Interpolator.java │ │ │ │ ├── ListItemEnum.java │ │ │ │ ├── ListItemMapDisplay.java │ │ │ │ ├── ListItemMapProperty.java │ │ │ │ ├── ListItemStringDisplay.java │ │ │ │ ├── ListItemStringProperty.java │ │ │ │ ├── MapType.java │ │ │ │ ├── MappedData.java │ │ │ │ ├── MappedDataRow.java │ │ │ │ ├── MdlUtils.java │ │ │ │ ├── ParseUtils.java │ │ │ │ ├── Quadtree.java │ │ │ │ ├── QuadtreeIntersector.java │ │ │ │ ├── RenderMathUtils.java │ │ │ │ ├── SlkFile.java │ │ │ │ ├── StringBundle.java │ │ │ │ ├── SubscriberSetNotifier.java │ │ │ │ ├── Test.java │ │ │ │ ├── Test2.java │ │ │ │ ├── Test3.java │ │ │ │ ├── Vector4.java │ │ │ │ ├── WarsmashConstants.java │ │ │ │ ├── WarsmashUtils.java │ │ │ │ └── WorldEditStrings.java │ │ │ │ └── viewer5 │ │ │ │ ├── AudioBufferSource.java │ │ │ │ ├── AudioContext.java │ │ │ │ ├── AudioDestination.java │ │ │ │ ├── AudioPanner.java │ │ │ │ ├── BatchedInstance.java │ │ │ │ ├── Bounds.java │ │ │ │ ├── Camera.java │ │ │ │ ├── CanvasProvider.java │ │ │ │ ├── EmittedObject.java │ │ │ │ ├── EmittedObjectUpdater.java │ │ │ │ ├── Emitter.java │ │ │ │ ├── FogSettings.java │ │ │ │ ├── FogStyle.java │ │ │ │ ├── GdxTextureResource.java │ │ │ │ ├── GenericNode.java │ │ │ │ ├── GenericResource.java │ │ │ │ ├── Grid.java │ │ │ │ ├── GridCell.java │ │ │ │ ├── HandlerResource.java │ │ │ │ ├── Model.java │ │ │ │ ├── ModelInstance.java │ │ │ │ ├── ModelInstanceCallback.java │ │ │ │ ├── ModelViewer.java │ │ │ │ ├── Node.java │ │ │ │ ├── PathSolver.java │ │ │ │ ├── RawOpenGLTextureResource.java │ │ │ │ ├── RenderBatch.java │ │ │ │ ├── Resource.java │ │ │ │ ├── ResourceLoader.java │ │ │ │ ├── Scene.java │ │ │ │ ├── SceneLightInstance.java │ │ │ │ ├── SceneLightManager.java │ │ │ │ ├── Shaders.java │ │ │ │ ├── SimpleScene.java │ │ │ │ ├── SkeletalNode.java │ │ │ │ ├── SolvedPath.java │ │ │ │ ├── StaticSceneLightInstance.java │ │ │ │ ├── Texture.java │ │ │ │ ├── TextureMapper.java │ │ │ │ ├── UpdatableObject.java │ │ │ │ ├── ViewerTextureRenderable.java │ │ │ │ ├── WorldScene.java │ │ │ │ ├── deprecated │ │ │ │ ├── ShaderProgram.java │ │ │ │ └── ShaderUnitDeprecated.java │ │ │ │ ├── gl │ │ │ │ ├── ANGLEInstancedArrays.java │ │ │ │ ├── AudioExtension.java │ │ │ │ ├── ClientBuffer.java │ │ │ │ ├── DataTexture.java │ │ │ │ ├── DynamicShadowExtension.java │ │ │ │ ├── Extensions.java │ │ │ │ ├── WebGL.java │ │ │ │ └── WireframeExtension.java │ │ │ │ └── handlers │ │ │ │ ├── AbstractMdxModelViewer.java │ │ │ │ ├── EmitterObject.java │ │ │ │ ├── ModelHandler.java │ │ │ │ ├── ModelInstanceDescriptor.java │ │ │ │ ├── ResourceHandler.java │ │ │ │ ├── ResourceHandlerConstructionParams.java │ │ │ │ ├── blp │ │ │ │ ├── BlpGdxTexture.java │ │ │ │ ├── BlpHandler.java │ │ │ │ ├── BlpTexture.java │ │ │ │ ├── DDsGdxTexture.java │ │ │ │ ├── DdsHandler.java │ │ │ │ ├── DdsTexture.java │ │ │ │ ├── PngHandler.java │ │ │ │ └── TgaGdxTexture.java │ │ │ │ ├── mdx │ │ │ │ ├── AnimatedObject.java │ │ │ │ ├── Attachment.java │ │ │ │ ├── AttachmentInstance.java │ │ │ │ ├── Batch.java │ │ │ │ ├── BatchGroup.java │ │ │ │ ├── Bone.java │ │ │ │ ├── Camera.java │ │ │ │ ├── CollisionShape.java │ │ │ │ ├── EmitterGroup.java │ │ │ │ ├── EventObjectEmitter.java │ │ │ │ ├── EventObjectEmitterObject.java │ │ │ │ ├── EventObjectSnd.java │ │ │ │ ├── EventObjectSndEmitter.java │ │ │ │ ├── EventObjectSpl.java │ │ │ │ ├── EventObjectSplEmitter.java │ │ │ │ ├── EventObjectSpn.java │ │ │ │ ├── EventObjectSpnEmitter.java │ │ │ │ ├── EventObjectUbr.java │ │ │ │ ├── EventObjectUbrEmitter.java │ │ │ │ ├── FilterMode.java │ │ │ │ ├── GenericGroup.java │ │ │ │ ├── GenericIndexed.java │ │ │ │ ├── GenericObject.java │ │ │ │ ├── GeometryEmitterFuncs.java │ │ │ │ ├── Geoset.java │ │ │ │ ├── GeosetAnimation.java │ │ │ │ ├── Helper.java │ │ │ │ ├── Layer.java │ │ │ │ ├── Light.java │ │ │ │ ├── LightInstance.java │ │ │ │ ├── Material.java │ │ │ │ ├── MdxComplexInstance.java │ │ │ │ ├── MdxEmitter.java │ │ │ │ ├── MdxHandler.java │ │ │ │ ├── MdxModel.java │ │ │ │ ├── MdxNode.java │ │ │ │ ├── MdxNodeDescriptor.java │ │ │ │ ├── MdxRenderBatch.java │ │ │ │ ├── MdxShaders.java │ │ │ │ ├── MdxSimpleInstance.java │ │ │ │ ├── MdxViewer.java │ │ │ │ ├── Particle.java │ │ │ │ ├── Particle2.java │ │ │ │ ├── ParticleEmitter.java │ │ │ │ ├── ParticleEmitter2.java │ │ │ │ ├── ParticleEmitter2Object.java │ │ │ │ ├── ParticleEmitterObject.java │ │ │ │ ├── QuaternionSd.java │ │ │ │ ├── ReplaceableIds.java │ │ │ │ ├── Ribbon.java │ │ │ │ ├── RibbonEmitter.java │ │ │ │ ├── RibbonEmitterObject.java │ │ │ │ ├── ScalarSd.java │ │ │ │ ├── Sd.java │ │ │ │ ├── SdArrayDescriptor.java │ │ │ │ ├── SdSequence.java │ │ │ │ ├── Sequence.java │ │ │ │ ├── SequenceLoopMode.java │ │ │ │ ├── SetupGeosets.java │ │ │ │ ├── SetupGroups.java │ │ │ │ ├── SetupSimpleGroups.java │ │ │ │ ├── SkinningType.java │ │ │ │ ├── TextureAnimation.java │ │ │ │ ├── UInt32Sd.java │ │ │ │ └── VectorSd.java │ │ │ │ ├── tga │ │ │ │ ├── TgaFile.java │ │ │ │ └── TgaHandler.java │ │ │ │ └── w3x │ │ │ │ ├── AnimationTokens.java │ │ │ │ ├── DynamicShadowManager.java │ │ │ │ ├── IndexedSequence.java │ │ │ │ ├── MdxAssetLoader.java │ │ │ │ ├── SecondaryTagSequenceComparator.java │ │ │ │ ├── SequenceUtils.java │ │ │ │ ├── SplatModel.java │ │ │ │ ├── StandSequenceComparator.java │ │ │ │ ├── TerrainDoodad.java │ │ │ │ ├── TextTag.java │ │ │ │ ├── TextTagConfig.java │ │ │ │ ├── TreeBlightingCallback.java │ │ │ │ ├── UnitSound.java │ │ │ │ ├── UnitSoundset.java │ │ │ │ ├── Variations.java │ │ │ │ ├── W3xSceneLight.java │ │ │ │ ├── W3xSceneLightManager.java │ │ │ │ ├── W3xScenePortraitLightManager.java │ │ │ │ ├── W3xSceneWorldLightManager.java │ │ │ │ ├── W3xShaders.java │ │ │ │ ├── W3xShadersWebGLDeprecated.java │ │ │ │ ├── War3MapViewer.java │ │ │ │ ├── camera │ │ │ │ ├── CameraManager.java │ │ │ │ ├── CameraPanControls.java │ │ │ │ ├── CameraPreset.java │ │ │ │ ├── CameraRates.java │ │ │ │ ├── CameraSetup.java │ │ │ │ ├── CameraSetupField.java │ │ │ │ ├── CustomCameraSetup.java │ │ │ │ ├── GameCameraManager.java │ │ │ │ └── PortraitCameraManager.java │ │ │ │ ├── environment │ │ │ │ ├── BuildingShadow.java │ │ │ │ ├── CliffMesh.java │ │ │ │ ├── GroundTexture.java │ │ │ │ ├── IVec3.java │ │ │ │ ├── PathingGrid.java │ │ │ │ ├── RenderCorner.java │ │ │ │ ├── Shapes.java │ │ │ │ ├── Terrain.java │ │ │ │ ├── TerrainShaders.java │ │ │ │ └── WaveBuilder.java │ │ │ │ ├── lightning │ │ │ │ ├── LightningEffectBatch.java │ │ │ │ ├── LightningEffectModel.java │ │ │ │ ├── LightningEffectModelHandler.java │ │ │ │ └── LightningEffectNode.java │ │ │ │ ├── rendersim │ │ │ │ ├── LockTarget.java │ │ │ │ ├── LockTargetGame.java │ │ │ │ ├── LockTargetRenderGeometry.java │ │ │ │ ├── OrientationInterpolation.java │ │ │ │ ├── RenderAttackInstant.java │ │ │ │ ├── RenderDestructable.java │ │ │ │ ├── RenderDoodad.java │ │ │ │ ├── RenderEffect.java │ │ │ │ ├── RenderItem.java │ │ │ │ ├── RenderItemType.java │ │ │ │ ├── RenderItemTypeData.java │ │ │ │ ├── RenderLightningEffect.java │ │ │ │ ├── RenderProjectile.java │ │ │ │ ├── RenderShadowType.java │ │ │ │ ├── RenderSpellEffect.java │ │ │ │ ├── RenderUnit.java │ │ │ │ ├── RenderUnitType.java │ │ │ │ ├── RenderUnitTypeData.java │ │ │ │ ├── RenderWidget.java │ │ │ │ ├── RenderWidgetType.java │ │ │ │ ├── RenderWidgetTypeData.java │ │ │ │ ├── ability │ │ │ │ │ ├── AbilityDataUI.java │ │ │ │ │ ├── AbilityUI.java │ │ │ │ │ ├── BuffUI.java │ │ │ │ │ ├── EffectAttachmentUI.java │ │ │ │ │ ├── EffectAttachmentUIMissile.java │ │ │ │ │ ├── IconUI.java │ │ │ │ │ ├── ItemUI.java │ │ │ │ │ ├── OrderButtonUI.java │ │ │ │ │ └── UnitIconUI.java │ │ │ │ └── commandbuttons │ │ │ │ │ ├── BasicCommandButton.java │ │ │ │ │ ├── CommandButton.java │ │ │ │ │ ├── CommandButtonListener.java │ │ │ │ │ ├── CommandCardActivationReceiverPreviewCallback.java │ │ │ │ │ └── CommandCardPopulatingAbilityVisitor.java │ │ │ │ ├── simulation │ │ │ │ ├── Aliased.java │ │ │ │ ├── CDestructable.java │ │ │ │ ├── CDestructableEnumFunction.java │ │ │ │ ├── CDestructableType.java │ │ │ │ ├── CFogMaskSettings.java │ │ │ │ ├── CGameplayConstants.java │ │ │ │ ├── CGlobalEvent.java │ │ │ │ ├── CGlobalWidgetEvent.java │ │ │ │ ├── CItem.java │ │ │ │ ├── CItemEnumFunction.java │ │ │ │ ├── CItemType.java │ │ │ │ ├── CPlayerStateListener.java │ │ │ │ ├── CSimulation.java │ │ │ │ ├── CSimulationMapData.java │ │ │ │ ├── CUnit.java │ │ │ │ ├── CUnitAnimationListener.java │ │ │ │ ├── CUnitClassification.java │ │ │ │ ├── CUnitEnumFunction.java │ │ │ │ ├── CUnitStateListener.java │ │ │ │ ├── CUnitType.java │ │ │ │ ├── CUnitTypeRequirement.java │ │ │ │ ├── CUpgradeType.java │ │ │ │ ├── CWidget.java │ │ │ │ ├── CWidgetFilterFunction.java │ │ │ │ ├── CWidgetVisitor.java │ │ │ │ ├── CWorldCollision.java │ │ │ │ ├── HandleIdAllocator.java │ │ │ │ ├── StringsToExternalizeLater.java │ │ │ │ ├── abilities │ │ │ │ │ ├── AbstractCAbility.java │ │ │ │ │ ├── CAbility.java │ │ │ │ │ ├── CAbilityAttack.java │ │ │ │ │ ├── CAbilityCategory.java │ │ │ │ │ ├── CAbilityDisableType.java │ │ │ │ │ ├── CAbilityGenericDoNothing.java │ │ │ │ │ ├── CAbilityMove.java │ │ │ │ │ ├── CAbilityRanged.java │ │ │ │ │ ├── CAbilityRangedView.java │ │ │ │ │ ├── CAbilityToggleableView.java │ │ │ │ │ ├── CAbilityView.java │ │ │ │ │ ├── CAbilityVisitor.java │ │ │ │ │ ├── COrderButton.java │ │ │ │ │ ├── GetAbilityByRawcodeVisitor.java │ │ │ │ │ ├── autocast │ │ │ │ │ │ ├── AutocastType.java │ │ │ │ │ │ └── CAutocastAbility.java │ │ │ │ │ ├── blight │ │ │ │ │ │ └── CAbilityBlight.java │ │ │ │ │ ├── build │ │ │ │ │ │ ├── AbstractCAbilityBuild.java │ │ │ │ │ │ ├── CAbilityBuildInProgress.java │ │ │ │ │ │ ├── CAbilityHumanBuild.java │ │ │ │ │ │ ├── CAbilityHumanRepair.java │ │ │ │ │ │ ├── CAbilityNagaBuild.java │ │ │ │ │ │ ├── CAbilityNeutralBuild.java │ │ │ │ │ │ ├── CAbilityNightElfBuild.java │ │ │ │ │ │ ├── CAbilityOrcBuild.java │ │ │ │ │ │ ├── CAbilityRepair.java │ │ │ │ │ │ └── CAbilityUndeadBuild.java │ │ │ │ │ ├── cargohold │ │ │ │ │ │ ├── CAbilityCargoHold.java │ │ │ │ │ │ ├── CAbilityCargoHoldBurrow.java │ │ │ │ │ │ ├── CAbilityCargoHoldEntangledMine.java │ │ │ │ │ │ ├── CAbilityDrop.java │ │ │ │ │ │ ├── CAbilityDropInstant.java │ │ │ │ │ │ ├── CAbilityLoad.java │ │ │ │ │ │ └── CAbilityStandDown.java │ │ │ │ │ ├── combat │ │ │ │ │ │ ├── CAbilityColdArrows.java │ │ │ │ │ │ └── CAbilityInvulnerable.java │ │ │ │ │ ├── generic │ │ │ │ │ │ ├── AbilityGenericSingleIconPassiveAbility.java │ │ │ │ │ │ ├── AbstractCBuff.java │ │ │ │ │ │ ├── AbstractGenericAliasedAbility.java │ │ │ │ │ │ ├── AbstractGenericNoIconAbility.java │ │ │ │ │ │ ├── AbstractGenericSingleIconActiveAbility.java │ │ │ │ │ │ ├── AbstractGenericSingleIconNoSmartActiveAbility.java │ │ │ │ │ │ ├── CAliasedLevelingAbility.java │ │ │ │ │ │ ├── CBuff.java │ │ │ │ │ │ ├── CDestructableBuff.java │ │ │ │ │ │ ├── CLevelingAbility.java │ │ │ │ │ │ ├── CPairingAbility.java │ │ │ │ │ │ ├── GenericNoIconAbility.java │ │ │ │ │ │ ├── GenericSingleIconActiveAbility.java │ │ │ │ │ │ ├── GenericSingleIconPassiveAbility.java │ │ │ │ │ │ └── SingleOrderAbility.java │ │ │ │ │ ├── harvest │ │ │ │ │ │ ├── CAbilityAcolyteHarvest.java │ │ │ │ │ │ ├── CAbilityHarvest.java │ │ │ │ │ │ ├── CAbilityReturnResources.java │ │ │ │ │ │ └── CAbilityWispHarvest.java │ │ │ │ │ ├── hero │ │ │ │ │ │ ├── CAbilityHero.java │ │ │ │ │ │ └── CPrimaryAttribute.java │ │ │ │ │ ├── inventory │ │ │ │ │ │ └── CAbilityInventory.java │ │ │ │ │ ├── item │ │ │ │ │ │ ├── CAbilityItemAttackBonus.java │ │ │ │ │ │ ├── CAbilityItemDefenseBonus.java │ │ │ │ │ │ ├── CAbilityItemExperienceGain.java │ │ │ │ │ │ ├── CAbilityItemFigurineSummon.java │ │ │ │ │ │ ├── CAbilityItemHeal.java │ │ │ │ │ │ ├── CAbilityItemLevelGain.java │ │ │ │ │ │ ├── CAbilityItemLifeBonus.java │ │ │ │ │ │ ├── CAbilityItemManaBonus.java │ │ │ │ │ │ ├── CAbilityItemManaRegain.java │ │ │ │ │ │ ├── CAbilityItemPermanentLifeGain.java │ │ │ │ │ │ ├── CAbilityItemPermanentStatGain.java │ │ │ │ │ │ ├── CAbilityItemStatBonus.java │ │ │ │ │ │ ├── CAbilityItemWandOfManaStealing.java │ │ │ │ │ │ └── shop │ │ │ │ │ │ │ ├── CAbilityNeutralBuilding.java │ │ │ │ │ │ │ ├── CAbilitySellItems.java │ │ │ │ │ │ │ └── CAbilityShopPurhaseItem.java │ │ │ │ │ ├── jass │ │ │ │ │ │ ├── CAbilityJass.java │ │ │ │ │ │ ├── CAbilityOrderButtonJass.java │ │ │ │ │ │ ├── CBuffJass.java │ │ │ │ │ │ └── RecordingAbilityTargetCheckReceiver.java │ │ │ │ │ ├── listeners │ │ │ │ │ │ └── CUnitAbilityEffectReactionListener.java │ │ │ │ │ ├── menu │ │ │ │ │ │ └── CAbilityMenu.java │ │ │ │ │ ├── mine │ │ │ │ │ │ ├── CAbilityBlightedGoldMine.java │ │ │ │ │ │ ├── CAbilityEntangledMine.java │ │ │ │ │ │ ├── CAbilityGoldMinable.java │ │ │ │ │ │ ├── CAbilityGoldMine.java │ │ │ │ │ │ ├── CAbilityOverlayedMinableMine.java │ │ │ │ │ │ └── CAbilityOverlayedMine.java │ │ │ │ │ ├── neutral │ │ │ │ │ │ └── CAbilityWayGate.java │ │ │ │ │ ├── nightelf │ │ │ │ │ │ ├── eattree │ │ │ │ │ │ │ ├── CAbilityEatTree.java │ │ │ │ │ │ │ └── CBuffEatTree.java │ │ │ │ │ │ ├── moonwell │ │ │ │ │ │ │ └── CAbilityMoonWell.java │ │ │ │ │ │ └── root │ │ │ │ │ │ │ ├── CAbilityEntangleGoldMine.java │ │ │ │ │ │ │ └── CAbilityRoot.java │ │ │ │ │ ├── queue │ │ │ │ │ │ ├── CAbilityQueue.java │ │ │ │ │ │ ├── CAbilityRally.java │ │ │ │ │ │ └── CAbilityReviveHero.java │ │ │ │ │ ├── skills │ │ │ │ │ │ ├── CAbilityNoTargetSpellBase.java │ │ │ │ │ │ ├── CAbilityPassiveSpellBase.java │ │ │ │ │ │ ├── CAbilityPointTargetSpellBase.java │ │ │ │ │ │ ├── CAbilitySpell.java │ │ │ │ │ │ ├── CAbilitySpellBase.java │ │ │ │ │ │ ├── CAbilityTargetSpellBase.java │ │ │ │ │ │ ├── CAbilityUnitOrPointTargetSpellBase.java │ │ │ │ │ │ ├── human │ │ │ │ │ │ │ ├── archmage │ │ │ │ │ │ │ │ ├── CAbilityBlizzard.java │ │ │ │ │ │ │ │ ├── CAbilityBrilliance.java │ │ │ │ │ │ │ │ ├── CAbilityMassTeleport.java │ │ │ │ │ │ │ │ ├── CAbilitySummonWaterElemental.java │ │ │ │ │ │ │ │ └── CBuffBrilliance.java │ │ │ │ │ │ │ ├── bloodmage │ │ │ │ │ │ │ │ └── phoenix │ │ │ │ │ │ │ │ │ ├── CAbilityPhoenixFire.java │ │ │ │ │ │ │ │ │ └── CAbilitySummonPhoenix.java │ │ │ │ │ │ │ ├── mountainking │ │ │ │ │ │ │ │ ├── CAbilityAvatar.java │ │ │ │ │ │ │ │ ├── CAbilityBash.java │ │ │ │ │ │ │ │ ├── CAbilityThunderBolt.java │ │ │ │ │ │ │ │ ├── CAbilityThunderClap.java │ │ │ │ │ │ │ │ └── CBuffAvatar.java │ │ │ │ │ │ │ └── paladin │ │ │ │ │ │ │ │ ├── CAbilityDevotion.java │ │ │ │ │ │ │ │ ├── CAbilityDivineShield.java │ │ │ │ │ │ │ │ ├── CAbilityHolyLight.java │ │ │ │ │ │ │ │ ├── CAbilityResurrect.java │ │ │ │ │ │ │ │ ├── CBuffDevotion.java │ │ │ │ │ │ │ │ └── CBuffDivineShield.java │ │ │ │ │ │ ├── neutral │ │ │ │ │ │ │ ├── beastmaster │ │ │ │ │ │ │ │ ├── CAbilitySummonGrizzly.java │ │ │ │ │ │ │ │ ├── CAbilitySummonHawk.java │ │ │ │ │ │ │ │ └── CAbilitySummonQuilbeast.java │ │ │ │ │ │ │ ├── darkranger │ │ │ │ │ │ │ │ └── CAbilityCharm.java │ │ │ │ │ │ │ ├── sappers │ │ │ │ │ │ │ │ └── CAbilityKaboom.java │ │ │ │ │ │ │ └── tinker │ │ │ │ │ │ │ │ ├── CAbilityClusterRockets.java │ │ │ │ │ │ │ │ ├── CAbilityFactory.java │ │ │ │ │ │ │ │ └── CAbilityPocketFactory.java │ │ │ │ │ │ ├── nightelf │ │ │ │ │ │ │ ├── demonhunter │ │ │ │ │ │ │ │ ├── CAbilityImmolation.java │ │ │ │ │ │ │ │ ├── CAbilityManaBurn.java │ │ │ │ │ │ │ │ └── CBuffImmolationCaster.java │ │ │ │ │ │ │ ├── keeper │ │ │ │ │ │ │ │ └── CAbilityForceOfNature.java │ │ │ │ │ │ │ ├── moonpriestess │ │ │ │ │ │ │ │ └── CAbilitySummonOwlScout.java │ │ │ │ │ │ │ └── warden │ │ │ │ │ │ │ │ └── CAbilityBlink.java │ │ │ │ │ │ ├── orc │ │ │ │ │ │ │ ├── blademaster │ │ │ │ │ │ │ │ ├── CAbilityWhirlWind.java │ │ │ │ │ │ │ │ └── CBuffWhirlWindCaster.java │ │ │ │ │ │ │ ├── farseer │ │ │ │ │ │ │ │ ├── CAbilityChainLightning.java │ │ │ │ │ │ │ │ └── CAbilityFeralSpirit.java │ │ │ │ │ │ │ └── taurenchieftain │ │ │ │ │ │ │ │ └── CAbilityWarStomp.java │ │ │ │ │ │ ├── undead │ │ │ │ │ │ │ └── deathknight │ │ │ │ │ │ │ │ ├── CAbilityDarkRitual.java │ │ │ │ │ │ │ │ ├── CAbilityDeathCoil.java │ │ │ │ │ │ │ │ └── CAbilityDeathPact.java │ │ │ │ │ │ └── util │ │ │ │ │ │ │ ├── CAbilityAuraBase.java │ │ │ │ │ │ │ ├── CBuffAuraBase.java │ │ │ │ │ │ │ ├── CBuffSlow.java │ │ │ │ │ │ │ ├── CBuffStun.java │ │ │ │ │ │ │ ├── CBuffTimed.java │ │ │ │ │ │ │ └── CBuffTimedLife.java │ │ │ │ │ ├── targeting │ │ │ │ │ │ ├── AbilityPointTarget.java │ │ │ │ │ │ ├── AbilityTarget.java │ │ │ │ │ │ ├── AbilityTargetItemVisitor.java │ │ │ │ │ │ ├── AbilityTargetStillAliveAndTargetableVisitor.java │ │ │ │ │ │ ├── AbilityTargetStillAliveVisitor.java │ │ │ │ │ │ ├── AbilityTargetUnitVisitor.java │ │ │ │ │ │ ├── AbilityTargetVisitor.java │ │ │ │ │ │ ├── AbilityTargetVisitorJass.java │ │ │ │ │ │ └── AbilityTargetWidgetVisitor.java │ │ │ │ │ ├── test │ │ │ │ │ │ ├── CAbilityCarrionSwarmDummy.java │ │ │ │ │ │ ├── CAbilityChannelTest.java │ │ │ │ │ │ └── CAbilityCoupleInstant.java │ │ │ │ │ ├── types │ │ │ │ │ │ ├── CAbilityType.java │ │ │ │ │ │ ├── CAbilityTypeLevelData.java │ │ │ │ │ │ ├── definitions │ │ │ │ │ │ │ ├── CAbilityTypeDefinition.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ │ ├── AbilityFields.java │ │ │ │ │ │ │ │ ├── AbstractCAbilityTypeDefinition.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionAcolyteHarvest.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionBlight.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionBlightedGoldMine.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionCargoHold.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionCargoHoldBurrow.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionCargoHoldEntangledMine.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionCarrionSwarmDummy.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionChannelTest.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionColdArrows.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionCoupleInstant.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionDrop.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionGoldMine.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionGoldMineOverlayed.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionHarvest.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionHarvestLumber.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionHumanRepair.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionImmolation.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionInventory.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionInvulnerable.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionItemAttackBonus.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionItemDefenseBonus.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionItemHeal.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionItemLifeBonus.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionItemManaRegain.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionItemPermanentStatGain.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionItemStatBonus.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionLoad.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionNeutralBuilding.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionPhoenixFire.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionRally.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionRepair.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionReturnResources.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionRoot.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionShopPurchaseItem.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionShopSharing.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionSpellBase.java │ │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionStandDown.java │ │ │ │ │ │ │ │ └── CAbilityTypeDefinitionWispHarvest.java │ │ │ │ │ │ ├── impl │ │ │ │ │ │ │ ├── CAbilitySpellBaseTypeLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeAcolyteHarvest.java │ │ │ │ │ │ │ ├── CAbilityTypeAcolyteHarvestLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeBlight.java │ │ │ │ │ │ │ ├── CAbilityTypeBlightLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeBlightedGoldMine.java │ │ │ │ │ │ │ ├── CAbilityTypeBlightedGoldMineLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeBlizzard.java │ │ │ │ │ │ │ ├── CAbilityTypeBlizzardLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeCargoHold.java │ │ │ │ │ │ │ ├── CAbilityTypeCargoHoldBurrow.java │ │ │ │ │ │ │ ├── CAbilityTypeCargoHoldBurrowLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeCargoHoldEntangledMine.java │ │ │ │ │ │ │ ├── CAbilityTypeCargoHoldLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeCarrionSwarmDummy.java │ │ │ │ │ │ │ ├── CAbilityTypeCarrionSwarmDummyLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeChannelTest.java │ │ │ │ │ │ │ ├── CAbilityTypeChannelTestLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeColdArrows.java │ │ │ │ │ │ │ ├── CAbilityTypeColdArrowsLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeCoupleInstant.java │ │ │ │ │ │ │ ├── CAbilityTypeCoupleInstantLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeDrop.java │ │ │ │ │ │ │ ├── CAbilityTypeDropLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeGoldMine.java │ │ │ │ │ │ │ ├── CAbilityTypeGoldMineLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeGoldMineOverlayed.java │ │ │ │ │ │ │ ├── CAbilityTypeHarvest.java │ │ │ │ │ │ │ ├── CAbilityTypeHarvestLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeHarvestLumber.java │ │ │ │ │ │ │ ├── CAbilityTypeHarvestLumberLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeHumanRepair.java │ │ │ │ │ │ │ ├── CAbilityTypeHumanRepairLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeImmolation.java │ │ │ │ │ │ │ ├── CAbilityTypeImmolationLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeInventory.java │ │ │ │ │ │ │ ├── CAbilityTypeInventoryLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeInvulnerable.java │ │ │ │ │ │ │ ├── CAbilityTypeItemAttackBonus.java │ │ │ │ │ │ │ ├── CAbilityTypeItemAttackBonusLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeItemDefenseBonus.java │ │ │ │ │ │ │ ├── CAbilityTypeItemDefenseBonusLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeItemHeal.java │ │ │ │ │ │ │ ├── CAbilityTypeItemHealLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeItemLifeBonus.java │ │ │ │ │ │ │ ├── CAbilityTypeItemLifeBonusLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeItemManaRegain.java │ │ │ │ │ │ │ ├── CAbilityTypeItemManaRegainLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeItemPermanentStatGain.java │ │ │ │ │ │ │ ├── CAbilityTypeItemStatBonus.java │ │ │ │ │ │ │ ├── CAbilityTypeItemStatBonusLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeLoad.java │ │ │ │ │ │ │ ├── CAbilityTypeLoadLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeNeutralBuilding.java │ │ │ │ │ │ │ ├── CAbilityTypeNeutralBuildingLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypePhoenixFire.java │ │ │ │ │ │ │ ├── CAbilityTypePhoenixFireLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeRepair.java │ │ │ │ │ │ │ ├── CAbilityTypeReturnResources.java │ │ │ │ │ │ │ ├── CAbilityTypeReturnResourcesLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeRoot.java │ │ │ │ │ │ │ ├── CAbilityTypeRootLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeShopPurchaseItem.java │ │ │ │ │ │ │ ├── CAbilityTypeShopSharing.java │ │ │ │ │ │ │ ├── CAbilityTypeStandDown.java │ │ │ │ │ │ │ ├── CAbilityTypeSummonWaterElementalLevelData.java │ │ │ │ │ │ │ ├── CAbilityTypeWispHarvest.java │ │ │ │ │ │ │ └── CAbilityTypeWispHarvestLevelData.java │ │ │ │ │ │ └── jass │ │ │ │ │ │ │ ├── BehaviorExpr.java │ │ │ │ │ │ │ ├── CAbilityTypeJassDefinition.java │ │ │ │ │ │ │ └── CodeJassValueBehaviorExpr.java │ │ │ │ │ └── upgrade │ │ │ │ │ │ └── CAbilityUpgrade.java │ │ │ │ ├── abilitybuilder │ │ │ │ │ ├── ability │ │ │ │ │ │ ├── AbilityBuilderAbility.java │ │ │ │ │ │ ├── AbilityBuilderActiveAbility.java │ │ │ │ │ │ ├── AbilityBuilderPassiveAbility.java │ │ │ │ │ │ ├── CAbilityAbilityBuilderActiveAutoTarget.java │ │ │ │ │ │ ├── CAbilityAbilityBuilderActiveFlexTarget.java │ │ │ │ │ │ ├── CAbilityAbilityBuilderActiveFlexTargetSimple.java │ │ │ │ │ │ ├── CAbilityAbilityBuilderActiveNoTarget.java │ │ │ │ │ │ ├── CAbilityAbilityBuilderActiveNoTargetSimple.java │ │ │ │ │ │ ├── CAbilityAbilityBuilderActivePairing.java │ │ │ │ │ │ ├── CAbilityAbilityBuilderActivePointTarget.java │ │ │ │ │ │ ├── CAbilityAbilityBuilderActivePointTargetSimple.java │ │ │ │ │ │ ├── CAbilityAbilityBuilderActiveSmart.java │ │ │ │ │ │ ├── CAbilityAbilityBuilderActiveToggle.java │ │ │ │ │ │ ├── CAbilityAbilityBuilderActiveUnitTarget.java │ │ │ │ │ │ ├── CAbilityAbilityBuilderActiveUnitTargetSimple.java │ │ │ │ │ │ ├── CAbilityAbilityBuilderGenericActive.java │ │ │ │ │ │ ├── CAbilityAbilityBuilderNoIcon.java │ │ │ │ │ │ ├── CAbilityAbilityBuilderPassive.java │ │ │ │ │ │ ├── GetABAbilityByRawcodeVisitor.java │ │ │ │ │ │ ├── GetInstantTransformationBuffVisitor.java │ │ │ │ │ │ └── template │ │ │ │ │ │ │ ├── CAbilityAbilityBuilderAuraTemplate.java │ │ │ │ │ │ │ ├── CAbilityAbilityBuilderSimpleAuraTemplate.java │ │ │ │ │ │ │ ├── CAbilityAbilityBuilderStatAuraTemplate.java │ │ │ │ │ │ │ └── CAbilityAbilityBuilderStatPassiveTemplate.java │ │ │ │ │ ├── behavior │ │ │ │ │ │ ├── ABAbilityTargetStillTargetableVisitor.java │ │ │ │ │ │ ├── ABBehavior.java │ │ │ │ │ │ ├── CBehaviorAbilityBuilderBase.java │ │ │ │ │ │ ├── CBehaviorAbilityBuilderNoTarget.java │ │ │ │ │ │ ├── CBehaviorFinishTransformation.java │ │ │ │ │ │ ├── CBehaviorSendOrder.java │ │ │ │ │ │ ├── COrderStartTransformation.java │ │ │ │ │ │ ├── action │ │ │ │ │ │ │ ├── ABActionAddAbility.java │ │ │ │ │ │ │ ├── ABActionAddStunBuff.java │ │ │ │ │ │ │ ├── ABActionCleanUpCastInstance.java │ │ │ │ │ │ │ ├── ABActionCreateAbilityFromId.java │ │ │ │ │ │ │ ├── ABActionCreateLightningEffect.java │ │ │ │ │ │ │ ├── ABActionCreateLoopingSoundEffectOnUnit.java │ │ │ │ │ │ │ ├── ABActionCreateSoundEffectOnUnit.java │ │ │ │ │ │ │ ├── ABActionCreateSpellEffectAtLocation.java │ │ │ │ │ │ │ ├── ABActionCreateSpellEffectAtPoint.java │ │ │ │ │ │ │ ├── ABActionCreateSpellEffectOnUnit.java │ │ │ │ │ │ │ ├── ABActionCreateTemporarySpellEffectAtLocation.java │ │ │ │ │ │ │ ├── ABActionCreateTemporarySpellEffectAtPoint.java │ │ │ │ │ │ │ ├── ABActionCreateTemporarySpellEffectOnUnit.java │ │ │ │ │ │ │ ├── ABActionRemoveAbility.java │ │ │ │ │ │ │ ├── ABActionRemoveLightningEffect.java │ │ │ │ │ │ │ ├── ABActionRemoveSpellEffect.java │ │ │ │ │ │ │ ├── ability │ │ │ │ │ │ │ │ ├── ABActionActivateToggledAbility.java │ │ │ │ │ │ │ │ ├── ABActionAddTargetAllowed.java │ │ │ │ │ │ │ │ ├── ABActionBeginChanneling.java │ │ │ │ │ │ │ │ ├── ABActionDeactivateToggledAbility.java │ │ │ │ │ │ │ │ ├── ABActionFinishChanneling.java │ │ │ │ │ │ │ │ ├── ABActionRemoveTargetAllowed.java │ │ │ │ │ │ │ │ ├── ABActionResetCooldown.java │ │ │ │ │ │ │ │ ├── ABActionSetAbilityCastRange.java │ │ │ │ │ │ │ │ ├── ABActionSetAutoTargetDestructable.java │ │ │ │ │ │ │ │ ├── ABActionSetAutoTargetUnit.java │ │ │ │ │ │ │ │ └── ABActionStartCooldown.java │ │ │ │ │ │ │ ├── buff │ │ │ │ │ │ │ │ ├── ABActionAddBuff.java │ │ │ │ │ │ │ │ ├── ABActionAddNonStackingDisplayBuff.java │ │ │ │ │ │ │ │ ├── ABActionCreatePassiveBuff.java │ │ │ │ │ │ │ │ ├── ABActionCreateTargetingBuff.java │ │ │ │ │ │ │ │ ├── ABActionCreateTimedArtBuff.java │ │ │ │ │ │ │ │ ├── ABActionCreateTimedBuff.java │ │ │ │ │ │ │ │ ├── ABActionCreateTimedLifeBuff.java │ │ │ │ │ │ │ │ ├── ABActionCreateTimedTargetingBuff.java │ │ │ │ │ │ │ │ ├── ABActionCreateTimedTickingBuff.java │ │ │ │ │ │ │ │ ├── ABActionCreateTimedTickingPausedBuff.java │ │ │ │ │ │ │ │ ├── ABActionCreateTimedTickingPostDeathBuff.java │ │ │ │ │ │ │ │ ├── ABActionRemoveBuff.java │ │ │ │ │ │ │ │ └── ABActionRemoveNonStackingDisplayBuff.java │ │ │ │ │ │ │ ├── destructable │ │ │ │ │ │ │ │ ├── ABActionAddDestructableBuff.java │ │ │ │ │ │ │ │ ├── ABActionCreateDestructableBuff.java │ │ │ │ │ │ │ │ ├── ABActionDamageDestructable.java │ │ │ │ │ │ │ │ ├── ABActionIterateDestructablesInRangeOfLocation.java │ │ │ │ │ │ │ │ └── ABActionRemoveDestructableBuff.java │ │ │ │ │ │ │ ├── events │ │ │ │ │ │ │ │ ├── ABActionCreateTimeOfDayEvent.java │ │ │ │ │ │ │ │ ├── ABActionRegisterTimeOfDayEvent.java │ │ │ │ │ │ │ │ ├── ABActionRegisterUniqueTimeOfDayEvent.java │ │ │ │ │ │ │ │ └── ABActionUnregisterTimeOfDayEvent.java │ │ │ │ │ │ │ ├── floatingtext │ │ │ │ │ │ │ │ ├── ABActionCreateFloatingTextOnUnit.java │ │ │ │ │ │ │ │ └── ABActionCreateNumericFloatingTextOnUnit.java │ │ │ │ │ │ │ ├── gamestate │ │ │ │ │ │ │ │ └── ABActionSetFalseTimeOfDay.java │ │ │ │ │ │ │ ├── item │ │ │ │ │ │ │ │ └── ABActionChargeItem.java │ │ │ │ │ │ │ ├── player │ │ │ │ │ │ │ │ ├── ABActionGiveResourcesToPlayer.java │ │ │ │ │ │ │ │ └── ABActionSetAbilityEnabledForPlayer.java │ │ │ │ │ │ │ ├── projectile │ │ │ │ │ │ │ │ ├── ABActionCreateLocationTargetedCollisionProjectile.java │ │ │ │ │ │ │ │ ├── ABActionCreateLocationTargetedProjectile.java │ │ │ │ │ │ │ │ ├── ABActionCreateLocationTargetedPseudoProjectile.java │ │ │ │ │ │ │ │ ├── ABActionCreateUnitTargetedCollisionProjectile.java │ │ │ │ │ │ │ │ ├── ABActionCreateUnitTargetedProjectile.java │ │ │ │ │ │ │ │ ├── ABActionCreateUnitTargetedPseudoProjectile.java │ │ │ │ │ │ │ │ ├── ABActionSetAttackProjectileDamage.java │ │ │ │ │ │ │ │ ├── ABActionSetProjectileDone.java │ │ │ │ │ │ │ │ ├── ABActionSetProjectileReflected.java │ │ │ │ │ │ │ │ └── ABActionSetProjectileTarget.java │ │ │ │ │ │ │ ├── stats │ │ │ │ │ │ │ │ ├── ABActionAddDefenseBonus.java │ │ │ │ │ │ │ │ ├── ABActionAddNonStackingStatBuff.java │ │ │ │ │ │ │ │ ├── ABActionCreateNonStackingStatBuff.java │ │ │ │ │ │ │ │ ├── ABActionRecomputeStatBuffsOnUnit.java │ │ │ │ │ │ │ │ ├── ABActionRemoveDefenseBonus.java │ │ │ │ │ │ │ │ ├── ABActionRemoveNonStackingStatBuff.java │ │ │ │ │ │ │ │ └── ABActionUpdateNonStackingStatBuff.java │ │ │ │ │ │ │ ├── structural │ │ │ │ │ │ │ │ ├── ABActionBreak.java │ │ │ │ │ │ │ │ ├── ABActionCreateSubroutine.java │ │ │ │ │ │ │ │ ├── ABActionFor.java │ │ │ │ │ │ │ │ ├── ABActionIf.java │ │ │ │ │ │ │ │ ├── ABActionIterateUnitsInGroup.java │ │ │ │ │ │ │ │ ├── ABActionIterateUnitsInQueue.java │ │ │ │ │ │ │ │ ├── ABActionIterateUnitsInRangeOfLocation.java │ │ │ │ │ │ │ │ ├── ABActionIterateUnitsInRangeOfLocationMatchingCondition.java │ │ │ │ │ │ │ │ ├── ABActionIterateUnitsInRangeOfUnit.java │ │ │ │ │ │ │ │ ├── ABActionIterateUnitsInRangeOfUnitMatchingCondition.java │ │ │ │ │ │ │ │ ├── ABActionIterateUnitsInRect.java │ │ │ │ │ │ │ │ ├── ABActionPeriodicExecute.java │ │ │ │ │ │ │ │ ├── ABActionRunSubroutine.java │ │ │ │ │ │ │ │ ├── ABActionStoreValueLocally.java │ │ │ │ │ │ │ │ └── ABActionWhile.java │ │ │ │ │ │ │ ├── timer │ │ │ │ │ │ │ │ ├── ABActionCreateTimer.java │ │ │ │ │ │ │ │ ├── ABActionRemoveTimer.java │ │ │ │ │ │ │ │ ├── ABActionStartTimer.java │ │ │ │ │ │ │ │ └── ABActionUpdateTimerTimeout.java │ │ │ │ │ │ │ ├── unit │ │ │ │ │ │ │ │ ├── ABActionAddMp.java │ │ │ │ │ │ │ │ ├── ABActionAddNewAbility.java │ │ │ │ │ │ │ │ ├── ABActionAddRallyAbility.java │ │ │ │ │ │ │ │ ├── ABActionCheckAbilityEffectReaction.java │ │ │ │ │ │ │ │ ├── ABActionCheckAbilityProjReaction.java │ │ │ │ │ │ │ │ ├── ABActionCreateUnit.java │ │ │ │ │ │ │ │ ├── ABActionDamageTarget.java │ │ │ │ │ │ │ │ ├── ABActionDisableWorkerAbilities.java │ │ │ │ │ │ │ │ ├── ABActionEnableWorkerAbilities.java │ │ │ │ │ │ │ │ ├── ABActionHeal.java │ │ │ │ │ │ │ │ ├── ABActionHideUnit.java │ │ │ │ │ │ │ │ ├── ABActionInstantReturnResources.java │ │ │ │ │ │ │ │ ├── ABActionIssueStopOrder.java │ │ │ │ │ │ │ │ ├── ABActionKillUnit.java │ │ │ │ │ │ │ │ ├── ABActionMergeUnits.java │ │ │ │ │ │ │ │ ├── ABActionRemoveUnit.java │ │ │ │ │ │ │ │ ├── ABActionResurrect.java │ │ │ │ │ │ │ │ ├── ABActionSendUnitBackToWork.java │ │ │ │ │ │ │ │ ├── ABActionSetExplodesOnDeath.java │ │ │ │ │ │ │ │ ├── ABActionSetHp.java │ │ │ │ │ │ │ │ ├── ABActionSetMp.java │ │ │ │ │ │ │ │ ├── ABActionStartSacrificingUnit.java │ │ │ │ │ │ │ │ ├── ABActionStartTrainingUnit.java │ │ │ │ │ │ │ │ ├── ABActionSubtractMp.java │ │ │ │ │ │ │ │ ├── ABActionTransformUnit.java │ │ │ │ │ │ │ │ ├── ABActionTransformUnitInstant.java │ │ │ │ │ │ │ │ ├── ABActionTransformedUnitAbilityAdd.java │ │ │ │ │ │ │ │ ├── ABActionTransformedUnitAbilityRemove.java │ │ │ │ │ │ │ │ ├── ABActionUnhideUnit.java │ │ │ │ │ │ │ │ ├── animation │ │ │ │ │ │ │ │ │ ├── ABActionAddSecondaryAnimationTag.java │ │ │ │ │ │ │ │ │ ├── ABActionPlayAnimation.java │ │ │ │ │ │ │ │ │ └── ABActionRemoveSecondaryAnimationTag.java │ │ │ │ │ │ │ │ ├── art │ │ │ │ │ │ │ │ │ ├── ABActionDivideUnitAlpha.java │ │ │ │ │ │ │ │ │ ├── ABActionMultiplyUnitAlpha.java │ │ │ │ │ │ │ │ │ └── ABActionSetUnitAlpha.java │ │ │ │ │ │ │ │ └── movement │ │ │ │ │ │ │ │ │ ├── ABActionSetUnitFlyHeight.java │ │ │ │ │ │ │ │ │ └── ABActionSetUnitMovementTypeNoCollision.java │ │ │ │ │ │ │ ├── unitgroup │ │ │ │ │ │ │ │ ├── ABActionAddUnitToGroup.java │ │ │ │ │ │ │ │ ├── ABActionCreateUnitGroup.java │ │ │ │ │ │ │ │ └── ABActionRemoveUnitFromGroup.java │ │ │ │ │ │ │ ├── unitlisteners │ │ │ │ │ │ │ │ ├── ABActionAddAbilityEffectReactionListener.java │ │ │ │ │ │ │ │ ├── ABActionAddAbilityProjReactionListener.java │ │ │ │ │ │ │ │ ├── ABActionAddAttackPostDamageListener.java │ │ │ │ │ │ │ │ ├── ABActionAddAttackPreDamageListener.java │ │ │ │ │ │ │ │ ├── ABActionAddAttackProjReactionListener.java │ │ │ │ │ │ │ │ ├── ABActionAddBehaviorChangeListener.java │ │ │ │ │ │ │ │ ├── ABActionAddDamageTakenListener.java │ │ │ │ │ │ │ │ ├── ABActionAddDamageTakenModificationListener.java │ │ │ │ │ │ │ │ ├── ABActionAddDeathReplacementEffect.java │ │ │ │ │ │ │ │ ├── ABActionAddEvasionListener.java │ │ │ │ │ │ │ │ ├── ABActionAddFinalDamageTakenModificationListener.java │ │ │ │ │ │ │ │ ├── ABActionCreateAbilityEffectReactionListener.java │ │ │ │ │ │ │ │ ├── ABActionCreateAbilityProjReactionListener.java │ │ │ │ │ │ │ │ ├── ABActionCreateAttackPostDamageListener.java │ │ │ │ │ │ │ │ ├── ABActionCreateAttackPreDamageListener.java │ │ │ │ │ │ │ │ ├── ABActionCreateAttackProjReactionListener.java │ │ │ │ │ │ │ │ ├── ABActionCreateBehaviorChangeListener.java │ │ │ │ │ │ │ │ ├── ABActionCreateDamageTakenListener.java │ │ │ │ │ │ │ │ ├── ABActionCreateDamageTakenModificationListener.java │ │ │ │ │ │ │ │ ├── ABActionCreateDeathReplacementEffect.java │ │ │ │ │ │ │ │ ├── ABActionCreateEvasionListener.java │ │ │ │ │ │ │ │ ├── ABActionCreateFinalDamageTakenModificationListener.java │ │ │ │ │ │ │ │ ├── ABActionRemoveAbilityEffectReactionListener.java │ │ │ │ │ │ │ │ ├── ABActionRemoveAbilityProjReactionListener.java │ │ │ │ │ │ │ │ ├── ABActionRemoveAttackPostDamageListener.java │ │ │ │ │ │ │ │ ├── ABActionRemoveAttackPreDamageListener.java │ │ │ │ │ │ │ │ ├── ABActionRemoveAttackProjReactionListener.java │ │ │ │ │ │ │ │ ├── ABActionRemoveBehaviorChangeListener.java │ │ │ │ │ │ │ │ ├── ABActionRemoveDamageTakenListener.java │ │ │ │ │ │ │ │ ├── ABActionRemoveDamageTakenModificationListener.java │ │ │ │ │ │ │ │ ├── ABActionRemoveDeathReplacementEffect.java │ │ │ │ │ │ │ │ ├── ABActionRemoveEvasionListener.java │ │ │ │ │ │ │ │ ├── ABActionRemoveFinalDamageTakenModificationListener.java │ │ │ │ │ │ │ │ ├── internalActions │ │ │ │ │ │ │ │ │ ├── ABActionDamageTakenModificationMultiplyDamageMultiplier.java │ │ │ │ │ │ │ │ │ ├── ABActionDamageTakenModificationSetDamageMultiplier.java │ │ │ │ │ │ │ │ │ ├── ABActionDeathReplacementFinishReincarnating.java │ │ │ │ │ │ │ │ │ ├── ABActionDeathReplacementSetReincarnating.java │ │ │ │ │ │ │ │ │ ├── ABActionDeathReplacementSetReviving.java │ │ │ │ │ │ │ │ │ ├── ABActionPreDamageListenerAddBonusDamage.java │ │ │ │ │ │ │ │ │ ├── ABActionPreDamageListenerAddDamageMultiplier.java │ │ │ │ │ │ │ │ │ ├── ABActionPreDamageListenerSetMiss.java │ │ │ │ │ │ │ │ │ ├── ABActionReactionPreventHit.java │ │ │ │ │ │ │ │ │ ├── ABActionSetPreDamageStacking.java │ │ │ │ │ │ │ │ │ └── ABActionSubtractTotalDamageDealt.java │ │ │ │ │ │ │ │ ├── internalCallbacks │ │ │ │ │ │ │ │ │ ├── ABCallbackGetNewBehaviorTarget.java │ │ │ │ │ │ │ │ │ ├── ABCallbackGetReactionAttackProjectileAttackType.java │ │ │ │ │ │ │ │ │ ├── ABCallbackGetReactionAttackProjectileDamage.java │ │ │ │ │ │ │ │ │ ├── ABCallbackGetTotalDamageDealt.java │ │ │ │ │ │ │ │ │ ├── ABCallbackGetTriggeringAttackType.java │ │ │ │ │ │ │ │ │ ├── ABCallbackGetTriggeringDamageType.java │ │ │ │ │ │ │ │ │ ├── ABCallbackIsTriggeringDamageAnAttack.java │ │ │ │ │ │ │ │ │ └── ABCallbackIsTriggeringDamageRanged.java │ │ │ │ │ │ │ │ └── internalConditions │ │ │ │ │ │ │ │ │ └── ABConditionIsNewBehaviorCategoryInList.java │ │ │ │ │ │ │ ├── unitqueue │ │ │ │ │ │ │ │ ├── ABActionAddUnitToQueue.java │ │ │ │ │ │ │ │ ├── ABActionClearUnitQueue.java │ │ │ │ │ │ │ │ ├── ABActionCreateUnitQueue.java │ │ │ │ │ │ │ │ └── ABActionRemoveUnitFromQueue.java │ │ │ │ │ │ │ ├── unitstate │ │ │ │ │ │ │ │ ├── ABActionAddStateModBuff.java │ │ │ │ │ │ │ │ ├── ABActionCreateStateModBuff.java │ │ │ │ │ │ │ │ ├── ABActionRemoveStateModBuff.java │ │ │ │ │ │ │ │ └── ABActionSetUnitFadeTimer.java │ │ │ │ │ │ │ └── vision │ │ │ │ │ │ │ │ ├── ABActionCreateLocationVisionModifier.java │ │ │ │ │ │ │ │ ├── ABActionCreateUnitVisionModifier.java │ │ │ │ │ │ │ │ ├── ABActionRemoveVisionModifier.java │ │ │ │ │ │ │ │ └── ABActionSetBurrowPlaceholder.java │ │ │ │ │ │ ├── callback │ │ │ │ │ │ │ ├── abilitycallbacks │ │ │ │ │ │ │ │ ├── ABAbilityCallback.java │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedAbility.java │ │ │ │ │ │ │ │ ├── ABCallbackGetPartnerAbility.java │ │ │ │ │ │ │ │ ├── ABCallbackGetReactionAbility.java │ │ │ │ │ │ │ │ └── ABCallbackGetStoredAbilityByKey.java │ │ │ │ │ │ │ ├── booleancallbacks │ │ │ │ │ │ │ │ ├── ABBooleanCallback.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAbilityDataAsBoolean.java │ │ │ │ │ │ │ │ ├── ABCallbackGetParentAbilityDataAsBoolean.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredBooleanByKey.java │ │ │ │ │ │ │ │ ├── ABCallbackIntegerToBoolean.java │ │ │ │ │ │ │ │ ├── ABCallbackIsProjectileReflected.java │ │ │ │ │ │ │ │ ├── ABCallbackRawBoolean.java │ │ │ │ │ │ │ │ └── ABCallbackWasCastingInterrupted.java │ │ │ │ │ │ │ ├── buffcallbacks │ │ │ │ │ │ │ │ ├── ABBuffCallback.java │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedBuff.java │ │ │ │ │ │ │ │ └── ABCallbackGetStoredBuffByKey.java │ │ │ │ │ │ │ ├── destructable │ │ │ │ │ │ │ │ ├── ABCallbackGetEnumDestructable.java │ │ │ │ │ │ │ │ ├── ABCallbackGetProjectileHitDestructable.java │ │ │ │ │ │ │ │ └── ABDestructableCallback.java │ │ │ │ │ │ │ ├── destructablebuff │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedDestructableBuff.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredDestructableBuffByKey.java │ │ │ │ │ │ │ │ └── ABDestructableBuffCallback.java │ │ │ │ │ │ │ ├── enumcallbacks │ │ │ │ │ │ │ │ ├── ABAttackPreDamageListenerPriorityCallback.java │ │ │ │ │ │ │ │ ├── ABAttackTypeCallback.java │ │ │ │ │ │ │ │ ├── ABAutocastTypeCallback.java │ │ │ │ │ │ │ │ ├── ABCallbackConditionalAutocastType.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAttackTypeFromString.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAutocastTypeFromString.java │ │ │ │ │ │ │ │ ├── ABCallbackGetDamageTypeFromString.java │ │ │ │ │ │ │ │ ├── ABCallbackGetNonStackingStatBuffTypeFromString.java │ │ │ │ │ │ │ │ ├── ABCallbackRawDeathEffectPriority.java │ │ │ │ │ │ │ │ ├── ABCallbackRawPreDamageListenerPriority.java │ │ │ │ │ │ │ │ ├── ABDamageTypeCallback.java │ │ │ │ │ │ │ │ ├── ABDeathReplacementPriorityCallback.java │ │ │ │ │ │ │ │ └── ABNonStackingStatBuffTypeCallback.java │ │ │ │ │ │ │ ├── eventcallbacks │ │ │ │ │ │ │ │ └── timeeventcallbacks │ │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedTimeOfDayEvent.java │ │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredTimeOfDayEventByKey.java │ │ │ │ │ │ │ │ │ └── ABTimeOfDayEventCallback.java │ │ │ │ │ │ │ ├── floatcallbacks │ │ │ │ │ │ │ │ ├── ABCallbackAddFloat.java │ │ │ │ │ │ │ │ ├── ABCallbackCeilFloat.java │ │ │ │ │ │ │ │ ├── ABCallbackCos.java │ │ │ │ │ │ │ │ ├── ABCallbackDivideFloat.java │ │ │ │ │ │ │ │ ├── ABCallbackFMaxValue.java │ │ │ │ │ │ │ │ ├── ABCallbackFloorFloat.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAbilityArea.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAbilityCastRange.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAbilityCastTime.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAbilityCooldown.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAbilityDataAsFloat.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAbilityDuration.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAbilityHeroDuration.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAngleBetweenLocations.java │ │ │ │ │ │ │ │ ├── ABCallbackGetDistanceBetweenLocations.java │ │ │ │ │ │ │ │ ├── ABCallbackGetLocationX.java │ │ │ │ │ │ │ │ ├── ABCallbackGetLocationY.java │ │ │ │ │ │ │ │ ├── ABCallbackGetParentAbilityDataAsFloat.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredFloatByKey.java │ │ │ │ │ │ │ │ ├── ABCallbackGetUnitAcquisitionRange.java │ │ │ │ │ │ │ │ ├── ABCallbackGetUnitCastPoint.java │ │ │ │ │ │ │ │ ├── ABCallbackGetUnitCurrentHp.java │ │ │ │ │ │ │ │ ├── ABCallbackGetUnitCurrentMana.java │ │ │ │ │ │ │ │ ├── ABCallbackGetUnitFacing.java │ │ │ │ │ │ │ │ ├── ABCallbackGetUnitInitialMana.java │ │ │ │ │ │ │ │ ├── ABCallbackGetUnitLocationX.java │ │ │ │ │ │ │ │ ├── ABCallbackGetUnitLocationY.java │ │ │ │ │ │ │ │ ├── ABCallbackIntToFloat.java │ │ │ │ │ │ │ │ ├── ABCallbackMaxFloat.java │ │ │ │ │ │ │ │ ├── ABCallbackMinFloat.java │ │ │ │ │ │ │ │ ├── ABCallbackMultiplyFloat.java │ │ │ │ │ │ │ │ ├── ABCallbackNegativeFloat.java │ │ │ │ │ │ │ │ ├── ABCallbackPi.java │ │ │ │ │ │ │ │ ├── ABCallbackRandomBoundedFloat.java │ │ │ │ │ │ │ │ ├── ABCallbackRandomFloat.java │ │ │ │ │ │ │ │ ├── ABCallbackRawFloat.java │ │ │ │ │ │ │ │ ├── ABCallbackSin.java │ │ │ │ │ │ │ │ ├── ABCallbackSubtractFloat.java │ │ │ │ │ │ │ │ ├── ABCallbackTicksForDuration.java │ │ │ │ │ │ │ │ └── ABFloatCallback.java │ │ │ │ │ │ │ ├── fxcallbacks │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedLightningEffect.java │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedSpellEffect.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredFXByKey.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredLightningByKey.java │ │ │ │ │ │ │ │ ├── ABFXCallback.java │ │ │ │ │ │ │ │ └── ABLightningCallback.java │ │ │ │ │ │ │ ├── idcallbacks │ │ │ │ │ │ │ │ ├── ABCallbackGetAbilityDataAsID.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAbilityUnitId.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAlias.java │ │ │ │ │ │ │ │ ├── ABCallbackGetFirstBuffId.java │ │ │ │ │ │ │ │ ├── ABCallbackGetFirstEffectId.java │ │ │ │ │ │ │ │ ├── ABCallbackGetNonCurrentTransformType.java │ │ │ │ │ │ │ │ ├── ABCallbackGetParentAlias.java │ │ │ │ │ │ │ │ ├── ABCallbackGetSecondBuffId.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredIDByKey.java │ │ │ │ │ │ │ │ ├── ABCallbackGetUnitType.java │ │ │ │ │ │ │ │ ├── ABCallbackGetWar3IDFromString.java │ │ │ │ │ │ │ │ ├── ABCallbackNullIfFalse.java │ │ │ │ │ │ │ │ └── ABIDCallback.java │ │ │ │ │ │ │ ├── integercallbacks │ │ │ │ │ │ │ │ ├── ABCallbackAddInteger.java │ │ │ │ │ │ │ │ ├── ABCallbackAndInteger.java │ │ │ │ │ │ │ │ ├── ABCallbackCountUnitsInRangeOfLocation.java │ │ │ │ │ │ │ │ ├── ABCallbackCountUnitsInRangeOfUnit.java │ │ │ │ │ │ │ │ ├── ABCallbackDetectionDropdownConversion.java │ │ │ │ │ │ │ │ ├── ABCallbackDivideInteger.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAbilityCastTimeAsInteger.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAbilityDataAsInteger.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAbilityManaCost.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAbilityTargetAttachmentPoints.java │ │ │ │ │ │ │ │ ├── ABCallbackGetPlayerId.java │ │ │ │ │ │ │ │ ├── ABCallbackGetProjectileDestructableTargets.java │ │ │ │ │ │ │ │ ├── ABCallbackGetProjectileUnitTargets.java │ │ │ │ │ │ │ │ ├── ABCallbackGetSpellLevel.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredIntegerByKey.java │ │ │ │ │ │ │ │ ├── ABCallbackGetUnitGroupSize.java │ │ │ │ │ │ │ │ ├── ABCallbackGetUnitQueueSize.java │ │ │ │ │ │ │ │ ├── ABCallbackGetUnitTypeFoodCost.java │ │ │ │ │ │ │ │ ├── ABCallbackGetUnitTypeGoldCost.java │ │ │ │ │ │ │ │ ├── ABCallbackGetUnitTypeLumberCost.java │ │ │ │ │ │ │ │ ├── ABCallbackIntegerIf.java │ │ │ │ │ │ │ │ ├── ABCallbackIntegerZeroIfFalse.java │ │ │ │ │ │ │ │ ├── ABCallbackIterator.java │ │ │ │ │ │ │ │ ├── ABCallbackMaxInteger.java │ │ │ │ │ │ │ │ ├── ABCallbackMinInteger.java │ │ │ │ │ │ │ │ ├── ABCallbackMultiplyInteger.java │ │ │ │ │ │ │ │ ├── ABCallbackOrInteger.java │ │ │ │ │ │ │ │ ├── ABCallbackPlayerToStateModValue.java │ │ │ │ │ │ │ │ ├── ABCallbackRawInteger.java │ │ │ │ │ │ │ │ ├── ABCallbackSubtractInteger.java │ │ │ │ │ │ │ │ └── ABIntegerCallback.java │ │ │ │ │ │ │ ├── item │ │ │ │ │ │ │ │ └── ABItemCallback.java │ │ │ │ │ │ │ ├── listenercallbacks │ │ │ │ │ │ │ │ ├── ABAbilityEffectReactionListenerCallback.java │ │ │ │ │ │ │ │ ├── ABAbilityProjReactionListenerCallback.java │ │ │ │ │ │ │ │ ├── ABAttackPostDamageListenerCallback.java │ │ │ │ │ │ │ │ ├── ABAttackPreDamageListenerCallback.java │ │ │ │ │ │ │ │ ├── ABAttackProjReactionListenerCallback.java │ │ │ │ │ │ │ │ ├── ABBehaviorChangeListenerCallback.java │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedAbilityEffectReactionListener.java │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedAbilityProjReactionListener.java │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedAttackPostDamageListener.java │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedAttackPreDamageListener.java │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedAttackProjReactionListener.java │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedBehaviorChangeListener.java │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedDamageTakenListener.java │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedDamageTakenModificationListener.java │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedDeathReplacement.java │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedEvasionListener.java │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedFinalDamageTakenModificationListener.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredAbilityEffectReactionListenerByKey.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredAbilityProjReactionListenerByKey.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredAttackPostDamageListenerByKey.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredAttackPreDamageListenerByKey.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredAttackProjReactionListenerByKey.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredBehaviorChangeListenerByKey.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredDamageTakenListenerByKey.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredDamageTakenModificationListenerByKey.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredDeathReplacementByKey.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredEvasionListenerByKey.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredFinalDamageTakenModificationListenerByKey.java │ │ │ │ │ │ │ │ ├── ABDamageTakenListenerCallback.java │ │ │ │ │ │ │ │ ├── ABDamageTakenModificationListenerCallback.java │ │ │ │ │ │ │ │ ├── ABDeathReplacementCallback.java │ │ │ │ │ │ │ │ ├── ABEvasionListenerCallback.java │ │ │ │ │ │ │ │ └── ABFinalDamageTakenModificationListenerCallback.java │ │ │ │ │ │ │ ├── locationcallbacks │ │ │ │ │ │ │ │ ├── ABCallbackCreateLocationFromOffset.java │ │ │ │ │ │ │ │ ├── ABCallbackCreateLocationFromTarget.java │ │ │ │ │ │ │ │ ├── ABCallbackCreateLocationFromXY.java │ │ │ │ │ │ │ │ ├── ABCallbackGetProjectileCurrentLocation.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredLocationByKey.java │ │ │ │ │ │ │ │ ├── ABCallbackGetTargetedLocation.java │ │ │ │ │ │ │ │ ├── ABCallbackGetUnitLocation.java │ │ │ │ │ │ │ │ └── ABLocationCallback.java │ │ │ │ │ │ │ ├── longcallbacks │ │ │ │ │ │ │ │ ├── ABCallbackAddLong.java │ │ │ │ │ │ │ │ ├── ABCallbackAndLong.java │ │ │ │ │ │ │ │ ├── ABCallbackCreateDetectedData.java │ │ │ │ │ │ │ │ ├── ABCallbackCreateDetectorData.java │ │ │ │ │ │ │ │ ├── ABCallbackDivideLong.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredLongByKey.java │ │ │ │ │ │ │ │ ├── ABCallbackMaxLong.java │ │ │ │ │ │ │ │ ├── ABCallbackMinLong.java │ │ │ │ │ │ │ │ ├── ABCallbackMultiplyLong.java │ │ │ │ │ │ │ │ ├── ABCallbackOrLong.java │ │ │ │ │ │ │ │ ├── ABCallbackRawLong.java │ │ │ │ │ │ │ │ ├── ABCallbackSubtractLong.java │ │ │ │ │ │ │ │ └── ABLongCallback.java │ │ │ │ │ │ │ ├── orderid │ │ │ │ │ │ │ │ ├── ABCallbackIdString.java │ │ │ │ │ │ │ │ ├── ABCallbackRawID.java │ │ │ │ │ │ │ │ └── ABOrderIdCallback.java │ │ │ │ │ │ │ ├── player │ │ │ │ │ │ │ │ ├── ABCallbackGetOwnerOfUnit.java │ │ │ │ │ │ │ │ ├── ABCallbackGetPlayerById.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredPlayerByKey.java │ │ │ │ │ │ │ │ └── ABPlayerCallback.java │ │ │ │ │ │ │ ├── projectile │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedProjectile.java │ │ │ │ │ │ │ │ ├── ABCallbackGetReactionAbilityProjectile.java │ │ │ │ │ │ │ │ ├── ABCallbackGetReactionAttackProjectile.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredProjectileByKey.java │ │ │ │ │ │ │ │ ├── ABCallbackGetThisProjectile.java │ │ │ │ │ │ │ │ └── ABProjectileCallback.java │ │ │ │ │ │ │ ├── statbuffcallbacks │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedNonStackingStatBuff.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredNonStackingStatBuffByKey.java │ │ │ │ │ │ │ │ └── ABNonStackingStatBuffCallback.java │ │ │ │ │ │ │ ├── statemodcallbacks │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedStateModBuff.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredStateModBuffByKey.java │ │ │ │ │ │ │ │ └── ABStateModBuffCallback.java │ │ │ │ │ │ │ ├── stringcallbacks │ │ │ │ │ │ │ │ ├── ABCallbackBooleanToString.java │ │ │ │ │ │ │ │ ├── ABCallbackCatStrings.java │ │ │ │ │ │ │ │ ├── ABCallbackFloatToString.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAbilityDataAsString.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAliasAsString.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAllowStackingKey.java │ │ │ │ │ │ │ │ ├── ABCallbackGetCodeAsString.java │ │ │ │ │ │ │ │ ├── ABCallbackGetUnitHandleAsString.java │ │ │ │ │ │ │ │ ├── ABCallbackIntegerToString.java │ │ │ │ │ │ │ │ ├── ABCallbackLongToString.java │ │ │ │ │ │ │ │ ├── ABCallbackRawString.java │ │ │ │ │ │ │ │ └── ABStringCallback.java │ │ │ │ │ │ │ ├── targetcallbacks │ │ │ │ │ │ │ │ ├── ABCallbackGetAbilityTarget.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredTargetByKey.java │ │ │ │ │ │ │ │ └── ABTargetCallback.java │ │ │ │ │ │ │ ├── timercallbacks │ │ │ │ │ │ │ │ ├── ABCallbackGetFiringTimer.java │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedTimer.java │ │ │ │ │ │ │ │ ├── ABCallbackGetLastStartedTimer.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredTimerByKey.java │ │ │ │ │ │ │ │ └── ABTimerCallback.java │ │ │ │ │ │ │ ├── unitcallbacks │ │ │ │ │ │ │ │ ├── ABCallbackGetAbilityPairedUnit.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAbilityTargetedUnit.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAttackedUnit.java │ │ │ │ │ │ │ │ ├── ABCallbackGetAttackingUnit.java │ │ │ │ │ │ │ │ ├── ABCallbackGetBuffCastingUnit.java │ │ │ │ │ │ │ │ ├── ABCallbackGetBuffedUnit.java │ │ │ │ │ │ │ │ ├── ABCallbackGetCastingUnit.java │ │ │ │ │ │ │ │ ├── ABCallbackGetDyingUnit.java │ │ │ │ │ │ │ │ ├── ABCallbackGetEnumUnit.java │ │ │ │ │ │ │ │ ├── ABCallbackGetKillingUnit.java │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedUnit.java │ │ │ │ │ │ │ │ ├── ABCallbackGetListenerUnit.java │ │ │ │ │ │ │ │ ├── ABCallbackGetMatchingUnit.java │ │ │ │ │ │ │ │ ├── ABCallbackGetNearestCorpseInRangeOfUnit.java │ │ │ │ │ │ │ │ ├── ABCallbackGetNearestUnitInRangeOfUnit.java │ │ │ │ │ │ │ │ ├── ABCallbackGetParentCastingUnit.java │ │ │ │ │ │ │ │ ├── ABCallbackGetProjectileHitUnit.java │ │ │ │ │ │ │ │ ├── ABCallbackGetReactionAbilityCastingUnit.java │ │ │ │ │ │ │ │ ├── ABCallbackGetReactionAbilityTargetUnit.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredUnitByKey.java │ │ │ │ │ │ │ │ ├── ABCallbackPollUnitQueue.java │ │ │ │ │ │ │ │ └── ABUnitCallback.java │ │ │ │ │ │ │ ├── unitgroupcallbacks │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedUnitGroup.java │ │ │ │ │ │ │ │ ├── ABCallbackGetUnitGroupByName.java │ │ │ │ │ │ │ │ └── ABUnitGroupCallback.java │ │ │ │ │ │ │ ├── unitqueue │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedUnitQueue.java │ │ │ │ │ │ │ │ ├── ABCallbackGetUnitQueueByName.java │ │ │ │ │ │ │ │ └── ABUnitQueueCallback.java │ │ │ │ │ │ │ ├── visionmodifier │ │ │ │ │ │ │ │ ├── ABCallbackGetLastCreatedVisionModifier.java │ │ │ │ │ │ │ │ ├── ABCallbackGetStoredVisionModifierByKey.java │ │ │ │ │ │ │ │ └── ABVisionModifierCallback.java │ │ │ │ │ │ │ └── widget │ │ │ │ │ │ │ │ ├── ABCallbackGetProjectileHitWidget.java │ │ │ │ │ │ │ │ ├── ABCallbackUnitToWidget.java │ │ │ │ │ │ │ │ └── ABWidgetCallback.java │ │ │ │ │ │ └── condition │ │ │ │ │ │ │ ├── ABConditionIsDestructableValidTarget.java │ │ │ │ │ │ │ ├── ABConditionIsPassAllAbilityTargetChecks.java │ │ │ │ │ │ │ ├── ABConditionIsUnitInGroup.java │ │ │ │ │ │ │ ├── ABConditionIsUnitInRangeOfUnit.java │ │ │ │ │ │ │ ├── ABConditionIsUnitPassAllAbilityTargetChecks.java │ │ │ │ │ │ │ ├── ABConditionIsUnitValidTarget.java │ │ │ │ │ │ │ ├── ABConditionIsValidTarget.java │ │ │ │ │ │ │ ├── ABConditionMatchingCorpseExistsInRangeOfUnit.java │ │ │ │ │ │ │ ├── ABConditionMatchingUnitExistsInRangeOfUnit.java │ │ │ │ │ │ │ ├── ABConditionSetCantUseReasonOnFailure.java │ │ │ │ │ │ │ ├── ability │ │ │ │ │ │ │ ├── ABConditionIsFlexAbilityNonPointTarget.java │ │ │ │ │ │ │ ├── ABConditionIsFlexAbilityNonTargeted.java │ │ │ │ │ │ │ ├── ABConditionIsFlexAbilityPointTarget.java │ │ │ │ │ │ │ ├── ABConditionIsFlexAbilityTargeted.java │ │ │ │ │ │ │ ├── ABConditionIsOnCooldown.java │ │ │ │ │ │ │ ├── ABConditionIsToggleAbilityActive.java │ │ │ │ │ │ │ └── ABConditionIsTransformingToAlternate.java │ │ │ │ │ │ │ ├── comparison │ │ │ │ │ │ │ ├── ABConditionIsAttackTypeEqual.java │ │ │ │ │ │ │ ├── ABConditionIsDamageTypeEqual.java │ │ │ │ │ │ │ └── ABConditionIsUnitEqual.java │ │ │ │ │ │ │ ├── game │ │ │ │ │ │ │ ├── ABConditionGameplayConstantIsDefendCanDeflect.java │ │ │ │ │ │ │ ├── ABConditionGameplayConstantIsRelativeUpgradeCosts.java │ │ │ │ │ │ │ └── ABConditionIsTimeOfDayInRange.java │ │ │ │ │ │ │ ├── item │ │ │ │ │ │ │ ├── ABConditionIsItemAbility.java │ │ │ │ │ │ │ └── ABConditionItemHasCharges.java │ │ │ │ │ │ │ ├── logical │ │ │ │ │ │ │ ├── ABConditionAnd.java │ │ │ │ │ │ │ ├── ABConditionBool.java │ │ │ │ │ │ │ ├── ABConditionNot.java │ │ │ │ │ │ │ ├── ABConditionNotNull.java │ │ │ │ │ │ │ └── ABConditionOr.java │ │ │ │ │ │ │ ├── numeric │ │ │ │ │ │ │ ├── ABConditionFloatEq0.java │ │ │ │ │ │ │ ├── ABConditionFloatEqual.java │ │ │ │ │ │ │ ├── ABConditionFloatGt.java │ │ │ │ │ │ │ ├── ABConditionFloatGte.java │ │ │ │ │ │ │ ├── ABConditionFloatLt.java │ │ │ │ │ │ │ ├── ABConditionFloatLte.java │ │ │ │ │ │ │ ├── ABConditionFloatNe.java │ │ │ │ │ │ │ ├── ABConditionFloatNe0.java │ │ │ │ │ │ │ ├── ABConditionIntegerEq.java │ │ │ │ │ │ │ ├── ABConditionIntegerEq0.java │ │ │ │ │ │ │ ├── ABConditionIntegerGt.java │ │ │ │ │ │ │ ├── ABConditionIntegerGte.java │ │ │ │ │ │ │ ├── ABConditionIntegerIsEven.java │ │ │ │ │ │ │ ├── ABConditionIntegerIsOdd.java │ │ │ │ │ │ │ ├── ABConditionIntegerLt.java │ │ │ │ │ │ │ ├── ABConditionIntegerLte.java │ │ │ │ │ │ │ ├── ABConditionIntegerNe.java │ │ │ │ │ │ │ └── ABConditionIntegerNe0.java │ │ │ │ │ │ │ ├── timer │ │ │ │ │ │ │ └── ABConditionIsTimerActive.java │ │ │ │ │ │ │ └── unit │ │ │ │ │ │ │ ├── ABConditionDoesUnitHaveBuff.java │ │ │ │ │ │ │ ├── ABConditionIsUnitBuilding.java │ │ │ │ │ │ │ ├── ABConditionIsUnitDead.java │ │ │ │ │ │ │ ├── ABConditionIsUnitEnemy.java │ │ │ │ │ │ │ ├── ABConditionIsUnitMaxHp.java │ │ │ │ │ │ │ ├── ABConditionIsUnitMaxMp.java │ │ │ │ │ │ │ └── ABConditionIsUnitTraining.java │ │ │ │ │ ├── buff │ │ │ │ │ │ ├── ABBuff.java │ │ │ │ │ │ ├── ABDestructableBuff.java │ │ │ │ │ │ ├── ABGenericArtBuff.java │ │ │ │ │ │ ├── ABGenericAuraBuff.java │ │ │ │ │ │ ├── ABGenericPermanentBuff.java │ │ │ │ │ │ ├── ABGenericTimedBuff.java │ │ │ │ │ │ ├── ABPermanentPassiveBuff.java │ │ │ │ │ │ ├── ABTargetingBuff.java │ │ │ │ │ │ ├── ABTimedArtBuff.java │ │ │ │ │ │ ├── ABTimedBuff.java │ │ │ │ │ │ ├── ABTimedInstantTransformationBuff.java │ │ │ │ │ │ ├── ABTimedTargetingBuff.java │ │ │ │ │ │ ├── ABTimedTickingBuff.java │ │ │ │ │ │ ├── ABTimedTickingPausedBuff.java │ │ │ │ │ │ ├── ABTimedTickingPostDeathBuff.java │ │ │ │ │ │ └── ABTimedTransformationBuff.java │ │ │ │ │ ├── core │ │ │ │ │ │ ├── ABAction.java │ │ │ │ │ │ ├── ABCallback.java │ │ │ │ │ │ ├── ABCondition.java │ │ │ │ │ │ ├── ABLocalStoreKeys.java │ │ │ │ │ │ ├── ABSingleAction.java │ │ │ │ │ │ └── AbilityBuilderGsonBuilder.java │ │ │ │ │ ├── event │ │ │ │ │ │ ├── ABGlobalWidgetEvent.java │ │ │ │ │ │ ├── ABPlayerEvent.java │ │ │ │ │ │ ├── ABTimeOfDayEvent.java │ │ │ │ │ │ └── ABWidgetEvent.java │ │ │ │ │ ├── handler │ │ │ │ │ │ └── TransformationHandler.java │ │ │ │ │ ├── iterstructs │ │ │ │ │ │ └── UnitAndRange.java │ │ │ │ │ ├── jass │ │ │ │ │ │ ├── ABActionJass.java │ │ │ │ │ │ └── ABConditionJass.java │ │ │ │ │ ├── listener │ │ │ │ │ │ ├── ABAbilityEffectReactionListener.java │ │ │ │ │ │ ├── ABAbilityProjReactionListener.java │ │ │ │ │ │ ├── ABAttackEvasionListener.java │ │ │ │ │ │ ├── ABAttackPostDamageListener.java │ │ │ │ │ │ ├── ABAttackPreDamageListener.java │ │ │ │ │ │ ├── ABAttackProjReactionListener.java │ │ │ │ │ │ ├── ABBehaviorChangeListener.java │ │ │ │ │ │ ├── ABDamageTakenListener.java │ │ │ │ │ │ ├── ABDamageTakenModificationListener.java │ │ │ │ │ │ ├── ABDeathReplacementEffect.java │ │ │ │ │ │ └── ABFinalDamageTakenModificationListener.java │ │ │ │ │ ├── parser │ │ │ │ │ │ ├── AbilityBuilderConfiguration.java │ │ │ │ │ │ ├── AbilityBuilderDupe.java │ │ │ │ │ │ ├── AbilityBuilderFile.java │ │ │ │ │ │ ├── AbilityBuilderOverrideFields.java │ │ │ │ │ │ ├── AbilityBuilderParser.java │ │ │ │ │ │ ├── AbilityBuilderParserTemplateFields.java │ │ │ │ │ │ ├── AbilityBuilderParserUtil.java │ │ │ │ │ │ ├── AbilityBuilderSpecialConfigFields.java │ │ │ │ │ │ ├── AbilityBuilderSpecialDisplayFields.java │ │ │ │ │ │ ├── AbilityBuilderTemplateType.java │ │ │ │ │ │ ├── AbilityBuilderType.java │ │ │ │ │ │ └── template │ │ │ │ │ │ │ ├── DataFieldLetter.java │ │ │ │ │ │ │ ├── MeleeRangeTargetOverride.java │ │ │ │ │ │ │ ├── StatBuffFromDataField.java │ │ │ │ │ │ │ └── StatBuffType.java │ │ │ │ │ ├── projectile │ │ │ │ │ │ ├── ABCollisionProjectileListener.java │ │ │ │ │ │ └── ABProjectileListener.java │ │ │ │ │ ├── timer │ │ │ │ │ │ ├── ABTimer.java │ │ │ │ │ │ ├── AltitudeAdjustmentTimer.java │ │ │ │ │ │ ├── DelayInstantTransformationTimer.java │ │ │ │ │ │ ├── DelayTimerTimer.java │ │ │ │ │ │ ├── ManaDepletedCheckTimer.java │ │ │ │ │ │ └── TransformationMorphAnimationTimer.java │ │ │ │ │ └── types │ │ │ │ │ │ ├── definitions │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ ├── CAbilityTypeDefinitionAbilityBuilder.java │ │ │ │ │ │ │ └── CAbilityTypeDefinitionAbilityTemplateBuilder.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ ├── CAbilityTypeAbilityBuilder.java │ │ │ │ │ │ ├── CAbilityTypeAbilityBuilderLevelData.java │ │ │ │ │ │ └── CAbilityTypeAbilityTemplateBuilder.java │ │ │ │ ├── ai │ │ │ │ │ └── AIDifficulty.java │ │ │ │ ├── behaviors │ │ │ │ │ ├── BehaviorAbilityVisitor.java │ │ │ │ │ ├── BehaviorTargetUnitVisitor.java │ │ │ │ │ ├── BehaviorTargetVisitor.java │ │ │ │ │ ├── CAbstractRangedBehavior.java │ │ │ │ │ ├── CBehavior.java │ │ │ │ │ ├── CBehaviorAttack.java │ │ │ │ │ ├── CBehaviorAttackListener.java │ │ │ │ │ ├── CBehaviorAttackMove.java │ │ │ │ │ ├── CBehaviorBoardTransport.java │ │ │ │ │ ├── CBehaviorCategory.java │ │ │ │ │ ├── CBehaviorFollow.java │ │ │ │ │ ├── CBehaviorHoldPosition.java │ │ │ │ │ ├── CBehaviorMove.java │ │ │ │ │ ├── CBehaviorMoveIntoRangeFor.java │ │ │ │ │ ├── CBehaviorPatrol.java │ │ │ │ │ ├── CBehaviorStop.java │ │ │ │ │ ├── CBehaviorStun.java │ │ │ │ │ ├── CBehaviorVisitor.java │ │ │ │ │ ├── CRangedBehavior.java │ │ │ │ │ ├── build │ │ │ │ │ │ ├── AbilityDisableWhileUnderConstructionVisitor.java │ │ │ │ │ │ ├── AbilityDisableWhileUpgradingVisitor.java │ │ │ │ │ │ ├── CBehaviorHumanBuild.java │ │ │ │ │ │ ├── CBehaviorHumanRepair.java │ │ │ │ │ │ ├── CBehaviorNightElfBuild.java │ │ │ │ │ │ ├── CBehaviorOrcBuild.java │ │ │ │ │ │ ├── CBehaviorRepair.java │ │ │ │ │ │ └── CBehaviorUndeadBuild.java │ │ │ │ │ ├── cargohold │ │ │ │ │ │ ├── CBehaviorDrop.java │ │ │ │ │ │ └── CBehaviorLoad.java │ │ │ │ │ ├── harvest │ │ │ │ │ │ ├── CBehaviorAcolyteHarvest.java │ │ │ │ │ │ ├── CBehaviorHarvest.java │ │ │ │ │ │ ├── CBehaviorReturnResources.java │ │ │ │ │ │ └── CBehaviorWispHarvest.java │ │ │ │ │ ├── inventory │ │ │ │ │ │ ├── CBehaviorDropItem.java │ │ │ │ │ │ ├── CBehaviorGetItem.java │ │ │ │ │ │ └── CBehaviorGiveItemToHero.java │ │ │ │ │ ├── jass │ │ │ │ │ │ ├── CAbstractRangedBehaviorJass.java │ │ │ │ │ │ ├── CBehaviorJass.java │ │ │ │ │ │ └── CRangedBehaviorJass.java │ │ │ │ │ ├── root │ │ │ │ │ │ ├── CBehaviorRoot.java │ │ │ │ │ │ └── CBehaviorUproot.java │ │ │ │ │ ├── skills │ │ │ │ │ │ ├── CBehaviorNoTargetSpellBase.java │ │ │ │ │ │ └── CBehaviorTargetSpellBase.java │ │ │ │ │ └── test │ │ │ │ │ │ ├── CBehaviorCarrionSwarmDummy.java │ │ │ │ │ │ ├── CBehaviorChannelTest.java │ │ │ │ │ │ └── CBehaviorCoupleInstant.java │ │ │ │ ├── combat │ │ │ │ │ ├── AttackInterceptor.java │ │ │ │ │ ├── CAttackType.java │ │ │ │ │ ├── CDefenseType.java │ │ │ │ │ ├── CRegenType.java │ │ │ │ │ ├── CTargetType.java │ │ │ │ │ ├── CUpgradeClass.java │ │ │ │ │ ├── CWeaponType.java │ │ │ │ │ ├── CodeKeyType.java │ │ │ │ │ ├── IncomingAttackInterceptor.java │ │ │ │ │ ├── OutgoingAttackInterceptor.java │ │ │ │ │ ├── attacks │ │ │ │ │ │ ├── CUnitAttack.java │ │ │ │ │ │ ├── CUnitAttackInstant.java │ │ │ │ │ │ ├── CUnitAttackListener.java │ │ │ │ │ │ ├── CUnitAttackMissile.java │ │ │ │ │ │ ├── CUnitAttackMissileBounce.java │ │ │ │ │ │ ├── CUnitAttackMissileLine.java │ │ │ │ │ │ ├── CUnitAttackMissileSplash.java │ │ │ │ │ │ ├── CUnitAttackNormal.java │ │ │ │ │ │ ├── listeners │ │ │ │ │ │ │ ├── CUnitAttackDamageTakenListener.java │ │ │ │ │ │ │ ├── CUnitAttackDamageTakenModificationListener.java │ │ │ │ │ │ │ ├── CUnitAttackDamageTakenModificationListenerDamageModResult.java │ │ │ │ │ │ │ ├── CUnitAttackEffectListenerStacking.java │ │ │ │ │ │ │ ├── CUnitAttackEvasionListener.java │ │ │ │ │ │ │ ├── CUnitAttackFinalDamageTakenModificationListener.java │ │ │ │ │ │ │ ├── CUnitAttackPostDamageListener.java │ │ │ │ │ │ │ ├── CUnitAttackPreDamageListener.java │ │ │ │ │ │ │ ├── CUnitAttackPreDamageListenerDamageModResult.java │ │ │ │ │ │ │ ├── CUnitAttackPreDamageListenerPriority.java │ │ │ │ │ │ │ ├── CUnitDeathReplacementEffect.java │ │ │ │ │ │ │ ├── CUnitDeathReplacementEffectPriority.java │ │ │ │ │ │ │ ├── CUnitDeathReplacementResult.java │ │ │ │ │ │ │ ├── CUnitDeathReplacementStacking.java │ │ │ │ │ │ │ ├── CUnitDefaultAccuracyCheckListener.java │ │ │ │ │ │ │ ├── CUnitDefaultEtherealDamageModListener.java │ │ │ │ │ │ │ ├── CUnitDefaultLifestealListener.java │ │ │ │ │ │ │ ├── CUnitDefaultMagicImmuneDamageModListener.java │ │ │ │ │ │ │ ├── CUnitDefaultSleepListener.java │ │ │ │ │ │ │ └── CUnitDefaultThornsListener.java │ │ │ │ │ │ └── replacement │ │ │ │ │ │ │ ├── CUnitAttackReplacementEffect.java │ │ │ │ │ │ │ └── CUnitAttackReplacementPriority.java │ │ │ │ │ └── projectile │ │ │ │ │ │ ├── CAbilityCollisionProjectileListener.java │ │ │ │ │ │ ├── CAbilityProjectile.java │ │ │ │ │ │ ├── CAbilityProjectileListener.java │ │ │ │ │ │ ├── CAttackProjectile.java │ │ │ │ │ │ ├── CAttackProjectileInstant.java │ │ │ │ │ │ ├── CAttackProjectileMissile.java │ │ │ │ │ │ ├── CCollisionProjectile.java │ │ │ │ │ │ ├── CEffect.java │ │ │ │ │ │ ├── CJassProjectile.java │ │ │ │ │ │ ├── CProjectile.java │ │ │ │ │ │ ├── CProjectileListener.java │ │ │ │ │ │ ├── CPsuedoProjectile.java │ │ │ │ │ │ └── listeners │ │ │ │ │ │ ├── CUnitAbilityProjReactionListener.java │ │ │ │ │ │ └── CUnitAttackProjReactionListener.java │ │ │ │ ├── config │ │ │ │ │ ├── CBasePlayer.java │ │ │ │ │ ├── CPlayerAPI.java │ │ │ │ │ ├── War3MapConfig.java │ │ │ │ │ ├── War3MapConfigPlayer.java │ │ │ │ │ └── War3MapConfigStartLoc.java │ │ │ │ ├── data │ │ │ │ │ ├── CAbilityData.java │ │ │ │ │ ├── CDestructableData.java │ │ │ │ │ ├── CItemData.java │ │ │ │ │ ├── CUnitData.java │ │ │ │ │ ├── CUnitRace.java │ │ │ │ │ └── CUpgradeData.java │ │ │ │ ├── item │ │ │ │ │ └── CItemTypeJass.java │ │ │ │ ├── orders │ │ │ │ │ ├── COrder.java │ │ │ │ │ ├── COrderDropItemAtPoint.java │ │ │ │ │ ├── COrderDropItemAtTargetWidget.java │ │ │ │ │ ├── COrderNoTarget.java │ │ │ │ │ ├── COrderTargetPoint.java │ │ │ │ │ ├── COrderTargetWidget.java │ │ │ │ │ ├── OrderIdUtils.java │ │ │ │ │ └── OrderIds.java │ │ │ │ ├── pathing │ │ │ │ │ ├── CBuildingPathingType.java │ │ │ │ │ ├── CDirection.java │ │ │ │ │ ├── CNode.kt │ │ │ │ │ ├── CPathfindingProcessor.java │ │ │ │ │ └── Extensions.kt │ │ │ │ ├── players │ │ │ │ │ ├── CAllianceType.java │ │ │ │ │ ├── CMapControl.java │ │ │ │ │ ├── CMapFlag.java │ │ │ │ │ ├── CMapPlacement.java │ │ │ │ │ ├── CPlayer.java │ │ │ │ │ ├── CPlayerColor.java │ │ │ │ │ ├── CPlayerEvent.java │ │ │ │ │ ├── CPlayerGameResult.java │ │ │ │ │ ├── CPlayerJass.java │ │ │ │ │ ├── CPlayerScore.java │ │ │ │ │ ├── CPlayerState.java │ │ │ │ │ ├── CPlayerUnitOrderExecutor.java │ │ │ │ │ ├── CPlayerUnitOrderListener.java │ │ │ │ │ ├── CPlayerUnitOrderListenerDelaying.java │ │ │ │ │ ├── CRace.java │ │ │ │ │ ├── CRaceManager.java │ │ │ │ │ ├── CRaceManagerEntry.java │ │ │ │ │ ├── CRacePreference.java │ │ │ │ │ ├── CRacePreferences.java │ │ │ │ │ ├── CStartLocPrio.java │ │ │ │ │ └── vision │ │ │ │ │ │ ├── CCircleFogModifier.java │ │ │ │ │ │ ├── CFogModifier.java │ │ │ │ │ │ ├── CFogModifierJass.java │ │ │ │ │ │ ├── CFogModifierJassMulti.java │ │ │ │ │ │ ├── CFogModifierJassSingle.java │ │ │ │ │ │ ├── CPlayerFogOfWar.java │ │ │ │ │ │ ├── CRectFogModifier.java │ │ │ │ │ │ ├── CTimedCircleFogModifier.java │ │ │ │ │ │ ├── CUnitAttackVisionFogModifier.java │ │ │ │ │ │ ├── CUnitDeathVisionFogModifier.java │ │ │ │ │ │ ├── CUnitVisionFogModifier.java │ │ │ │ │ │ └── DetectionLevel.java │ │ │ │ ├── region │ │ │ │ │ ├── CRegion.java │ │ │ │ │ ├── CRegionEnumFunction.java │ │ │ │ │ ├── CRegionManager.java │ │ │ │ │ ├── CRegionTriggerEnter.java │ │ │ │ │ └── CRegionTriggerLeave.java │ │ │ │ ├── sound │ │ │ │ │ ├── CMIDISound.java │ │ │ │ │ ├── CSound.java │ │ │ │ │ ├── CSoundFilename.java │ │ │ │ │ └── CSoundFromLabel.java │ │ │ │ ├── state │ │ │ │ │ ├── CGameState.java │ │ │ │ │ ├── CUnitState.java │ │ │ │ │ └── FalseTimeOfDay.java │ │ │ │ ├── timers │ │ │ │ │ ├── CTimer.java │ │ │ │ │ ├── CTimerJass.java │ │ │ │ │ ├── CTimerJassBase.java │ │ │ │ │ ├── CTimerJassStruct.java │ │ │ │ │ ├── CTimerNativeEvent.java │ │ │ │ │ └── CTimerSleepAction.java │ │ │ │ ├── trigger │ │ │ │ │ ├── JassGameEventsWar3.java │ │ │ │ │ ├── enumtypes │ │ │ │ │ │ ├── CAttackTypeJass.java │ │ │ │ │ │ ├── CBlendMode.java │ │ │ │ │ │ ├── CCameraField.java │ │ │ │ │ │ ├── CDamageType.java │ │ │ │ │ │ ├── CEffectType.java │ │ │ │ │ │ ├── CFogState.java │ │ │ │ │ │ ├── CGameSpeed.java │ │ │ │ │ │ ├── CGameType.java │ │ │ │ │ │ ├── CMapDensity.java │ │ │ │ │ │ ├── CMapDifficulty.java │ │ │ │ │ │ ├── CPathingTypeJass.java │ │ │ │ │ │ ├── CPlayerSlotState.java │ │ │ │ │ │ ├── CRarityControl.java │ │ │ │ │ │ ├── CSoundType.java │ │ │ │ │ │ ├── CSoundVolumeGroup.java │ │ │ │ │ │ ├── CTexMapFlags.java │ │ │ │ │ │ ├── CVersion.java │ │ │ │ │ │ └── CWeaponSoundTypeJass.java │ │ │ │ │ └── uidialog │ │ │ │ │ │ ├── JassUIDialog.java │ │ │ │ │ │ └── JassUIDialogButton.java │ │ │ │ ├── unit │ │ │ │ │ ├── BuildOnBuildingIntersector.java │ │ │ │ │ ├── CUnitBehaviorChangeListener.java │ │ │ │ │ ├── CUnitTypeJass.java │ │ │ │ │ ├── CWidgetEvent.java │ │ │ │ │ ├── NonStackingFx.java │ │ │ │ │ ├── NonStackingStatBuff.java │ │ │ │ │ ├── NonStackingStatBuffType.java │ │ │ │ │ ├── StateModBuff.java │ │ │ │ │ └── StateModBuffType.java │ │ │ │ ├── upgrade │ │ │ │ │ ├── CUpgradeEffect.java │ │ │ │ │ ├── CUpgradeEffectAttackDamage.java │ │ │ │ │ ├── CUpgradeEffectAttackDice.java │ │ │ │ │ ├── CUpgradeEffectAttackRange.java │ │ │ │ │ ├── CUpgradeEffectAttackSpeed.java │ │ │ │ │ ├── CUpgradeEffectDefenseUpgradeBonus.java │ │ │ │ │ ├── CUpgradeEffectHitPointRegen.java │ │ │ │ │ ├── CUpgradeEffectHitPoints.java │ │ │ │ │ ├── CUpgradeEffectHitPointsPcnt.java │ │ │ │ │ ├── CUpgradeEffectManaPoints.java │ │ │ │ │ ├── CUpgradeEffectManaPointsPcnt.java │ │ │ │ │ ├── CUpgradeEffectManaRegen.java │ │ │ │ │ ├── CUpgradeEffectMovementSpeed.java │ │ │ │ │ ├── CUpgradeEffectMovementSpeedPcnt.java │ │ │ │ │ ├── CUpgradeEffectSpellLevel.java │ │ │ │ │ └── CUpgradeEffectTechMaxAllowed.java │ │ │ │ └── util │ │ │ │ │ ├── AbilityActivationErrorHandler.java │ │ │ │ │ ├── AbilityActivationReceiver.java │ │ │ │ │ ├── AbilityTargetCheckReceiver.java │ │ │ │ │ ├── BooleanAbilityActivationReceiver.java │ │ │ │ │ ├── BooleanAbilityTargetCheckReceiver.java │ │ │ │ │ ├── CHashtable.java │ │ │ │ │ ├── CWidgetAbilityTargetCheckReceiver.java │ │ │ │ │ ├── CommandStringErrorKeys.java │ │ │ │ │ ├── CommandStringErrorKeysEnum.java │ │ │ │ │ ├── ExternStringMsgAbilityActivationReceiver.java │ │ │ │ │ ├── ExternStringMsgTargetCheckReceiver.java │ │ │ │ │ ├── MeleeUIAbilityActivationReceiver.java │ │ │ │ │ ├── MultiStockDelayProcessor.java │ │ │ │ │ ├── PointAbilityTargetCheckReceiver.java │ │ │ │ │ ├── ResourceType.java │ │ │ │ │ ├── SimulationRenderComponent.java │ │ │ │ │ ├── SimulationRenderComponentLightning.java │ │ │ │ │ ├── SimulationRenderComponentLightningMovable.java │ │ │ │ │ ├── SimulationRenderComponentModel.java │ │ │ │ │ ├── SimulationRenderController.java │ │ │ │ │ ├── TextTagConfigType.java │ │ │ │ │ └── UiSoundLookup.java │ │ │ │ └── ui │ │ │ │ ├── BeginGameInformation.java │ │ │ │ ├── BuffBarIcon.java │ │ │ │ ├── CargoHoldUnitIcon.java │ │ │ │ ├── CommandCardIcon.java │ │ │ │ ├── MeleeUI.java │ │ │ │ ├── MeleeUIMinimap.java │ │ │ │ ├── MenuCursorState.java │ │ │ │ ├── MenuUI.java │ │ │ │ ├── MultiSelectionIcon.java │ │ │ │ ├── MusicPlayer.java │ │ │ │ ├── MusicPlayerLibGDX.java │ │ │ │ ├── PlayerProfile.java │ │ │ │ ├── PlayerProfileManager.java │ │ │ │ ├── QueueIcon.java │ │ │ │ ├── TestUI.java │ │ │ │ ├── WarsmashBaseUI.java │ │ │ │ ├── WarsmashToggleableUI.java │ │ │ │ ├── WarsmashUI.java │ │ │ │ ├── command │ │ │ │ ├── AbstractClickableActionFrame.java │ │ │ │ ├── ActiveCommand.java │ │ │ │ ├── ClickableActionFrame.java │ │ │ │ ├── ClickableFrame.java │ │ │ │ ├── CommandCardCommandListener.java │ │ │ │ ├── CommandErrorListener.java │ │ │ │ ├── FocusableFrame.java │ │ │ │ ├── MultiSelectionIconListener.java │ │ │ │ ├── QueueIconListener.java │ │ │ │ └── SettableCommandErrorListener.java │ │ │ │ ├── dialog │ │ │ │ ├── CLeaderboard.java │ │ │ │ ├── CScriptDialog.java │ │ │ │ ├── CScriptDialogButton.java │ │ │ │ ├── CTimerDialog.java │ │ │ │ └── DialogWar3.java │ │ │ │ ├── mapsetup │ │ │ │ ├── CurrentNetGameMapLookup.java │ │ │ │ ├── CurrentNetGameMapLookupFile.java │ │ │ │ ├── CurrentNetGameMapLookupPath.java │ │ │ │ ├── MapInfoPane.java │ │ │ │ ├── MapListContainer.java │ │ │ │ ├── PlayerSlotPane.java │ │ │ │ ├── PlayerSlotPaneListener.java │ │ │ │ └── TeamSetupPane.java │ │ │ │ ├── menu │ │ │ │ ├── BattleNetUI.java │ │ │ │ ├── BattleNetUIActionListener.java │ │ │ │ ├── CampaignButtonUI.java │ │ │ │ ├── CampaignMenuData.java │ │ │ │ ├── CampaignMenuUI.java │ │ │ │ └── CampaignMission.java │ │ │ │ ├── sound │ │ │ │ └── KeyedSounds.java │ │ │ │ └── toggle │ │ │ │ └── MeleeToggleUI.java │ │ ├── google │ │ │ └── gson │ │ │ │ └── typeadapters │ │ │ │ └── RuntimeTypeAdapterFactory.java │ │ └── hiveworkshop │ │ │ ├── ReteraCASCUtils.java │ │ │ ├── blizzard │ │ │ └── casc │ │ │ │ ├── ConfigurationFile.java │ │ │ │ ├── Key.java │ │ │ │ ├── StorageReference.java │ │ │ │ ├── info │ │ │ │ ├── FieldDataType.java │ │ │ │ ├── FieldDescriptor.java │ │ │ │ └── Info.java │ │ │ │ ├── io │ │ │ │ ├── WarcraftIIICASC.java │ │ │ │ └── package-info.java │ │ │ │ ├── nio │ │ │ │ ├── HashMismatchException.java │ │ │ │ ├── LittleHashBlockProcessor.java │ │ │ │ └── MalformedCASCStructureException.java │ │ │ │ ├── storage │ │ │ │ ├── BLTEContent.java │ │ │ │ ├── BankStream.java │ │ │ │ ├── IndexEntry.java │ │ │ │ ├── IndexFile.java │ │ │ │ ├── Storage.java │ │ │ │ └── StorageContainer.java │ │ │ │ ├── trash │ │ │ │ ├── LocalDataFiles.java │ │ │ │ ├── LocalIndexFile.java │ │ │ │ └── VirtualFileSystem.java │ │ │ │ └── vfs │ │ │ │ ├── FileNode.java │ │ │ │ ├── PathNode.java │ │ │ │ ├── PrefixNode.java │ │ │ │ ├── StorageReference.java │ │ │ │ ├── TVFSDecoder.java │ │ │ │ ├── TVFSFile.java │ │ │ │ └── VirtualFileSystem.java │ │ │ ├── json │ │ │ ├── JSONArray.java │ │ │ ├── JSONException.java │ │ │ ├── JSONObject.java │ │ │ ├── JSONPointer.java │ │ │ ├── JSONPointerException.java │ │ │ ├── JSONPropertyIgnore.java │ │ │ ├── JSONPropertyName.java │ │ │ ├── JSONString.java │ │ │ ├── JSONStringer.java │ │ │ ├── JSONTokener.java │ │ │ └── JSONWriter.java │ │ │ ├── lang │ │ │ └── Hex.java │ │ │ ├── nio │ │ │ └── ByteBufferInputStream.java │ │ │ └── rms │ │ │ ├── parsers │ │ │ └── mdlx │ │ │ │ ├── AnimationMap.java │ │ │ │ ├── InterpolationType.java │ │ │ │ ├── MdlxAnimatedObject.java │ │ │ │ ├── MdlxAttachment.java │ │ │ │ ├── MdlxBlock.java │ │ │ │ ├── MdlxBlockDescriptor.java │ │ │ │ ├── MdlxBone.java │ │ │ │ ├── MdlxCamera.java │ │ │ │ ├── MdlxChunk.java │ │ │ │ ├── MdlxCollisionShape.java │ │ │ │ ├── MdlxEventObject.java │ │ │ │ ├── MdlxExtent.java │ │ │ │ ├── MdlxFaceEffect.java │ │ │ │ ├── MdlxGenericObject.java │ │ │ │ ├── MdlxGeoset.java │ │ │ │ ├── MdlxGeosetAnimation.java │ │ │ │ ├── MdlxHelper.java │ │ │ │ ├── MdlxLayer.java │ │ │ │ ├── MdlxLight.java │ │ │ │ ├── MdlxMaterial.java │ │ │ │ ├── MdlxModel.java │ │ │ │ ├── MdlxParticleEmitter.java │ │ │ │ ├── MdlxParticleEmitter2.java │ │ │ │ ├── MdlxParticleEmitterPopcorn.java │ │ │ │ ├── MdlxRibbonEmitter.java │ │ │ │ ├── MdlxSequence.java │ │ │ │ ├── MdlxTexture.java │ │ │ │ ├── MdlxTextureAnimation.java │ │ │ │ ├── MdlxTimelineDescriptor.java │ │ │ │ ├── MdlxUnknownChunk.java │ │ │ │ ├── mdl │ │ │ │ ├── MdlTokenInputStream.java │ │ │ │ ├── MdlTokenOutputStream.java │ │ │ │ └── MdlUtils.java │ │ │ │ ├── timeline │ │ │ │ ├── MdlxFloatArrayTimeline.java │ │ │ │ ├── MdlxFloatTimeline.java │ │ │ │ ├── MdlxTimeline.java │ │ │ │ └── MdlxUInt32Timeline.java │ │ │ │ └── util │ │ │ │ └── MdxUtils.java │ │ │ └── util │ │ │ ├── BinaryReader.java │ │ │ ├── BinaryWriter.java │ │ │ └── Descriptor.java │ ├── jni │ │ ├── Android.mk │ │ ├── Application.mk │ │ └── src │ │ │ ├── cnode.cpp │ │ │ └── cnode.h │ └── mpq │ │ ├── ArchivedFile.java │ │ ├── ArchivedFileExtractor.java │ │ ├── ArchivedFileStream.java │ │ ├── BlockTable.java │ │ ├── HashLookup.java │ │ ├── HashTable.java │ │ ├── MPQArchive.java │ │ ├── MPQException.java │ │ ├── compression │ │ ├── Compression.java │ │ ├── DecompressionException.java │ │ ├── adpcm │ │ │ └── ADPCM.java │ │ ├── huffman │ │ │ └── Huffman.java │ │ └── pkware │ │ │ ├── PKException.java │ │ │ └── PKExploder.java │ │ ├── data │ │ ├── ArchiveHeader.java │ │ ├── BlockTableEntry.java │ │ ├── FileHeader.java │ │ ├── HashTableEntry.java │ │ ├── Raw.java │ │ ├── RawArrays.java │ │ └── UserDataHeader.java │ │ └── util │ │ └── Cryption.java └── test │ └── com │ └── etheller │ └── warsmash │ └── util │ └── QuadtreeTest.java ├── directory-picker ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── example │ │ └── directory_picker │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── obsez │ │ │ └── android │ │ │ └── lib │ │ │ └── filechooser │ │ │ ├── ChooserDialog.java │ │ │ ├── defBackPressed.java │ │ │ ├── internals │ │ │ ├── ExtFileFilter.java │ │ │ ├── FileUtil.java │ │ │ ├── RegexFileFilter.java │ │ │ ├── UiUtil.java │ │ │ └── WrappedDrawable.java │ │ │ ├── keyListener.java │ │ │ ├── onShowListener.java │ │ │ └── tool │ │ │ ├── DirAdapter.java │ │ │ └── RootFile.java │ └── res │ │ ├── drawable-hdpi │ │ ├── ic_chooser.png │ │ ├── ic_file.png │ │ ├── ic_folder.png │ │ └── ic_provider.png │ │ ├── drawable-mdpi │ │ ├── ic_chooser.png │ │ ├── ic_file.png │ │ ├── ic_folder.png │ │ ├── ic_provider.png │ │ └── listview_item_selector.xml │ │ ├── drawable-xhdpi │ │ ├── ic_chooser.png │ │ ├── ic_file.png │ │ ├── ic_folder.png │ │ └── ic_provider.png │ │ ├── drawable-xxhdpi │ │ ├── ic_chooser.png │ │ ├── ic_file.png │ │ ├── ic_folder.png │ │ └── ic_provider.png │ │ ├── drawable │ │ ├── ic_add_24dp.xml │ │ ├── ic_delete_24dp.xml │ │ └── ic_menu_24dp.xml │ │ ├── layout │ │ └── li_row_textview.xml │ │ ├── values-ca │ │ └── strings.xml │ │ ├── values-de │ │ └── strings.xml │ │ ├── values-es │ │ └── strings.xml │ │ ├── values-fr │ │ └── strings.xml │ │ ├── values-ga │ │ └── strings.xml │ │ ├── values-in │ │ ├── strings.xml │ │ └── strings_0.xml │ │ ├── values-it │ │ └── strings.xml │ │ ├── values-ka │ │ ├── strings.xml │ │ └── strings_0.xml │ │ ├── values-ko │ │ └── strings.xml │ │ ├── values-pl │ │ └── strings.xml │ │ ├── values-pt-rBR │ │ └── strings.xml │ │ ├── values-ru │ │ └── strings.xml │ │ ├── values-v11 │ │ └── strings.xml │ │ ├── values-v19 │ │ └── bool.xml │ │ ├── values-zh-rCN │ │ ├── strings.xml │ │ └── strings_0.xml │ │ ├── values-zh-rTW │ │ ├── strings.xml │ │ └── strings_0.xml │ │ └── values │ │ ├── attr.xml │ │ ├── bool.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ ├── strings_0.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── example │ └── directory_picker │ └── ExampleUnitTest.java ├── fastlane └── metadata │ └── android │ └── en-US │ ├── changelogs │ ├── 3.txt │ ├── 4.txt │ └── 5.txt │ ├── full_description.txt │ ├── images │ ├── icon.png │ └── phoneScreenshots │ │ ├── 1.png │ │ ├── 2.png │ │ └── 3.png │ ├── short_description.txt │ └── title.txt ├── fdfparser ├── antlr-src │ └── FDF.g4 ├── build.gradle └── src │ └── com │ └── etheller │ └── warsmash │ ├── fdfparser │ ├── FDFParserBuilder.java │ ├── FrameDefinitionFieldVisitor.java │ ├── FrameDefinitionVisitor.java │ ├── Main.java │ └── TestFDFParserBuilder.java │ └── parsers │ └── fdf │ └── datamodel │ ├── AnchorDefinition.java │ ├── BackdropCornerFlags.java │ ├── ControlStyle.java │ ├── FontDefinition.java │ ├── FontFlags.java │ ├── FrameClass.java │ ├── FrameDefinition.java │ ├── FrameEvent.java │ ├── FramePoint.java │ ├── FrameTemplateEnvironment.java │ ├── HighlightAlphaMode.java │ ├── HighlightType.java │ ├── MenuItem.java │ ├── SetPointDefinition.java │ ├── TextJustify.java │ ├── Vector2Definition.java │ ├── Vector3Definition.java │ ├── Vector4Definition.java │ └── fields │ ├── FloatFrameDefinitionField.java │ ├── FontFrameDefinitionField.java │ ├── FrameDefinitionField.java │ ├── FrameDefinitionFieldVisitor.java │ ├── MenuItemFrameDefinitionField.java │ ├── RepeatingFrameDefinitionField.java │ ├── StringFrameDefinitionField.java │ ├── StringPairFrameDefinitionField.java │ ├── TextJustifyFrameDefinitionField.java │ ├── Vector2FrameDefinitionField.java │ ├── Vector3FrameDefinitionField.java │ ├── Vector4FrameDefinitionField.java │ └── visitor │ ├── GetFloatFieldVisitor.java │ ├── GetFontFieldVisitor.java │ ├── GetMenuItemFieldVisitor.java │ ├── GetRepeatingFieldVisitor.java │ ├── GetStringFieldVisitor.java │ ├── GetStringPairFieldVisitor.java │ ├── GetTextJustifyFieldVisitor.java │ ├── GetVector2FieldVisitor.java │ └── GetVector4FieldVisitor.java ├── gdx-controllers-android ├── build.gradle └── gdx-controllers-android-2.2.3.aar ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── jars ├── blp-iio-plugin.jar └── gson-2.10.jar ├── jassparser ├── antlr-src │ └── Jass.g4 ├── build.gradle └── src │ ├── com │ └── etheller │ │ └── interpreter │ │ └── ast │ │ ├── Assignable.java │ │ ├── debug │ │ ├── DebuggingJassFunction.java │ │ ├── DebuggingJassStatement.java │ │ ├── JassException.java │ │ └── JassStackElement.java │ │ ├── definition │ │ ├── JassCodeDefinitionBlock.java │ │ ├── JassDefinitionBlock.java │ │ ├── JassFunctionDefinitionBlock.java │ │ ├── JassGlobalsDefinitionBlock.java │ │ ├── JassImplementModuleDefinition.java │ │ ├── JassLibraryDefinitionBlock.java │ │ ├── JassLibraryRequirementDefinition.java │ │ ├── JassMethodDefinitionBlock.java │ │ ├── JassModuleDefinitionBlock.java │ │ ├── JassNativeDefinitionBlock.java │ │ ├── JassParameterDefinition.java │ │ ├── JassScopeDefinitionBlock.java │ │ ├── JassStructDefinitionBlock.java │ │ ├── JassStructLikeDefinitionBlock.java │ │ └── JassTypeDefinitionBlock.java │ │ ├── execution │ │ ├── JassStackFrame.java │ │ ├── JassThread.java │ │ └── instruction │ │ │ ├── AllocateArrayInstruction.java │ │ │ ├── AllocateInstruction.java │ │ │ ├── AllocateStructAsNewTypeInstruction.java │ │ │ ├── ArithmeticInstruction.java │ │ │ ├── ArrayAssignmentInstruction.java │ │ │ ├── ArrayReferenceInstruction.java │ │ │ ├── BeginFunctionInstruction.java │ │ │ ├── BeginLoopInstruction.java │ │ │ ├── BranchInstruction.java │ │ │ ├── ConditionalBranchInstruction.java │ │ │ ├── DeclareLocalArrayInstruction.java │ │ │ ├── DoNothingInstruction.java │ │ │ ├── ExtendHandleInstruction.java │ │ │ ├── GlobalArrayAssignmentInstruction.java │ │ │ ├── GlobalAssignmentInstruction.java │ │ │ ├── GlobalReferenceInstruction.java │ │ │ ├── InstructionAppendingJassStatementVisitor.java │ │ │ ├── InvertedConditionalBranchInstruction.java │ │ │ ├── JassInstruction.java │ │ │ ├── JassThrowInstruction.java │ │ │ ├── LocalArrayAssignmentInstruction.java │ │ │ ├── LocalAssignmentInstruction.java │ │ │ ├── LocalReferenceInstruction.java │ │ │ ├── MethodReferenceInstruction.java │ │ │ ├── NativeInstruction.java │ │ │ ├── NegateInstruction.java │ │ │ ├── NewStackFrameInstruction.java │ │ │ ├── NotInstruction.java │ │ │ ├── PeekInstruction.java │ │ │ ├── PopInstruction.java │ │ │ ├── PushLiteralInstruction.java │ │ │ ├── ReturnInstruction.java │ │ │ ├── SetDebugLineNoInstruction.java │ │ │ ├── SetReturnAddrInstruction.java │ │ │ ├── SetStructMemberInstruction.java │ │ │ ├── StructMemberReferenceInstruction.java │ │ │ ├── TypeCastInstruction.java │ │ │ ├── TypeCheckInstruction.java │ │ │ └── VirtualBranchInstruction.java │ │ ├── expression │ │ ├── AllocateAsNewTypeExpression.java │ │ ├── ArithmeticJassExpression.java │ │ ├── ArithmeticSign.java │ │ ├── ArithmeticSigns.java │ │ ├── ArrayRefJassExpression.java │ │ ├── ExtendHandleExpression.java │ │ ├── FunctionCallJassExpression.java │ │ ├── FunctionReferenceJassExpression.java │ │ ├── JassExpression.java │ │ ├── JassExpressionVisitor.java │ │ ├── JassNewArrayExpression.java │ │ ├── JassNewExpression.java │ │ ├── LiteralJassExpression.java │ │ ├── MemberJassExpression.java │ │ ├── MethodCallJassExpression.java │ │ ├── MethodReferenceJassExpression.java │ │ ├── NegateJassExpression.java │ │ ├── NotJassExpression.java │ │ ├── ParentlessMethodCallJassExpression.java │ │ ├── ReferenceJassExpression.java │ │ ├── TypeCastJassExpression.java │ │ └── visitor │ │ │ ├── JassTypeExpressionVisitor.java │ │ │ └── ReplaceNewExpressionVisitor.java │ │ ├── function │ │ ├── AbstractJassFunction.java │ │ ├── JassFunction.java │ │ ├── JassNativeManager.java │ │ ├── JassParameter.java │ │ ├── NativeJassFunction.java │ │ └── UserJassFunction.java │ │ ├── qualifier │ │ └── JassQualifier.java │ │ ├── scope │ │ ├── DefaultScope.java │ │ ├── GlobalScope.java │ │ ├── GlobalScopeAssignable.java │ │ ├── LibraryScopeTree.java │ │ ├── LocalScope.java │ │ ├── Scope.java │ │ ├── ScopedScope.java │ │ ├── StructScope.java │ │ ├── TriggerExecutionScope.java │ │ ├── TypeDefinition.java │ │ ├── trigger │ │ │ ├── RemovableTriggerEvent.java │ │ │ ├── Trigger.java │ │ │ ├── TriggerBooleanExpression.java │ │ │ └── TriggerIntegerExpression.java │ │ └── variableevent │ │ │ ├── CLimitOp.java │ │ │ └── VariableEvent.java │ │ ├── statement │ │ ├── JassArrayedAssignmentStatement.java │ │ ├── JassCallExpressionStatement.java │ │ ├── JassCallStatement.java │ │ ├── JassDoNothingStatement.java │ │ ├── JassExitWhenStatement.java │ │ ├── JassGlobalDefinitionStatement.java │ │ ├── JassGlobalStatement.java │ │ ├── JassIfElseIfStatement.java │ │ ├── JassIfElseStatement.java │ │ ├── JassIfStatement.java │ │ ├── JassLocalDefinitionStatement.java │ │ ├── JassLocalStatement.java │ │ ├── JassLoopStatement.java │ │ ├── JassReturnNothingStatement.java │ │ ├── JassReturnStatement.java │ │ ├── JassSetMemberStatement.java │ │ ├── JassSetStatement.java │ │ ├── JassStatement.java │ │ ├── JassStatementVisitor.java │ │ └── JassThrowStatement.java │ │ ├── struct │ │ ├── JassStructMemberType.java │ │ └── JassStructMemberTypeDefinition.java │ │ ├── type │ │ ├── ArrayJassTypeToken.java │ │ ├── JassTypeToken.java │ │ ├── LiteralJassTypeToken.java │ │ ├── NothingJassTypeToken.java │ │ └── PrimitiveJassTypeToken.java │ │ ├── util │ │ ├── CExtensibleHandle.java │ │ ├── CExtensibleHandleAbstract.java │ │ ├── CHandle.java │ │ ├── JassLog.java │ │ ├── JassProgram.java │ │ └── JassSettings.java │ │ └── value │ │ ├── AnyStructTypeJassType.java │ │ ├── ArrayJassType.java │ │ ├── ArrayJassValue.java │ │ ├── BaseStructJassValue.java │ │ ├── BooleanJassValue.java │ │ ├── CodeJassType.java │ │ ├── CodeJassValue.java │ │ ├── DummyJassValue.java │ │ ├── HandleJassType.java │ │ ├── HandleJassTypeConstructor.java │ │ ├── HandleJassValue.java │ │ ├── IntegerJassValue.java │ │ ├── JassStructStatements.java │ │ ├── JassType.java │ │ ├── JassTypeVisitor.java │ │ ├── JassValue.java │ │ ├── JassValueVisitor.java │ │ ├── MethodJassValue.java │ │ ├── PrimitiveJassType.java │ │ ├── RealJassType.java │ │ ├── RealJassValue.java │ │ ├── StaticStructTypeJassValue.java │ │ ├── StringJassType.java │ │ ├── StringJassValue.java │ │ ├── StructAssignabilityTypeVisitor.java │ │ ├── StructJassType.java │ │ ├── StructJassTypeInterface.java │ │ ├── StructJassValue.java │ │ └── visitor │ │ ├── ArithmeticJassValueVisitor.java │ │ ├── ArithmeticLeftHandBooleanJassValueVisitor.java │ │ ├── ArithmeticLeftHandCodeJassValueVisitor.java │ │ ├── ArithmeticLeftHandHandleJassValueVisitor.java │ │ ├── ArithmeticLeftHandIntegerJassValueVisitor.java │ │ ├── ArithmeticLeftHandNullJassValueVisitor.java │ │ ├── ArithmeticLeftHandRealJassValueVisitor.java │ │ ├── ArithmeticLeftHandStringJassValueVisitor.java │ │ ├── ArithmeticLeftHandStructJassValueVisitor.java │ │ ├── ArrayJassValueVisitor.java │ │ ├── ArrayPrimitiveTypeVisitor.java │ │ ├── ArrayTypeVisitor.java │ │ ├── BaseStructJassValueVisitor.java │ │ ├── BooleanJassValueVisitor.java │ │ ├── CodeJassValueVisitor.java │ │ ├── HandleJassTypeVisitor.java │ │ ├── HandleTypeSuperTypeLoadingVisitor.java │ │ ├── IntegerJassValueVisitor.java │ │ ├── JassTypeGettingValueVisitor.java │ │ ├── NegateJassValueVisitor.java │ │ ├── NotJassValueVisitor.java │ │ ├── ObjectJassValueVisitor.java │ │ ├── RealJassValueVisitor.java │ │ ├── StaticStructTypeJassTypeVisitor.java │ │ ├── StaticStructTypeJassValueVisitor.java │ │ ├── StringJassValueVisitor.java │ │ ├── StructJassTypeVisitor.java │ │ ├── StructJassValueVisitor.java │ │ ├── StructSuperJassValueVisitor.java │ │ ├── SuperTypeVisitor.java │ │ ├── WrappedStringJassValueVisitor.java │ │ └── cast │ │ ├── TypeCastConverterGettingJassTypeVisitor.java │ │ ├── TypeCastToArrayJassValueVisitor.java │ │ ├── TypeCastToBooleanJassValueVisitor.java │ │ ├── TypeCastToCodeJassValueVisitor.java │ │ ├── TypeCastToHandleJassValueVisitor.java │ │ ├── TypeCastToIntegerJassValueVisitor.java │ │ ├── TypeCastToRealJassValueVisitor.java │ │ ├── TypeCastToStringJassValueVisitor.java │ │ └── TypeCastToStructJassValueVisitor.java │ └── net │ └── warsmash │ └── parsers │ └── jass │ ├── SmashJassLexer.flex │ ├── SmashJassLexer.java │ ├── SmashJassParser.java │ ├── SmashJassParser.y │ ├── generateSmashJass.sh │ └── util │ └── SmashJassRunner.java ├── key.jks ├── libgdx ├── build.gradle └── gdx-backend-android-release.aar ├── replay_pid31584.log ├── resources ├── Scripts │ ├── Abilities │ │ ├── Human │ │ │ ├── Archmage │ │ │ │ ├── Blizzard.j │ │ │ │ ├── Brilliance.j │ │ │ │ ├── MassTeleport.j │ │ │ │ └── SummonWaterElemental.j │ │ │ ├── MountainKing │ │ │ │ ├── Avatar.j │ │ │ │ ├── StormBolt.j │ │ │ │ └── ThunderClap.j │ │ │ └── Paladin │ │ │ │ ├── Devotion.j │ │ │ │ ├── DivineShield.j │ │ │ │ ├── HolyLight.j │ │ │ │ └── Resurrect.j │ │ └── Orc │ │ │ └── TaurenChieftain │ │ │ └── AbilityWarStomp.j │ ├── abilitiesCommon.j │ ├── abilitiesCommon2.j │ ├── abilitiesCommon3.j │ ├── abilitiesDefaults.j │ ├── abilitiesUtils.j │ ├── common.jui │ └── melee.jui └── UI │ └── FrameDef │ ├── SmashFrameDef.toc │ └── SmashUI │ ├── InventoryCover.fdf │ ├── SmashConsoleUI.fdf │ ├── TimeOfDayIndicator.fdf │ ├── ToolTip.fdf │ └── UnitPortrait.fdf ├── server ├── build.gradle └── src │ └── com │ └── etheller │ └── warsmash │ └── networking │ └── uberserver │ ├── AcceptedGameListKey.java │ ├── DefaultGamingNetworkServerClientBuilder.java │ ├── GamingNetworkServerBusinessLogicImpl.java │ ├── GamingNetworkServerClientBuilder.java │ ├── GamingNetworkServerMain.java │ ├── GamingNetworkServerToClientWriter.java │ ├── GamingNetworkServerTracker.java │ ├── LobbyActionFailureReason.java │ ├── LoggingGamingNetworkServerTracker.java │ ├── SessionManager.java │ ├── TCPGamingNetworkServer.java │ ├── TCPGamingNetworkServerClientParser.java │ └── users │ ├── InRAMUserManager.java │ ├── PasswordAuthentication.java │ ├── PasswordResetListener.java │ ├── User.java │ ├── UserImpl.java │ ├── UserManager.java │ ├── UserRank.java │ ├── UserRanking.java │ ├── UserStats.java │ └── UserView.java ├── settings.gradle.kts ├── shared ├── build.gradle └── src │ ├── com │ └── etheller │ │ └── warsmash │ │ ├── networking │ │ ├── ClientToServerListener.java │ │ ├── ClientToServerProtocol.java │ │ ├── GameTurnManager.java │ │ ├── ServerToClientListener.java │ │ ├── ServerToClientProtocol.java │ │ ├── WarsmashClientParser.java │ │ ├── WarsmashClientWriter.java │ │ ├── WarsmashServer.java │ │ ├── WarsmashServerParser.java │ │ ├── WarsmashServerWriter.java │ │ └── udp │ │ │ ├── UdpClientTestMain.java │ │ │ └── UdpServerTestMain.java │ │ └── util │ │ ├── JAVACrc32C.java │ │ ├── RawcodeUtils.java │ │ ├── Utils.java │ │ └── War3ID.java │ └── net │ └── warsmash │ ├── map │ └── NetMapDownloader.java │ ├── networking │ ├── tcp │ │ ├── TCPTestClient.java │ │ ├── TCPTestServer.java │ │ ├── TestChatClient.java │ │ └── TestChatServer.java │ ├── udp │ │ ├── OrderedUdpClient.java │ │ ├── OrderedUdpClientListener.java │ │ ├── OrderedUdpCommuncation.java │ │ ├── OrderedUdpServer.java │ │ ├── OrderedUdpServerListener.java │ │ ├── UdpClient.java │ │ ├── UdpClientListener.java │ │ ├── UdpServer.java │ │ └── UdpServerListener.java │ └── util │ │ └── AbstractWriter.java │ ├── nio │ ├── channels │ │ ├── ByteParser.java │ │ ├── ChannelListener.java │ │ ├── ChannelOpener.java │ │ ├── KeyAttachment.java │ │ ├── OpenedChannel.java │ │ ├── SelectableChannelOpener.java │ │ ├── SocketChannelCallback.java │ │ ├── TCPParser.java │ │ ├── WritableOutput.java │ │ ├── WritableSocketOutput.java │ │ ├── tcp │ │ │ ├── ConnectionFinishingKeyAttachment.java │ │ │ ├── TCPClientKeyAttachment.java │ │ │ ├── TCPClientParser.java │ │ │ └── TCPServerKeyAttachment.java │ │ └── udp │ │ │ └── UDPServerKeyAttachment.java │ └── util │ │ ├── Callback.java │ │ ├── DisconnectListener.java │ │ └── ExceptionListener.java │ └── uberserver │ ├── AccountCreationFailureReason.java │ ├── ChannelServerMessageType.java │ ├── GameCreationFailureReason.java │ ├── GamingNetwork.java │ ├── GamingNetworkClientConnectionContext.java │ ├── GamingNetworkClientToServerListener.java │ ├── GamingNetworkClientToServerWriter.java │ ├── GamingNetworkConnection.java │ ├── GamingNetworkServerToClientListener.java │ ├── HandshakeDeniedReason.java │ ├── HostedGameVisibility.java │ ├── JoinGameFailureReason.java │ ├── LobbyGameSpeed.java │ ├── LobbyPlayerType.java │ ├── LoginFailureReason.java │ ├── PasswordResetFailureReason.java │ ├── ServerErrorMessageType.java │ ├── TCPGamingNetworkServerToClientParser.java │ └── lobby │ ├── LobbyConstants.java │ ├── LobbyListener.java │ ├── LobbyRace.java │ ├── LobbySetupListener.java │ ├── LobbySlotType.java │ ├── LobbyStateView.java │ ├── LobbyType.java │ ├── UserSlotSetting.java │ └── state │ ├── CustomForcesLobbySlot.java │ ├── FixedCustomForcesLobbySlot.java │ ├── LobbyActionException.java │ ├── LobbyPlayerSlot.java │ ├── LobbyStateImpl.java │ ├── LobbyStateImplBuilder.java │ ├── LobbyUserPlayer.java │ └── MeleeLobbySlot.java └── welaunch.bat /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "libgdx-oboe"] 2 | path = libgdx-oboe 3 | url = https://github.com/sandstranger/libgdx-oboe.git 4 | [submodule "android-awt"] 5 | path = android-awt 6 | url = https://github.com/sandstranger/android-awt.git 7 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /android/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/android/ic_launcher-web.png -------------------------------------------------------------------------------- /android/local.properties: -------------------------------------------------------------------------------- 1 | ## This file must *NOT* be checked into Version Control Systems, 2 | # as it contains information specific to your local configuration. 3 | # 4 | # Location of the SDK. This is only used by Gradle. 5 | # For customization when using a Version Control System, please read the 6 | # header note. 7 | #Wed Dec 11 05:53:14 GMT+04:00 2024 8 | sdk.dir=D\:\\SDK 9 | -------------------------------------------------------------------------------- /android/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-rules.pro 12 | 13 | # Project target. 14 | target=android-19 15 | -------------------------------------------------------------------------------- /android/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/android/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/android/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/android/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/res/drawable-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/android/res/drawable-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/res/drawable/down_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/android/res/drawable/down_arrow.png -------------------------------------------------------------------------------- /android/res/drawable/left_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/android/res/drawable/left_arrow.png -------------------------------------------------------------------------------- /android/res/drawable/mouse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/android/res/drawable/mouse.png -------------------------------------------------------------------------------- /android/res/drawable/right_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/android/res/drawable/right_arrow.png -------------------------------------------------------------------------------- /android/res/drawable/toggle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/android/res/drawable/toggle.png -------------------------------------------------------------------------------- /android/res/drawable/up_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/android/res/drawable/up_arrow.png -------------------------------------------------------------------------------- /android/res/menu/menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /android/res/mipmap-xhdpi/ic_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/android/res/mipmap-xhdpi/ic_banner.png -------------------------------------------------------------------------------- /android/res/mipmap-xhdpi/ic_banner_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/android/res/mipmap-xhdpi/ic_banner_foreground.png -------------------------------------------------------------------------------- /android/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFBB86FC 4 | #FF6200EE 5 | #FF3700B3 6 | #FF03DAC5 7 | #FF018786 8 | #FF000000 9 | #4c3228 10 | #FFFFFFFF 11 | #3F51B5 12 | #303F9F 13 | #FF4081 14 | -------------------------------------------------------------------------------- /android/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 16dp 3 | 4 | -------------------------------------------------------------------------------- /android/res/values/ic_banner_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #4A80DC 4 | -------------------------------------------------------------------------------- /android/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | -------------------------------------------------------------------------------- /android/res/xml/backup_rules.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 13 | -------------------------------------------------------------------------------- /android/res/xml/data_extraction_rules.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 12 | 13 | 19 | -------------------------------------------------------------------------------- /android/src/main/java/net/warsmash/phone/ExceptionsHandlerApplication.kt: -------------------------------------------------------------------------------- 1 | package net.warsmash.phone 2 | 3 | import android.app.Application 4 | 5 | class ExceptionsHandlerApplication : Application() { 6 | override fun onCreate() { 7 | super.onCreate() 8 | Thread.setDefaultUncaughtExceptionHandler(CustomExceptionHandler()) 9 | } 10 | } -------------------------------------------------------------------------------- /android/src/main/java/net/warsmash/phone/android/engine/DynamicShadowExtensionGLES30.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.phone.android.engine; 2 | 3 | import android.opengl.*; 4 | import com.etheller.warsmash.viewer5.gl.DynamicShadowExtension; 5 | 6 | import java.nio.IntBuffer; 7 | 8 | public class DynamicShadowExtensionGLES30 implements DynamicShadowExtension { 9 | @Override 10 | public void glFramebufferTexture(int target, int attachment, int texture, int level) { 11 | GLES32.glFramebufferTexture(target, attachment, texture, level); 12 | } 13 | 14 | @Override 15 | public void glDrawBuffer(int mode) { 16 | GLES30.glDrawBuffers(mode, IntBuffer.allocate(mode)); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /android/src/main/java/net/warsmash/phone/interfaces/SettingsFragmentMvpView.kt: -------------------------------------------------------------------------------- 1 | package net.warsmash.phone.interfaces 2 | 3 | import moxy.MvpView 4 | import moxy.viewstate.strategy.alias.AddToEndSingle 5 | 6 | interface SettingsFragmentMvpView : MvpView { 7 | @AddToEndSingle 8 | fun updatePreference (prefsKey : String) 9 | } -------------------------------------------------------------------------------- /android/src/main/java/net/warsmash/phone/utils/Consts.kt: -------------------------------------------------------------------------------- 1 | package net.warsmash.phone.utils 2 | 3 | const val GAMEPAD_RIGHT_AXIS_SPEED_KEY = "axis_speed" 4 | const val GAMEPAD_RIGHT_AXIS_DEAD_ZONE_KEY = "axis_dead_zone" 5 | const val GAME_FILES_SHARED_PREFS_KEY = "game_files" 6 | const val GAME_FILES_FOLDER_NAME = "resources" 7 | const val HIDE_SCREEN_CONTROLS_KEY = "hide_screen_controls" 8 | const val CUSTOM_RESOLUTION_PREFS_KEY = "custom_resolution" 9 | -------------------------------------------------------------------------------- /assets/resources/Scripts/abilitiesDefaults.j: -------------------------------------------------------------------------------- 1 | native LoadScriptFile takes string path, string mainFunction returns boolean 2 | native GetEnumFilePath takes nothing returns string 3 | native ForFiles takes string directoryPath, code func returns nothing 4 | 5 | function AbilitiesFileEnum takes nothing returns nothing 6 | call LoadScriptFile(GetEnumFilePath(), "main") 7 | call ExecuteFunc("init") 8 | endfunction 9 | 10 | function abilities_main takes nothing returns nothing 11 | call LoadScriptFile("Scripts\\abilitiesUtils.j", null) 12 | call ForFiles("Scripts\\Abilities\\", function AbilitiesFileEnum) 13 | endfunction 14 | -------------------------------------------------------------------------------- /assets/resources/UI/FrameDef/SmashFrameDef.toc: -------------------------------------------------------------------------------- 1 | UI\FrameDef\SmashUI\TimeOfDayIndicator.fdf 2 | UI\FrameDef\SmashUI\UnitPortrait.fdf 3 | UI\FrameDef\SmashUI\InventoryCover.fdf 4 | UI\FrameDef\SmashUI\ToolTip.fdf 5 | -------------------------------------------------------------------------------- /assets/resources/UI/FrameDef/SmashUI/InventoryCover.fdf: -------------------------------------------------------------------------------- 1 | Frame "SIMPLEFRAME" "SmashConsoleInventoryCover" { 2 | DecorateFileNames, 3 | SetAllPoints, 4 | 5 | // The top of the UI console 6 | Texture "SmashConsoleInventoryCoverTexture" { 7 | File "ConsoleInventoryCoverTexture", 8 | Width 0.128, 9 | Height 0.176, 10 | AlphaMode "ALPHAKEY", 11 | TexCoord 0, 1, 0.3125, 1, 12 | Anchor BOTTOMLEFT,0.472,0.0, 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /assets/resources/UI/FrameDef/SmashUI/TimeOfDayIndicator.fdf: -------------------------------------------------------------------------------- 1 | 2 | Frame "SPRITE" "TimeOfDayIndicator" { 3 | DecorateFileNames, 4 | BackgroundArt "TimeOfDayIndicator", 5 | SetPoint BOTTOMLEFT,"ConsoleUI",BOTTOMLEFT,0,0, 6 | } -------------------------------------------------------------------------------- /core/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /core/assets/resources/Icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/core/assets/resources/Icon128.png -------------------------------------------------------------------------------- /core/assets/resources/Icon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/core/assets/resources/Icon16.png -------------------------------------------------------------------------------- /core/assets/resources/Icon32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/core/assets/resources/Icon32.png -------------------------------------------------------------------------------- /core/assets/resources/Icon64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/core/assets/resources/Icon64.png -------------------------------------------------------------------------------- /core/assets/warsmash_myHD.ini: -------------------------------------------------------------------------------- 1 | [DataSources] 2 | Count=5 3 | Type00=Folder 4 | Path00="D:\Backups\Warcraft\Data\UIMod" 5 | Type01=Folder 6 | Path01="..\..\resources" 7 | Type02=Folder 8 | Path02="D:\Backups\Warsmash\Data" 9 | Type03=Folder 10 | Path03="D:\Games\Warcraft III Patch 1.22\Maps" 11 | Type04=Folder 12 | Path04="." 13 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/KeysEmulator.kt: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash 2 | 3 | class KeysEmulator { 4 | var onKeyDownListener : ((keyCode : Int) -> Unit)? = null 5 | var onKeyUpListener : ((keyCode : Int) -> Unit)? = null 6 | var onTouchDown : ((keyCode : Int) -> Unit)? = null 7 | var onTouchUp : ((keyCode : Int) -> Unit)? = null 8 | var onScrolledListener: ((scrollAmount : Float) -> Unit) ? = null 9 | } -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/SingleModelScreen.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash; 2 | 3 | import com.etheller.warsmash.viewer5.FogSettings; 4 | 5 | public interface SingleModelScreen { 6 | void setModel(String path, FogSettings fogSettings); 7 | 8 | void alternateModelToBattlenet(); 9 | 10 | void unAlternateModelBackToNormal(); 11 | } 12 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/Utils.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash; 2 | 3 | import java.util.Random; 4 | 5 | public class Utils { 6 | 7 | public static float nextFloat(Random random, float value) 8 | { 9 | return random.nextFloat() * (value); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/common/FetchDataTypeName.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.common; 2 | 3 | /** 4 | * These will probably change the further I get from the source material I am 5 | * copying from. 6 | */ 7 | public enum FetchDataTypeName { 8 | IMAGE, 9 | TEXT, 10 | SLK, 11 | ARRAY_BUFFER, 12 | BLOB; 13 | } 14 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/common/LoadGenericCallback.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.common; 2 | 3 | import java.io.InputStream; 4 | 5 | public interface LoadGenericCallback { 6 | Object call(InputStream data); // TODO typing 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/datasources/DataSourceDescriptor.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.datasources; 2 | 3 | import java.io.Serializable; 4 | 5 | public interface DataSourceDescriptor extends Serializable { 6 | DataSource createDataSource(); 7 | 8 | String getDisplayName(); 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/parsers/fdf/GameSkin.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.fdf; 2 | 3 | import com.etheller.warsmash.units.DataTable; 4 | import com.etheller.warsmash.units.Element; 5 | 6 | public class GameSkin { 7 | private final Element skin; 8 | private final DataTable skinsTable; 9 | 10 | public GameSkin(final Element skin, final DataTable skinsTable) { 11 | this.skin = skin; 12 | this.skinsTable = skinsTable; 13 | } 14 | 15 | public Element getSkin() { 16 | return this.skin; 17 | } 18 | 19 | public DataTable getSkinsTable() { 20 | return this.skinsTable; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/parsers/fdf/frames/FramePointAssignment.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.fdf.frames; 2 | 3 | import com.badlogic.gdx.utils.viewport.Viewport; 4 | import com.etheller.warsmash.parsers.fdf.GameUI; 5 | 6 | public interface FramePointAssignment { 7 | float getX(GameUI gameUI, Viewport uiViewport); 8 | 9 | float getY(GameUI gameUI, Viewport uiViewport); 10 | } 11 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/parsers/fdf/frames/SimpleFrame.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.fdf.frames; 2 | 3 | public class SimpleFrame extends AbstractUIFrame { 4 | 5 | public SimpleFrame(final String name, final UIFrame parent) { 6 | super(name, parent); 7 | } 8 | 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/parsers/jass/JassTextGeneratorCallStmt.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.jass; 2 | 3 | public interface JassTextGeneratorCallStmt extends JassTextGeneratorStmt { 4 | String generateJassEquivalent(JassTextGenerator jassTextGenerator); 5 | 6 | @Override 7 | default void generateJassEquivalent(final int indent, final JassTextGenerator jassTextGenerator) { 8 | final StringBuilder sb = new StringBuilder(); 9 | JassTextGenerator.Util.indent(indent, sb); 10 | sb.append("call "); 11 | sb.append(generateJassEquivalent(jassTextGenerator)); 12 | jassTextGenerator.println(sb.toString()); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/parsers/jass/JassTextGeneratorExpr.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.jass; 2 | 3 | public interface JassTextGeneratorExpr { 4 | default String generateJassEquivalent(final JassTextGenerator jassTextGenerator) { 5 | throw new RuntimeException(); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/parsers/jass/JassTextGeneratorStmt.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.jass; 2 | 3 | public interface JassTextGeneratorStmt { 4 | default void generateJassEquivalent(final int indent, final JassTextGenerator jassTextGenerator) { 5 | throw new RuntimeException(); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/parsers/jass/JassTextGeneratorType.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.jass; 2 | 3 | public enum JassTextGeneratorType { 4 | String, 5 | Integer, 6 | Boolean, 7 | AbilityHandle, 8 | AbilityTypeLevelDataHandle, 9 | UnitHandle, 10 | DestructableHandle, 11 | DestructableBuffHandle, 12 | BuffHandle, 13 | NonStackingStatBuffHandle, 14 | ProjectileHandle, 15 | LocationHandle 16 | } 17 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/parsers/jass/triggers/HandleList.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.jass.triggers; 2 | 3 | import java.util.ArrayList; 4 | 5 | import com.etheller.interpreter.ast.util.CHandle; 6 | import com.etheller.interpreter.ast.value.JassValue; 7 | 8 | public class HandleList extends ArrayList implements CHandle { 9 | private final int handleId; 10 | 11 | public HandleList(final int handleId) { 12 | this.handleId = handleId; 13 | } 14 | 15 | @Override 16 | public int getHandleId() { 17 | return this.handleId; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/parsers/jass/triggers/LocationJass.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.jass.triggers; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.targeting.AbilityPointTarget; 5 | 6 | public class LocationJass extends AbilityPointTarget implements CHandle { 7 | private final int handleId; 8 | 9 | public LocationJass(final float x, final float y, final int handleId) { 10 | super(x, y); 11 | this.handleId = handleId; 12 | } 13 | 14 | @Override 15 | public int getHandleId() { 16 | return this.handleId; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/parsers/jass/triggers/UnitGroup.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.jass.triggers; 2 | 3 | import java.util.ArrayList; 4 | 5 | import com.etheller.interpreter.ast.util.CHandle; 6 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit; 7 | 8 | public class UnitGroup extends ArrayList implements CHandle { 9 | private int handleId; 10 | 11 | public UnitGroup(int handleId) { 12 | this.handleId = handleId; 13 | } 14 | 15 | @Override 16 | public int getHandleId() { 17 | return handleId; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/pjblp/AbstractBitmap.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.pjblp; 2 | 3 | import java.nio.ByteBuffer; 4 | 5 | public abstract class AbstractBitmap { 6 | 7 | public abstract int getHeight(); 8 | 9 | 10 | public abstract int getWidth(); 11 | 12 | public abstract ByteBuffer getBuffer(); 13 | } 14 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/pjblp/blpDataFormat.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.pjblp; 2 | 3 | public interface blpDataFormat { 4 | } 5 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/pjblp/mipmap.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.pjblp; 2 | 3 | public class mipmap { 4 | public int size; 5 | public int offset; 6 | } 7 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/units/LMUnit.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.units; 2 | 3 | import java.util.LinkedHashMap; 4 | 5 | public class LMUnit extends Element { 6 | 7 | public LMUnit(final String id, final DataTable table) { 8 | super(id, table); 9 | this.fields = new LinkedHashMap<>(); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/units/ObjectData.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.units; 2 | 3 | import java.util.Set; 4 | 5 | import com.etheller.warsmash.util.War3ID; 6 | 7 | public interface ObjectData { 8 | GameObject get(String id); 9 | 10 | default GameObject get(final War3ID id) { 11 | return get(id.asStringValue()); 12 | } 13 | 14 | void cloneUnit(final String parentId, final String cloneId); 15 | 16 | void inheritFrom(String childKey, String parentKey); 17 | 18 | void setValue(String slk, String id, String field, String value); 19 | 20 | Set keySet(); 21 | 22 | String getLocalizedString(String key); 23 | } 24 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/units/custom/WTS.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.units.custom; 2 | 3 | public interface WTS { 4 | String get(int key); 5 | 6 | WTS DO_NOTHING = new WTS() { 7 | @Override 8 | public String get(final int key) { 9 | return "TRIGSTR_" + key; 10 | } 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/util/Descriptor.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.util; 2 | 3 | public interface Descriptor { 4 | E create(); 5 | 6 | } 7 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/util/ListItemEnum.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.util; 2 | 3 | public enum ListItemEnum { 4 | ITEM_STRING, 5 | ITEM_MAP 6 | } 7 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/util/ListItemStringProperty.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.util; 2 | 3 | public class ListItemStringProperty extends AbstractListItemProperty { 4 | 5 | public ListItemStringProperty(String rawValue) { 6 | super(ListItemEnum.ITEM_STRING, rawValue); 7 | } 8 | 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/util/MapType.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.util; 2 | 3 | public enum MapType { 4 | MELEE_MAP, 5 | CUSTOM_MAP, 6 | FOLDER_MAP, 7 | FOLDERBACK_MAP 8 | } 9 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/util/MappedDataRow.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.util; 2 | 3 | import java.util.HashMap; 4 | 5 | public class MappedDataRow extends HashMap { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/util/QuadtreeIntersector.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.util; 2 | 3 | public interface QuadtreeIntersector { 4 | /** 5 | * Handles what to do when the intersector finds an intersecting object, 6 | * returning true if we should stop the intersection test and process no more 7 | * objects. 8 | * 9 | * @param intersectingObject 10 | * @return 11 | */ 12 | boolean onIntersect(T intersectingObject); 13 | } 14 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/util/StringBundle.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.util; 2 | 3 | public interface StringBundle { 4 | String getString(String string); 5 | 6 | String getStringCaseSensitive(final String key); 7 | 8 | StringBundle EMPTY = new StringBundle() { 9 | @Override 10 | public String getStringCaseSensitive(final String key) { 11 | return key; 12 | } 13 | 14 | @Override 15 | public String getString(final String string) { 16 | return string; 17 | } 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/util/Test2.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.util; 2 | 3 | public class Test2 { 4 | public static void main(final String[] args) { 5 | System.out.println(new War3ID(1786017909)); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/util/Test3.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.util; 2 | 3 | public class Test3 { 4 | public static void main(final String[] args) { 5 | System.out.println(new War3ID(1786017909)); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/util/WarsmashUtils.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.util; 2 | 3 | import com.badlogic.gdx.Gdx; 4 | import com.badlogic.gdx.math.Vector2; 5 | 6 | public class WarsmashUtils { 7 | private static final Vector2 windowSize = new Vector2(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 8 | 9 | public static void toggleFullScreen() { 10 | if (!Gdx.graphics.isFullscreen()) { 11 | windowSize.set(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 12 | Gdx.graphics.setFullscreenMode(Gdx.graphics.getDisplayMode()); 13 | } 14 | else { 15 | Gdx.graphics.setWindowedMode((int) windowSize.x, (int) windowSize.y); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/AudioDestination.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5; 2 | 3 | public interface AudioDestination { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/BatchedInstance.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5; 2 | 3 | /** 4 | * A batched model instance. 5 | */ 6 | public abstract class BatchedInstance extends ModelInstance { 7 | 8 | public BatchedInstance(final Model model) { 9 | super(model); 10 | } 11 | 12 | @Override 13 | public boolean isBatched() { 14 | return true; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/CanvasProvider.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5; 2 | 3 | public interface CanvasProvider { 4 | float getWidth(); 5 | 6 | float getHeight(); 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/EmittedObject.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5; 2 | 3 | public abstract class EmittedObject>> { 4 | public abstract void update(float dt); 5 | 6 | public float health; 7 | public EMITTER emitter; 8 | public int index; 9 | 10 | public EmittedObject(final EMITTER emitter) { 11 | this.emitter = emitter; 12 | } 13 | 14 | protected abstract void bind(int flags); 15 | } 16 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/FogStyle.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5; 2 | 3 | public enum FogStyle { 4 | NONE, LINEAR, EXPONENTIAL_1, EXPONENTIAL_2; 5 | } 6 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/HandlerResource.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.ResourceHandler; 4 | 5 | public abstract class HandlerResource extends Resource { 6 | public final HANDLER handler; 7 | 8 | public HandlerResource(final ModelViewer viewer, final String extension, final PathSolver pathSolver, 9 | final String fetchUrl, final HANDLER handler) { 10 | super(viewer, extension, pathSolver, fetchUrl); 11 | this.handler = handler; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/ModelInstanceCallback.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5; 2 | 3 | public interface ModelInstanceCallback { 4 | void call(ModelInstance instance); 5 | } 6 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/ResourceLoader.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5; 2 | 3 | public interface ResourceLoader { 4 | } 5 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/SceneLightInstance.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5; 2 | 3 | import java.nio.FloatBuffer; 4 | 5 | public interface SceneLightInstance { 6 | void bind(int offset, FloatBuffer floatBuffer); 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/SceneLightManager.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5; 2 | 3 | public interface SceneLightManager { 4 | public void add(final SceneLightInstance lightInstance); 5 | 6 | public void remove(final SceneLightInstance lightInstance); 7 | 8 | public void update(); 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/SolvedPath.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5; 2 | 3 | public class SolvedPath { 4 | public String finalSrc; 5 | public String extension; 6 | public boolean fetch; 7 | 8 | public SolvedPath(final String finalSrc, final String extension, final boolean fetch) { 9 | this.finalSrc = finalSrc; 10 | this.extension = extension; 11 | this.fetch = fetch; 12 | } 13 | 14 | public String getFinalSrc() { 15 | return this.finalSrc; 16 | } 17 | 18 | public String getExtension() { 19 | return this.extension; 20 | } 21 | 22 | public boolean isFetch() { 23 | return this.fetch; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/TextureMapper.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | public class TextureMapper { 7 | public final Model model; 8 | public final Map textures; 9 | 10 | public TextureMapper(final Model model) { 11 | this.model = model; 12 | this.textures = new HashMap<>(); 13 | } 14 | 15 | public TextureMapper(final Model model, final Map textures) { 16 | this.model = model; 17 | this.textures = new HashMap<>(textures); 18 | } 19 | 20 | public Texture get(final Object key) { 21 | return this.textures.get(key); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/UpdatableObject.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5; 2 | 3 | public interface UpdatableObject { 4 | void update(float dt, boolean visible); 5 | 6 | } 7 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/deprecated/ShaderProgram.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.deprecated; 2 | 3 | import com.etheller.warsmash.viewer5.gl.WebGL; 4 | 5 | public class ShaderProgram { 6 | 7 | public boolean ok; 8 | public int attribsCount; 9 | public int webglResource; 10 | 11 | public ShaderProgram(final WebGL webGL, final ShaderUnitDeprecated vertexShader, final ShaderUnitDeprecated fragmentShader) { 12 | // TODO Auto-generated constructor stub 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/gl/ANGLEInstancedArrays.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.gl; 2 | 3 | /** 4 | * TODO what is this? 5 | */ 6 | public interface ANGLEInstancedArrays { 7 | 8 | void glVertexAttribDivisorANGLE(int index, int divisor); 9 | 10 | void glDrawArraysInstancedANGLE(int mode, int first, int count, int instanceCount); 11 | 12 | void glDrawElementsInstancedANGLE(int mode, int count, int type, int indicesOffset, int instanceCount); 13 | } 14 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/gl/AudioExtension.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.gl; 2 | 3 | import com.badlogic.gdx.audio.Sound; 4 | import com.etheller.warsmash.viewer5.AudioContext; 5 | 6 | public interface AudioExtension { 7 | AudioContext createContext(boolean world); 8 | 9 | float getDuration(Sound sound); 10 | 11 | long play(Sound buffer, final float volume, final float pitch, final float x, final float y, final float z, 12 | final boolean is3DSound, float maxDistance, float refDistance, boolean looping); 13 | } 14 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/gl/DynamicShadowExtension.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.gl; 2 | 3 | public interface DynamicShadowExtension { 4 | void glFramebufferTexture(int target, int attachment, int texture, int level); 5 | 6 | void glDrawBuffer(int mode); 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/gl/Extensions.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.gl; 2 | 3 | public class Extensions { 4 | public static ANGLEInstancedArrays angleInstancedArrays; 5 | 6 | public static DynamicShadowExtension dynamicShadowExtension; 7 | 8 | public static WireframeExtension wireframeExtension; 9 | 10 | public static AudioExtension audio; 11 | 12 | public static int GL_LINE = 0; 13 | public static int GL_FILL = 0; 14 | } 15 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/gl/WireframeExtension.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.gl; 2 | 3 | public interface WireframeExtension { 4 | void glPolygonMode(int face, int mode); 5 | } 6 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/EmitterObject.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers; 2 | 3 | public interface EmitterObject { 4 | boolean ok(); 5 | 6 | int getGeometryEmitterType(); 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/ModelHandler.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers; 2 | 3 | public abstract class ModelHandler extends ResourceHandler { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/ModelInstanceDescriptor.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers; 2 | 3 | import com.etheller.warsmash.viewer5.Model; 4 | import com.etheller.warsmash.viewer5.ModelInstance; 5 | 6 | public interface ModelInstanceDescriptor { 7 | ModelInstance create(Model model); 8 | } 9 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/ResourceHandler.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers; 2 | 3 | import java.util.List; 4 | 5 | import com.etheller.warsmash.viewer5.ModelViewer; 6 | import com.etheller.warsmash.viewer5.HandlerResource; 7 | 8 | public abstract class ResourceHandler { 9 | public ResourceHandler handler; 10 | public boolean load; 11 | public List extensions; 12 | 13 | public abstract boolean load(ModelViewer modelViewer); 14 | 15 | public abstract HandlerResource construct(ResourceHandlerConstructionParams params); 16 | } 17 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/mdx/EventObjectSndEmitter.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.mdx; 2 | 3 | public class EventObjectSndEmitter extends EventObjectEmitter { 4 | 5 | public EventObjectSndEmitter(final MdxComplexInstance instance, final EventObjectEmitterObject emitterObject) { 6 | super(instance, emitterObject); 7 | } 8 | 9 | @Override 10 | protected EventObjectSnd createObject() { 11 | return new EventObjectSnd(this); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/mdx/EventObjectSplEmitter.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.mdx; 2 | 3 | public class EventObjectSplEmitter extends EventObjectEmitter { 4 | public EventObjectSplEmitter(final MdxComplexInstance instance, final EventObjectEmitterObject emitterObject) { 5 | super(instance, emitterObject); 6 | } 7 | 8 | @Override 9 | protected EventObjectSpl createObject() { 10 | return new EventObjectSpl(this); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/mdx/EventObjectSpnEmitter.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.mdx; 2 | 3 | public class EventObjectSpnEmitter extends EventObjectEmitter { 4 | 5 | public EventObjectSpnEmitter(final MdxComplexInstance instance, final EventObjectEmitterObject emitterObject) { 6 | super(instance, emitterObject); 7 | } 8 | 9 | @Override 10 | protected EventObjectSpn createObject() { 11 | return new EventObjectSpn(this); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/mdx/EventObjectUbrEmitter.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.mdx; 2 | 3 | public class EventObjectUbrEmitter extends EventObjectEmitter { 4 | public EventObjectUbrEmitter(final MdxComplexInstance instance, final EventObjectEmitterObject emitterObject) { 5 | super(instance, emitterObject); 6 | } 7 | 8 | @Override 9 | protected EventObjectUbr createObject() { 10 | return new EventObjectUbr(this); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/mdx/GenericGroup.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.mdx; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | import com.badlogic.gdx.math.Matrix4; 7 | 8 | public abstract class GenericGroup { 9 | public final List objects; 10 | 11 | public abstract void render(MdxComplexInstance instance, Matrix4 mvp); 12 | 13 | public GenericGroup() { 14 | this.objects = new ArrayList<>(); // TODO IntArrayList 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/mdx/GenericIndexed.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.mdx; 2 | 3 | public interface GenericIndexed { 4 | public int getIndex(); 5 | } 6 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/mdx/Helper.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.mdx; 2 | 3 | import com.hiveworkshop.rms.parsers.mdlx.MdlxGenericObject; 4 | 5 | /** 6 | * An MDX helper. 7 | */ 8 | public class Helper extends GenericObject { 9 | public Helper(final MdxModel model, final MdlxGenericObject object, final int index) { 10 | super(model, object, index); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/mdx/Material.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.mdx; 2 | 3 | import java.util.List; 4 | 5 | public class Material { 6 | public final MdxModel model; 7 | public final String shader; 8 | public final List layers; 9 | 10 | public Material(final MdxModel model, final String shader, final List layers) { 11 | this.model = model; 12 | this.shader = shader; 13 | this.layers = layers; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/mdx/MdxNodeDescriptor.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.mdx; 2 | 3 | import com.etheller.warsmash.util.Descriptor; 4 | 5 | public class MdxNodeDescriptor implements Descriptor { 6 | public static final MdxNodeDescriptor INSTANCE = new MdxNodeDescriptor(); 7 | 8 | @Override 9 | public MdxNode create() { 10 | return new MdxNode(); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/mdx/SequenceLoopMode.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.mdx; 2 | 3 | public enum SequenceLoopMode { 4 | NEVER_LOOP, 5 | MODEL_LOOP, 6 | ALWAYS_LOOP, 7 | NEVER_LOOP_AND_HIDE_WHEN_DONE, // used by spawned effects 8 | LOOP_TO_NEXT_ANIMATION; // used by the Arthas vs Illidan tech demo 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/mdx/SkinningType.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.mdx; 2 | 3 | public enum SkinningType { 4 | Skin, 5 | ExtendedVertexGroups, 6 | VertexGroups; 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/IndexedSequence.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.mdx.Sequence; 4 | 5 | public class IndexedSequence { 6 | public final Sequence sequence; 7 | public final int index; 8 | 9 | public IndexedSequence(final Sequence sequence, final int index) { 10 | this.sequence = sequence; 11 | this.index = index; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/MdxAssetLoader.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x; 2 | 3 | import com.badlogic.gdx.graphics.Pixmap; 4 | import com.etheller.warsmash.viewer5.handlers.mdx.MdxModel; 5 | 6 | public interface MdxAssetLoader { 7 | public MdxModel loadModelMdx(final String path); 8 | 9 | public Pixmap loadPathingTexture(String pathingTexture); 10 | } 11 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/StandSequenceComparator.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x; 2 | 3 | import java.util.Comparator; 4 | 5 | public class StandSequenceComparator implements Comparator { 6 | @Override 7 | public int compare(final IndexedSequence a, final IndexedSequence b) { 8 | return (int) Math.signum(b.sequence.getRarity() - a.sequence.getRarity()); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/W3xSceneLight.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x; 2 | 3 | public class W3xSceneLight { 4 | 5 | public static enum Type { 6 | OMNIDIRECTIONAL, 7 | DIRECTIONAL; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/W3xSceneLightManager.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x; 2 | 3 | import com.etheller.warsmash.viewer5.gl.DataTexture; 4 | 5 | public interface W3xSceneLightManager { 6 | public DataTexture getUnitLightsTexture(); 7 | 8 | public int getUnitLightCount(); 9 | 10 | public DataTexture getTerrainLightsTexture(); 11 | 12 | public int getTerrainLightCount(); 13 | } 14 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/camera/CameraPanControls.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.camera; 2 | 3 | public final class CameraPanControls { 4 | protected boolean down; 5 | protected boolean up; 6 | protected boolean left; 7 | protected boolean right; 8 | protected boolean insertDown; 9 | protected boolean deleteDown; 10 | } -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/camera/CameraSetupField.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.camera; 2 | 3 | public class CameraSetupField { 4 | private final float value; 5 | private final float rate; 6 | 7 | public CameraSetupField(final float value, final float rate) { 8 | this.value = value; 9 | this.rate = rate; 10 | } 11 | 12 | public float getValue() { 13 | return this.value; 14 | } 15 | 16 | public float getRate() { 17 | return this.rate; 18 | } 19 | 20 | public float applyAtRate(final float previousValue) { 21 | return GameCameraManager.applyAtRate(previousValue, this.value, this.rate); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/environment/BuildingShadow.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.environment; 2 | 3 | public interface BuildingShadow { 4 | void remove(); 5 | 6 | void move(float x, float y); 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/environment/RenderCorner.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.environment; 2 | 3 | import com.etheller.warsmash.parsers.w3x.w3e.Corner; 4 | 5 | public class RenderCorner extends Corner { 6 | public boolean cliff; 7 | public boolean romp; 8 | public float rampAdjust; 9 | public float depth; 10 | public boolean hideCliff; 11 | 12 | public RenderCorner(final Corner corner) { 13 | super(corner); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/rendersim/LockTarget.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.rendersim; 2 | 3 | import com.badlogic.gdx.math.Quaternion; 4 | import com.etheller.warsmash.viewer5.GenericNode; 5 | 6 | public interface LockTarget { 7 | float getX(); 8 | 9 | float getY(); 10 | 11 | float getZ(); 12 | 13 | void apply(GenericNode sourceNode, Quaternion overrideWorldRotation); 14 | } 15 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/rendersim/RenderEffect.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.rendersim; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.War3MapViewer; 4 | 5 | public interface RenderEffect { 6 | boolean updateAnimations(final War3MapViewer war3MapViewer, float deltaTime); 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/rendersim/RenderWidgetType.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.rendersim; 2 | 3 | import com.etheller.warsmash.units.manager.MutableObjectData.WorldEditorDataType; 4 | 5 | public interface RenderWidgetType { 6 | WorldEditorDataType getType(); 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/Aliased.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation; 2 | 3 | import com.etheller.warsmash.util.War3ID; 4 | 5 | public interface Aliased { 6 | War3ID getAlias(); 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/CDestructableEnumFunction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation; 2 | 3 | public interface CDestructableEnumFunction { 4 | /** 5 | * Operates on a destructable, returning true if we should stop execution. 6 | * 7 | * @param destructable 8 | * @return 9 | */ 10 | boolean call(CDestructable destructable); 11 | } 12 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/CFogMaskSettings.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation; 2 | 3 | public interface CFogMaskSettings { 4 | boolean isFogMaskEnabled(); 5 | 6 | boolean isFogEnabled(); 7 | 8 | byte getFogStateFromSettings(byte state); 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/CItemEnumFunction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation; 2 | 3 | public interface CItemEnumFunction { 4 | /** 5 | * Operates on an item, returning true if we should stop execution. 6 | * 7 | * @param item 8 | * @return 9 | */ 10 | boolean call(CItem destructable); 11 | } 12 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/CSimulationMapData.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation; 2 | 3 | /** 4 | * Provides limited access to game map data when necessary for the game 5 | * simulation logic. Do not add methods to this to query anything that isn't 6 | * going to be network sync'ed. 7 | */ 8 | public interface CSimulationMapData { 9 | short getTerrainPathing(float x, float y); 10 | } 11 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/CUnitEnumFunction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation; 2 | 3 | public interface CUnitEnumFunction { 4 | /** 5 | * Operates on a unit, returning true if we should stop execution. 6 | * 7 | * @param unit 8 | * @return 9 | */ 10 | boolean call(CUnit unit); 11 | } 12 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/CUnitTypeRequirement.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation; 2 | 3 | import com.etheller.warsmash.util.War3ID; 4 | 5 | public class CUnitTypeRequirement { 6 | private final War3ID requirement; 7 | private final int requiredLevel; 8 | 9 | public CUnitTypeRequirement(final War3ID requirement, final int requiredLevel) { 10 | this.requirement = requirement; 11 | this.requiredLevel = requiredLevel; 12 | } 13 | 14 | public War3ID getRequirement() { 15 | return this.requirement; 16 | } 17 | 18 | public int getRequiredLevel() { 19 | return this.requiredLevel; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/CWidgetFilterFunction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation; 2 | 3 | public interface CWidgetFilterFunction { 4 | boolean call(CWidget unit); 5 | 6 | CWidgetFilterFunction ACCEPT_ALL = new CWidgetFilterFunction() { 7 | @Override 8 | public boolean call(final CWidget unit) { 9 | return true; 10 | } 11 | }; 12 | 13 | CWidgetFilterFunction ACCEPT_ALL_LIVING = new CWidgetFilterFunction() { 14 | @Override 15 | public boolean call(final CWidget unit) { 16 | return !unit.isDead(); 17 | } 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/CWidgetVisitor.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation; 2 | 3 | public interface CWidgetVisitor { 4 | T accept(CUnit target); 5 | 6 | T accept(CDestructable target); 7 | 8 | T accept(CItem target); 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/HandleIdAllocator.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation; 2 | 3 | /** 4 | * This class is not similar to how WC3 allocates handle IDs in any way. 5 | * Changing this would probably be necessary to support TimerUtils madness, 6 | * because I forget how it works but I know it uses subtraction on handle IDs. 7 | */ 8 | public class HandleIdAllocator { 9 | private int next = 3412532; // bogus number 10 | 11 | public int createId() { 12 | return this.next++; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/StringsToExternalizeLater.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation; 2 | 3 | public class StringsToExternalizeLater { 4 | public static final String MUST_TARGET_POINT = "Must target a point."; 5 | public static final String MUST_TARGET_WIDGET = "Must target a unit with this action."; 6 | } 7 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/CAbilityCategory.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CAbilityCategory implements CHandle { 6 | ATTACK, 7 | MOVEMENT, 8 | CORE, 9 | PASSIVE, 10 | SPELL, 11 | ITEM, 12 | BUFF; 13 | 14 | @Override 15 | public int getHandleId() { 16 | return ordinal(); 17 | } 18 | 19 | public static final CAbilityCategory[] VALUES = values(); 20 | } 21 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/CAbilityRanged.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities; 2 | 3 | public interface CAbilityRanged extends CAbility, CAbilityRangedView { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/CAbilityRangedView.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities; 2 | 3 | public interface CAbilityRangedView extends CAbilityView { 4 | float getCastRange(); 5 | } 6 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/CAbilityToggleableView.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities; 2 | 3 | public interface CAbilityToggleableView extends CAbilityView { 4 | boolean isActive(); 5 | } 6 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/autocast/AutocastType.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.autocast; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum AutocastType implements CHandle { 6 | NONE, 7 | LOWESTHP, 8 | HIGESTHP, 9 | ATTACKTARGETING, 10 | ATTACKINGALLY, 11 | ATTACKINGENEMY, 12 | NEARESTVALID, 13 | NEARESTENEMY, 14 | NOTARGET, 15 | 16 | ATTACKREPLACEMENT; 17 | 18 | @Override 19 | public int getHandleId() { 20 | return ordinal(); 21 | } 22 | 23 | public static final AutocastType[] VALUES = values(); 24 | } 25 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/generic/CAliasedLevelingAbility.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.generic; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.Aliased; 4 | 5 | public interface CAliasedLevelingAbility extends CLevelingAbility, Aliased { 6 | } 7 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/generic/CBuff.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.generic; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation; 4 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit; 5 | 6 | public interface CBuff extends CAliasedLevelingAbility { 7 | float getDurationRemaining(CSimulation game, CUnit unit); 8 | 9 | float getDurationMax(); 10 | 11 | boolean isTimedLifeBar(); 12 | } 13 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/generic/CLevelingAbility.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.generic; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation; 4 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit; 5 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.CAbility; 6 | 7 | public interface CLevelingAbility extends CAbility { 8 | int getLevel(); 9 | 10 | void setLevel(CSimulation simulation, CUnit unit, int level); 11 | } 12 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/generic/GenericNoIconAbility.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.generic; 2 | 3 | public interface GenericNoIconAbility extends CAliasedLevelingAbility { 4 | } 5 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/generic/GenericSingleIconPassiveAbility.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.generic; 2 | 3 | import com.etheller.warsmash.util.War3ID; 4 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.Aliased; 5 | 6 | public interface GenericSingleIconPassiveAbility extends CLevelingAbility, Aliased { 7 | War3ID getAlias(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/generic/SingleOrderAbility.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.generic; 2 | 3 | public interface SingleOrderAbility { 4 | 5 | int getBaseOrderId(); 6 | } 7 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/hero/CPrimaryAttribute.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.hero; 2 | 3 | public enum CPrimaryAttribute { 4 | STRENGTH, 5 | INTELLIGENCE, 6 | AGILITY; 7 | 8 | public static CPrimaryAttribute parsePrimaryAttribute(final String targetTypeString) { 9 | if (targetTypeString == null) { 10 | return STRENGTH; 11 | } 12 | switch (targetTypeString.toUpperCase()) { 13 | case "STR": 14 | return STRENGTH; 15 | case "INT": 16 | return INTELLIGENCE; 17 | case "AGI": 18 | return AGILITY; 19 | default: 20 | return STRENGTH; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/listeners/CUnitAbilityEffectReactionListener.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.listeners; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation; 4 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit; 5 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.CAbility; 6 | 7 | public interface CUnitAbilityEffectReactionListener { 8 | public boolean onHit(final CSimulation simulation, CUnit source, CUnit target, CAbility ability); 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/menu/CAbilityMenu.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.menu; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.CAbility; 4 | 5 | public interface CAbilityMenu extends CAbility { 6 | // the base order ID of the menu 7 | int getBaseOrderId(); 8 | } 9 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/mine/CAbilityGoldMinable.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.mine; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.behaviors.harvest.CBehaviorHarvest; 4 | 5 | public interface CAbilityGoldMinable { 6 | 7 | int getActiveMinerCount(); 8 | 9 | int getMiningCapacity(); 10 | 11 | void addMiner(CBehaviorHarvest cBehaviorHarvest); 12 | 13 | float getMiningDuration(); 14 | 15 | int getGold(); 16 | 17 | void setGold(int amount); 18 | 19 | boolean isBaseMine(); 20 | } 21 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/skills/CAbilitySpell.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.skills; 2 | 3 | import com.etheller.warsmash.units.GameObject; 4 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.generic.CAliasedLevelingAbility; 5 | 6 | public interface CAbilitySpell extends CAliasedLevelingAbility { 7 | void populate(final GameObject worldEditorAbility, final int level); 8 | } 9 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/skills/undead/deathknight/CAbilityDarkRitual.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.skills.undead.deathknight; 2 | 3 | import com.etheller.warsmash.util.War3ID; 4 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.orders.OrderIds; 5 | 6 | public class CAbilityDarkRitual extends CAbilityDeathPact { 7 | 8 | public CAbilityDarkRitual(int handleId, War3ID alias) { 9 | super(handleId, alias); 10 | } 11 | 12 | @Override 13 | public int getBaseOrderId() { 14 | return OrderIds.darkritual; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/targeting/AbilityTarget.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.targeting; 2 | 3 | public interface AbilityTarget { 4 | float getX(); 5 | 6 | float getY(); 7 | 8 | T visit(AbilityTargetVisitor visitor); 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/types/CAbilityTypeLevelData.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.types; 2 | 3 | import java.util.EnumSet; 4 | 5 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat.CTargetType; 6 | 7 | public class CAbilityTypeLevelData { 8 | private final EnumSet targetsAllowed; 9 | 10 | public CAbilityTypeLevelData(final EnumSet targetsAllowed) { 11 | this.targetsAllowed = targetsAllowed; 12 | } 13 | 14 | public EnumSet getTargetsAllowed() { 15 | return this.targetsAllowed; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/types/definitions/CAbilityTypeDefinition.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.types.definitions; 2 | 3 | import com.etheller.warsmash.units.GameObject; 4 | import com.etheller.warsmash.util.War3ID; 5 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.types.CAbilityType; 6 | 7 | public interface CAbilityTypeDefinition { 8 | CAbilityType createAbilityType(War3ID rawcode, GameObject abilityEditorData); 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/types/impl/CAbilityTypeCargoHoldBurrowLevelData.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.types.impl; 2 | 3 | import java.util.EnumSet; 4 | 5 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat.CTargetType; 6 | 7 | public class CAbilityTypeCargoHoldBurrowLevelData extends CAbilityTypeCargoHoldLevelData { 8 | 9 | public CAbilityTypeCargoHoldBurrowLevelData(EnumSet targetsAllowed, int cargoCapcity, float duration, 10 | float castRange) { 11 | super(targetsAllowed, cargoCapcity, duration, castRange); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/types/impl/CAbilityTypeColdArrowsLevelData.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.types.impl; 2 | 3 | import java.util.EnumSet; 4 | 5 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.types.CAbilityTypeLevelData; 6 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat.CTargetType; 7 | 8 | public class CAbilityTypeColdArrowsLevelData extends CAbilityTypeLevelData { 9 | 10 | public CAbilityTypeColdArrowsLevelData(final EnumSet targetsAllowed) { 11 | super(targetsAllowed); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilities/types/jass/BehaviorExpr.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.types.jass; 2 | 3 | import com.etheller.interpreter.ast.scope.GlobalScope; 4 | import com.etheller.interpreter.ast.scope.TriggerExecutionScope; 5 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.behaviors.CBehavior; 6 | 7 | public interface BehaviorExpr { 8 | CBehavior evaluate(GlobalScope globalScope, TriggerExecutionScope triggerScope); 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilitybuilder/ability/AbilityBuilderPassiveAbility.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilitybuilder.ability; 2 | 3 | public interface AbilityBuilderPassiveAbility extends AbilityBuilderAbility { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilitybuilder/behavior/callback/floatcallbacks/ABCallbackPi.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilitybuilder.behavior.callback.floatcallbacks; 2 | 3 | import java.util.Map; 4 | 5 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation; 6 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit; 7 | 8 | public class ABCallbackPi extends ABFloatCallback { 9 | 10 | @Override 11 | public Float callback(CSimulation game, CUnit caster, Map localStore, final int castId) { 12 | return (float) StrictMath.PI; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilitybuilder/core/ABAction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilitybuilder.core; 2 | 3 | import java.util.Map; 4 | 5 | import com.etheller.warsmash.parsers.jass.JassTextGeneratorStmt; 6 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation; 7 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit; 8 | 9 | public interface ABAction extends JassTextGeneratorStmt { 10 | public void runAction(final CSimulation game, final CUnit caster, final Map localStore, 11 | final int castId); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilitybuilder/core/ABCallback.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilitybuilder.core; 2 | 3 | import java.util.Map; 4 | 5 | import com.etheller.warsmash.parsers.jass.JassTextGeneratorExpr; 6 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation; 7 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit; 8 | 9 | public interface ABCallback extends JassTextGeneratorExpr { 10 | 11 | public Object callback(final CSimulation game, final CUnit caster, final Map localStore, 12 | final int castId); 13 | } 14 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilitybuilder/core/ABCondition.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilitybuilder.core; 2 | 3 | import java.util.Map; 4 | 5 | import com.etheller.warsmash.parsers.jass.JassTextGeneratorExpr; 6 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation; 7 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit; 8 | 9 | public interface ABCondition extends JassTextGeneratorExpr { 10 | 11 | public boolean evaluate(final CSimulation game, final CUnit caster, final Map localStore, 12 | final int castId); 13 | } 14 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilitybuilder/core/ABSingleAction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilitybuilder.core; 2 | 3 | import com.etheller.warsmash.parsers.jass.JassTextGeneratorCallStmt; 4 | 5 | public interface ABSingleAction extends ABAction, JassTextGeneratorCallStmt { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilitybuilder/iterstructs/UnitAndRange.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilitybuilder.iterstructs; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit; 4 | 5 | public class UnitAndRange { 6 | private CUnit unit; 7 | private double range; 8 | 9 | public CUnit getUnit() { 10 | return unit; 11 | } 12 | public void setUnit(CUnit unit) { 13 | this.unit = unit; 14 | } 15 | public double getRange() { 16 | return range; 17 | } 18 | public void setRange(double range) { 19 | this.range = range; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilitybuilder/parser/AbilityBuilderFile.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilitybuilder.parser; 2 | 3 | import java.util.List; 4 | 5 | public class AbilityBuilderFile { 6 | List abilityList; 7 | 8 | public List getAbilityList() { 9 | return abilityList; 10 | } 11 | 12 | public void setAbilityList(List abilityList) { 13 | this.abilityList = abilityList; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/abilitybuilder/parser/AbilityBuilderTemplateType.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilitybuilder.parser; 2 | 3 | public enum AbilityBuilderTemplateType { 4 | AURA, 5 | AURA_SIMPLE, 6 | AURA_STATS, 7 | PASSIVE_STATS; 8 | } 9 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/ai/AIDifficulty.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.ai; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum AIDifficulty implements CHandle { 6 | NEWBIE, 7 | NORMAL, 8 | INSANE; 9 | 10 | public static AIDifficulty[] VALUES = values(); 11 | 12 | @Override 13 | public int getHandleId() { 14 | return ordinal(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/behaviors/CBehaviorCategory.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.behaviors; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CBehaviorCategory implements CHandle { 6 | IDLE, 7 | MOVEMENT, 8 | ATTACK, 9 | SPELL; 10 | 11 | @Override 12 | public int getHandleId() { 13 | return ordinal(); 14 | } 15 | 16 | public static final CBehaviorCategory[] VALUES = values(); 17 | } 18 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/behaviors/CBehaviorVisitor.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.behaviors; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilitybuilder.behavior.CBehaviorAbilityBuilderBase; 4 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilitybuilder.behavior.CBehaviorAbilityBuilderNoTarget; 5 | 6 | public interface CBehaviorVisitor { 7 | T accept(CBehavior target); 8 | 9 | T accept(CRangedBehavior target); 10 | 11 | T accept(CBehaviorAbilityBuilderBase target); 12 | T accept(CBehaviorAbilityBuilderNoTarget target); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/behaviors/CRangedBehavior.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.behaviors; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation; 4 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.targeting.AbilityTarget; 5 | 6 | public interface CRangedBehavior extends CBehavior { 7 | boolean isWithinRange(final CSimulation simulation); 8 | 9 | void endMove(CSimulation game, boolean interrupted); 10 | 11 | AbilityTarget getTarget(); 12 | } 13 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/combat/AttackInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat; 2 | 3 | public interface AttackInterceptor { 4 | } 5 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/combat/CRegenType.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat; 2 | 3 | public enum CRegenType { 4 | NONE, ALWAYS, BLIGHT, DAY, NIGHT; 5 | 6 | public static CRegenType parseRegenType(final String typeString) { 7 | try { 8 | return valueOf(typeString.toUpperCase()); 9 | } 10 | catch (final Exception exc) { 11 | exc.printStackTrace(); 12 | return NONE; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/combat/CUpgradeClass.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat; 2 | 3 | public enum CUpgradeClass { 4 | ARMOR, ARTILLERY, MELEE, RANGED, CASTER; 5 | 6 | public static CUpgradeClass parseUpgradeClass(final String upgradeClassString) { 7 | try { 8 | return valueOf(upgradeClassString.toUpperCase()); 9 | } 10 | catch (Exception exc) { 11 | return null; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/combat/CodeKeyType.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat; 2 | 3 | public interface CodeKeyType { 4 | String getCodeKey(); 5 | 6 | int ordinal(); 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/combat/OutgoingAttackInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat; 2 | 3 | public interface OutgoingAttackInterceptor { 4 | } 5 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/combat/attacks/CUnitAttackListener.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat.attacks; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.targeting.AbilityTarget; 4 | 5 | public interface CUnitAttackListener { 6 | void onLaunch(); 7 | 8 | void onHit(AbilityTarget target, float damage); 9 | 10 | CUnitAttackListener DO_NOTHING = new CUnitAttackListener() { 11 | @Override 12 | public void onLaunch() { 13 | } 14 | 15 | @Override 16 | public void onHit(AbilityTarget target, float damage) { 17 | } 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/combat/attacks/listeners/CUnitAttackEvasionListener.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat.attacks.listeners; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation; 4 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit; 5 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.trigger.enumtypes.CDamageType; 6 | 7 | public interface CUnitAttackEvasionListener { 8 | public boolean onAttack(final CSimulation simulation, CUnit attacker, CUnit target, boolean isAttack, boolean isRanged, CDamageType weaponType); 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/combat/attacks/listeners/CUnitAttackPostDamageListener.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat.attacks.listeners; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation; 4 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit; 5 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.targeting.AbilityTarget; 6 | 7 | public interface CUnitAttackPostDamageListener { 8 | public void onHit(final CSimulation simulation, CUnit attacker, AbilityTarget target, float damage); 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/combat/attacks/listeners/CUnitDeathReplacementEffect.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat.attacks.listeners; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation; 4 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit; 5 | 6 | public interface CUnitDeathReplacementEffect { 7 | public CUnitDeathReplacementStacking onDeath(final CSimulation simulation, final CUnit unit, final CUnit killer, 8 | final CUnitDeathReplacementResult result); 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/combat/attacks/replacement/CUnitAttackReplacementPriority.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat.attacks.replacement; 2 | 3 | public enum CUnitAttackReplacementPriority { 4 | AUTOCAST(0), 5 | HIGHPRI(1), 6 | INVENTORY(2), 7 | LOWPRIORITY(3), 8 | NOPRIORITY(4); 9 | 10 | private int priority; 11 | 12 | CUnitAttackReplacementPriority(int priority) { 13 | this.priority = priority; 14 | } 15 | public int getPriority() { 16 | return priority; 17 | } 18 | public void setPriority(int priority) { 19 | this.priority = priority; 20 | } 21 | 22 | 23 | } 24 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/combat/projectile/CEffect.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat.projectile; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation; 4 | 5 | public interface CEffect { 6 | boolean update(CSimulation game); 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/combat/projectile/CProjectileListener.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat.projectile; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation; 4 | 5 | public interface CProjectileListener { 6 | void onHitTarget(CSimulation game); 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/combat/projectile/listeners/CUnitAbilityProjReactionListener.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat.projectile.listeners; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation; 4 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit; 5 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat.projectile.CProjectile; 6 | 7 | public interface CUnitAbilityProjReactionListener { 8 | public boolean onHit(final CSimulation simulation, CUnit source, CUnit target, CProjectile projectile); 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/combat/projectile/listeners/CUnitAttackProjReactionListener.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat.projectile.listeners; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation; 4 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit; 5 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat.projectile.CAttackProjectile; 6 | 7 | public interface CUnitAttackProjReactionListener { 8 | public boolean onHit(final CSimulation simulation, CUnit source, CUnit target, CAttackProjectile projectile); 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/config/CPlayerAPI.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.config; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.players.CPlayerColor; 4 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.players.CPlayerJass; 5 | 6 | public interface CPlayerAPI { 7 | CBasePlayer getPlayer(int index); 8 | 9 | void setColor(CPlayerJass player, CPlayerColor color); 10 | } 11 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/item/CItemTypeJass.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.item; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CItemTypeJass implements CHandle { 6 | PERMANENT, 7 | CHARGED, 8 | POWERUP, 9 | ARTIFACT, 10 | PURCHASABLE, 11 | CAMPAIGN, 12 | MISCELLANEOUS, 13 | UNKNOWN, 14 | ANY; 15 | 16 | public static CItemTypeJass[] VALUES = values(); 17 | 18 | @Override 19 | public int getHandleId() { 20 | return ordinal(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/pathing/Extensions.kt: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.pathing 2 | 3 | import kotlin.math.abs 4 | 5 | fun Float.sameValueAs(other: Float) : Boolean { 6 | return (abs(this-other) < 0.0000000001) 7 | } 8 | 9 | fun Double.sameValueAs(other: Double) : Boolean { 10 | return (abs(this-other) < 0.0000000001) 11 | } -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/players/CAllianceType.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.players; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CAllianceType implements CHandle { 6 | PASSIVE, 7 | HELP_REQUEST, 8 | HELP_RESPONSE, 9 | SHARED_XP, 10 | SHARED_SPELLS, 11 | SHARED_VISION, 12 | SHARED_CONTROL, 13 | SHARED_ADVANCED_CONTROL, 14 | RESCUABLE, 15 | SHARED_VISION_FORCED; 16 | 17 | public static CAllianceType[] VALUES = values(); 18 | 19 | @Override 20 | public int getHandleId() { 21 | return ordinal(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/players/CMapControl.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.players; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CMapControl implements CHandle { 6 | USER, 7 | COMPUTER, 8 | RESCUABLE, 9 | NEUTRAL, 10 | CREEP, 11 | NONE; 12 | 13 | public static CMapControl[] VALUES = values(); 14 | 15 | @Override 16 | public int getHandleId() { 17 | return ordinal(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/players/CMapPlacement.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.players; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CMapPlacement implements CHandle { 6 | RANDOM, 7 | FIXED, 8 | USE_MAP_SETTINGS, 9 | TEAMS_TOGETHER; 10 | 11 | public static CMapPlacement[] VALUES = values(); 12 | 13 | @Override 14 | public int getHandleId() { 15 | return ordinal(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/players/CPlayerGameResult.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.players; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CPlayerGameResult implements CHandle { 6 | VICTORY, 7 | DEFEAT, 8 | TIE, 9 | NEUTRAL; 10 | 11 | public static CPlayerGameResult[] VALUES = values(); 12 | 13 | @Override 14 | public int getHandleId() { 15 | return ordinal(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/players/CRace.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.players; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public class CRace implements CHandle { 6 | private int id; 7 | 8 | public CRace(final int id) { 9 | this.id = id; 10 | } 11 | 12 | public int getId() { 13 | return this.id; 14 | } 15 | 16 | @Override 17 | public int getHandleId() { 18 | return getId(); 19 | } 20 | 21 | public int ordinal() { 22 | return this.id - 1; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/players/CRacePreference.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.players; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public class CRacePreference implements CHandle { 6 | private int id; 7 | 8 | public CRacePreference(int id) { 9 | this.id = id; 10 | } 11 | 12 | public int ordinal() { 13 | return id - 1; 14 | } 15 | 16 | public int getBitMaskValue() { 17 | return 1 << ordinal(); 18 | } 19 | 20 | @Override 21 | public int getHandleId() { 22 | return getBitMaskValue(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/players/CRacePreferences.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.players; 2 | 3 | public class CRacePreferences { 4 | private int bitFlags; 5 | 6 | public void add(CRacePreference racePreference) { 7 | bitFlags |= racePreference.getBitMaskValue(); 8 | } 9 | 10 | public boolean contains(CRacePreference racePreference) { 11 | return (bitFlags & racePreference.getBitMaskValue()) != 0; 12 | } 13 | 14 | public void clear() { 15 | bitFlags = 0; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/players/CStartLocPrio.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.players; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CStartLocPrio implements CHandle { 6 | LOW, 7 | HIGH, 8 | NOT; 9 | 10 | public static CStartLocPrio[] VALUES = values(); 11 | 12 | @Override 13 | public int getHandleId() { 14 | return ordinal(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/players/vision/CFogModifierJass.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.players.vision; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation; 4 | 5 | public interface CFogModifierJass { 6 | void setEnabled(boolean flag); 7 | 8 | void destroy(CSimulation game); 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/players/vision/DetectionLevel.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.players.vision; 2 | 3 | public enum DetectionLevel { 4 | DETECTION_1((byte) 1), 5 | DETECTION_2((byte) (1 << 2)), 6 | DETECTION_3((byte) (1 << 3)), 7 | DETECTION_4((byte) (1 << 4)), 8 | DETECTION_5((byte) (1 << 5)), 9 | DETECTION_6((byte) (1 << 6)), 10 | ALL_LEVELS((byte) ~0); 11 | 12 | private byte detectionMask; 13 | 14 | DetectionLevel(byte i) { 15 | this.detectionMask = i; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/region/CRegionEnumFunction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.region; 2 | 3 | public interface CRegionEnumFunction { 4 | /** 5 | * Operates on a region, returning true if we should stop execution. 6 | * 7 | * @param region 8 | * @return 9 | */ 10 | boolean call(CRegion region); 11 | } 12 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/sound/CSound.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.sound; 2 | 3 | public interface CSound { 4 | void start(); 5 | 6 | float getPredictedDuration(); 7 | 8 | float getRemainingTimeToPlayOnTheDesyncLocalComputer(); 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/state/CGameState.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.state; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CGameState implements CHandle { 6 | DIVINE_INTERVENTION, 7 | DISCONNECTED, 8 | TIME_OF_DAY; 9 | 10 | public static CGameState[] VALUES = values(); 11 | 12 | @Override 13 | public int getHandleId() { 14 | return ordinal(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/state/CUnitState.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.state; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CUnitState implements CHandle { 6 | LIFE, 7 | MAX_LIFE, 8 | MANA, 9 | MAX_MANA; 10 | 11 | public static CUnitState[] VALUES = values(); 12 | 13 | @Override 14 | public int getHandleId() { 15 | return ordinal(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/timers/CTimerJassBase.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.timers; 2 | 3 | import com.etheller.interpreter.ast.scope.trigger.Trigger; 4 | import com.etheller.interpreter.ast.value.CodeJassValue; 5 | 6 | public abstract class CTimerJassBase extends CTimer { 7 | public abstract void addEvent(final Trigger trigger); 8 | 9 | public abstract void removeEvent(final Trigger trigger); 10 | 11 | public abstract void setHandlerFunc(final CodeJassValue handlerFunc); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/timers/CTimerSleepAction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.timers; 2 | 3 | import com.etheller.interpreter.ast.execution.JassThread; 4 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation; 5 | 6 | public class CTimerSleepAction extends CTimer { 7 | private final JassThread sleepingThread; 8 | 9 | public CTimerSleepAction(final JassThread sleepingThread) { 10 | this.sleepingThread = sleepingThread; 11 | } 12 | 13 | @Override 14 | public void onFire(final CSimulation simulation) { 15 | this.sleepingThread.setSleeping(false); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/trigger/enumtypes/CAttackTypeJass.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.trigger.enumtypes; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat.CAttackType; 4 | 5 | public enum CAttackTypeJass { 6 | ; 7 | public static final CAttackType[] VALUES = { CAttackType.SPELLS, CAttackType.NORMAL, CAttackType.PIERCE, 8 | CAttackType.SIEGE, CAttackType.MAGIC, CAttackType.CHAOS, CAttackType.HERO }; 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/trigger/enumtypes/CBlendMode.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.trigger.enumtypes; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CBlendMode implements CHandle { 6 | NONE, 7 | KEYALPHA, 8 | BLEND, 9 | ADDITIVE, 10 | MODULATE, 11 | MODULATE_2X; 12 | 13 | public static CBlendMode[] VALUES = values(); 14 | 15 | @Override 16 | public int getHandleId() { 17 | return ordinal(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/trigger/enumtypes/CCameraField.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.trigger.enumtypes; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CCameraField implements CHandle { 6 | TARGET_DISTANCE, 7 | FARZ, 8 | ANGLE_OF_ATTACK, 9 | FIELD_OF_VIEW, 10 | ROLL, 11 | ROTATION, 12 | ZOFFSET, 13 | NEARZ, // 1.32 14 | LOCAL_PITCH, 15 | LOCAL_YAW, 16 | LOCAL_ROLL; 17 | 18 | public static CCameraField[] VALUES = values(); 19 | 20 | @Override 21 | public int getHandleId() { 22 | return ordinal(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/trigger/enumtypes/CEffectType.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.trigger.enumtypes; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CEffectType implements CHandle { 6 | EFFECT, 7 | TARGET, 8 | CASTER, 9 | SPECIAL, 10 | AREA_EFFECT, 11 | MISSILE, 12 | LIGHTNING; 13 | 14 | public static CEffectType[] VALUES = values(); 15 | 16 | @Override 17 | public int getHandleId() { 18 | return ordinal(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/trigger/enumtypes/CGameSpeed.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.trigger.enumtypes; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CGameSpeed implements CHandle { 6 | SLOWEST, 7 | SLOW, 8 | NORMAL, 9 | FAST, 10 | FASTEST; 11 | 12 | public static CGameSpeed[] VALUES = values(); 13 | 14 | @Override 15 | public int getHandleId() { 16 | return ordinal(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/trigger/enumtypes/CMapDensity.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.trigger.enumtypes; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CMapDensity implements CHandle { 6 | NONE, 7 | LIGHT, 8 | MEDIUM, 9 | HEAVY; 10 | 11 | public static CMapDensity[] VALUES = values(); 12 | 13 | @Override 14 | public int getHandleId() { 15 | return ordinal(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/trigger/enumtypes/CMapDifficulty.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.trigger.enumtypes; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CMapDifficulty implements CHandle { 6 | EASY, 7 | NORMAL, 8 | HARD, 9 | INSANE; 10 | 11 | public static CMapDifficulty[] VALUES = values(); 12 | 13 | @Override 14 | public int getHandleId() { 15 | return ordinal(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/trigger/enumtypes/CPathingTypeJass.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.trigger.enumtypes; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CPathingTypeJass implements CHandle { 6 | ANY, 7 | WALKABILITY, 8 | FLYABILITY, 9 | BUILDABILITY, 10 | PEONHARVESTPATHING, 11 | BLIGHTPATHING, 12 | FLOATABILITY, 13 | AMPHIBIOUSPATHING; 14 | 15 | public static CPathingTypeJass[] VALUES = values(); 16 | 17 | @Override 18 | public int getHandleId() { 19 | return ordinal(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/trigger/enumtypes/CPlayerSlotState.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.trigger.enumtypes; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CPlayerSlotState implements CHandle { 6 | EMPTY, 7 | PLAYING, 8 | LEFT; 9 | 10 | public static CPlayerSlotState[] VALUES = values(); 11 | 12 | @Override 13 | public int getHandleId() { 14 | return ordinal(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/trigger/enumtypes/CRarityControl.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.trigger.enumtypes; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CRarityControl implements CHandle { 6 | FREQUENT, 7 | RARE; 8 | 9 | public static CRarityControl[] VALUES = values(); 10 | 11 | @Override 12 | public int getHandleId() { 13 | return ordinal(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/trigger/enumtypes/CSoundType.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.trigger.enumtypes; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CSoundType implements CHandle { 6 | EFFECT, 7 | EFFECT_LOOPED; 8 | 9 | public static CSoundType[] VALUES = values(); 10 | 11 | @Override 12 | public int getHandleId() { 13 | return ordinal(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/trigger/enumtypes/CTexMapFlags.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.trigger.enumtypes; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CTexMapFlags implements CHandle { 6 | NONE, 7 | WRAP_U, 8 | WRAP_V, 9 | WRAP_UV; 10 | 11 | public static CTexMapFlags[] VALUES = values(); 12 | 13 | @Override 14 | public int getHandleId() { 15 | return ordinal(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/trigger/enumtypes/CVersion.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.trigger.enumtypes; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CVersion implements CHandle { 6 | REIGN_OF_CHAOS, 7 | FROZEN_THRONE; 8 | 9 | public static CVersion[] VALUES = values(); 10 | 11 | @Override 12 | public int getHandleId() { 13 | return ordinal(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/trigger/uidialog/JassUIDialogButton.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.trigger.uidialog; 2 | 3 | public class JassUIDialogButton { 4 | private String text; 5 | 6 | public String getText() { 7 | return this.text; 8 | } 9 | 10 | public void setText(final String text) { 11 | this.text = text; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/unit/CUnitBehaviorChangeListener.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.unit; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation; 4 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit; 5 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.behaviors.CBehavior; 6 | 7 | public interface CUnitBehaviorChangeListener { 8 | public void onChange(final CSimulation game, CUnit unit, CBehavior previousBehavior, CBehavior newBehavior, boolean channeling); 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/util/AbilityTargetCheckReceiver.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.util; 2 | 3 | public interface AbilityTargetCheckReceiver { 4 | void targetOk(TARGET_TYPE target); 5 | 6 | 7 | void notAnActiveAbility(); 8 | 9 | void orderIdNotAccepted(); 10 | 11 | void targetCheckFailed(String commandStringErrorKey); 12 | 13 | public static enum TeamType { 14 | ALLIED, ENEMY, PLAYER_UNITS, CONTROL, NEUTRAL; 15 | } 16 | 17 | public static enum TargetType { 18 | UNIT, POINT, UNIT_OR_POINT, NO_TARGET 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/util/ResourceType.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.util; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum ResourceType implements CHandle { 6 | GOLD, LUMBER, FOOD, MANA; 7 | 8 | public static final ResourceType[] VALUES = values(); 9 | 10 | @Override 11 | public int getHandleId() { 12 | return ordinal(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/util/SimulationRenderComponent.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.util; 2 | 3 | public interface SimulationRenderComponent { 4 | SimulationRenderComponent DO_NOTHING = new SimulationRenderComponent() { 5 | @Override 6 | public void remove() { 7 | } 8 | }; 9 | 10 | void remove(); 11 | } 12 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/util/SimulationRenderComponentModel.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.util; 2 | 3 | public interface SimulationRenderComponentModel extends SimulationRenderComponent { 4 | SimulationRenderComponentModel DO_NOTHING = new SimulationRenderComponentModel() { 5 | @Override 6 | public void remove() { 7 | } 8 | 9 | @Override 10 | public void setHeight(final float height) { 11 | } 12 | }; 13 | 14 | void setHeight(float height); 15 | } 16 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/simulation/util/UiSoundLookup.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.simulation.util; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.UnitSound; 4 | 5 | public interface UiSoundLookup { 6 | UnitSound getSound(String commandStringErrorKey); 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/ui/BeginGameInformation.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.ui; 2 | 3 | import com.badlogic.gdx.utils.IntIntMap; 4 | import com.etheller.warsmash.viewer5.handlers.w3x.ui.mapsetup.CurrentNetGameMapLookup; 5 | 6 | public class BeginGameInformation { 7 | public CurrentNetGameMapLookup gameMapLookup; 8 | public byte[] hostInetAddress; 9 | public int hostUdpPort; 10 | public long sessionToken; 11 | public int localPlayerIndex; 12 | public IntIntMap serverSlotToMapSlot; 13 | public IntIntMap mapSlotToServerSlot; 14 | public boolean loadingStarted = false; 15 | } 16 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/ui/PlayerProfile.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.ui; 2 | 3 | public class PlayerProfile { 4 | private final String name; 5 | 6 | public PlayerProfile(final String name) { 7 | this.name = name; 8 | } 9 | 10 | public String getName() { 11 | return this.name; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/ui/WarsmashToggleableUI.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.ui; 2 | 3 | public interface WarsmashToggleableUI extends WarsmashBaseUI { 4 | void onHide(); 5 | 6 | void onShow(); 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/ui/command/ActiveCommand.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.ui.command; 2 | 3 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation; 4 | import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit; 5 | 6 | public interface ActiveCommand { 7 | boolean finish(CSimulation simulation, CUnit selectedUnit, float mouseScreenX, float mouseScreenY); 8 | } 9 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/ui/command/CommandCardCommandListener.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.ui.command; 2 | 3 | public interface CommandCardCommandListener { 4 | void onClick(int abilityHandleId, int orderId, boolean rightClick); 5 | 6 | void openMenu(int orderId); 7 | } 8 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/ui/command/CommandErrorListener.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.ui.command; 2 | 3 | import com.etheller.warsmash.util.War3ID; 4 | 5 | public interface CommandErrorListener { 6 | void showInterfaceError(int playerIndex, String message); 7 | void showCommandErrorWithoutSound(int playerIndex, String message); 8 | 9 | void showUpgradeCompleteAlert(int playerIndex, War3ID queuedRawcode, int level); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/ui/command/FocusableFrame.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.ui.command; 2 | 3 | import com.etheller.warsmash.parsers.fdf.frames.UIFrame; 4 | 5 | public interface FocusableFrame extends UIFrame { 6 | boolean isFocusable(); 7 | 8 | void onFocusGained(); 9 | 10 | void onFocusLost(); 11 | 12 | boolean keyDown(int keycode); 13 | 14 | boolean keyUp(int keycode); 15 | 16 | boolean keyTyped(char character); 17 | } 18 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/ui/command/MultiSelectionIconListener.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.ui.command; 2 | 3 | public interface MultiSelectionIconListener { 4 | void multiSelectIconClicked(int index); 5 | 6 | void multiSelectIconPress(int index); 7 | 8 | void multiSelectIconRelease(int index); 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/ui/command/QueueIconListener.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.ui.command; 2 | 3 | public interface QueueIconListener { 4 | void queueIconClicked(int index); 5 | } 6 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/ui/mapsetup/CurrentNetGameMapLookup.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.ui.mapsetup; 2 | 3 | public interface CurrentNetGameMapLookup { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/ui/mapsetup/CurrentNetGameMapLookupFile.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.ui.mapsetup; 2 | 3 | import java.io.File; 4 | 5 | public class CurrentNetGameMapLookupFile implements CurrentNetGameMapLookup { 6 | private final File file; 7 | 8 | public CurrentNetGameMapLookupFile(File file) { 9 | this.file = file; 10 | } 11 | 12 | public File getFile() { 13 | return this.file; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/ui/mapsetup/CurrentNetGameMapLookupPath.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.ui.mapsetup; 2 | 3 | public class CurrentNetGameMapLookupPath implements CurrentNetGameMapLookup { 4 | private final String path; 5 | 6 | public CurrentNetGameMapLookupPath(String path) { 7 | this.path = path; 8 | } 9 | 10 | public String getPath() { 11 | return this.path; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /core/src/com/etheller/warsmash/viewer5/handlers/w3x/ui/mapsetup/PlayerSlotPaneListener.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.viewer5.handlers.w3x.ui.mapsetup; 2 | 3 | import net.warsmash.uberserver.LobbyPlayerType; 4 | 5 | public interface PlayerSlotPaneListener { 6 | void setPlayerSlot(int index, LobbyPlayerType lobbyPlayerType); 7 | 8 | void setPlayerRace(int index, int raceItemIndex); 9 | } 10 | -------------------------------------------------------------------------------- /core/src/com/hiveworkshop/blizzard/casc/io/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * High level APIs for CASC file system interaction. 3 | *

4 | * These are intended for ease of use, dealing away with many of the low level details required to work with CASC. 5 | */ 6 | package com.hiveworkshop.blizzard.casc.io; -------------------------------------------------------------------------------- /core/src/com/hiveworkshop/blizzard/casc/nio/HashMismatchException.java: -------------------------------------------------------------------------------- 1 | package com.hiveworkshop.blizzard.casc.nio; 2 | 3 | import java.io.IOException; 4 | 5 | public class HashMismatchException extends IOException { 6 | private static final long serialVersionUID = -7133950344327038673L; 7 | 8 | public HashMismatchException() { 9 | } 10 | 11 | public HashMismatchException(String message) { 12 | super(message); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /core/src/com/hiveworkshop/blizzard/casc/nio/MalformedCASCStructureException.java: -------------------------------------------------------------------------------- 1 | package com.hiveworkshop.blizzard.casc.nio; 2 | 3 | import java.io.IOException; 4 | 5 | public class MalformedCASCStructureException extends IOException { 6 | private static final long serialVersionUID = -5323382445554597608L; 7 | 8 | public MalformedCASCStructureException(String message) { 9 | super(message); 10 | } 11 | 12 | public MalformedCASCStructureException(String message, Throwable cause) { 13 | super(message, cause); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /core/src/com/hiveworkshop/rms/parsers/mdlx/MdlxChunk.java: -------------------------------------------------------------------------------- 1 | package com.hiveworkshop.rms.parsers.mdlx; 2 | 3 | public interface MdlxChunk { 4 | long getByteLength(int version); 5 | } 6 | -------------------------------------------------------------------------------- /core/src/com/hiveworkshop/rms/util/Descriptor.java: -------------------------------------------------------------------------------- 1 | package com.hiveworkshop.rms.util; 2 | 3 | public interface Descriptor { 4 | E create(); 5 | 6 | } 7 | -------------------------------------------------------------------------------- /core/src/jni/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | 3 | include $(CLEAR_VARS) 4 | 5 | LOCAL_MODULE := CNode 6 | 7 | LOCAL_C_INCLUDES := $(LOCAL_PATH)/include 8 | 9 | LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES) 10 | 11 | LOCAL_SRC_FILES := \ 12 | src/cnode.cpp 13 | 14 | LOCAL_CPPFLAGS += -O3 -flto=thin -std=c++20 15 | LOCAL_LDFLAGS += -flto=thin -Wl,-plugin-opt=-emulated-tls -fuse-ld=lld 16 | LOCAL_LDLIBS += -llog 17 | include $(BUILD_SHARED_LIBRARY) 18 | -------------------------------------------------------------------------------- /core/src/jni/Application.mk: -------------------------------------------------------------------------------- 1 | APP_STL := c++_static -------------------------------------------------------------------------------- /core/src/jni/src/cnode.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by sandstranger on 26.12.2024. 3 | // 4 | 5 | #ifndef WARSMASH_ANDROID_CNODE_H 6 | #define WARSMASH_ANDROID_CNODE_H 7 | #include "jni.h" 8 | #include "vector" 9 | #include 10 | #include "unordered_map" 11 | #endif //WARSMASH_ANDROID_CNODE_H 12 | -------------------------------------------------------------------------------- /core/src/mpq/MPQException.java: -------------------------------------------------------------------------------- 1 | package mpq; 2 | 3 | public class MPQException extends Exception { 4 | 5 | /** 6 | * 7 | */ 8 | private static final long serialVersionUID = 1106829951432295418L; 9 | 10 | public MPQException() { 11 | } 12 | 13 | public MPQException(String arg0) { 14 | super(arg0); 15 | } 16 | 17 | public MPQException(Throwable arg0) { 18 | super(arg0); 19 | } 20 | 21 | public MPQException(String arg0, Throwable arg1) { 22 | super(arg0, arg1); 23 | } 24 | 25 | public MPQException(String arg0, Throwable arg1, boolean arg2, boolean arg3) { 26 | super(arg0, arg1, arg2, arg3); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /core/src/mpq/compression/pkware/PKException.java: -------------------------------------------------------------------------------- 1 | package mpq.compression.pkware; 2 | 3 | public class PKException extends Exception { 4 | 5 | /** 6 | * 7 | */ 8 | private static final long serialVersionUID = 6514086311357764773L; 9 | 10 | public PKException(String arg0) { 11 | super(arg0); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /core/src/mpq/data/BlockTableEntry.java: -------------------------------------------------------------------------------- 1 | package mpq.data; 2 | 3 | import java.nio.ByteBuffer; 4 | 5 | public class BlockTableEntry extends Raw { 6 | public static final int STRUCT_SIZE = 16; 7 | 8 | public BlockTableEntry(ByteBuffer source) { 9 | super(source); 10 | } 11 | 12 | public BlockTableEntry() { 13 | super(); 14 | } 15 | 16 | public int getFilePosition() { 17 | return data.getInt(0); 18 | } 19 | 20 | public int getCompressedSize() { 21 | return data.getInt(4); 22 | } 23 | 24 | public int getFileSize() { 25 | return data.getInt(8); 26 | } 27 | 28 | public int getFlags() { 29 | return data.getInt(12); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /core/src/mpq/data/HashTableEntry.java: -------------------------------------------------------------------------------- 1 | package mpq.data; 2 | 3 | import java.nio.ByteBuffer; 4 | 5 | public class HashTableEntry extends Raw { 6 | public static final int STRUCT_SIZE = 16; 7 | 8 | public HashTableEntry(ByteBuffer source) { 9 | super(source); 10 | } 11 | 12 | public HashTableEntry() { 13 | super(); 14 | } 15 | 16 | public long getHash() { 17 | return data.getLong(0); 18 | } 19 | 20 | public short getLocale() { 21 | return data.getShort(8); 22 | } 23 | 24 | public short getPlatform() { 25 | return data.getShort(10); 26 | } 27 | 28 | public int getBlockIndex() { 29 | return data.getInt(12); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /core/src/mpq/data/Raw.java: -------------------------------------------------------------------------------- 1 | package mpq.data; 2 | 3 | import java.nio.ByteBuffer; 4 | import java.nio.ByteOrder; 5 | 6 | public abstract class Raw { 7 | protected ByteBuffer data; 8 | 9 | public Raw(ByteBuffer source){ 10 | move(source); 11 | } 12 | 13 | public Raw(){ 14 | data = null; 15 | } 16 | 17 | public void move(ByteBuffer source){ 18 | data = source.slice().order(ByteOrder.LITTLE_ENDIAN); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /core/src/mpq/data/UserDataHeader.java: -------------------------------------------------------------------------------- 1 | package mpq.data; 2 | 3 | import java.nio.ByteBuffer; 4 | 5 | public class UserDataHeader extends Raw{ 6 | public static final int STRUCT_SIZE = 16 - 8; 7 | 8 | public UserDataHeader(ByteBuffer source) { 9 | super(source); 10 | } 11 | 12 | 13 | public int getArchiveOffset() { 14 | return data.getInt(0); 15 | } 16 | 17 | public int getUserDataSize() { 18 | return data.getInt(4); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /directory-picker/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /directory-picker/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/directory-picker/consumer-rules.pro -------------------------------------------------------------------------------- /directory-picker/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/drawable-hdpi/ic_chooser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/directory-picker/src/main/res/drawable-hdpi/ic_chooser.png -------------------------------------------------------------------------------- /directory-picker/src/main/res/drawable-hdpi/ic_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/directory-picker/src/main/res/drawable-hdpi/ic_file.png -------------------------------------------------------------------------------- /directory-picker/src/main/res/drawable-hdpi/ic_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/directory-picker/src/main/res/drawable-hdpi/ic_folder.png -------------------------------------------------------------------------------- /directory-picker/src/main/res/drawable-hdpi/ic_provider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/directory-picker/src/main/res/drawable-hdpi/ic_provider.png -------------------------------------------------------------------------------- /directory-picker/src/main/res/drawable-mdpi/ic_chooser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/directory-picker/src/main/res/drawable-mdpi/ic_chooser.png -------------------------------------------------------------------------------- /directory-picker/src/main/res/drawable-mdpi/ic_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/directory-picker/src/main/res/drawable-mdpi/ic_file.png -------------------------------------------------------------------------------- /directory-picker/src/main/res/drawable-mdpi/ic_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/directory-picker/src/main/res/drawable-mdpi/ic_folder.png -------------------------------------------------------------------------------- /directory-picker/src/main/res/drawable-mdpi/ic_provider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/directory-picker/src/main/res/drawable-mdpi/ic_provider.png -------------------------------------------------------------------------------- /directory-picker/src/main/res/drawable-mdpi/listview_item_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/drawable-xhdpi/ic_chooser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/directory-picker/src/main/res/drawable-xhdpi/ic_chooser.png -------------------------------------------------------------------------------- /directory-picker/src/main/res/drawable-xhdpi/ic_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/directory-picker/src/main/res/drawable-xhdpi/ic_file.png -------------------------------------------------------------------------------- /directory-picker/src/main/res/drawable-xhdpi/ic_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/directory-picker/src/main/res/drawable-xhdpi/ic_folder.png -------------------------------------------------------------------------------- /directory-picker/src/main/res/drawable-xhdpi/ic_provider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/directory-picker/src/main/res/drawable-xhdpi/ic_provider.png -------------------------------------------------------------------------------- /directory-picker/src/main/res/drawable-xxhdpi/ic_chooser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/directory-picker/src/main/res/drawable-xxhdpi/ic_chooser.png -------------------------------------------------------------------------------- /directory-picker/src/main/res/drawable-xxhdpi/ic_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/directory-picker/src/main/res/drawable-xxhdpi/ic_file.png -------------------------------------------------------------------------------- /directory-picker/src/main/res/drawable-xxhdpi/ic_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/directory-picker/src/main/res/drawable-xxhdpi/ic_folder.png -------------------------------------------------------------------------------- /directory-picker/src/main/res/drawable-xxhdpi/ic_provider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/directory-picker/src/main/res/drawable-xxhdpi/ic_provider.png -------------------------------------------------------------------------------- /directory-picker/src/main/res/drawable/ic_add_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/drawable/ic_delete_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/drawable/ic_menu_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/values-ca/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Carpeta buida 5 | S\'ha tret o desmuntat l\'emmagatzematge. 6 | Seleccioneu un fitxer 7 | Error en seleccionar el fitxer 8 | 9 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/values-de/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Leerer Ordner 4 | Speicher wurde entfernt. 5 | Wähle eine Datei 6 | Fehler beim Öffnen der Datei 7 | 8 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/values-es/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Directorio vacío 5 | Se ha retirado o desmontado el almacenamiento. 6 | Seleccione un archivo 7 | Error al seleccionar el archivo 8 | 9 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/values-fr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Dossier vide 5 | Le stockage a été enlevé ou démonté. 6 | Sélectionnez un fichier 7 | Erreur lors de la sélection du fichier 8 | 9 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/values-ga/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Comhadlann fholamh 5 | Baineadh amach an gléas stórála nó dínascadh é. 6 | Roghnaigh comhad 7 | Tharla botún fad is a bhí comhad á roghnú 8 | 9 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/values-in/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Direktori Kosong 6 | Penyimpanan dilepaskan atau dicabut 7 | Pilih file 8 | Gagal memilih File 9 | Penyimpanan internal 10 | 11 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/values-in/strings_0.xml: -------------------------------------------------------------------------------- 1 | 2 | Pilih 3 | Pilih kamus 4 | Pilih 5 | Batal 6 | Folder baru 7 | Hapus 8 | Batal 9 | OK 10 | 11 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/values-it/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Directory vuota 5 | Lo spazio di archiviazione è stato rimosso o smontato. 6 | Selezionare un file 7 | Errore nel selezionare il File 8 | 9 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/values-ka/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ცარიელი საქაღალდე 4 | მეხსიერება მოხსნილია 5 | აირჩიეთ ფაილი 6 | შეცდომა ფაილის არჩევისას 7 | შიდა მეხსიერება 8 | 9 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/values-ka/strings_0.xml: -------------------------------------------------------------------------------- 1 | 2 | აირჩიეთ 3 | აირჩიეთ საქაღალდე 4 | არჩევა 5 | გაუქმება 6 | ახალი საქაღალდე 7 | წაშლა 8 | გაუქმება 9 | შენახვა 10 | 11 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/values-ko/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 빈 디렉토리 5 | 저장소가 제거되었습니다. 6 | 파일 선택 7 | 파일 선택 오류 8 | 9 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/values-pl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Pusty katalog 5 | Pamięć została usunięta lub odmontowana. 6 | Wybierz plik 7 | Błąd, podczas wybierania pliku 8 | 9 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/values-pt-rBR/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Pasta Vazia 5 | Unidade externa removida ou não preparada. 6 | Selecione um Arquivo 7 | Erro ao selecionar o Arquivo 8 | 9 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/values-ru/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Пустая папка 5 | Storage was removed or unmounted. 6 | Выберите файл 7 | Ошибка при выборе файла 8 | 9 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/values-v19/bool.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | false 5 | true 6 | 7 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/values-zh-rCN/strings_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 选择 3 | 选择一个字典文件 4 | 选择 5 | 取消 6 | 新建文件夹 7 | 删除 8 | 放弃 9 | 确定 10 | 11 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/values-zh-rTW/strings_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 選擇 3 | 選擇一個字典文件 4 | 選擇 5 | 取消 6 | 新建目錄 7 | 刪除 8 | 放棄 9 | 確定 10 | 11 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/values/bool.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | true 5 | false 6 | 7 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #ff80cbc4 4 | #ff009688 5 | #fffbfbfb 6 | #4027bfad 7 | #4080cbc4 8 | 9 | -------------------------------------------------------------------------------- /directory-picker/src/main/res/values/strings_0.xml: -------------------------------------------------------------------------------- 1 | 2 | Choose 3 | Pick a dictionary 4 | Select 5 | Cancel 6 | New folder 7 | Delete 8 | Cancel 9 | OK 10 | 11 | -------------------------------------------------------------------------------- /directory-picker/src/test/java/com/example/directory_picker/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.example.directory_picker; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/3.txt: -------------------------------------------------------------------------------- 1 | First release -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/4.txt: -------------------------------------------------------------------------------- 1 | experimental feature: all nodes from CPathFindingProcessors now stores as struct in c++ code 2 | android ndk was updated to 26.3.11579264 release 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/5.txt: -------------------------------------------------------------------------------- 1 | gamepad support was added -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/full_description.txt: -------------------------------------------------------------------------------- 1 | This is unofficial Warsmash android port. Warsmash is Warcraft III emulator made using LibGDX game engine. -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/fastlane/metadata/android/en-US/images/icon.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/short_description.txt: -------------------------------------------------------------------------------- 1 | Warsmash Android port -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/title.txt: -------------------------------------------------------------------------------- 1 | Warsmash -------------------------------------------------------------------------------- /fdfparser/src/com/etheller/warsmash/fdfparser/FDFParserBuilder.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.fdfparser; 2 | 3 | public interface FDFParserBuilder { 4 | FDFParser build(String path); 5 | } 6 | -------------------------------------------------------------------------------- /fdfparser/src/com/etheller/warsmash/parsers/fdf/datamodel/BackdropCornerFlags.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.fdf.datamodel; 2 | 3 | import java.util.EnumSet; 4 | 5 | public enum BackdropCornerFlags { 6 | UL, 7 | UR, 8 | BL, 9 | BR, 10 | T, 11 | L, 12 | B, 13 | R; 14 | 15 | public static EnumSet parseCornerFlags(final String cornerFlags) { 16 | final EnumSet set = EnumSet.noneOf(BackdropCornerFlags.class); 17 | for (final String flag : cornerFlags.split("\\|")) { 18 | if (!"".equals(flag)) { 19 | set.add(BackdropCornerFlags.valueOf(flag)); 20 | } 21 | } 22 | return set; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /fdfparser/src/com/etheller/warsmash/parsers/fdf/datamodel/ControlStyle.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.fdf.datamodel; 2 | 3 | import java.util.EnumSet; 4 | 5 | public enum ControlStyle { 6 | AUTOTRACK, 7 | HIGHLIGHTONFOCUS, 8 | HIGHLIGHTONMOUSEOVER; 9 | 10 | public static EnumSet parseControlStyle(final String controlStyles) { 11 | final EnumSet set = EnumSet.noneOf(ControlStyle.class); 12 | if (controlStyles != null) { 13 | for (final String flag : controlStyles.split("\\|")) { 14 | if (!"".equals(flag)) { 15 | set.add(ControlStyle.valueOf(flag)); 16 | } 17 | } 18 | } 19 | return set; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /fdfparser/src/com/etheller/warsmash/parsers/fdf/datamodel/FontFlags.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.fdf.datamodel; 2 | 3 | import java.util.EnumSet; 4 | 5 | public enum FontFlags { 6 | FIXEDSIZE, 7 | PASSWORDFIELD; 8 | 9 | public static EnumSet parseFontFlags(final String cornerFlags) { 10 | final EnumSet set = EnumSet.noneOf(FontFlags.class); 11 | for (final String flag : cornerFlags.split("\\|")) { 12 | if (!"".equals(flag)) { 13 | set.add(FontFlags.valueOf(flag)); 14 | } 15 | } 16 | return set; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /fdfparser/src/com/etheller/warsmash/parsers/fdf/datamodel/FrameClass.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.fdf.datamodel; 2 | 3 | public enum FrameClass { 4 | Frame, 5 | String, 6 | Texture, 7 | Layer; 8 | } 9 | -------------------------------------------------------------------------------- /fdfparser/src/com/etheller/warsmash/parsers/fdf/datamodel/FrameEvent.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.fdf.datamodel; 2 | 3 | public enum FrameEvent { 4 | CONTROL_CLICK, 5 | MOUSE_ENTER, 6 | MOUSE_LEAVE, 7 | MOUSE_UP, 8 | MOUSE_DOWN, 9 | MOUSE_WHEEL, 10 | CHECKBOX_CHECKED, 11 | CHECKBOX_UNCHECKED, 12 | EDITBOX_TEXT_CHANGED, 13 | POPUPMENU_ITEM_CHANGED, 14 | MOUSE_DOUBLECLICK, 15 | SPRITE_ANIM_UPDATE, 16 | SLIDER_VALUE_CHANGED, 17 | DIALOG_CANCEL, 18 | DIALOG_ACCEPT, 19 | EDITBOX_ENTER 20 | } 21 | -------------------------------------------------------------------------------- /fdfparser/src/com/etheller/warsmash/parsers/fdf/datamodel/FramePoint.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.fdf.datamodel; 2 | 3 | public enum FramePoint { 4 | TOPLEFT, 5 | TOP, 6 | TOPRIGHT, 7 | LEFT, 8 | CENTER, 9 | RIGHT, 10 | BOTTOMLEFT, 11 | BOTTOM, 12 | BOTTOMRIGHT; 13 | } 14 | -------------------------------------------------------------------------------- /fdfparser/src/com/etheller/warsmash/parsers/fdf/datamodel/HighlightAlphaMode.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.fdf.datamodel; 2 | 3 | public enum HighlightAlphaMode { 4 | ADD; 5 | } 6 | -------------------------------------------------------------------------------- /fdfparser/src/com/etheller/warsmash/parsers/fdf/datamodel/HighlightType.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.fdf.datamodel; 2 | 3 | public enum HighlightType { 4 | FILETEXTURE; 5 | } 6 | -------------------------------------------------------------------------------- /fdfparser/src/com/etheller/warsmash/parsers/fdf/datamodel/MenuItem.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.fdf.datamodel; 2 | 3 | public class MenuItem { 4 | private final String text; 5 | private final int numericValue; 6 | 7 | public MenuItem(final String text, final int numericValue) { 8 | this.text = text; 9 | this.numericValue = numericValue; 10 | } 11 | 12 | public String getText() { 13 | return this.text; 14 | } 15 | 16 | public int getNumericValue() { 17 | return this.numericValue; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /fdfparser/src/com/etheller/warsmash/parsers/fdf/datamodel/TextJustify.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.fdf.datamodel; 2 | 3 | public enum TextJustify { 4 | TOP, 5 | MIDDLE, 6 | BOTTOM, 7 | LEFT, 8 | CENTER, 9 | RIGHT; 10 | } 11 | -------------------------------------------------------------------------------- /fdfparser/src/com/etheller/warsmash/parsers/fdf/datamodel/Vector2Definition.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.fdf.datamodel; 2 | 3 | public class Vector2Definition { 4 | private float x; 5 | private float y; 6 | 7 | public Vector2Definition(final float x, final float y) { 8 | this.x = x; 9 | this.y = y; 10 | } 11 | 12 | public float getX() { 13 | return this.x; 14 | } 15 | 16 | public float getY() { 17 | return this.y; 18 | } 19 | 20 | public void setX(final float x) { 21 | this.x = x; 22 | } 23 | 24 | public void setY(final float y) { 25 | this.y = y; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /fdfparser/src/com/etheller/warsmash/parsers/fdf/datamodel/Vector3Definition.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.fdf.datamodel; 2 | 3 | public class Vector3Definition { 4 | private final float x, y, z; 5 | 6 | public Vector3Definition(final float x, final float y, final float z) { 7 | this.x = x; 8 | this.y = y; 9 | this.z = z; 10 | } 11 | 12 | public float getX() { 13 | return this.x; 14 | } 15 | 16 | public float getY() { 17 | return this.y; 18 | } 19 | 20 | public float getZ() { 21 | return this.z; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /fdfparser/src/com/etheller/warsmash/parsers/fdf/datamodel/fields/FloatFrameDefinitionField.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.fdf.datamodel.fields; 2 | 3 | public class FloatFrameDefinitionField implements FrameDefinitionField { 4 | private final float value; 5 | 6 | public FloatFrameDefinitionField(final float value) { 7 | this.value = value; 8 | } 9 | 10 | public float getValue() { 11 | return this.value; 12 | } 13 | 14 | @Override 15 | public TYPE visit(final FrameDefinitionFieldVisitor visitor) { 16 | return visitor.accept(this); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /fdfparser/src/com/etheller/warsmash/parsers/fdf/datamodel/fields/FrameDefinitionField.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.fdf.datamodel.fields; 2 | 3 | public interface FrameDefinitionField { 4 | TYPE visit(FrameDefinitionFieldVisitor visitor); 5 | } 6 | -------------------------------------------------------------------------------- /fdfparser/src/com/etheller/warsmash/parsers/fdf/datamodel/fields/StringFrameDefinitionField.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.parsers.fdf.datamodel.fields; 2 | 3 | public class StringFrameDefinitionField implements FrameDefinitionField { 4 | private final String value; 5 | 6 | public StringFrameDefinitionField(final String value) { 7 | this.value = value; 8 | } 9 | 10 | public String getValue() { 11 | return this.value; 12 | } 13 | 14 | @Override 15 | public TYPE visit(final FrameDefinitionFieldVisitor visitor) { 16 | return visitor.accept(this); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /gdx-controllers-android/build.gradle: -------------------------------------------------------------------------------- 1 | configurations.maybeCreate("default") 2 | artifacts.add("default", file('gdx-controllers-android-2.2.3.aar')) -------------------------------------------------------------------------------- /gdx-controllers-android/gdx-controllers-android-2.2.3.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/gdx-controllers-android/gdx-controllers-android-2.2.3.aar -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.daemon=true 2 | org.gradle.jvmargs=-Xmx6g 3 | org.gradle.configureondemand=false 4 | androidPluginVersion=8.7.3 5 | android.suppressUnsupportedCompileSdk=34 6 | android.useAndroidX=true 7 | # Kotlin code style for this project: "official" or "obsolete": 8 | kotlin.code.style=official 9 | # Enables namespacing of each library's R class so that its R class includes only the 10 | # resources declared in the library itself and none from the library's dependencies, 11 | # thereby reducing the size of the R class for that library 12 | android.nonTransitiveRClass=true 13 | kapt.use.k2=true 14 | ksp.useK2=true -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Dec 27 14:19:07 GMT+04:00 2024 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /jars/blp-iio-plugin.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/jars/blp-iio-plugin.jar -------------------------------------------------------------------------------- /jars/gson-2.10.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/jars/gson-2.10.jar -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/definition/JassDefinitionBlock.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.definition; 2 | 3 | import com.etheller.interpreter.ast.scope.Scope; 4 | import com.etheller.interpreter.ast.util.JassProgram; 5 | 6 | public interface JassDefinitionBlock { 7 | void define(Scope scope, JassProgram jassProgram); 8 | } 9 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/definition/JassImplementModuleDefinition.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.definition; 2 | 3 | public class JassImplementModuleDefinition { 4 | private final String moduleName; 5 | private final boolean optional; 6 | 7 | public JassImplementModuleDefinition(final String moduleName, final boolean optional) { 8 | this.moduleName = moduleName; 9 | this.optional = optional; 10 | } 11 | 12 | public String getModuleName() { 13 | return this.moduleName; 14 | } 15 | 16 | public boolean isOptional() { 17 | return this.optional; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/definition/JassLibraryRequirementDefinition.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.definition; 2 | 3 | public class JassLibraryRequirementDefinition { 4 | private final String requirement; 5 | private final boolean optional; 6 | 7 | public JassLibraryRequirementDefinition(final String requirement, final boolean optional) { 8 | this.requirement = requirement; 9 | this.optional = optional; 10 | } 11 | 12 | public String getRequirement() { 13 | return this.requirement; 14 | } 15 | 16 | public boolean isOptional() { 17 | return this.optional; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/definition/JassStructLikeDefinitionBlock.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.definition; 2 | 3 | import com.etheller.interpreter.ast.struct.JassStructMemberTypeDefinition; 4 | 5 | public interface JassStructLikeDefinitionBlock { 6 | public void add(final JassStructMemberTypeDefinition memberType); 7 | 8 | public void add(final JassMethodDefinitionBlock methodDefinition); 9 | 10 | public void add(final JassImplementModuleDefinition implementModuleDefinition); 11 | } 12 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/execution/instruction/BeginLoopInstruction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.execution.instruction; 2 | 3 | import com.etheller.interpreter.ast.execution.JassThread; 4 | 5 | public class BeginLoopInstruction implements JassInstruction { 6 | 7 | @Override 8 | public void run(final JassThread thread) { 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/execution/instruction/GlobalAssignmentInstruction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.execution.instruction; 2 | 3 | import com.etheller.interpreter.ast.execution.JassThread; 4 | 5 | public class GlobalAssignmentInstruction implements JassInstruction { 6 | private final int globalId; 7 | 8 | public GlobalAssignmentInstruction(final int globalId) { 9 | this.globalId = globalId; 10 | } 11 | 12 | @Override 13 | public void run(final JassThread thread) { 14 | thread.globalScope.getAssignableGlobalById(this.globalId).setValue(thread.stackFrame.pop()); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/execution/instruction/GlobalReferenceInstruction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.execution.instruction; 2 | 3 | import com.etheller.interpreter.ast.execution.JassThread; 4 | 5 | public class GlobalReferenceInstruction implements JassInstruction { 6 | private final int globalId; 7 | 8 | public GlobalReferenceInstruction(final int globalId) { 9 | this.globalId = globalId; 10 | } 11 | 12 | @Override 13 | public void run(final JassThread thread) { 14 | thread.stackFrame.push(thread.globalScope.getGlobalById(this.globalId)); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/execution/instruction/JassInstruction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.execution.instruction; 2 | 3 | import com.etheller.interpreter.ast.execution.JassThread; 4 | 5 | public interface JassInstruction { 6 | void run(JassThread thread); 7 | } 8 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/execution/instruction/JassThrowInstruction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.execution.instruction; 2 | 3 | import com.etheller.interpreter.ast.debug.JassException; 4 | import com.etheller.interpreter.ast.execution.JassThread; 5 | 6 | public class JassThrowInstruction implements JassInstruction { 7 | private final String message; 8 | 9 | public JassThrowInstruction(final String message) { 10 | this.message = message; 11 | } 12 | 13 | @Override 14 | public void run(final JassThread thread) { 15 | throw new JassException(thread.globalScope, this.message, null); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/execution/instruction/LocalAssignmentInstruction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.execution.instruction; 2 | 3 | import com.etheller.interpreter.ast.execution.JassThread; 4 | 5 | public class LocalAssignmentInstruction implements JassInstruction { 6 | private final int localId; 7 | 8 | public LocalAssignmentInstruction(final int localId) { 9 | this.localId = localId; 10 | } 11 | 12 | @Override 13 | public void run(final JassThread thread) { 14 | thread.stackFrame.contents.set(this.localId, thread.stackFrame.pop()); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/execution/instruction/LocalReferenceInstruction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.execution.instruction; 2 | 3 | import com.etheller.interpreter.ast.execution.JassThread; 4 | 5 | public class LocalReferenceInstruction implements JassInstruction { 6 | private final int localId; 7 | 8 | public LocalReferenceInstruction(final int localId) { 9 | this.localId = localId; 10 | } 11 | 12 | @Override 13 | public void run(final JassThread thread) { 14 | thread.stackFrame.push(thread.stackFrame.contents.get(this.localId)); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/execution/instruction/NegateInstruction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.execution.instruction; 2 | 3 | import com.etheller.interpreter.ast.execution.JassThread; 4 | import com.etheller.interpreter.ast.value.visitor.NegateJassValueVisitor; 5 | 6 | public class NegateInstruction implements JassInstruction { 7 | 8 | @Override 9 | public void run(final JassThread thread) { 10 | thread.stackFrame.push(thread.stackFrame.pop().visit(NegateJassValueVisitor.getInstance())); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/execution/instruction/NotInstruction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.execution.instruction; 2 | 3 | import com.etheller.interpreter.ast.execution.JassThread; 4 | import com.etheller.interpreter.ast.value.visitor.NotJassValueVisitor; 5 | 6 | public class NotInstruction implements JassInstruction { 7 | 8 | @Override 9 | public void run(final JassThread thread) { 10 | thread.stackFrame.push(thread.stackFrame.pop().visit(NotJassValueVisitor.getInstance())); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/execution/instruction/PeekInstruction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.execution.instruction; 2 | 3 | import com.etheller.interpreter.ast.execution.JassThread; 4 | 5 | public class PeekInstruction implements JassInstruction { 6 | public static final PeekInstruction INSTANCE = new PeekInstruction(); 7 | 8 | @Override 9 | public void run(final JassThread thread) { 10 | thread.stackFrame.push(thread.stackFrame.peek()); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/execution/instruction/PopInstruction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.execution.instruction; 2 | 3 | import com.etheller.interpreter.ast.execution.JassThread; 4 | 5 | public class PopInstruction implements JassInstruction { 6 | public static final PopInstruction INSTANCE = new PopInstruction(); 7 | 8 | @Override 9 | public void run(final JassThread thread) { 10 | thread.stackFrame.pop(); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/execution/instruction/PushLiteralInstruction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.execution.instruction; 2 | 3 | import com.etheller.interpreter.ast.execution.JassThread; 4 | import com.etheller.interpreter.ast.value.JassValue; 5 | 6 | public class PushLiteralInstruction implements JassInstruction { 7 | private final JassValue value; 8 | 9 | public PushLiteralInstruction(final JassValue value) { 10 | this.value = value; 11 | } 12 | 13 | @Override 14 | public void run(final JassThread thread) { 15 | thread.stackFrame.push(this.value); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/execution/instruction/SetDebugLineNoInstruction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.execution.instruction; 2 | 3 | import com.etheller.interpreter.ast.execution.JassThread; 4 | 5 | public class SetDebugLineNoInstruction implements JassInstruction { 6 | private final int lineNo; 7 | 8 | public SetDebugLineNoInstruction(final int lineNo) { 9 | this.lineNo = lineNo; 10 | } 11 | 12 | @Override 13 | public void run(final JassThread thread) { 14 | thread.stackFrame.debugLineNo = this.lineNo; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/expression/FunctionReferenceJassExpression.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.expression; 2 | 3 | public class FunctionReferenceJassExpression implements JassExpression { 4 | private final String identifier; 5 | 6 | public FunctionReferenceJassExpression(final String identifier) { 7 | this.identifier = identifier; 8 | } 9 | 10 | @Override 11 | public T accept(final JassExpressionVisitor visitor) { 12 | return visitor.visit(this); 13 | } 14 | 15 | public String getIdentifier() { 16 | return this.identifier; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/expression/JassExpression.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.expression; 2 | 3 | public interface JassExpression { 4 | T accept(JassExpressionVisitor visitor); 5 | } 6 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/expression/JassNewExpression.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.expression; 2 | 3 | import com.etheller.interpreter.ast.value.StructJassType; 4 | 5 | public class JassNewExpression implements JassExpression { 6 | private final StructJassType type; 7 | 8 | public JassNewExpression(final StructJassType type) { 9 | this.type = type; 10 | } 11 | 12 | @Override 13 | public T accept(final JassExpressionVisitor visitor) { 14 | return visitor.visit(this); 15 | } 16 | 17 | public StructJassType getType() { 18 | return this.type; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/expression/LiteralJassExpression.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.expression; 2 | 3 | import com.etheller.interpreter.ast.value.JassValue; 4 | 5 | public class LiteralJassExpression implements JassExpression { 6 | private final JassValue value; 7 | 8 | public LiteralJassExpression(final JassValue value) { 9 | this.value = value; 10 | } 11 | 12 | @Override 13 | public T accept(final JassExpressionVisitor visitor) { 14 | return visitor.visit(this); 15 | } 16 | 17 | public JassValue getValue() { 18 | return this.value; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/expression/NegateJassExpression.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.expression; 2 | 3 | public class NegateJassExpression implements JassExpression { 4 | private final JassExpression expression; 5 | 6 | public NegateJassExpression(final JassExpression expression) { 7 | this.expression = expression; 8 | } 9 | 10 | @Override 11 | public T accept(final JassExpressionVisitor visitor) { 12 | return visitor.visit(this); 13 | } 14 | 15 | public JassExpression getExpression() { 16 | return this.expression; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/expression/NotJassExpression.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.expression; 2 | 3 | public class NotJassExpression implements JassExpression { 4 | private final JassExpression expression; 5 | 6 | public NotJassExpression(final JassExpression expression) { 7 | this.expression = expression; 8 | } 9 | 10 | @Override 11 | public T accept(final JassExpressionVisitor visitor) { 12 | return visitor.visit(this); 13 | } 14 | 15 | public JassExpression getExpression() { 16 | return this.expression; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/expression/ReferenceJassExpression.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.expression; 2 | 3 | public class ReferenceJassExpression implements JassExpression { 4 | private final String identifier; 5 | 6 | public ReferenceJassExpression(final String identifier) { 7 | this.identifier = identifier; 8 | } 9 | 10 | @Override 11 | public T accept(final JassExpressionVisitor visitor) { 12 | return visitor.visit(this); 13 | } 14 | 15 | public String getIdentifier() { 16 | return this.identifier; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/function/JassFunction.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.function; 2 | 3 | import java.util.List; 4 | 5 | import com.etheller.interpreter.ast.scope.GlobalScope; 6 | import com.etheller.interpreter.ast.scope.TriggerExecutionScope; 7 | import com.etheller.interpreter.ast.value.JassValue; 8 | 9 | public interface JassFunction { 10 | JassValue call(List arguments, GlobalScope globalScope, TriggerExecutionScope triggerScope); 11 | } 12 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/qualifier/JassQualifier.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.qualifier; 2 | 3 | public enum JassQualifier { 4 | PUBLIC, 5 | PRIVATE, 6 | STATIC, 7 | CONSTANT, 8 | READONLY 9 | } 10 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/scope/TriggerExecutionScope.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.scope; 2 | 3 | import com.etheller.interpreter.ast.scope.trigger.Trigger; 4 | 5 | public class TriggerExecutionScope { 6 | public static final TriggerExecutionScope EMPTY = new TriggerExecutionScope(null); 7 | 8 | private final Trigger triggeringTrigger; 9 | 10 | public TriggerExecutionScope(final Trigger triggeringTrigger) { 11 | this.triggeringTrigger = triggeringTrigger; 12 | } 13 | 14 | public Trigger getTriggeringTrigger() { 15 | return this.triggeringTrigger; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/scope/TypeDefinition.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.scope; 2 | 3 | public class TypeDefinition { 4 | private final String name; 5 | private final String supertype; 6 | 7 | public TypeDefinition(final String name, final String supertype) { 8 | this.name = name; 9 | this.supertype = supertype; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/scope/trigger/TriggerBooleanExpression.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.scope.trigger; 2 | 3 | import com.etheller.interpreter.ast.scope.GlobalScope; 4 | import com.etheller.interpreter.ast.scope.TriggerExecutionScope; 5 | 6 | public interface TriggerBooleanExpression { 7 | boolean evaluate(GlobalScope globalScope, TriggerExecutionScope triggerScope); 8 | } 9 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/scope/trigger/TriggerIntegerExpression.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.scope.trigger; 2 | 3 | import com.etheller.interpreter.ast.scope.GlobalScope; 4 | import com.etheller.interpreter.ast.scope.TriggerExecutionScope; 5 | 6 | public interface TriggerIntegerExpression { 7 | int evaluate(GlobalScope globalScope, TriggerExecutionScope triggerScope); 8 | } 9 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/scope/variableevent/CLimitOp.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.scope.variableevent; 2 | 3 | import com.etheller.interpreter.ast.util.CHandle; 4 | 5 | public enum CLimitOp implements CHandle { 6 | LESS_THAN, 7 | LESS_THAN_OR_EQUAL, 8 | EQUAL, 9 | GREATER_THAN_OR_EQUAL, 10 | GREATER_THAN, 11 | NOT_EQUAL; 12 | 13 | public static CLimitOp[] VALUES = values(); 14 | 15 | @Override 16 | public int getHandleId() { 17 | return ordinal(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/statement/JassCallExpressionStatement.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.statement; 2 | 3 | import com.etheller.interpreter.ast.expression.JassExpression; 4 | 5 | public class JassCallExpressionStatement implements JassStatement { 6 | private final JassExpression expression; 7 | 8 | public JassCallExpressionStatement(final JassExpression expression) { 9 | this.expression = expression; 10 | } 11 | 12 | @Override 13 | public T accept(final JassStatementVisitor visitor) { 14 | return visitor.visit(this); 15 | } 16 | 17 | public JassExpression getExpression() { 18 | return this.expression; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/statement/JassDoNothingStatement.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.statement; 2 | 3 | public class JassDoNothingStatement implements JassStatement { 4 | 5 | @Override 6 | public T accept(final JassStatementVisitor visitor) { 7 | return visitor.visit(this); 8 | } 9 | 10 | } 11 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/statement/JassLoopStatement.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.statement; 2 | 3 | import java.util.List; 4 | 5 | public class JassLoopStatement implements JassStatement { 6 | private final List statements; 7 | 8 | public JassLoopStatement(final List statements) { 9 | this.statements = statements; 10 | } 11 | 12 | @Override 13 | public T accept(final JassStatementVisitor visitor) { 14 | return visitor.visit(this); 15 | } 16 | 17 | public List getStatements() { 18 | return this.statements; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/statement/JassReturnNothingStatement.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.statement; 2 | 3 | import com.etheller.interpreter.ast.value.DummyJassValue; 4 | 5 | public class JassReturnNothingStatement implements JassStatement { 6 | public static final DummyJassValue RETURN_NOTHING_NOTICE = new DummyJassValue(); 7 | 8 | @Override 9 | public T accept(final JassStatementVisitor visitor) { 10 | return visitor.visit(this); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/statement/JassReturnStatement.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.statement; 2 | 3 | import com.etheller.interpreter.ast.expression.JassExpression; 4 | 5 | public class JassReturnStatement implements JassStatement { 6 | private final JassExpression expression; 7 | 8 | public JassReturnStatement(final JassExpression expression) { 9 | this.expression = expression; 10 | } 11 | 12 | @Override 13 | public T accept(final JassStatementVisitor visitor) { 14 | return visitor.visit(this); 15 | } 16 | 17 | public JassExpression getExpression() { 18 | return this.expression; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/statement/JassStatement.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.statement; 2 | 3 | public interface JassStatement { 4 | 5 | T accept(JassStatementVisitor visitor); 6 | } 7 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/type/ArrayJassTypeToken.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.type; 2 | 3 | import com.etheller.interpreter.ast.scope.Scope; 4 | import com.etheller.interpreter.ast.value.JassType; 5 | 6 | public class ArrayJassTypeToken implements JassTypeToken { 7 | private final String id; 8 | 9 | public ArrayJassTypeToken(final String id) { 10 | this.id = id; 11 | } 12 | 13 | @Override 14 | public JassType resolve(final Scope globalScope) { 15 | return globalScope.parseArrayType(this.id); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/type/JassTypeToken.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.type; 2 | 3 | import com.etheller.interpreter.ast.scope.Scope; 4 | import com.etheller.interpreter.ast.value.JassType; 5 | 6 | public interface JassTypeToken { 7 | JassType resolve(Scope globalScope); 8 | } 9 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/type/NothingJassTypeToken.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.type; 2 | 3 | import com.etheller.interpreter.ast.scope.Scope; 4 | import com.etheller.interpreter.ast.value.JassType; 5 | 6 | public class NothingJassTypeToken implements JassTypeToken { 7 | public static final NothingJassTypeToken INSTANCE = new NothingJassTypeToken(); 8 | 9 | @Override 10 | public JassType resolve(final Scope globalScope) { 11 | return JassType.NOTHING; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/type/PrimitiveJassTypeToken.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.type; 2 | 3 | import com.etheller.interpreter.ast.scope.Scope; 4 | import com.etheller.interpreter.ast.value.JassType; 5 | 6 | public class PrimitiveJassTypeToken implements JassTypeToken { 7 | private final String id; 8 | 9 | public PrimitiveJassTypeToken(final String id) { 10 | this.id = id; 11 | } 12 | 13 | @Override 14 | public JassType resolve(final Scope globalScope) { 15 | return globalScope.parseType(this.id); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/util/CExtensibleHandleAbstract.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.util; 2 | 3 | import com.etheller.interpreter.ast.value.StructJassValue; 4 | 5 | public abstract class CExtensibleHandleAbstract implements CExtensibleHandle { 6 | private StructJassValue structJassValue; 7 | 8 | @Override 9 | public StructJassValue getStructValue() { 10 | return this.structJassValue; 11 | } 12 | 13 | @Override 14 | public void setStructValue(final StructJassValue structJassValue) { 15 | this.structJassValue = structJassValue; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/util/CHandle.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.util; 2 | 3 | public interface CHandle { 4 | int getHandleId(); 5 | } 6 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/util/JassSettings.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.util; 2 | 3 | public class JassSettings { 4 | public static final boolean LOG_FUNCTION_DEFINITIONS = false; 5 | public static final int MAX_ARRAY_SIZE = 32768; // so dumb 6 | public static final boolean CHECK_TYPES = true; 7 | public static boolean DEBUG = true; 8 | public static boolean CONTINUE_EXECUTING_ON_ERROR = true; 9 | } 10 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/value/CodeJassType.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.value; 2 | 3 | public class CodeJassType extends PrimitiveJassType { 4 | 5 | public CodeJassType(final String name) { 6 | super(name, new CodeJassValue(-1)); 7 | } 8 | 9 | @Override 10 | public boolean isNullable() { 11 | return true; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/value/DummyJassValue.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.value; 2 | 3 | public class DummyJassValue implements JassValue { 4 | public static final DummyJassValue PAUSE_FOR_SLEEP = new DummyJassValue(); 5 | 6 | @Override 7 | public TYPE visit(final JassValueVisitor visitor) { 8 | return visitor.accept(this); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/value/HandleJassTypeConstructor.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.value; 2 | 3 | public class HandleJassTypeConstructor { 4 | private final String name; 5 | 6 | public HandleJassTypeConstructor(final String name) { 7 | this.name = name; 8 | } 9 | 10 | public String getName() { 11 | return this.name; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/value/JassTypeVisitor.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.value; 2 | 3 | public interface JassTypeVisitor { 4 | TYPE accept(PrimitiveJassType primitiveType); 5 | 6 | TYPE accept(ArrayJassType arrayType); 7 | 8 | TYPE accept(HandleJassType type); 9 | 10 | TYPE accept(StructJassType type); 11 | 12 | TYPE accept(StaticStructTypeJassValue staticType); 13 | } 14 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/value/JassValue.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.value; 2 | 3 | public interface JassValue { 4 | TYPE visit(JassValueVisitor visitor); 5 | } 6 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/value/JassValueVisitor.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.value; 2 | 3 | public interface JassValueVisitor { 4 | TYPE accept(IntegerJassValue value); 5 | 6 | TYPE accept(RealJassValue value); 7 | 8 | TYPE accept(BooleanJassValue value); 9 | 10 | TYPE accept(StringJassValue value); 11 | 12 | TYPE accept(CodeJassValue value); 13 | 14 | TYPE accept(ArrayJassValue value); 15 | 16 | TYPE accept(HandleJassValue value); 17 | 18 | TYPE accept(DummyJassValue value); 19 | 20 | TYPE accept(StructJassValue value); 21 | 22 | TYPE accept(StaticStructTypeJassValue value); 23 | } 24 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/value/RealJassType.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.value; 2 | 3 | public class RealJassType extends PrimitiveJassType { 4 | 5 | public RealJassType(final String name, final JassValue nullValue) { 6 | super(name, nullValue); 7 | } 8 | 9 | @Override 10 | public boolean isAssignableFrom(final JassType value) { 11 | if (value == JassType.INTEGER) { 12 | return true; 13 | } 14 | return super.isAssignableFrom(value); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/value/StringJassType.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.value; 2 | 3 | public class StringJassType extends PrimitiveJassType { 4 | 5 | public StringJassType(final String name) { 6 | super(name, new StringJassValue(null)); 7 | } 8 | 9 | @Override 10 | public boolean isNullable() { 11 | return true; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /jassparser/src/com/etheller/interpreter/ast/value/StructJassTypeInterface.java: -------------------------------------------------------------------------------- 1 | package com.etheller.interpreter.ast.value; 2 | 3 | import com.etheller.interpreter.ast.struct.JassStructMemberType; 4 | 5 | public interface StructJassTypeInterface { 6 | JassStructMemberType tryGetMemberByName(final String name); 7 | 8 | JassStructMemberType getMemberByName(final String name); 9 | 10 | int getMemberIndexInefficientlyByName(final String name); 11 | 12 | int tryGetMemberIndexInefficientlyByName(final String name); 13 | } 14 | -------------------------------------------------------------------------------- /key.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/key.jks -------------------------------------------------------------------------------- /libgdx/build.gradle: -------------------------------------------------------------------------------- 1 | configurations.maybeCreate("default") 2 | artifacts.add("default", file('gdx-backend-android-release.aar')) -------------------------------------------------------------------------------- /libgdx/gdx-backend-android-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sandstranger/WarsmashModEngine/12a393cdc09ba05f8e67271a2e4574d944106baf/libgdx/gdx-backend-android-release.aar -------------------------------------------------------------------------------- /resources/Scripts/abilitiesDefaults.j: -------------------------------------------------------------------------------- 1 | native LoadScriptFile takes string path, string mainFunction returns boolean 2 | native GetEnumFilePath takes nothing returns string 3 | native ForFiles takes string directoryPath, code func returns nothing 4 | 5 | function AbilitiesFileEnum takes nothing returns nothing 6 | call LoadScriptFile(GetEnumFilePath(), "main") 7 | call ExecuteFunc("init") 8 | endfunction 9 | 10 | function abilities_main takes nothing returns nothing 11 | call LoadScriptFile("Scripts\\abilitiesUtils.j", null) 12 | call ForFiles("Scripts\\Abilities\\", function AbilitiesFileEnum) 13 | endfunction 14 | -------------------------------------------------------------------------------- /resources/UI/FrameDef/SmashFrameDef.toc: -------------------------------------------------------------------------------- 1 | UI\FrameDef\SmashUI\TimeOfDayIndicator.fdf 2 | UI\FrameDef\SmashUI\UnitPortrait.fdf 3 | UI\FrameDef\SmashUI\InventoryCover.fdf 4 | UI\FrameDef\SmashUI\ToolTip.fdf 5 | -------------------------------------------------------------------------------- /resources/UI/FrameDef/SmashUI/InventoryCover.fdf: -------------------------------------------------------------------------------- 1 | Frame "SIMPLEFRAME" "SmashConsoleInventoryCover" { 2 | DecorateFileNames, 3 | SetAllPoints, 4 | 5 | // The top of the UI console 6 | Texture "SmashConsoleInventoryCoverTexture" { 7 | File "ConsoleInventoryCoverTexture", 8 | Width 0.128, 9 | Height 0.176, 10 | AlphaMode "ALPHAKEY", 11 | TexCoord 0, 1, 0.3125, 1, 12 | Anchor BOTTOMLEFT,0.472,0.0, 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /resources/UI/FrameDef/SmashUI/TimeOfDayIndicator.fdf: -------------------------------------------------------------------------------- 1 | 2 | Frame "SPRITE" "TimeOfDayIndicator" { 3 | DecorateFileNames, 4 | BackgroundArt "TimeOfDayIndicator", 5 | SetPoint BOTTOMLEFT,"ConsoleUI",BOTTOMLEFT,0,0, 6 | } -------------------------------------------------------------------------------- /server/src/com/etheller/warsmash/networking/uberserver/GamingNetworkServerClientBuilder.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.networking.uberserver; 2 | 3 | import net.warsmash.nio.channels.WritableOutput; 4 | import net.warsmash.nio.channels.WritableSocketOutput; 5 | import net.warsmash.uberserver.GamingNetworkClientToServerListener; 6 | 7 | public interface GamingNetworkServerClientBuilder { 8 | GamingNetworkClientToServerListener createClient(WritableSocketOutput output); 9 | } 10 | -------------------------------------------------------------------------------- /server/src/com/etheller/warsmash/networking/uberserver/LobbyActionFailureReason.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.networking.uberserver; 2 | 3 | public enum LobbyActionFailureReason { 4 | NOT_HOST, NO_GAME, NO_SESSION_GAME, NOT_HOST_OR_SLOT; 5 | } 6 | -------------------------------------------------------------------------------- /server/src/com/etheller/warsmash/networking/uberserver/SessionManager.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.networking.uberserver; 2 | 3 | public class SessionManager { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /server/src/com/etheller/warsmash/networking/uberserver/users/PasswordResetListener.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.networking.uberserver.users; 2 | 3 | import net.warsmash.uberserver.PasswordResetFailureReason; 4 | 5 | public interface PasswordResetListener { 6 | void resetFailed(PasswordResetFailureReason reason); 7 | 8 | void resetOk(); 9 | } 10 | -------------------------------------------------------------------------------- /server/src/com/etheller/warsmash/networking/uberserver/users/User.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.networking.uberserver.users; 2 | 3 | public interface User extends UserView { 4 | void setUsername(String username); 5 | 6 | void setPasswordHash(String token); 7 | 8 | void addExperience(int amount); 9 | 10 | void addWin(boolean ranked); 11 | 12 | void addLoss(boolean ranked); 13 | } 14 | -------------------------------------------------------------------------------- /server/src/com/etheller/warsmash/networking/uberserver/users/UserManager.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.networking.uberserver.users; 2 | 3 | public interface UserManager { 4 | User getUserByName(String username); 5 | 6 | void passwordReset(String username, char[] password, char[] newPassword, PasswordResetListener listener); 7 | 8 | User createUser(String username, char[] password); 9 | 10 | void notifyUsersUpdated(); 11 | } 12 | -------------------------------------------------------------------------------- /server/src/com/etheller/warsmash/networking/uberserver/users/UserRank.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.networking.uberserver.users; 2 | 3 | public enum UserRank { 4 | BRONZE, SILVER, GOLD, PLATINUM, DIAMOND, BEST; 5 | } 6 | -------------------------------------------------------------------------------- /server/src/com/etheller/warsmash/networking/uberserver/users/UserView.java: -------------------------------------------------------------------------------- 1 | package com.etheller.warsmash.networking.uberserver.users; 2 | 3 | public interface UserView { 4 | String getUsername(); 5 | 6 | String getPasswordHash(); 7 | 8 | String getHash(); 9 | 10 | UserStats getUserStats(); 11 | 12 | UserRanking getUserRanking(); 13 | 14 | int getLevel(); 15 | 16 | int getExperience(); 17 | 18 | int getId(); 19 | } 20 | -------------------------------------------------------------------------------- /shared/build.gradle: -------------------------------------------------------------------------------- 1 | [compileJava, compileTestJava]*.options*.encoding = 'UTF-8' 2 | 3 | sourceCompatibility = 1.11 4 | 5 | sourceSets.main.java.srcDirs = [ "src/" ] 6 | 7 | 8 | eclipse.project { 9 | name = appName + "-shared" 10 | } 11 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/networking/udp/OrderedUdpClientListener.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.networking.udp; 2 | 3 | public interface OrderedUdpClientListener extends UdpClientListener { 4 | void cantReplay(int seqNo); 5 | } 6 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/networking/udp/OrderedUdpServerListener.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.networking.udp; 2 | 3 | import java.net.SocketAddress; 4 | 5 | public interface OrderedUdpServerListener extends UdpServerListener { 6 | void cantReplay(SocketAddress sourceAddress, int seqNo); 7 | } 8 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/networking/udp/UdpClientListener.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.networking.udp; 2 | 3 | import java.nio.ByteBuffer; 4 | 5 | public interface UdpClientListener { 6 | void parse(ByteBuffer buffer); 7 | } 8 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/networking/udp/UdpServerListener.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.networking.udp; 2 | 3 | import java.net.SocketAddress; 4 | import java.nio.ByteBuffer; 5 | 6 | public interface UdpServerListener { 7 | void parse(SocketAddress sourceAddress, ByteBuffer buffer); 8 | } 9 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/nio/channels/ByteParser.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.nio.channels; 2 | 3 | import java.nio.ByteBuffer; 4 | 5 | public interface ByteParser { 6 | void parse(ByteBuffer data); 7 | } 8 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/nio/channels/ChannelListener.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.nio.channels; 2 | 3 | public interface ChannelListener { 4 | void channelOpened(); 5 | 6 | void channelClosed(); 7 | } 8 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/nio/channels/KeyAttachment.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.nio.channels; 2 | 3 | public interface KeyAttachment { 4 | void selected(); 5 | } 6 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/nio/channels/OpenedChannel.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.nio.channels; 2 | 3 | public interface OpenedChannel { 4 | void close(); 5 | } 6 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/nio/channels/SocketChannelCallback.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.nio.channels; 2 | 3 | import java.net.SocketAddress; 4 | 5 | import net.warsmash.nio.channels.tcp.TCPClientParser; 6 | 7 | public interface SocketChannelCallback { 8 | TCPClientParser onConnect(WritableSocketOutput writableOpenedChannel, SocketAddress remoteAddress); 9 | } 10 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/nio/channels/TCPParser.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.nio.channels; 2 | 3 | import java.net.SocketAddress; 4 | import java.nio.ByteBuffer; 5 | 6 | public interface TCPParser { 7 | void parse(SocketAddress sourceAddress, ByteBuffer data); 8 | } 9 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/nio/channels/WritableOutput.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.nio.channels; 2 | 3 | import java.nio.ByteBuffer; 4 | 5 | public interface WritableOutput extends OpenedChannel { 6 | void write(ByteBuffer data); 7 | } 8 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/nio/channels/WritableSocketOutput.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.nio.channels; 2 | 3 | import java.net.InetSocketAddress; 4 | import java.net.SocketAddress; 5 | 6 | public interface WritableSocketOutput extends WritableOutput { 7 | SocketAddress getLocalAddress(); 8 | SocketAddress getRemoteAddress(); 9 | } 10 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/nio/channels/tcp/TCPClientParser.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.nio.channels.tcp; 2 | 3 | import net.warsmash.nio.channels.ByteParser; 4 | 5 | public interface TCPClientParser extends ByteParser { 6 | void disconnected(); 7 | } 8 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/nio/util/Callback.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.nio.util; 2 | 3 | public interface Callback { 4 | void call(); 5 | } 6 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/nio/util/DisconnectListener.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.nio.util; 2 | 3 | public interface DisconnectListener { 4 | void disconnected(); 5 | } 6 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/nio/util/ExceptionListener.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.nio.util; 2 | 3 | public interface ExceptionListener { 4 | void caught(Exception e); 5 | 6 | ExceptionListener THROW_RUNTIME = new ExceptionListener() { 7 | @Override 8 | public void caught(final Exception e) { 9 | throw new RuntimeException(e); 10 | } 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/AccountCreationFailureReason.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver; 2 | 3 | public enum AccountCreationFailureReason { 4 | USERNAME_ALREADY_EXISTS; 5 | 6 | public static AccountCreationFailureReason VALUES[] = values(); 7 | } 8 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/ChannelServerMessageType.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver; 2 | 3 | public enum ChannelServerMessageType { 4 | JOIN_GAME, LEAVE_GAME; 5 | 6 | public static ChannelServerMessageType VALUES[] = values(); 7 | } 8 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/GameCreationFailureReason.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver; 2 | 3 | public enum GameCreationFailureReason { 4 | GAME_NAME_ALREADY_USED; 5 | 6 | public static GameCreationFailureReason VALUES[] = values(); 7 | } 8 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/GamingNetworkClientConnectionContext.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver; 2 | 3 | public interface GamingNetworkClientConnectionContext extends GamingNetworkServerToClientListener { 4 | String getAddressString(); 5 | } 6 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/GamingNetworkConnection.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver; 2 | 3 | public interface GamingNetworkConnection extends GamingNetworkClientToServerListener { 4 | void addListener(GamingNetworkServerToClientListener listener); 5 | 6 | void userRequestDisconnect(); 7 | 8 | boolean userRequestConnect(); 9 | 10 | String getGatewayString(); 11 | } 12 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/HandshakeDeniedReason.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver; 2 | 3 | public enum HandshakeDeniedReason { 4 | BAD_GAME, BAD_GAME_VERSION, SERVER_ERROR; 5 | 6 | public static HandshakeDeniedReason VALUES[] = values(); 7 | } 8 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/HostedGameVisibility.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver; 2 | 3 | public enum HostedGameVisibility { 4 | PUBLIC, PRIVATE; 5 | 6 | public static HostedGameVisibility VALUES[] = values(); 7 | } 8 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/JoinGameFailureReason.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver; 2 | 3 | public enum JoinGameFailureReason { 4 | NO_SUCH_GAME, GAME_FULL, GAME_ALREADY_STARTED, SESSION_ERROR; 5 | 6 | public static JoinGameFailureReason VALUES[] = values(); 7 | } 8 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/LobbyGameSpeed.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver; 2 | 3 | public enum LobbyGameSpeed { 4 | SLOW, NORMAL, FAST; 5 | 6 | public static final LobbyGameSpeed VALUES[] = values(); 7 | } 8 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/LobbyPlayerType.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver; 2 | 3 | public enum LobbyPlayerType { 4 | OPEN, CLOSED, COMPUTER_NEWBIE, COMPUTER_NORMAL, COMPUTER_INSANE, USER; 5 | 6 | public static LobbyPlayerType VALUES[] = values(); 7 | } 8 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/LoginFailureReason.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver; 2 | 3 | public enum LoginFailureReason { 4 | INVALID_CREDENTIALS, UNKNOWN_USER; 5 | 6 | public static LoginFailureReason VALUES[] = values(); 7 | } 8 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/PasswordResetFailureReason.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver; 2 | 3 | public enum PasswordResetFailureReason { 4 | INVALID_CREDENTIALS, UNKNOWN_USER; 5 | 6 | public static PasswordResetFailureReason VALUES[] = values(); 7 | } 8 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/ServerErrorMessageType.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver; 2 | 3 | public enum ServerErrorMessageType { 4 | UPLOAD_MAP_FAILED, ERROR_HANDLING_REQUEST; 5 | 6 | public static ServerErrorMessageType VALUES[] = values(); 7 | } 8 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/lobby/LobbyConstants.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver.lobby; 2 | 3 | public class LobbyConstants { 4 | public static final int MAX_PLAYERS = 24; 5 | } 6 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/lobby/LobbyListener.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver.lobby; 2 | 3 | public interface LobbyListener { 4 | void addUserPlayer(int slotIndex, String playerName); 5 | 6 | void moveUserPlayer(String playerName, int oldSlotIndex, int newSlotIndex); 7 | 8 | void setUserSlotSetting(int slotIndex, UserSlotSetting userSlotSetting); 9 | 10 | void setRace(int slotIndex, LobbyRace race); 11 | 12 | void setTeam(int slotIndex, int teamIndex); 13 | 14 | void setColor(int slotIndex, int colorIndex); 15 | 16 | void setHandicap(int slotIndex, int handicapIndex); 17 | } 18 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/lobby/LobbyRace.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver.lobby; 2 | 3 | public enum LobbyRace { 4 | RANDOM, HUMAN, ORC, NIGHTELF, UNDEAD; 5 | } 6 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/lobby/LobbySetupListener.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver.lobby; 2 | 3 | public interface LobbySetupListener { 4 | void beginLobby(LobbyType lobbyType, boolean fixedPlayerSettings, int forcesCount); 5 | 6 | void addForce(String name); 7 | 8 | // NOTE: below, pass null for lobbyRace if you want it to be specially 9 | // selectable 10 | void addSlot(int playerIndex, LobbySlotType slotType, LobbyRace lobbyRace, int forceIndex); 11 | 12 | LobbyListener endLobby(); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/lobby/LobbySlotType.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver.lobby; 2 | 3 | public enum LobbySlotType { 4 | USER, COMPUTER; 5 | } 6 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/lobby/LobbyStateView.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver.lobby; 2 | 3 | public interface LobbyStateView { 4 | void getSnapshot(LobbyListener lobbyListener); 5 | } 6 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/lobby/LobbyType.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver.lobby; 2 | 3 | public enum LobbyType { 4 | MELEE, CUSTOM_FORCES; 5 | } 6 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/lobby/UserSlotSetting.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver.lobby; 2 | 3 | public enum UserSlotSetting { 4 | OPEN, CLOSED, COMPUTER_EASY, COMPUTER_NORMAL, COMPUTER_INSANE; 5 | } 6 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/lobby/state/CustomForcesLobbySlot.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver.lobby.state; 2 | 3 | import net.warsmash.uberserver.lobby.LobbyRace; 4 | 5 | public class CustomForcesLobbySlot { 6 | private int playerIndex; 7 | private LobbyRace race; 8 | private int colorIndex; 9 | private int handicapIndex; 10 | } 11 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/lobby/state/FixedCustomForcesLobbySlot.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver.lobby.state; 2 | 3 | import net.warsmash.uberserver.lobby.LobbyRace; 4 | import net.warsmash.uberserver.lobby.LobbySlotType; 5 | 6 | public class FixedCustomForcesLobbySlot { 7 | private int playerIndex; 8 | private LobbySlotType slotType; 9 | private LobbyRace race; 10 | private boolean raceSelectable; 11 | private int colorIndex; 12 | private int handicapIndex; 13 | } 14 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/lobby/state/LobbyActionException.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver.lobby.state; 2 | 3 | public class LobbyActionException extends RuntimeException { 4 | 5 | public LobbyActionException(final String message) { 6 | super(message); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/lobby/state/LobbyUserPlayer.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver.lobby.state; 2 | 3 | public class LobbyUserPlayer { 4 | private int slotIndex; 5 | private final String name; 6 | 7 | public LobbyUserPlayer(final int slotIndex, final String name) { 8 | this.slotIndex = slotIndex; 9 | this.name = name; 10 | } 11 | 12 | public int getSlotIndex() { 13 | return this.slotIndex; 14 | } 15 | 16 | public void setSlotIndex(final int slotIndex) { 17 | this.slotIndex = slotIndex; 18 | } 19 | 20 | public String getName() { 21 | return this.name; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /shared/src/net/warsmash/uberserver/lobby/state/MeleeLobbySlot.java: -------------------------------------------------------------------------------- 1 | package net.warsmash.uberserver.lobby.state; 2 | 3 | import net.warsmash.uberserver.lobby.LobbyRace; 4 | import net.warsmash.uberserver.lobby.LobbySlotType; 5 | 6 | public class MeleeLobbySlot { 7 | private int playerIndex; 8 | private LobbySlotType slotType; 9 | private LobbyRace race; 10 | } 11 | -------------------------------------------------------------------------------- /welaunch.bat: -------------------------------------------------------------------------------- 1 | chdir /d %~dp0 2 | .\gradlew.bat desktop:runGame -Pargs="%*" --------------------------------------------------------------------------------