├── .editorconfig ├── .gitattributes ├── .github ├── dependabot.yml.ignore ├── workflows-disabled │ ├── PROJECT_ASSIGN.yml │ └── TEST_SNAPSHOT.yml └── workflows │ ├── DEPLOY.yml │ └── TEST.yml ├── .gitignore ├── .idea └── icon.png ├── .run ├── korge [runJvm].run.xml ├── run metal sandbox render 1 complex.run.xml ├── run metal sandbox render 1 simple.run.xml └── run metal sandbox render 3.run.xml ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── archive ├── AL.kt ├── GLCanvasKorge.kt ├── experiments │ ├── mingwx64_ssl │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── main.cpp │ │ └── main.cpp.bak │ └── touch │ │ ├── index.html │ │ └── serve.bat ├── osx-metal-playground │ ├── .gitignore │ ├── build.gradle.kts │ └── src │ │ └── macosMain │ │ └── kotlin │ │ ├── Main.kt │ │ ├── korge │ │ └── graphics │ │ │ └── backend │ │ │ └── metal │ │ │ ├── MetalApplication.kt │ │ │ ├── Renderer.kt │ │ │ ├── Renderer01.kt │ │ │ ├── Renderer02.kt │ │ │ └── Renderer03.kt │ │ └── platform.foundation │ │ └── NSRect.kt ├── osx │ └── MacosGameWindow.kt ├── scripts │ ├── korlibsrename │ │ ├── patch_fix.patch │ │ └── rename-package.main.kts │ └── normalizelineendings │ │ └── normalizelineendings.main.kts ├── sdl2 │ ├── SDLKeyCode.kt │ ├── SDLKeycodeMap.kt │ ├── SDLScancode.kt │ ├── SdlGameWindowJvm.kt │ └── jna │ │ ├── ISDL.kt │ │ ├── SDL_Enums.kt │ │ ├── SDL_Events.kt │ │ └── SDL_Structs.kt ├── win32 │ ├── Win32GameWindow.kt │ └── Win32KeyMap.kt └── x11 │ ├── X11GameWindowJvm.kt │ └── X11KeyMap.kt ├── build.gradle.kts ├── buildSrc ├── .gitignore ├── build.gradle.kts ├── settings.gradle.kts └── src │ ├── main │ ├── kotlin │ │ └── korlibs │ │ │ ├── NativeTools.kt │ │ │ ├── korge │ │ │ └── gradle │ │ │ │ ├── GameCategory.kt │ │ │ │ ├── KorgeExtension.kt │ │ │ │ ├── KorgeGradlePlugin.kt │ │ │ │ ├── KorgePluginExtensions.kt │ │ │ │ ├── KorgeProcessResources.kt │ │ │ │ ├── KorgeVersionsTask.kt │ │ │ │ ├── ProjectDependencyTree.kt │ │ │ │ ├── Repos.kt │ │ │ │ ├── Versions.kt │ │ │ │ ├── bundle │ │ │ │ └── KorgeBundle.kt │ │ │ │ ├── generate │ │ │ │ └── TemplateGenerator.kt │ │ │ │ ├── module │ │ │ │ ├── CopyResources.kt │ │ │ │ └── Idea.kt │ │ │ │ ├── processor │ │ │ │ ├── CatalogGenerator.kt │ │ │ │ ├── KorgeResourceProcessor.kt │ │ │ │ └── KorgeTexturePacker.kt │ │ │ │ ├── targets │ │ │ │ ├── CrossExecType.kt │ │ │ │ ├── Icons.kt │ │ │ │ ├── ModuleResources.kt │ │ │ │ ├── ProjectType.kt │ │ │ │ ├── SourceSets.kt │ │ │ │ ├── Targets.kt │ │ │ │ ├── TaskGroups.kt │ │ │ │ ├── all │ │ │ │ │ └── All.kt │ │ │ │ ├── android │ │ │ │ │ ├── Android.kt │ │ │ │ │ ├── AndroidConfig.kt │ │ │ │ │ ├── AndroidDirect.kt │ │ │ │ │ ├── AndroidMainActivityKt.kt │ │ │ │ │ ├── AndroidManifestXml.kt │ │ │ │ │ ├── AndroidRun.kt │ │ │ │ │ └── AndroidSdk.kt │ │ │ │ ├── apple │ │ │ │ │ ├── IcnsBuilder.kt │ │ │ │ │ └── InfoPlistBuilder.kt │ │ │ │ ├── desktop │ │ │ │ │ ├── DesktopCommon.kt │ │ │ │ │ └── DesktopJreBundler.kt │ │ │ │ ├── ios │ │ │ │ │ ├── Ios.kt │ │ │ │ │ ├── IosDeploy.kt │ │ │ │ │ ├── IosProjectTools.kt │ │ │ │ │ ├── IosSdk.kt │ │ │ │ │ └── IosXcodegen.kt │ │ │ │ ├── js │ │ │ │ │ ├── ClosureCompiler.kt │ │ │ │ │ ├── Esbuild.kt │ │ │ │ │ ├── JavaScript.kt │ │ │ │ │ ├── JavaScriptDeno.kt │ │ │ │ │ ├── JavaScriptRun.kt │ │ │ │ │ ├── Wasm.kt │ │ │ │ │ └── Webpack.kt │ │ │ │ ├── jvm │ │ │ │ │ ├── Jvm.kt │ │ │ │ │ ├── JvmAddOpens.kt │ │ │ │ │ ├── JvmTools.kt │ │ │ │ │ └── KorgeJavaExec.kt │ │ │ │ ├── linux │ │ │ │ │ └── LDLibraries.kt │ │ │ │ ├── native │ │ │ │ │ ├── KotlinNativeCrossTest.kt │ │ │ │ │ ├── NativeBuildTypes.kt │ │ │ │ │ └── NativeExt.kt │ │ │ │ ├── wasm │ │ │ │ │ └── ConfigureWasm.kt │ │ │ │ └── windows │ │ │ │ │ ├── ICO2.kt │ │ │ │ │ ├── RC.kt │ │ │ │ │ └── WindowsToolchain.kt │ │ │ │ ├── texpacker │ │ │ │ ├── NewBinPacker.kt │ │ │ │ ├── NewTexturePacker.kt │ │ │ │ └── SimpleBitmap.kt │ │ │ │ ├── typedresources │ │ │ │ └── TypedResourcesGenerator.kt │ │ │ │ └── util │ │ │ │ ├── ASEInfo.kt │ │ │ │ ├── AnsiEscape.kt │ │ │ │ ├── DslExt.kt │ │ │ │ ├── Dyn.kt │ │ │ │ ├── DynamicPluginExec.kt │ │ │ │ ├── ExecExt.kt │ │ │ │ ├── FileExt.kt │ │ │ │ ├── GradleExt.kt │ │ │ │ ├── GradleTools.kt │ │ │ │ ├── GroovyDynamic.kt │ │ │ │ ├── Hex.kt │ │ │ │ ├── HttpServerTools.kt │ │ │ │ ├── ImageUtils.kt │ │ │ │ ├── Indenter.kt │ │ │ │ ├── InputStreamExt.kt │ │ │ │ ├── JavaMinVersion.kt │ │ │ │ ├── Json.kt │ │ │ │ ├── JsonExt.kt │ │ │ │ ├── KorgeReloadNotifier.kt │ │ │ │ ├── KotlinVersionExt.kt │ │ │ │ ├── LDLibraries.kt │ │ │ │ ├── MD5.kt │ │ │ │ ├── NamedDomainObjectContainerExt.kt │ │ │ │ ├── QXml.kt │ │ │ │ ├── SFile.kt │ │ │ │ ├── Semver.kt │ │ │ │ ├── SimpleHttpClient.kt │ │ │ │ ├── SpawnExtension.kt │ │ │ │ ├── StreamExt.kt │ │ │ │ ├── StringExt.kt │ │ │ │ ├── SystemExec.kt │ │ │ │ ├── TextCase.kt │ │ │ │ ├── UniqueNameGenerator.kt │ │ │ │ ├── Yaml.kt │ │ │ │ └── projectExtension.kt │ │ │ ├── modules │ │ │ ├── GithubCI.kt │ │ │ ├── Publishing.kt │ │ │ ├── Signing.kt │ │ │ ├── Sonatype.kt │ │ │ ├── Targets.kt │ │ │ ├── Tests.kt │ │ │ └── WindowsMesaOpenglPatch.kt │ │ │ ├── root │ │ │ ├── ConfigureKover.kt │ │ │ └── RootKorlibsPlugin.kt │ │ │ └── tools.kt │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ └── korlibs.korge.gradle.processor.KorgeResourceProcessor │ │ ├── banners │ │ └── korge.png │ │ ├── custom-html-body.template.html │ │ ├── custom-html-head.template.html │ │ ├── custom-styles.template.css │ │ ├── icons │ │ └── korge.png │ │ ├── index.v2.template.html │ │ └── korge.keystore │ └── test │ ├── kotlin │ └── korlibs │ │ └── korge │ │ └── gradle │ │ ├── typedresources │ │ ├── AseSpriteTest.kt │ │ ├── ResourceTools.kt │ │ └── TypedResourcesGeneratorTest.kt │ │ └── util │ │ └── UniqueNameGeneratorTest.kt │ └── resources │ ├── expected.KR.generated.txt │ └── sprites.ase ├── e2e ├── e2e-test-integration │ └── swiftui │ │ ├── SwiftUIKorgeIntegration │ │ ├── SwiftUIKorgeIntegration.xcodeproj │ │ │ ├── project.pbxproj │ │ │ └── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── SwiftUIKorgeIntegration │ │ │ ├── Assets.xcassets │ │ │ ├── AccentColor.colorset │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ │ ├── ContentView.swift │ │ │ ├── Preview Content │ │ │ └── Preview Assets.xcassets │ │ │ │ └── Contents.json │ │ │ └── SwiftUIKorgeIntegrationApp.swift │ │ └── korge-hello-world │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── build.gradle.kts │ │ ├── deps.kproject.yml │ │ ├── gradle.properties │ │ ├── gradle │ │ ├── libs.versions.toml │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ ├── src │ │ ├── commonMain │ │ │ ├── kotlin │ │ │ │ └── main.kt │ │ │ └── resources │ │ │ │ └── korge.png │ │ ├── commonTest │ │ │ └── kotlin │ │ │ │ └── test.kt │ │ └── iosSimulatorArm64Main │ │ │ └── kotlin │ │ │ └── KorgeIosUIViewProvider.kt │ │ └── testJs.sh ├── e2e-test-multi │ ├── .gitignore │ ├── build.gradle.kts │ ├── client │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── commonMain │ │ │ └── kotlin │ │ │ └── main.kt │ ├── gradle.properties │ ├── gradle │ │ └── libs.versions.toml │ ├── gradlew │ ├── gradlew.bat │ ├── server │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── main.kt │ ├── settings.gradle │ └── shared │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ └── src │ │ └── commonMain │ │ └── kotlin │ │ └── korlibs │ │ └── samples │ │ └── clientserver │ │ └── SharedCode.kt └── e2e-test │ ├── .gitignore │ ├── LICENSE │ ├── build.gradle.kts │ ├── buildSrc │ ├── build.gradle │ ├── settings.gradle │ └── src │ │ └── main │ │ └── kotlin │ │ └── CheckReferences.kt │ ├── gradle.properties │ ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── gradlew_linux │ ├── references │ ├── DirectionalBlur.png │ ├── Empty.png │ ├── Filters.png │ └── IdentityFilter.png │ ├── resources │ ├── fonts │ │ └── 1.ttf │ └── gfx │ │ ├── cp437.png │ │ ├── korge │ │ └── korge.png │ │ ├── vampire.ase │ │ └── vampire_slices_fixed.ase │ ├── settings.gradle │ ├── src │ ├── DockingComponent.kt │ └── RefMain.kt │ ├── test │ └── test.kt │ └── testJs.sh ├── gradle.properties ├── gradle ├── libs.versions.toml ├── repositories.settings.gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── karma.config.d └── extra.karma.conf.js ├── korge-benchmarks ├── .gitignore ├── build.gradle.kts └── src │ ├── commonMain │ └── resources │ │ ├── dice.qoi │ │ └── mp31.mp3 │ ├── jvmMain │ └── kotlin │ │ └── korlibs.benchmarks │ │ ├── BitArrayBenchmarks.kt │ │ ├── InlinePackBenchmarks.kt │ │ ├── Mp3DecodingBenchmark.kt │ │ ├── QOIBenchmarks.kt │ │ └── RGBABenchmarks.kt │ └── main │ └── AndroidManifest.xml ├── korge-core ├── .gitignore ├── build.gradle.kts ├── src │ └── korlibs │ │ ├── datastructure │ │ ├── _Datastructure_event.kt │ │ ├── closeable │ │ │ └── Closeable.kt │ │ ├── lock │ │ │ └── LockAlias.kt │ │ └── thread │ │ │ └── ThreadAlias.kt │ │ ├── event │ │ ├── EventListener.kt │ │ ├── Events.kt │ │ ├── InputGamepad.kt │ │ ├── Key.kt │ │ ├── MouseButton.kt │ │ ├── SoftKeyboard.kt │ │ └── gamepad │ │ │ ├── DarwinMacosGameController.kt │ │ │ ├── X11JoyGameControllerCommon.kt │ │ │ └── XInputGamepadEventAdapter.kt │ │ ├── graphics │ │ ├── AG.kt │ │ ├── AGObjects.kt │ │ ├── AGProgramWithUniform.kt │ │ ├── AGState.kt │ │ ├── AGStats.kt │ │ ├── AGTextureDrawer.kt │ │ ├── AGVertexArrayObjectFlattener.kt │ │ ├── DefaultShaders.kt │ │ ├── annotation │ │ │ └── KoragExperimental.kt │ │ ├── gl │ │ │ ├── AGOpengl.kt │ │ │ ├── AGOpenglConvert.kt │ │ │ ├── AGOpenglFactory.kt │ │ │ ├── GLObjects.kt │ │ │ └── GLShaderCompiler.kt │ │ ├── log │ │ │ ├── AGDummy.kt │ │ │ └── AGLog.kt │ │ ├── metal │ │ │ └── shader │ │ │ │ ├── BaseMetalShaderGenerator.kt │ │ │ │ ├── MetalShaderBodyGenerator.kt │ │ │ │ ├── MetalShaderBufferInputLayouts.kt │ │ │ │ ├── MetalShaderGenerator.kt │ │ │ │ ├── MetalShaderStructureGenerator.kt │ │ │ │ └── Shader.kt │ │ └── shader │ │ │ ├── UniformBlock.kt │ │ │ ├── gl │ │ │ ├── GLVariant.kt │ │ │ ├── GlslExt.kt │ │ │ └── GlslGenerator.kt │ │ │ └── shaders.kt │ │ ├── io │ │ ├── annotations │ │ │ ├── Keep.kt │ │ │ └── KorInternal.kt │ │ ├── async │ │ │ └── AsyncAlias.kt │ │ └── lang │ │ │ └── Disposable.kt │ │ ├── kgl │ │ ├── KmlBufferExt.kt │ │ ├── KmlGl.kt │ │ ├── KmlGlCached.kt │ │ ├── KmlGlContext.kt │ │ ├── KmlGlDummy.kt │ │ ├── KmlGlExt.kt │ │ ├── KmlGlProxy.kt │ │ ├── KmlGlState.kt │ │ ├── KmlGlUtil.kt │ │ └── internal │ │ │ └── internal.kt │ │ ├── korge │ │ ├── KorgeCore.kt │ │ ├── KorgeReload.kt │ │ ├── annotations │ │ │ └── KorgeExperimental.kt │ │ ├── bitmapfont │ │ │ ├── BitmapFontExt.kt │ │ │ └── DebugBitmapFont.kt │ │ ├── blend │ │ │ └── BlendMode.kt │ │ ├── input │ │ │ ├── Gestures.kt │ │ │ └── Input.kt │ │ ├── internal │ │ │ ├── DefaultViewport.kt │ │ │ ├── KorgeInternal.kt │ │ │ ├── KorgeUntested.kt │ │ │ └── KorgeUnused.kt │ │ ├── logger │ │ │ └── LoggerExt.kt │ │ ├── render │ │ │ ├── AgAutoFreeManager.kt │ │ │ ├── AgBitmapTextureManager.kt │ │ │ ├── AgBufferManager.kt │ │ │ ├── BatchBuilder2D.kt │ │ │ ├── BitmapExt.kt │ │ │ ├── BoundsProvider.kt │ │ │ ├── LineRenderBatcher.kt │ │ │ ├── RenderContext.kt │ │ │ ├── RenderContext2D.kt │ │ │ ├── SDFShaders.kt │ │ │ ├── Texture.kt │ │ │ ├── TextureWithBitmapSlice.kt │ │ │ ├── TexturedVertexArray.kt │ │ │ └── VertexInfo.kt │ │ ├── resources │ │ │ ├── Path.kt │ │ │ ├── ResourcesExt.kt │ │ │ └── ResourcesRoot.kt │ │ ├── service │ │ │ ├── storage │ │ │ │ ├── IStorage.kt │ │ │ │ └── InmemoryStorage.kt │ │ │ └── vibration │ │ │ │ └── NativeVibration.kt │ │ ├── stat │ │ │ └── Stats.kt │ │ ├── tests │ │ │ └── TestCoroutineDispatcher.kt │ │ └── tween │ │ │ └── tweenbase.kt │ │ ├── render │ │ ├── DeviceDimensionsProvider.kt │ │ ├── DialogInterface.kt │ │ ├── GameWindow.kt │ │ ├── GameWindowCoroutineDispatcher.kt │ │ ├── Korgw.kt │ │ ├── SyncEventLoopCoroutineDispatcher.kt │ │ ├── TouchEventHandler.kt │ │ ├── event │ │ │ └── UpdateEvent.kt │ │ └── jvmEngine.kt │ │ └── sdl │ │ ├── SDL.kt │ │ └── SDLGameWindow.kt ├── src@android │ └── korlibs │ │ ├── graphics │ │ ├── AGAndroid.kt │ │ └── gl │ │ │ └── AGOpenglFactoryAndroid.kt │ │ ├── kgl │ │ ├── KmlGlAndroid.kt │ │ └── KmlGlContextAndroid.kt │ │ ├── korge │ │ ├── KorgeReload_getReloadedClass.kt │ │ └── service │ │ │ └── vibration │ │ │ └── NativeVibration.kt │ │ └── render │ │ ├── AndroidGameController.kt │ │ ├── AndroidKeyMap.kt │ │ ├── DefaultGameWindowAndroid.kt │ │ ├── DialogInterfaceImpl.kt │ │ ├── KorgwActivity.kt │ │ └── KorgwSurfaceView.kt ├── src@darwin │ └── korlibs │ │ ├── graphics │ │ └── gl │ │ │ └── AGOpenglFactoryNative.kt │ │ ├── kgl │ │ ├── KmlGlContextAppleMobile.kt │ │ └── KmlGlNative.kt │ │ ├── korge │ │ ├── KorgeReloadNative.kt │ │ ├── native │ │ │ └── KorgeSimpleNativeSyncIO.kt │ │ └── service │ │ │ └── vibration │ │ │ └── NativeVibration.kt │ │ ├── metal │ │ ├── AGMetal.kt │ │ ├── AGMetalConverter.kt │ │ ├── MTLBuffer.kt │ │ ├── MetalProgram.kt │ │ └── shader │ │ │ └── MetalShaderCompiler.kt │ │ └── render │ │ ├── DarwinGameControllerNative.kt │ │ ├── DefaultGameWindowIos.kt │ │ ├── DialogInterfaceIos.kt │ │ └── IosKeyMap.kt ├── src@ios │ └── korlibs │ │ └── render │ │ └── DefaultGameWindowIosTools.kt ├── src@js │ ├── io │ │ └── ygdrasil │ │ │ └── wgpu │ │ │ └── internal │ │ │ └── js │ │ │ └── WebGPUTypes.kt │ └── korlibs │ │ ├── datastructure │ │ └── event │ │ │ └── JsEventLoop.kt │ │ ├── graphics │ │ └── gl │ │ │ ├── AGOpenglFactory.kt │ │ │ └── GlExt.kt │ │ ├── kgl │ │ ├── KmlGlContextJs.kt │ │ └── KmlGlJsCanvas.kt │ │ ├── korge │ │ ├── KorgeReload_getReloadedClass.kt │ │ └── service │ │ │ └── vibration │ │ │ └── NativeVibration.kt │ │ ├── render │ │ ├── DefaultGameWindowJs.kt │ │ ├── DenoJsGameWindow.kt │ │ ├── DialogInterfaceJs.kt │ │ └── internal │ │ │ └── KorgwJsInternal.kt │ │ └── webgpu │ │ └── WebGPUAG.kt ├── src@jvm │ └── korlibs │ │ ├── event │ │ └── AwtKeyMap.kt │ │ ├── graphics │ │ ├── gl │ │ │ └── AGOpenglFactory.kt │ │ └── metal │ │ │ └── AGMetal.kt │ │ ├── kgl │ │ └── KmlGlContextDefault.kt │ │ ├── korge │ │ ├── EnsureAddOpens.kt │ │ ├── KorgeReload_getReloadedClass.kt │ │ ├── atlas │ │ │ └── AtlasResourceProcessor.kt │ │ ├── plugin │ │ │ ├── KorgePluginExtension.kt │ │ │ └── KorgePluginExtensions.kt │ │ ├── resources │ │ │ ├── ResourceProcessor.kt │ │ │ ├── ResourceProcessorRunner.kt │ │ │ └── ResourceVersion.kt │ │ └── service │ │ │ └── vibration │ │ │ └── NativeVibration.kt │ │ ├── render │ │ ├── DefaultGameWindowJvm.kt │ │ ├── awt │ │ │ ├── AwtAGOpenglCanvas.kt │ │ │ ├── AwtAg.kt │ │ │ ├── AwtExt.kt │ │ │ ├── AwtFrameTools.kt │ │ │ ├── AwtGameWindow.kt │ │ │ ├── AwtOffscreenGameWindow.kt │ │ │ ├── BaseAwtGameWindow.kt │ │ │ ├── DesktopGamepadUpdater.kt │ │ │ ├── DialogInterfaceAwt.kt │ │ │ ├── GLCanvas.kt │ │ │ ├── GLCanvasGameWindow.kt │ │ │ └── NewAwtGameWindow.kt │ │ ├── osx │ │ │ ├── Cocoa.kt │ │ │ ├── DialogInterfaceJvmCocoa.kt │ │ │ ├── MacosGLContext.kt │ │ │ ├── MacosGameWindow.kt │ │ │ ├── OSXDisplayLink.kt │ │ │ └── metal │ │ │ │ ├── MTL.kt │ │ │ │ └── MTLExt.kt │ │ ├── platform │ │ │ ├── AwtTools.kt │ │ │ ├── BaseOpenglContext.kt │ │ │ ├── INativeGL.kt │ │ │ └── NativeKgl.kt │ │ ├── win32 │ │ │ ├── Win32.kt │ │ │ ├── Win32GameWindow.kt │ │ │ └── Win32Tools.kt │ │ └── x11 │ │ │ ├── X11Constants.kt │ │ │ ├── X11GameWindowJvm.kt │ │ │ └── X11OpenglContext.kt │ │ └── webgpu │ │ ├── WebGPU.kt │ │ ├── WebGPUStructures.kt │ │ └── WebGPUStructuresTypedef.kt ├── src@jvmAndroid │ └── korlibs │ │ ├── datastructure │ │ └── _Datastructure_event.jvmAndroid.kt │ │ └── kgl │ │ └── KmlGlTools.kt ├── src@native │ ├── korlibs │ │ └── kgl │ │ │ ├── KmlGlNativeExpect.kt │ │ │ └── KmlGlNativeExt.kt │ └── kotlin │ │ └── korlibs │ │ └── datastructure │ │ └── _Datastructure_event.native.kt ├── src@tvos │ └── korlibs │ │ └── render │ │ └── DefaultGameWindowIosTools.kt ├── src@wasmJs │ └── korlibs │ │ ├── datastructure │ │ └── event │ │ │ └── WasmJsEventLoop.kt │ │ ├── graphics │ │ └── gl │ │ │ ├── AGOpenglFactoryWasm.kt │ │ │ └── GlExt.kt │ │ ├── kgl │ │ ├── KmlGlContextJs.kt │ │ └── KmlGlWasmCanvas.kt │ │ ├── korge │ │ ├── KorgeReload_getReloadedClass.kt │ │ └── service │ │ │ └── vibration │ │ │ └── NativeVibration.kt │ │ └── render │ │ ├── DefaultGameWindowWasm.kt │ │ ├── DialogInterfaceJs.kt │ │ └── internal │ │ ├── KorgwJsInternal.kt │ │ └── KorgwWasmInternal.kt ├── test │ └── korlibs │ │ ├── SkipIOTest.kt │ │ ├── TestExt.kt │ │ ├── datastructure │ │ └── event │ │ │ └── SyncEventLoopTest.kt │ │ ├── event │ │ ├── EventListenerTest.kt │ │ ├── EventsTest.kt │ │ ├── KorevTest.kt │ │ ├── ScrollDeltaTest.kt │ │ └── TouchBuilderTest.kt │ │ ├── graphics │ │ ├── AGNewUniformTest.kt │ │ ├── AGOpenglTest.kt │ │ ├── AGStateTest.kt │ │ ├── AGTest.kt │ │ ├── AGUniformBlockTest.kt │ │ ├── AGValueTest.kt │ │ ├── AGVertexArrayObjectFlattenerTest.kt │ │ ├── metal │ │ │ └── shader │ │ │ │ ├── MetalShaderBufferInputLayoutsTest.kt │ │ │ │ ├── MetalShaderGeneratorTest.kt │ │ │ │ └── MetalShaderStructureGeneratorTest.kt │ │ ├── shader │ │ │ └── VertexLayoutTest.kt │ │ └── shaders │ │ │ └── ShadersTest.kt │ │ ├── io │ │ └── file │ │ │ └── registry │ │ │ └── WindowsRegistryTest.kt │ │ ├── kgl │ │ ├── KglOffscreenTest.kt │ │ └── KglTest.kt │ │ ├── render │ │ ├── AGUniformsTest.kt │ │ ├── GameWindowTest.kt │ │ ├── KorgwSampleMain.kt │ │ ├── KorgwTest.kt │ │ ├── SyncEventLoopCoroutineDispatcherTest.kt │ │ └── x11 │ │ │ └── LinuxJoyEventAdapterTest.kt │ │ ├── sdl │ │ └── SDLTest.kt │ │ └── test │ │ ├── AnySubject.kt │ │ ├── BooleanSubject.kt │ │ ├── CollectionSubject.kt │ │ ├── DoubleSubject.kt │ │ ├── MapSubject.kt │ │ └── truth.kt └── test@js │ └── korlibs │ └── webgpu │ └── WebGPUTest.kt ├── korge-gradle-plugin-common ├── .gitignore ├── build.gradle.kts └── src │ ├── main │ └── kotlin │ │ ├── SettingsKProjectExt.kt │ │ ├── com │ │ └── soywiz │ │ │ └── kproject │ │ │ ├── git │ │ │ └── GitExt.kt │ │ │ ├── internal │ │ │ ├── Dyn.kt │ │ │ ├── ExceptionsExt.kt │ │ │ ├── IntExt.kt │ │ │ ├── ListReader.kt │ │ │ ├── StrReader.kt │ │ │ └── StringEscape.kt │ │ │ ├── model │ │ │ ├── Dependency.kt │ │ │ ├── FileRef.kt │ │ │ ├── FileRefExt.kt │ │ │ ├── GitRepository.kt │ │ │ ├── KProjectTarget.kt │ │ │ ├── NewKProjectGradleGenerator.kt │ │ │ ├── NewKProjectModel.kt │ │ │ ├── NewKProjectResolver.kt │ │ │ └── Plugin.kt │ │ │ └── util │ │ │ ├── FileExt.kt │ │ │ ├── Hash.kt │ │ │ ├── HexExt.kt │ │ │ ├── Json.kt │ │ │ ├── OsExt.kt │ │ │ ├── PathExt.kt │ │ │ ├── ProjectExt.kt │ │ │ ├── UtilsExt.kt │ │ │ ├── VersionComparer.kt │ │ │ ├── Yaml.kt │ │ │ └── ZipExt.kt │ │ └── korlibs │ │ └── korge │ │ └── gradle │ │ └── common │ │ └── KorgeGradlePluginVersion.kt │ └── test │ ├── kotlin │ └── com │ │ └── soywiz │ │ └── kproject │ │ ├── model │ │ ├── DependencyTest.kt │ │ ├── FileRefTest.kt │ │ ├── GitRepositoryTest.kt │ │ ├── NewKProjectGradleGeneratorTest.kt │ │ └── NewKProjectModelTest.kt │ │ └── util │ │ ├── JsonTest.kt │ │ ├── NewKProjectGradleGeneratorTest.kt │ │ ├── NewKProjectResolverTest.kt │ │ ├── PathInfoTest.kt │ │ └── VersionComparerTest.kt │ └── resources │ └── NewKProjectGradleGeneratorTest_test.txt ├── korge-gradle-plugin-settings ├── .gitignore ├── build.gradle.kts └── src │ └── main │ └── kotlin │ └── com │ └── soywiz │ └── kproject │ └── KProjectSettingsPlugin.kt ├── korge-gradle-plugin ├── .gitignore ├── build.gradle.kts └── src │ ├── main │ ├── kotlin │ │ ├── com │ │ │ └── soywiz │ │ │ │ └── kproject │ │ │ │ ├── AndroidConfig.kt │ │ │ │ ├── KProjectPlugin.kt │ │ │ │ └── KProjectRootPlugin.kt │ │ └── korlibs │ │ │ ├── NativeTools.kt │ │ │ ├── korge │ │ │ └── gradle │ │ │ │ ├── GameCategory.kt │ │ │ │ ├── KorgeExtension.kt │ │ │ │ ├── KorgeGradlePlugin.kt │ │ │ │ ├── KorgeGradlePluginNew.kt │ │ │ │ ├── KorgePluginExtensions.kt │ │ │ │ ├── KorgeProcessResources.kt │ │ │ │ ├── KorgeVersionsTask.kt │ │ │ │ ├── ProjectDependencyTree.kt │ │ │ │ ├── Repos.kt │ │ │ │ ├── Versions.kt │ │ │ │ ├── bundle │ │ │ │ └── KorgeBundle.kt │ │ │ │ ├── generate │ │ │ │ └── TemplateGenerator.kt │ │ │ │ ├── module │ │ │ │ ├── CopyResources.kt │ │ │ │ └── Idea.kt │ │ │ │ ├── processor │ │ │ │ ├── CatalogGenerator.kt │ │ │ │ ├── KorgeResourceProcessor.kt │ │ │ │ └── KorgeTexturePacker.kt │ │ │ │ ├── targets │ │ │ │ ├── CrossExecType.kt │ │ │ │ ├── Icons.kt │ │ │ │ ├── ModuleResources.kt │ │ │ │ ├── ProjectType.kt │ │ │ │ ├── SourceSets.kt │ │ │ │ ├── Targets.kt │ │ │ │ ├── TaskGroups.kt │ │ │ │ ├── all │ │ │ │ │ └── All.kt │ │ │ │ ├── android │ │ │ │ │ ├── Android.kt │ │ │ │ │ ├── AndroidConfig.kt │ │ │ │ │ ├── AndroidDirect.kt │ │ │ │ │ ├── AndroidMainActivityKt.kt │ │ │ │ │ ├── AndroidManifestXml.kt │ │ │ │ │ ├── AndroidRun.kt │ │ │ │ │ └── AndroidSdk.kt │ │ │ │ ├── apple │ │ │ │ │ ├── IcnsBuilder.kt │ │ │ │ │ └── InfoPlistBuilder.kt │ │ │ │ ├── desktop │ │ │ │ │ ├── DesktopCommon.kt │ │ │ │ │ └── DesktopJreBundler.kt │ │ │ │ ├── ios │ │ │ │ │ ├── Ios.kt │ │ │ │ │ ├── IosDeploy.kt │ │ │ │ │ ├── IosProjectTools.kt │ │ │ │ │ ├── IosSdk.kt │ │ │ │ │ └── IosXcodegen.kt │ │ │ │ ├── js │ │ │ │ │ ├── ClosureCompiler.kt │ │ │ │ │ ├── Esbuild.kt │ │ │ │ │ ├── JavaScript.kt │ │ │ │ │ ├── JavaScriptDeno.kt │ │ │ │ │ ├── JavaScriptRun.kt │ │ │ │ │ ├── Wasm.kt │ │ │ │ │ └── Webpack.kt │ │ │ │ ├── jvm │ │ │ │ │ ├── Jvm.kt │ │ │ │ │ ├── JvmAddOpens.kt │ │ │ │ │ ├── JvmTools.kt │ │ │ │ │ └── KorgeJavaExec.kt │ │ │ │ ├── linux │ │ │ │ │ └── LDLibraries.kt │ │ │ │ ├── native │ │ │ │ │ ├── KotlinNativeCrossTest.kt │ │ │ │ │ ├── NativeBuildTypes.kt │ │ │ │ │ └── NativeExt.kt │ │ │ │ ├── wasm │ │ │ │ │ └── ConfigureWasm.kt │ │ │ │ └── windows │ │ │ │ │ ├── ICO2.kt │ │ │ │ │ ├── RC.kt │ │ │ │ │ └── WindowsToolchain.kt │ │ │ │ ├── texpacker │ │ │ │ ├── NewBinPacker.kt │ │ │ │ ├── NewTexturePacker.kt │ │ │ │ └── SimpleBitmap.kt │ │ │ │ ├── typedresources │ │ │ │ └── TypedResourcesGenerator.kt │ │ │ │ └── util │ │ │ │ ├── ASEInfo.kt │ │ │ │ ├── AnsiEscape.kt │ │ │ │ ├── DslExt.kt │ │ │ │ ├── Dyn.kt │ │ │ │ ├── DynamicPluginExec.kt │ │ │ │ ├── ExecExt.kt │ │ │ │ ├── FileExt.kt │ │ │ │ ├── GradleExt.kt │ │ │ │ ├── GradleTools.kt │ │ │ │ ├── GroovyDynamic.kt │ │ │ │ ├── Hex.kt │ │ │ │ ├── HttpServerTools.kt │ │ │ │ ├── ImageUtils.kt │ │ │ │ ├── Indenter.kt │ │ │ │ ├── InputStreamExt.kt │ │ │ │ ├── JavaMinVersion.kt │ │ │ │ ├── Json.kt │ │ │ │ ├── JsonExt.kt │ │ │ │ ├── KorgeReloadNotifier.kt │ │ │ │ ├── KotlinVersionExt.kt │ │ │ │ ├── LDLibraries.kt │ │ │ │ ├── MD5.kt │ │ │ │ ├── NamedDomainObjectContainerExt.kt │ │ │ │ ├── QXml.kt │ │ │ │ ├── SFile.kt │ │ │ │ ├── Semver.kt │ │ │ │ ├── SimpleHttpClient.kt │ │ │ │ ├── SpawnExtension.kt │ │ │ │ ├── StreamExt.kt │ │ │ │ ├── StringExt.kt │ │ │ │ ├── SystemExec.kt │ │ │ │ ├── TextCase.kt │ │ │ │ ├── UniqueNameGenerator.kt │ │ │ │ ├── Yaml.kt │ │ │ │ └── projectExtension.kt │ │ │ ├── modules │ │ │ ├── GithubCI.kt │ │ │ ├── Publishing.kt │ │ │ ├── Signing.kt │ │ │ ├── Sonatype.kt │ │ │ ├── Targets.kt │ │ │ ├── Tests.kt │ │ │ └── WindowsMesaOpenglPatch.kt │ │ │ ├── root │ │ │ ├── ConfigureKover.kt │ │ │ └── RootKorlibsPlugin.kt │ │ │ └── tools.kt │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ └── korlibs.korge.gradle.processor.KorgeResourceProcessor │ │ ├── banners │ │ └── korge.png │ │ ├── custom-html-body.template.html │ │ ├── custom-html-head.template.html │ │ ├── custom-styles.template.css │ │ ├── icons │ │ └── korge.png │ │ ├── index.v2.template.html │ │ └── korge.keystore │ └── test │ ├── kotlin │ └── korlibs │ │ └── korge │ │ └── gradle │ │ ├── AbstractGradleIntegrationTest.kt │ │ ├── AndroidTest.kt │ │ ├── IosDeployTest.kt │ │ ├── KorgeExtensionTest.kt │ │ ├── NativeExtTest.kt │ │ ├── ResourcesTest.kt │ │ ├── typedresources │ │ ├── AseSpriteTest.kt │ │ ├── ResourceTools.kt │ │ └── TypedResourcesGeneratorTest.kt │ │ └── util │ │ └── UniqueNameGeneratorTest.kt │ └── resources │ ├── expected.KR.generated.txt │ └── sprites.ase ├── korge-ipc ├── .gitignore ├── build.gradle.kts └── src │ ├── main │ └── kotlin │ │ └── korlibs │ │ └── korge │ │ └── ipc │ │ ├── KorgeFrameBuffer.kt │ │ ├── KorgeIPC.kt │ │ ├── KorgeIPCJPanel.kt │ │ ├── KorgeIPCQueue.kt │ │ ├── KorgeIPCSocket.kt │ │ └── KorgeUnixSocket.kt │ └── test │ └── kotlin │ └── korlibs │ └── korge │ └── ipc │ ├── KorgeIPCServerSocketTest.kt │ ├── KorgeIPCTest.kt │ └── KorgePacketRingBufferTest.kt ├── korge-reload-agent ├── .gitignore ├── build.gradle.kts └── src │ └── main │ ├── kotlin │ └── korlibs │ │ └── korge │ │ └── reloadagent │ │ ├── CommonWatcher.kt │ │ └── KorgeReloadAgent.kt │ └── resources │ └── META-INF │ └── MANIFEST.MF ├── korge-sandbox ├── .gitignore ├── 16x16 DungeonTileset II by 0x72.url ├── Zelda-like tilesets and sprites - OpenGameArt.org.url ├── build.gradle ├── resources │ ├── .gitignore │ ├── 0x72_DungeonTilesetII_v1.3.png │ ├── 200.gif │ ├── 7f7f7f.png │ ├── A.svg │ ├── Aseprite │ │ ├── 01-Artboard.aseprite │ │ ├── 02-KingHuman.aseprite │ │ ├── 03-Pig.aseprite │ │ ├── 04-PigBox.aseprite │ │ ├── 05-PigBoom.aseprite │ │ ├── 06-PigHide.aseprite │ │ ├── 07-KingPig.aseprite │ │ ├── 08-Bomb.aseprite │ │ ├── 09-Box.aseprite │ │ ├── 10-Cannon and Pig.aseprite │ │ ├── 11-Door.aseprite │ │ ├── 12-Lives and Coins.aseprite │ │ └── 13-Dialogue.aseprite │ ├── Ghostscript_Tiger.svg │ ├── MiniTileset-Dungeon │ │ ├── Dungeon.png │ │ ├── Dungeon.tsx │ │ ├── Thank You!.txt │ │ └── dungeon.tmx │ ├── Pacifico.ttf │ ├── PlayfairDisplay-BoldItalic.ttf │ ├── Portrait_3.jpg │ ├── README.md │ ├── RF_Catacombs │ │ ├── candleA_01.png │ │ ├── candleA_02.png │ │ ├── candleA_03.png │ │ ├── candleA_04.png │ │ ├── candleB_01.png │ │ ├── candleB_02.png │ │ ├── candleB_03.png │ │ ├── candleB_04.png │ │ ├── decorative.png │ │ ├── mainlevbuild.png │ │ ├── public-license.txt │ │ ├── spike_0.png │ │ ├── spike_1.png │ │ ├── spike_2.png │ │ ├── spike_3.png │ │ ├── spike_4.png │ │ ├── torch_1.png │ │ ├── torch_2.png │ │ ├── torch_3.png │ │ └── torch_4.png │ ├── Sprites │ │ ├── 01-King Human │ │ │ ├── Attack (78x58).png │ │ │ ├── Dead (78x58).png │ │ │ ├── Door In (78x58).png │ │ │ ├── Door Out (78x58).png │ │ │ ├── Fall (78x58).png │ │ │ ├── Ground (78x58).png │ │ │ ├── Hit (78x58).png │ │ │ ├── Idle (78x58).png │ │ │ ├── Jump (78x58).png │ │ │ └── Run (78x58).png │ │ ├── 02-King Pig │ │ │ ├── Attack (38x28).png │ │ │ ├── Dead (38x28).png │ │ │ ├── Fall (38x28).png │ │ │ ├── Ground (38x28).png │ │ │ ├── Hit (38x28).png │ │ │ ├── Idle (38x28).png │ │ │ ├── Jump (38x28).png │ │ │ └── Run (38x28).png │ │ ├── 03-Pig │ │ │ ├── Attack (34x28).png │ │ │ ├── Dead (34x28).png │ │ │ ├── Fall (34x28).png │ │ │ ├── Ground (34x28).png │ │ │ ├── Hit (34x28).png │ │ │ ├── Idle (34x28).png │ │ │ ├── Jump (34x28).png │ │ │ └── Run (34x28).png │ │ ├── 04-Pig Throwing a Box │ │ │ ├── Idle (26x30).png │ │ │ ├── Picking Box (26x30).png │ │ │ ├── Run (26x30).png │ │ │ └── Throwing Box (26x30).png │ │ ├── 05-Pig Thowing a Bomb │ │ │ ├── Idle (26x26).png │ │ │ ├── Picking Bomb (26x26).png │ │ │ ├── Run (26x26).png │ │ │ └── Throwing Boom (26x26).png │ │ ├── 06-Pig Hide in the Box │ │ │ ├── Fall (26x20).png │ │ │ ├── Ground (26x20).png │ │ │ ├── Jump (26x20).png │ │ │ ├── Jump Anticipation (26x20).png │ │ │ └── Looking Out (26x20).png │ │ ├── 07-Pig With a Match │ │ │ ├── Lighting the Cannon (26x18).png │ │ │ ├── Lighting the Match (26x18).png │ │ │ └── Match On (26x18).png │ │ ├── 08-Box │ │ │ ├── Box Pieces 1.png │ │ │ ├── Box Pieces 2.png │ │ │ ├── Box Pieces 3.png │ │ │ ├── Box Pieces 4.png │ │ │ ├── Hit.png │ │ │ └── Idle.png │ │ ├── 09-Bomb │ │ │ ├── Bomb Off.png │ │ │ ├── Bomb On (52x56).png │ │ │ └── Boooooom (52x56).png │ │ ├── 10-Cannon │ │ │ ├── Cannon Ball.png │ │ │ ├── Idle.png │ │ │ └── Shoot (44x28).png │ │ ├── 11-Door │ │ │ ├── Closiong (46x56).png │ │ │ ├── Idle.png │ │ │ └── Opening (46x56).png │ │ ├── 12-Live and Coins │ │ │ ├── Big Diamond Hit (18x14).png │ │ │ ├── Big Diamond Idle (18x14).png │ │ │ ├── Big Heart Hit (18x14).png │ │ │ ├── Big Heart Idle (18x14).png │ │ │ ├── Live Bar.png │ │ │ ├── Numbers (6x8).png │ │ │ ├── Small Diamond (18x14).png │ │ │ ├── Small Heart Hit (18x14).png │ │ │ └── Small Heart Idle (18x14).png │ │ ├── 13-Dialogue Boxes │ │ │ ├── !!! In (24x8).png │ │ │ ├── !!! Out (24x8).png │ │ │ ├── Attack In (24x8).png │ │ │ ├── Attack Out (24x8).png │ │ │ ├── Boom In (24x8).png │ │ │ ├── Boom Out (24x8).png │ │ │ ├── Dead In (24x8).png │ │ │ ├── Dead Out (24x8).png │ │ │ ├── Hello In (24x8).png │ │ │ ├── Hello Out (24x8).png │ │ │ ├── Hi In (24x8).png │ │ │ ├── Hi Out (24x8).png │ │ │ ├── Interrogation In (24x8).png │ │ │ ├── Interrogation Out (24x8).png │ │ │ ├── Loser In (24x8).png │ │ │ ├── Loser Out (24x8).png │ │ │ ├── No In (24x8).png │ │ │ ├── No Out (24x8).png │ │ │ ├── WTF In (24x8).png │ │ │ └── WTF Out (24x8).png │ │ ├── 14-TileSets │ │ │ ├── Decorations (32x32).png │ │ │ └── Terrain (32x32).png │ │ └── Kings and Pigs.png │ ├── asepritetilemap.aseprite │ ├── atlastest │ │ ├── atlas-test-spine.atlas.png │ │ ├── atlas-test-spine.atlas.txt │ │ ├── atlas-test.atlas.txt │ │ ├── atlas-test.json │ │ ├── atlas-test.png │ │ ├── atlas-test.xml │ │ ├── atlas.png │ │ └── atlas.xml │ ├── blade-runner-2049-360p-5sec.mpeg1 │ ├── bunnys.png │ ├── character.png │ ├── character2.png │ ├── characters.ase │ ├── chat-bubble.svg │ ├── clear_sans.fnt │ ├── clear_sans.png │ ├── cp437.png │ ├── crate.jpg │ ├── crate.png │ ├── empty.atlas │ ├── font1.bmglyph │ ├── font1.fnt │ ├── font1.png │ ├── helvetica.otf │ ├── image.9.png │ ├── img1_grayscale.jpg │ ├── jitto-new.svg │ ├── korge-ui.png │ ├── korge.png │ ├── korim.png │ ├── logos.atlas │ ├── logos │ │ ├── korau.png │ │ ├── korge.png │ │ └── korim.png │ ├── logos_svg │ │ ├── jtransc.svg │ │ ├── kds.svg │ │ ├── klock.svg │ │ ├── klogger.svg │ │ ├── kmem.svg │ │ ├── kor-secret.svg │ │ ├── korag.svg │ │ ├── korau.svg │ │ ├── korfl.svg │ │ ├── korge-round.svg │ │ ├── korge.svg │ │ ├── korim.svg │ │ ├── korio.svg │ │ ├── korlibs.svg │ │ ├── korma.svg │ │ ├── korte.svg │ │ ├── korui.svg │ │ └── ktcc.svg │ ├── minesweeper │ │ ├── bg.jpg │ │ ├── bomba.ico │ │ ├── boom.wav │ │ ├── cells.png │ │ ├── click.wav │ │ ├── font.ttf │ │ └── light.png │ ├── msdf │ │ ├── SaniTrixieSans.fnt │ │ ├── SaniTrixieSans.json │ │ └── SaniTrixieSans.png │ ├── myfont-bug.ttf │ ├── myfont-bug2.ttf │ ├── myfont-bug3.ttf │ ├── myfont.ttf │ ├── noto-glyf_colr_1.ttf │ ├── output.png │ ├── progress_bar │ │ ├── progress_bar_ske.json │ │ ├── progress_bar_tex.json │ │ └── progress_bar_tex.png │ ├── psdf │ │ ├── SaniTrixieSans.fnt │ │ ├── SaniTrixieSans.json │ │ └── SaniTrixieSans.png │ ├── roboto-regular-ft-12.fnt │ ├── roboto-regular-ft-12.png │ ├── sample.svg │ ├── sample_no_css_strip.svg │ ├── sdf │ │ ├── SaniTrixieSans.fnt │ │ ├── SaniTrixieSans.json │ │ └── SaniTrixieSans.png │ ├── segment7.fnt │ ├── segment7.png │ ├── slice-example.ase │ ├── sounds │ │ ├── Deus_Ex_Tempus.ogg │ │ ├── Snowland.mp3 │ │ ├── click.mp3 │ │ ├── click.wav │ │ ├── license.txt │ │ ├── mp3.mp3 │ │ ├── ogg.ogg │ │ ├── poliamber.xm │ │ └── wav.wav │ ├── sprites.ase │ ├── traveler.svg │ ├── twemoji-glyf_colr_1.ttf │ ├── uifont.fnt │ ├── uifont.png │ ├── vampire.ase │ ├── vampire.ase.license.txt │ ├── vampire_slices_corrupted.ase │ └── vampire_slices_fixed.ase ├── src │ ├── Main.kt │ ├── helpers.kt │ ├── samples │ │ ├── MainAnimations.kt │ │ ├── MainArc.kt │ │ ├── MainAseprite.kt │ │ ├── MainAtlas.kt │ │ ├── MainAtlasExperiments.kt │ │ ├── MainAudioScene.kt │ │ ├── MainBVH.kt │ │ ├── MainBezier.kt │ │ ├── MainBezierSample.kt │ │ ├── MainBitmapTexId.kt │ │ ├── MainBlending.kt │ │ ├── MainBlur.kt │ │ ├── MainBmpFont.kt │ │ ├── MainBunnymark.kt │ │ ├── MainCache.kt │ │ ├── MainCircleColor.kt │ │ ├── MainCircles.kt │ │ ├── MainClipping.kt │ │ ├── MainColorPicker.kt │ │ ├── MainColorTransformFilter.kt │ │ ├── MainCompression.kt │ │ ├── MainCoroutine.kt │ │ ├── MainCustomSolidRectShader.kt │ │ ├── MainDpi.kt │ │ ├── MainDraggable.kt │ │ ├── MainEasing.kt │ │ ├── MainEditor.kt │ │ ├── MainEmoji.kt │ │ ├── MainEmojiColrv1.kt │ │ ├── MainExifTest.kt │ │ ├── MainFilterScale.kt │ │ ├── MainFilterSwitch.kt │ │ ├── MainFilters.kt │ │ ├── MainFiltersRenderToBitmap.kt │ │ ├── MainFiltersSample.kt │ │ ├── MainFlag.kt │ │ ├── MainGestures.kt │ │ ├── MainGifAnimation.kt │ │ ├── MainGpuVectorRendering.kt │ │ ├── MainGpuVectorRendering2.kt │ │ ├── MainGpuVectorRendering3.kt │ │ ├── MainGraphicsText.kt │ │ ├── MainHaptic.kt │ │ ├── MainHelloWorld.kt │ │ ├── MainImageOrientationTest.kt │ │ ├── MainImageTrace.kt │ │ ├── MainInput.kt │ │ ├── MainMSDF.kt │ │ ├── MainMasks.kt │ │ ├── MainMipmaps.kt │ │ ├── MainMutableAtlasTest.kt │ │ ├── MainNinePatch.kt │ │ ├── MainOnScreenController.kt │ │ ├── MainPolyphonic.kt │ │ ├── MainRenderText.kt │ │ ├── MainRotateCircle.kt │ │ ├── MainRotatedAtlas.kt │ │ ├── MainRotatedTexture.kt │ │ ├── MainSDF.kt │ │ ├── MainScenes.kt │ │ ├── MainShape2d.kt │ │ ├── MainShapes.kt │ │ ├── MainSound.kt │ │ ├── MainSpriteAnim.kt │ │ ├── MainSprites10k.kt │ │ ├── MainStressButtons.kt │ │ ├── MainStressMatrixMultiplication.kt │ │ ├── MainStrokesExperiment3.kt │ │ ├── MainSuspendUserInput.kt │ │ ├── MainSvgAnimation.kt │ │ ├── MainTerminalEmulator.kt │ │ ├── MainText.kt │ │ ├── MainTextBounds.kt │ │ ├── MainTextBounds2.kt │ │ ├── MainTextInput.kt │ │ ├── MainTextMetrics.kt │ │ ├── MainTextureIssue.kt │ │ ├── MainTiledBackground.kt │ │ ├── MainTilemapTest.kt │ │ ├── MainTransition.kt │ │ ├── MainTransitionFilter.kt │ │ ├── MainTrimmedAtlas.kt │ │ ├── MainTweenPoint.kt │ │ ├── MainTweens.kt │ │ ├── MainUI.kt │ │ ├── MainUIImageTester.kt │ │ ├── MainUIStacks.kt │ │ ├── MainUITreeView.kt │ │ ├── MainVector.kt │ │ ├── MainVectorFill.kt │ │ ├── MainVectorNinePatch.kt │ │ ├── MainVectorRendering.kt │ │ ├── MainZIndex.kt │ │ ├── asteroids │ │ │ ├── Assets.kt │ │ │ ├── Asteroid.kt │ │ │ ├── Game.kt │ │ │ ├── GameHolder.kt │ │ │ └── main.kt │ │ ├── connect4 │ │ │ ├── Model.kt │ │ │ └── main.kt │ │ ├── minesweeper │ │ │ ├── Board.kt │ │ │ ├── Process.kt │ │ │ ├── RandomLight.kt │ │ │ ├── Resources.kt │ │ │ └── main.kt │ │ ├── pong │ │ │ ├── MenuScene.kt │ │ │ ├── PlayScene.kt │ │ │ └── main.kt │ │ └── util │ │ │ ├── DockingComponent.kt │ │ │ └── collisions │ │ │ ├── HitTestable.kt │ │ │ └── ViewCollision.kt │ └── util │ │ └── FrameBlock.kt ├── src@android │ └── AndroidManifest.xml ├── src@jvm │ ├── AwtIntegration.kt │ ├── AwtSandboxSample.kt │ ├── JvmMain.kt │ ├── MainRenderImagesJvmNative.kt │ └── korlibs │ │ └── korge │ │ └── editor │ │ └── KorgeEditor.kt └── test │ ├── korlibs │ └── korge │ │ └── editor │ │ └── KorgeEditorTest.kt │ └── samples │ └── connect4 │ └── Connect4ModelTest.kt ├── korge ├── .gitignore ├── LICENSE.txt ├── README.md ├── build.gradle.kts ├── resources │ └── META-INF │ │ └── services │ │ └── korlibs.korge.ViewsCompleter ├── settings.json ├── src │ └── korlibs │ │ ├── audio │ │ └── sound │ │ │ └── AudioChannel.kt │ │ └── korge │ │ ├── Korge.kt │ │ ├── KorgeExt.kt │ │ ├── KorgeHeadless.kt │ │ ├── animate │ │ ├── Animator.kt │ │ └── AnimatorStateManager.kt │ │ ├── audio │ │ └── AudioChannel.kt │ │ ├── component │ │ ├── OutOverDecorator.kt │ │ └── StageComponent.kt │ │ ├── input │ │ ├── DropFile.kt │ │ ├── GamepadEvents.kt │ │ ├── GestureEvents.kt │ │ ├── KeysEvents.kt │ │ ├── MouseDragComponent.kt │ │ ├── MouseEvents.kt │ │ ├── SwipeComponent.kt │ │ ├── TouchEvents.kt │ │ └── TouchEventsRecognizers.kt │ │ ├── render │ │ ├── RenderContext2DExt.kt │ │ └── RenderContextExt.kt │ │ ├── scene │ │ ├── CompletableScene.kt │ │ ├── Scene.kt │ │ ├── SceneContainer.kt │ │ └── Transition.kt │ │ ├── service │ │ ├── haptic │ │ │ └── HapticFeedback.kt │ │ ├── storage │ │ │ └── NativeStorage.kt │ │ └── vibration │ │ │ └── NativeVibrationViews.kt │ │ ├── style │ │ └── ViewStyles.kt │ │ ├── tests │ │ ├── KorgeTest.kt │ │ └── ViewsForTesting.kt │ │ ├── text │ │ ├── MsdfRender.kt │ │ └── TextEditController.kt │ │ ├── time │ │ ├── TimeSpanExt.kt │ │ └── TimerComponents.kt │ │ ├── tween │ │ └── tween.kt │ │ ├── ui │ │ ├── UIBreadCrumb.kt │ │ ├── UIButton.kt │ │ ├── UIButtonToggleableGroup.kt │ │ ├── UICheckBox.kt │ │ ├── UIComboBox.kt │ │ ├── UIContainerLayouts.kt │ │ ├── UIDefaults.kt │ │ ├── UIDirection.kt │ │ ├── UIEditableNumber.kt │ │ ├── UIFocusManager.kt │ │ ├── UIIcons.kt │ │ ├── UIImage.kt │ │ ├── UIMaterialLayer.kt │ │ ├── UIObservable.kt │ │ ├── UIOldScrollBar.kt │ │ ├── UIProgressBar.kt │ │ ├── UIProperty.kt │ │ ├── UIPropertyRow.kt │ │ ├── UIRadioButton.kt │ │ ├── UIScrollable.kt │ │ ├── UIScrollableArea.kt │ │ ├── UISlider.kt │ │ ├── UISpacing.kt │ │ ├── UISwitch.kt │ │ ├── UIText.kt │ │ ├── UITextEdit.kt │ │ ├── UITextInput.kt │ │ ├── UITooltipContainer.kt │ │ ├── UITooltipContainerMediatorNew.kt │ │ ├── UITreeView.kt │ │ ├── UIVerticalList.kt │ │ ├── UIView.kt │ │ ├── UIViewStyles.kt │ │ └── UIWindow.kt │ │ └── view │ │ ├── Anchorable.kt │ │ ├── BView.kt │ │ ├── BaseGraphics.kt │ │ ├── BaseView.kt │ │ ├── BlendMode.kt │ │ ├── CachedContainer.kt │ │ ├── Camera.kt │ │ ├── Circle.kt │ │ ├── ClipContainer.kt │ │ ├── Container.kt │ │ ├── CpuGraphics.kt │ │ ├── CustomContextRenderizableView.kt │ │ ├── DummyView.kt │ │ ├── Ellipse.kt │ │ ├── FastEllipse.kt │ │ ├── FastRoundRect.kt │ │ ├── FastRoundRectBase.kt │ │ ├── FilteredContainer.kt │ │ ├── FixedSizeContainer.kt │ │ ├── FpsOverlay.kt │ │ ├── Graphics.kt │ │ ├── Image.kt │ │ ├── InvalidateNotifier.kt │ │ ├── Line.kt │ │ ├── Mesh.kt │ │ ├── NinePatch.kt │ │ ├── NinePatchShapeView.kt │ │ ├── Outline.kt │ │ ├── QView.kt │ │ ├── RectBase.kt │ │ ├── Renderable.kt │ │ ├── RenderableView.kt │ │ ├── RoundRect.kt │ │ ├── ScaleView.kt │ │ ├── ShadedView.kt │ │ ├── ShapeView.kt │ │ ├── SolidRect.kt │ │ ├── SolidTriangle.kt │ │ ├── Sprite.kt │ │ ├── SpriteAnimation.kt │ │ ├── Stage.kt │ │ ├── StandardViewPropertyProvider.kt │ │ ├── Text.kt │ │ ├── TextBlock.kt │ │ ├── TextExt.kt │ │ ├── VectorImage.kt │ │ ├── View.kt │ │ ├── ViewExt.kt │ │ ├── ViewFileRef.kt │ │ ├── ViewRenderToBitmap.kt │ │ ├── Views.kt │ │ ├── align │ │ └── ViewAlignExt.kt │ │ ├── animation │ │ ├── ImageAnimationView.kt │ │ ├── ImageDataView.kt │ │ ├── Playable.kt │ │ └── PlayableWithName.kt │ │ ├── camera │ │ └── Camera.kt │ │ ├── debug │ │ └── DebugVertexView.kt │ │ ├── fast │ │ └── FSprites.kt │ │ ├── filter │ │ ├── BlurFilter.kt │ │ ├── ColorMatrixFilter.kt │ │ ├── ColorTransformFilter.kt │ │ ├── ComposedFilter.kt │ │ ├── Convolute3Filter.kt │ │ ├── DirectionalBlurFilter.kt │ │ ├── DitheringFilter.kt │ │ ├── DropShadowFilter.kt │ │ ├── Filter.kt │ │ ├── FilterWithFiltering.kt │ │ ├── FlagFilter.kt │ │ ├── IdentityFilter.kt │ │ ├── PageFilter.kt │ │ ├── ShaderFilter.kt │ │ ├── SwizzleColorFilter.kt │ │ ├── TransitionFilter.kt │ │ ├── ViewBackdropFilter.kt │ │ ├── ViewFilter.kt │ │ ├── ViewFilterExt.kt │ │ └── WaveFilter.kt │ │ ├── mask │ │ └── ViewMask.kt │ │ ├── property │ │ ├── ViewAction.kt │ │ └── ViewProperty.kt │ │ ├── tiles │ │ └── TileMap.kt │ │ ├── util │ │ └── util.kt │ │ └── vector │ │ ├── GpuShapeView.kt │ │ ├── GpuShapeViewCommands.kt │ │ └── GpuShapeViewPrograms.kt ├── src@android │ └── korlibs │ │ └── korge │ │ ├── KorgeExtAndroid.kt │ │ ├── android │ │ ├── AndroidExt.kt │ │ └── KorgeAndroidView.kt │ │ ├── service │ │ └── storage │ │ │ └── NativeStorage.kt │ │ └── tests │ │ └── enrichTestGameWindow.kt ├── src@darwin │ └── korlibs │ │ └── korge │ │ ├── KorgeExtNative.kt │ │ ├── KorgeIosUIViewProvider.kt │ │ ├── service │ │ └── storage │ │ │ ├── DarwinNativeStorage.kt │ │ │ └── NativeStorageNative.kt │ │ └── tests │ │ └── enrichTestGameWindow.kt ├── src@js │ └── korlibs │ │ └── korge │ │ ├── KorgeExtJs.kt │ │ ├── service │ │ └── storage │ │ │ └── NativeStorage.kt │ │ └── tests │ │ └── enrichTestGameWindow.kt ├── src@jvm │ └── korlibs │ │ └── korge │ │ ├── GLCanvasKorge.kt │ │ ├── IPCViewsCompleter.kt │ │ ├── KorgeExtJvm.kt │ │ ├── StandardViewsCompleter.kt │ │ ├── ViewsNodeId.kt │ │ ├── awt │ │ ├── ObservableProperty.kt │ │ ├── UI.kt │ │ ├── UIAwt.kt │ │ ├── UILength.kt │ │ ├── UiEditProperties.kt │ │ ├── ViewsDebugger.kt │ │ └── ViewsDebuggerActions.kt │ │ ├── service │ │ └── storage │ │ │ └── NativeStorage.kt │ │ ├── testing │ │ ├── BitmapAsserter.kt │ │ ├── KorgeOffscreenTest.kt │ │ ├── KorgeScreenshotTestResult.kt │ │ ├── KorgeScreenshotTestResults.kt │ │ ├── KorgeScreenshotTester.kt │ │ └── testing_utils.kt │ │ ├── tests │ │ └── enrichTestGameWindow.kt │ │ └── view │ │ └── property │ │ └── ViewProps.kt ├── src@wasmJs │ └── korlibs │ │ └── korge │ │ ├── KorgeExtJs.kt │ │ ├── service │ │ └── storage │ │ │ └── NativeStorage.kt │ │ └── tests │ │ └── enrichTestGameWindow.kt ├── test │ └── korlibs │ │ ├── SkipIOTest.kt │ │ ├── TestExt.kt │ │ └── korge │ │ ├── KorgeConfigTest.kt │ │ ├── KorgeHeadlessTest.kt │ │ ├── ViewsForTestingTest.kt │ │ ├── animate │ │ ├── AnimStateManagerTest.kt │ │ ├── AnimatorTest.kt │ │ └── NewAnimatorTest.kt │ │ ├── atlas │ │ └── AtlasInfoTest.kt │ │ ├── audio │ │ └── AudioChannelTest.kt │ │ ├── component │ │ └── StageComponentTest.kt │ │ ├── input │ │ ├── DropFileTest.kt │ │ ├── KeysEventsTest.kt │ │ ├── MouseDragComponentTest.kt │ │ └── component │ │ │ └── MouseComponentTest.kt │ │ ├── render │ │ ├── AgAutoFreeManagerTest.kt │ │ ├── AgBitmapTextureManagerTest.kt │ │ └── RenderContextTest.kt │ │ ├── scene │ │ └── SceneContainerTest.kt │ │ ├── storage │ │ └── NativeStorageTest.kt │ │ ├── style │ │ └── ViewStylesTest.kt │ │ ├── time │ │ ├── TimeSpanTest.kt │ │ └── TimerComponentsTest.kt │ │ ├── tween │ │ ├── TweenInterpolators.kt │ │ ├── TweenTest.kt │ │ └── V2Test.kt │ │ ├── ui │ │ ├── UIButtonToggleableGroupTest.kt │ │ ├── UIContainerLayoutsTest.kt │ │ ├── UIMaterialLayerTest.kt │ │ ├── UITextInputTest.kt │ │ ├── UITreeViewTest.kt │ │ ├── UIVerticalListTest.kt │ │ ├── UIViewTest.kt │ │ ├── UiLayoutTest.kt │ │ └── UiTest.kt │ │ └── view │ │ ├── BitmapSliceViewTest.kt │ │ ├── BlendModeTest.kt │ │ ├── CachedContainerTest.kt │ │ ├── ContainerTest.kt │ │ ├── FixedSizeContainerTest.kt │ │ ├── GraphicsTest.kt │ │ ├── ImageAnimationViewTest.kt │ │ ├── NinePatchTest.kt │ │ ├── ShapeViewTest.kt │ │ ├── SpriteAnimationCommonTest.kt │ │ ├── SpritesTest.kt │ │ ├── StageTest.kt │ │ ├── TextTest.kt │ │ ├── ViewDebugTest.kt │ │ ├── ViewFixedSizeContainerTest.kt │ │ ├── ViewHitTestTest.kt │ │ ├── ViewTest.kt │ │ ├── ViewUpdatedTest.kt │ │ ├── Views2Test.kt │ │ ├── ViewsFixedSizeContainerHitTestTest.kt │ │ ├── ViewsInjectorTest.kt │ │ ├── ViewsTest.kt │ │ ├── filter │ │ ├── ColorMatrixFilterTest.kt │ │ ├── ComposedFilterTest.kt │ │ ├── DirectionalBlurFilterTest.kt │ │ └── ShaderFilterTest.kt │ │ ├── tiles │ │ └── TileMapTest.kt │ │ ├── util │ │ └── UtilTest.kt │ │ └── vector │ │ └── GpuShapeViewTest.kt ├── test@jvm │ └── korlibs │ │ ├── datastructure │ │ └── event │ │ │ └── JvmSyncEventLoopTest.kt │ │ ├── korge │ │ ├── KorgeHeadlessJvmTest.kt │ │ ├── KorgeReloadTest.kt │ │ ├── atlas │ │ │ └── AtlasResourceProcessorTest.kt │ │ ├── awt │ │ │ └── AwtSample.kt │ │ ├── bitmapfont │ │ │ └── BitmapFontTest.kt │ │ ├── image │ │ │ └── KorgeImageTest.kt │ │ ├── issues │ │ │ └── Issue83Sample.kt │ │ ├── render │ │ │ └── BatchBuilderShaderTest.kt │ │ ├── spike │ │ │ └── Spike1.kt │ │ ├── test │ │ │ ├── TtfFontTest.kt │ │ │ └── assertEqualsFileReference.kt │ │ ├── testing │ │ │ └── KorgeScreenshotTest.kt │ │ ├── ui │ │ │ └── UiTest.kt │ │ └── view │ │ │ ├── GpuShapeViewTest.kt │ │ │ ├── ReferenceGraphicsTest.kt │ │ │ ├── ReferenceOpenglTest.kt │ │ │ ├── ReferenceViewsTest.kt │ │ │ ├── SDFViewTest.kt │ │ │ ├── SolidTriangleTest.kt │ │ │ ├── SpriteAnimationTest.kt │ │ │ ├── TextBlockScreenshotTest.kt │ │ │ ├── TransitionViewTest.kt │ │ │ ├── ViewFixedSizeContainerScreenshotTest.kt │ │ │ ├── ViewsJvmTest.kt │ │ │ ├── ViewsOpenglJvmTest.kt │ │ │ ├── ViewsRetinaFilterTest.kt │ │ │ ├── fast │ │ │ ├── FSpritesJvmTest.kt │ │ │ └── MultiTextureFastRender.kt │ │ │ ├── filter │ │ │ ├── ColorTransformFilterJvmTest.kt │ │ │ ├── DitherFilterJvmTest.kt │ │ │ ├── MaskAndBackdropFilterScreenshotJvmTest.kt │ │ │ └── WaveFilterScreenshotJvmTest.kt │ │ │ ├── tiles │ │ │ └── TileMapViewScreenshotTest.kt │ │ │ └── ui │ │ │ └── UIScreenshotJvmTest.kt │ │ └── render │ │ ├── AGOpenglTest.kt │ │ ├── TestE2eJava.kt │ │ ├── awt │ │ ├── AwtGameCanvasTest.kt │ │ └── AwtGameWindowTest.kt │ │ ├── osx │ │ └── metal │ │ │ └── AGMetalTest.kt │ │ └── win32 │ │ └── XInputEventAdapterCommonTest.kt ├── test@native │ └── korlibs │ │ └── korge │ │ └── KorgeMultithreadedTest.kt ├── testGoldens │ ├── korlibs.korge.image.KorgeImageTest │ │ └── renderGrayscaleJpegImage_grayscale_jpg.png │ └── korlibs.korge.testing.KorgeScreenshotTest │ │ ├── test12_initial1.png │ │ ├── test12_initial2.png │ │ ├── test12_initial3.png │ │ └── test12_initial4.png ├── testresources │ ├── Exif5-2x.png │ ├── Pacifico.ttf │ ├── SimpleAGOpengl.clear.ref │ ├── atlas-test-spine.atlas.png │ ├── atlas-test-spine.atlas.txt │ ├── atlas-test.json │ ├── atlas-test.png │ ├── atlas-test.xml │ ├── atlas │ │ ├── adventurer.png │ │ ├── adventurer.xml │ │ ├── sheet.png │ │ ├── sheet.xml │ │ ├── simple.atlas │ │ ├── simple │ │ │ ├── forearm_hit_0.png │ │ │ ├── forearm_jump_0.png │ │ │ └── p_arm_idle.png │ │ ├── spritesheet-2.json │ │ ├── spritesheet.json │ │ └── spritesheet.png │ ├── button.9.png │ ├── button.png │ ├── countDown.png │ ├── demo.json │ ├── font.zip │ ├── font │ │ ├── font.fnt │ │ ├── font.png │ │ ├── m5x7_16_outline.fnt │ │ └── m5x7_16_outline.png │ ├── font2 │ │ ├── font1.fnt │ │ └── font1.png │ ├── font_atkinson │ │ ├── AtkinsonHyperlegible-Bold-OFL.txt │ │ └── AtkinsonHyperlegible-Bold.ttf │ ├── img1_grayscale.jpg │ ├── korag │ │ ├── AGQueueProcessorContextLost.ref │ │ └── AGQueueProcessorOpenGLTest.ref │ ├── korge-ui.png │ ├── korge.png │ ├── korge │ │ ├── bindlength │ │ │ └── BindLengthComponentJvmTest.log │ │ ├── bitmapfont │ │ │ └── BitmapFontSimple.log │ │ ├── fast │ │ │ └── MultiTextureRendering.log │ │ ├── fsprites │ │ │ └── FSprites.log │ │ └── render │ │ │ └── Default.frag.log │ ├── npatch │ │ └── 9patch.9.png │ ├── simple.wav │ ├── texture.png │ ├── uifont.fnt │ └── uifont.png └── testscreenshots │ └── korlibs │ └── korge │ ├── bitmapfont │ └── BitmapFontTest │ │ └── simple_0.png │ ├── test │ └── TtfFontTest │ │ ├── disableLigaturesWorks_text.png │ │ └── testFillTextAlignmentWorks_0.png │ ├── testing │ └── KorgeScreenshotTest │ │ ├── test1_initial1.png │ │ ├── test1_initial2.png │ │ ├── test1_initial3.png │ │ ├── testArcShapes_shapes.png │ │ ├── testContextLost2_0.png │ │ ├── testContextLost_0.png │ │ ├── testContextLost_1.png │ │ └── testMipmaps_0.png │ └── view │ ├── GpuShapeViewTest │ ├── test2_0.png │ ├── testClipping_0.png │ ├── testMultiTextures_0.png │ └── test_0.png │ ├── ReferenceGraphicsTest │ ├── testBlurFilterInEmptyContainer_blur.png │ ├── testFSpritesN_N1.png │ ├── testFSpritesN_N2.png │ ├── testFSpritesN_N3.png │ ├── testFSpritesN_N4.png │ ├── testGpuShapeViewFilter_0.png │ ├── testGraphics_0.png │ └── testInvertBlendingMode_invertBlend.png │ ├── ReferenceOpenglTest │ ├── testOpenglShapeView_0.png │ └── testOpengl_0.png │ ├── ReferenceViewsTest │ └── testClippedContainerInFlippedContainerInTexture_0.png │ ├── SDFViewTest │ └── test_0.png │ ├── SolidTriangleTest │ ├── test_0.png │ └── test_1.png │ ├── TextBlockScreenshotTest │ └── testTextBlock_textBlock.png │ ├── TransitionViewTest │ ├── test_0.png │ ├── test_1.png │ └── test_2.png │ ├── ViewFixedSizeContainerScreenshotTest │ ├── testClipping_0.png │ └── testClipping_1.png │ ├── ViewsJvmTest │ ├── name_0.png │ ├── testCachedFalseClipFalse_0.png │ ├── testCachedFalse_0.png │ ├── testCachedTrue_0.png │ ├── testClipping1_0.png │ ├── testFilter_0.png │ ├── testUIScrollableCacheFalse_0.png │ └── testUIScrollableCacheTrue_0.png │ ├── ViewsOpenglJvmTest │ ├── testIdentityFilterFor128x128_0.png │ └── testRenderToTextureWithStencil_0.png │ ├── ViewsRetinaFilterTest │ └── test_0.png │ ├── fast │ ├── FSpritesJvmTest │ │ ├── testAlpha_0.png │ │ └── test_0.png │ └── MultiTextureFastRender │ │ └── test_0.png │ ├── filter │ ├── ColorTransformFilterJvmTest │ │ └── test_0.png │ ├── DitherFilterJvmTest │ │ └── test_0.png │ ├── MaskAndBackdropFilterScreenshotJvmTest │ │ └── test_0.png │ └── WaveFilterScreenshotJvmTest │ │ └── test_0.png │ ├── tiles │ └── TileMapViewScreenshotTest │ │ ├── testTilemapOffsetAndOrientation_tilemapOffsetAndOrientation.png │ │ ├── testTilemapScreenshotTest_offsetInfiniteTilemap.png │ │ └── testTilemapScreenshotTest_offsetInfiniteTilemap2.png │ └── ui │ └── UIScreenshotJvmTest │ └── test_0.png ├── proguard-rules.pro ├── settings.gradle.kts └── webgpu.h /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | charset=utf-8 3 | end_of_line=lf 4 | insert_final_newline=true 5 | indent_style=space 6 | indent_size=4 7 | ij_kotlin_name_count_to_use_star_import = 1 8 | ij_kotlin_blank_lines_before_declaration_with_comment_or_annotation_on_separate_line = 0 9 | ij_kotlin_variable_annotation_wrap = off 10 | 11 | [*.json] 12 | indent_size=2 13 | 14 | [*.yml] 15 | indent_size = 2 16 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | 3 | # https://github.com/github-linguist/linguist/blob/master/docs/overrides.md 4 | *.wasm linguist-vendored 5 | *.wat linguist-vendored 6 | -------------------------------------------------------------------------------- /.github/workflows-disabled/PROJECT_ASSIGN.yml: -------------------------------------------------------------------------------- 1 | name: Add issues to korlibs project 2 | 3 | on: 4 | issues: 5 | types: 6 | - opened 7 | 8 | jobs: 9 | add-to-project: 10 | name: Add issue to project 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/add-to-project@v0.4.0 14 | with: 15 | # You can target a repository in a different organization 16 | # to the issue 17 | project-url: https://github.com/orgs/korlibs/projects/19 18 | github-token: ${{ secrets.GITHUB_TOKEN }} 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .fleet 3 | .gradle 4 | .kotlin 5 | *.iml 6 | *.ipr 7 | *.iws 8 | /build 9 | #build 10 | hs_err_*.log 11 | local.properties 12 | local.*.properties 13 | .DS_Store 14 | /samples/hello-world/game.korgegame.storage 15 | /samples/hello-world/game.storage 16 | /samples/hello-world/settings.json 17 | out.txt 18 | err.txt 19 | /korim/demo.png 20 | *.hprof 21 | *.xcuserstate 22 | xcuserdata 23 | kotlin-js-store/ 24 | .kotlin 25 | /stagedRepositoryId 26 | /*/build 27 | -------------------------------------------------------------------------------- /.idea/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/.idea/icon.png -------------------------------------------------------------------------------- /archive/experiments/mingwx64_ssl/.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | cmake-build-debug 3 | -------------------------------------------------------------------------------- /archive/experiments/mingwx64_ssl/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.20) 2 | project(untitled2) 3 | 4 | set(CMAKE_CXX_STANDARD 14) 5 | 6 | add_executable(untitled2 main.cpp) 7 | 8 | target_link_libraries(untitled2 ws2_32.lib Crypt32.lib Secur32.lib Comctl32.lib) 9 | -------------------------------------------------------------------------------- /archive/experiments/touch/serve.bat: -------------------------------------------------------------------------------- 1 | live-server --host=0.0.0.0 --port=8000 . 2 | -------------------------------------------------------------------------------- /archive/osx-metal-playground/.gitignore: -------------------------------------------------------------------------------- 1 | /.idea 2 | /.gradle 3 | /build 4 | /out 5 | /classes 6 | /web 7 | *.ipr 8 | *.iws 9 | *.iml 10 | /local.properties 11 | -------------------------------------------------------------------------------- /archive/osx-metal-playground/src/macosMain/kotlin/korge/graphics/backend/metal/Renderer.kt: -------------------------------------------------------------------------------- 1 | package korge.graphics.backend.metal 2 | 3 | import platform.Metal.* 4 | import platform.MetalKit.* 5 | 6 | abstract class Renderer { 7 | 8 | val device = MTLCreateSystemDefaultDevice() ?: error("fail to create device") 9 | val commandQueue = device.newCommandQueue() ?: error("fail to create command queue") 10 | 11 | abstract fun drawOnView(view: MTKView) 12 | } 13 | -------------------------------------------------------------------------------- /archive/osx-metal-playground/src/macosMain/kotlin/platform.foundation/NSRect.kt: -------------------------------------------------------------------------------- 1 | package platform.foundation 2 | 3 | import kotlinx.cinterop.* 4 | import platform.Foundation.* 5 | 6 | 7 | val CValue.width get() = this.useContents { size.width } 8 | val CValue.height get() = this.useContents { size.height } 9 | -------------------------------------------------------------------------------- /archive/scripts/normalizelineendings/normalizelineendings.main.kts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env kotlinc -script -J-Xmx2g 2 | 3 | import java.io.* 4 | 5 | File(".").walkBottomUp().filter { it.extension == "kt" }.forEach { 6 | val text = it.readText() 7 | println("it: $it") 8 | it.writeText(text.trimEnd() + "\n") 9 | } 10 | -------------------------------------------------------------------------------- /buildSrc/.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle 2 | /build 3 | /src/main/kotlinGen 4 | -------------------------------------------------------------------------------- /buildSrc/src/main/kotlin/korlibs/korge/gradle/GameCategory.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle 2 | 3 | enum class GameCategory { 4 | ACTION, ADVENTURE, ARCADE, BOARD, CARD, 5 | CASINO, DICE, EDUCATIONAL, FAMILY, KIDS, 6 | MUSIC, PUZZLE, RACING, ROLE_PLAYING, SIMULATION, 7 | SPORTS, STRATEGY, TRIVIA, WORD; 8 | 9 | companion object { 10 | val VALUES: Map = GameCategory.values().toList().associateBy { it.name.uppercase() } 11 | operator fun get(key: String): GameCategory? = VALUES[key.uppercase().trim()] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /buildSrc/src/main/kotlin/korlibs/korge/gradle/targets/ModuleResources.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.targets 2 | 3 | import org.gradle.api.* 4 | import org.gradle.api.file.* 5 | import java.io.* 6 | 7 | fun CopySpec.registerModulesResources(project: Project) { 8 | project.afterEvaluate { 9 | for (file in (project.rootDir.resolve("modules").listFiles()?.toList() ?: emptyList())) { 10 | from(File(file, "resources")) 11 | from(File(file, "src/commonMain/resources")) 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /buildSrc/src/main/kotlin/korlibs/korge/gradle/targets/ProjectType.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.targets 2 | 3 | enum class ProjectType { 4 | EXECUTABLE, LIBRARY; 5 | 6 | val isExecutable: Boolean get() = this == EXECUTABLE 7 | val isLibrary: Boolean get() = this == LIBRARY 8 | 9 | companion object { 10 | fun fromExecutable(executable: Boolean) = if (executable) EXECUTABLE else LIBRARY 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /buildSrc/src/main/kotlin/korlibs/korge/gradle/targets/TaskGroups.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.targets 2 | 3 | const val GROUP_KORGE_RUN: String = "@korge run" 4 | const val GROUP_KORGE_ADB: String = "@korge adb" 5 | const val GROUP_KORGE_LIST: String = "@korge list" 6 | const val GROUP_KORGE_PACKAGE: String = "@korge package" 7 | const val GROUP_KORGE_INSTALL: String = "@korge install" 8 | -------------------------------------------------------------------------------- /buildSrc/src/main/kotlin/korlibs/korge/gradle/targets/js/Webpack.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.targets.js 2 | 3 | import org.gradle.api.* 4 | 5 | fun Project.configureWebpackFixes() { 6 | // @TODO: HACK for webpack: https://youtrack.jetbrains.com/issue/KT-48273#focus=Comments-27-5122487.0-0 7 | rootProject.plugins.withType(org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin::class.java) { 8 | //rootProject.extensions.getByType(org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension::class.java).versions.webpackDevServer.version = "4.0.0-rc.0" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /buildSrc/src/main/kotlin/korlibs/korge/gradle/targets/native/NativeBuildTypes.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.targets.native 2 | 3 | import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType 4 | 5 | object NativeBuildTypes { 6 | val TYPES = listOf(NativeBuildType.DEBUG, NativeBuildType.RELEASE) 7 | } 8 | 9 | val NativeBuildType.nameType: String get() = when (this) { 10 | NativeBuildType.DEBUG -> "Debug" 11 | NativeBuildType.RELEASE -> "Release" 12 | } 13 | -------------------------------------------------------------------------------- /buildSrc/src/main/kotlin/korlibs/korge/gradle/util/GroovyDynamic.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.util 2 | 3 | import groovy.lang.* 4 | import org.gradle.api.* 5 | 6 | fun Project.closure(callback: () -> T) = GroovyClosure(this, callback) 7 | 8 | fun GroovyClosure(owner: Any?, callback: () -> T): Closure = object : Closure(owner) { 9 | override fun call(): T = callback() 10 | } 11 | -------------------------------------------------------------------------------- /buildSrc/src/main/kotlin/korlibs/korge/gradle/util/JavaMinVersion.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.util 2 | 3 | import korlibs.* 4 | 5 | fun checkMinimumJavaVersion() { 6 | val javaVersionProp = System.getProperty("java.version") ?: "unknown" 7 | val javaVersion = currentJavaVersion() 8 | 9 | if (javaVersion < 11) { 10 | error("Java 11 or greater is is required, but found $javaVersion - $javaVersionProp") 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /buildSrc/src/main/kotlin/korlibs/korge/gradle/util/JsonExt.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.util 2 | 3 | import com.google.gson.* 4 | 5 | operator fun JsonElement.get(key: String): JsonElement = asJsonObject.get(key) 6 | val JsonElement.list: JsonArray get() = asJsonArray 7 | 8 | private val prettyGson by lazy { GsonBuilder().setPrettyPrinting().create() } 9 | fun JsonElement.toStringPretty() = prettyGson.toJson(this) 10 | -------------------------------------------------------------------------------- /buildSrc/src/main/kotlin/korlibs/korge/gradle/util/KotlinVersionExt.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.util 2 | 3 | //fun KotlinVersion.Companion.fromString(str: String): KotlinVersion { 4 | // val (major, minor, patch) = str.split(".") + listOf("0", "0", "0") 5 | // return KotlinVersion(major.toInt(), minor.toIntOrNull() ?: 0, patch.toIntOrNull() ?: 0) 6 | //} 7 | -------------------------------------------------------------------------------- /buildSrc/src/main/kotlin/korlibs/korge/gradle/util/MD5.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.util 2 | 3 | import java.security.* 4 | 5 | fun ByteArray.md5String(): String { 6 | return MessageDigest.getInstance("MD5").digest(this).hex 7 | } 8 | -------------------------------------------------------------------------------- /buildSrc/src/main/kotlin/korlibs/korge/gradle/util/NamedDomainObjectContainerExt.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.util 2 | 3 | import org.gradle.api.Action 4 | import org.gradle.api.NamedDomainObjectContainer 5 | 6 | fun NamedDomainObjectContainer.createOnce(name: String, configureAction: T.() -> Unit): T { 7 | val item = findByName(name) 8 | if (item != null) return item 9 | return create(name, configureAction) 10 | } 11 | -------------------------------------------------------------------------------- /buildSrc/src/main/kotlin/korlibs/korge/gradle/util/StreamExt.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.util 2 | 3 | import java.io.* 4 | 5 | fun OutputStream.write8(value: Int) { 6 | write(value) 7 | } 8 | 9 | fun OutputStream.write16LE(value: Int) { 10 | write((value ushr 0) and 0xFF) 11 | write((value ushr 8) and 0xFF) 12 | } 13 | 14 | fun OutputStream.write32LE(value: Int) { 15 | write((value ushr 0) and 0xFF) 16 | write((value ushr 8) and 0xFF) 17 | write((value ushr 16) and 0xFF) 18 | write((value ushr 24) and 0xFF) 19 | } 20 | fun OutputStream.writeBytes(bytes: ByteArray) { 21 | write(bytes) 22 | } 23 | -------------------------------------------------------------------------------- /buildSrc/src/main/kotlin/korlibs/korge/gradle/util/UniqueNameGenerator.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.util 2 | 3 | class UniqueNameGenerator { 4 | val nameToSuffix = LinkedHashMap() 5 | 6 | operator fun get(name: String): String { 7 | if (name !in nameToSuffix) { 8 | nameToSuffix[name] = -1 9 | return name 10 | } else { 11 | val index = nameToSuffix[name]!! + 1 12 | nameToSuffix[name] = index 13 | return get("$name$index") 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /buildSrc/src/main/kotlin/korlibs/modules/GithubCI.kt: -------------------------------------------------------------------------------- 1 | package korlibs.modules 2 | 3 | import java.io.* 4 | 5 | object GithubCI { 6 | fun setOutput(name: String, value: String) { 7 | val GITHUB_OUTPUT = System.getenv("GITHUB_OUTPUT") 8 | if (GITHUB_OUTPUT != null) { 9 | File(GITHUB_OUTPUT).appendText("$name=$value\n") 10 | } else { 11 | println("::set-output name=$name::$value") 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /buildSrc/src/main/resources/META-INF/services/korlibs.korge.gradle.processor.KorgeResourceProcessor: -------------------------------------------------------------------------------- 1 | korlibs.korge.gradle.processor.KorgeTexturePacker 2 | -------------------------------------------------------------------------------- /buildSrc/src/main/resources/banners/korge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/buildSrc/src/main/resources/banners/korge.png -------------------------------------------------------------------------------- /buildSrc/src/main/resources/custom-html-body.template.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /buildSrc/src/main/resources/custom-html-head.template.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /buildSrc/src/main/resources/custom-styles.template.css: -------------------------------------------------------------------------------- 1 | /* custom-styles.template.css */ 2 | -------------------------------------------------------------------------------- /buildSrc/src/main/resources/icons/korge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/buildSrc/src/main/resources/icons/korge.png -------------------------------------------------------------------------------- /buildSrc/src/main/resources/korge.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/buildSrc/src/main/resources/korge.keystore -------------------------------------------------------------------------------- /buildSrc/src/test/kotlin/korlibs/korge/gradle/typedresources/AseSpriteTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.typedresources 2 | 3 | import korlibs.korge.gradle.util.* 4 | import org.junit.Assert 5 | import org.junit.Test 6 | 7 | class AseSpriteTest { 8 | @Test 9 | fun test() { 10 | val info = ASEInfo.Companion.getAseInfo(getResourceBytes("sprites.ase")) 11 | Assert.assertEquals(0, info.slices.size) 12 | Assert.assertEquals(listOf("TestNum", "FireTrail", "FireTrail2"), info.tags.map { it.tagName }) 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /buildSrc/src/test/kotlin/korlibs/korge/gradle/typedresources/ResourceTools.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.typedresources 2 | 3 | import java.net.* 4 | 5 | class ResourceTools 6 | 7 | fun getResourceBytes(path: String): ByteArray = getResourceURL(path).readBytes() 8 | fun getResourceText(path: String): String = getResourceURL(path).readText() 9 | 10 | fun getResourceURL(path: String): URL { 11 | return ResourceTools::class.java.getResource("/${path.trim('/')}") 12 | ?: error("Can't find '$path' in class loaders") 13 | } 14 | -------------------------------------------------------------------------------- /buildSrc/src/test/resources/sprites.ase: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/buildSrc/src/test/resources/sprites.ase -------------------------------------------------------------------------------- /e2e/e2e-test-integration/swiftui/SwiftUIKorgeIntegration/SwiftUIKorgeIntegration.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /e2e/e2e-test-integration/swiftui/SwiftUIKorgeIntegration/SwiftUIKorgeIntegration.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /e2e/e2e-test-integration/swiftui/SwiftUIKorgeIntegration/SwiftUIKorgeIntegration/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /e2e/e2e-test-integration/swiftui/SwiftUIKorgeIntegration/SwiftUIKorgeIntegration/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "platform" : "ios", 6 | "size" : "1024x1024" 7 | } 8 | ], 9 | "info" : { 10 | "author" : "xcode", 11 | "version" : 1 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /e2e/e2e-test-integration/swiftui/SwiftUIKorgeIntegration/SwiftUIKorgeIntegration/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /e2e/e2e-test-integration/swiftui/SwiftUIKorgeIntegration/SwiftUIKorgeIntegration/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /e2e/e2e-test-integration/swiftui/SwiftUIKorgeIntegration/SwiftUIKorgeIntegration/SwiftUIKorgeIntegrationApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SwiftUIKorgeIntegrationApp.swift 3 | // SwiftUIKorgeIntegration 4 | // 5 | // Created by Carlos Ballesteros Velasco on 10/7/23. 6 | // 7 | 8 | import SwiftUI 9 | 10 | @main 11 | struct SwiftUIKorgeIntegrationApp: App { 12 | var body: some Scene { 13 | WindowGroup { 14 | ContentView() 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /e2e/e2e-test-integration/swiftui/korge-hello-world/.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | charset=utf-8 3 | end_of_line=lf 4 | insert_final_newline=true 5 | indent_style=space 6 | indent_size=4 7 | ij_kotlin_name_count_to_use_star_import = 1 8 | 9 | [*.json] 10 | indent_size=2 11 | 12 | [*.yml] 13 | indent_size = 2 14 | -------------------------------------------------------------------------------- /e2e/e2e-test-integration/swiftui/korge-hello-world/.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle 2 | /.idea 3 | /build 4 | /modules 5 | /bundles 6 | /deps 7 | *.iml 8 | *.hprof 9 | *.log 10 | korge.keystore 11 | local.properties 12 | src/main/* 13 | .DS_Store 14 | 15 | -------------------------------------------------------------------------------- /e2e/e2e-test-integration/swiftui/korge-hello-world/deps.kproject.yml: -------------------------------------------------------------------------------- 1 | # KProject: https://github.com/korlibs/kproject 2 | dependencies: 3 | #- https://github.com/korlibs/korge-fleks/tree/a37c78f57469de9aaf69537325e41731cb94f8bf/korge-fleks 4 | #- https://github.com/korlibs/korge-ldtk/tree/f5944022553b6ee70ec4879193e6de1e716e73e1/korge-ldtk 5 | #- https://github.com/korlibs/korge-compose/tree/0.0.2/korge-compose 6 | #- https://github.com/korlibs/korge-dragonbones/tree/0.0.4/korge-dragonbones 7 | #- https://github.com/korlibs/korge-swf/tree/0.0.1/korge-swf 8 | #- https://github.com/korlibs/korge-spine/tree/0.0.1/korge-spine 9 | #- https://github.com/korlibs/korge-box2d/tree/0.0.1/korge-box2d 10 | -------------------------------------------------------------------------------- /e2e/e2e-test-integration/swiftui/korge-hello-world/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx4g 2 | kotlin.mpp.stability.nowarn=true 3 | kotlin.mpp.androidSourceSetLayoutVersion=2 4 | -------------------------------------------------------------------------------- /e2e/e2e-test-integration/swiftui/korge-hello-world/gradle/libs.versions.toml: -------------------------------------------------------------------------------- 1 | [plugins] 2 | #korge = { id = "com.soywiz.korge", version = "4.0.6" } 3 | korge = { id = "com.soywiz.korge", version = "999.0.0.999" } 4 | korge-library = { id = "com.soywiz.korge.library", version = "999.0.0.999" } 5 | #korge = { id = "com.soywiz.korge", version = "999.0.0.999" } 6 | -------------------------------------------------------------------------------- /e2e/e2e-test-integration/swiftui/korge-hello-world/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/e2e/e2e-test-integration/swiftui/korge-hello-world/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /e2e/e2e-test-integration/swiftui/korge-hello-world/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /e2e/e2e-test-integration/swiftui/korge-hello-world/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { repositories { mavenLocal(); mavenCentral(); google(); gradlePluginPortal() } } 2 | 3 | plugins { 4 | //id("com.soywiz.kproject.settings") version "0.0.1-SNAPSHOT" 5 | id("com.soywiz.kproject.settings") version "0.3.1" 6 | } 7 | 8 | kproject("./deps") 9 | -------------------------------------------------------------------------------- /e2e/e2e-test-integration/swiftui/korge-hello-world/src/commonMain/resources/korge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/e2e/e2e-test-integration/swiftui/korge-hello-world/src/commonMain/resources/korge.png -------------------------------------------------------------------------------- /e2e/e2e-test-integration/swiftui/korge-hello-world/src/iosSimulatorArm64Main/kotlin/KorgeIosUIViewProvider.kt: -------------------------------------------------------------------------------- 1 | import korlibs.korge.* 2 | import korlibs.korge.scene.* 3 | import korlibs.math.geom.* 4 | import korlibs.render.* 5 | import kotlinx.cinterop.* 6 | import platform.GLKit.* 7 | import platform.UIKit.* 8 | 9 | // Used in SwiftUI/View integrations 10 | @Suppress("unused") 11 | @ExportObjCClass(name = "KorgeIosUIViewProvider") 12 | class KorgeIosUIViewProvider : BaseKorgeIosUIViewProvider() 13 | -------------------------------------------------------------------------------- /e2e/e2e-test-integration/swiftui/korge-hello-world/testJs.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | trap killgroup SIGINT 4 | 5 | killgroup(){ 6 | echo killing... 7 | kill 0 8 | } 9 | 10 | hs build/web & 11 | ./gradlew jsWeb -t & 12 | wait -------------------------------------------------------------------------------- /e2e/e2e-test-multi/.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle 2 | /.idea 3 | /build 4 | -------------------------------------------------------------------------------- /e2e/e2e-test-multi/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | alias(libs.plugins.korge) apply false 3 | } 4 | 5 | allprojects { repositories { mavenLocal(); mavenCentral(); google(); gradlePluginPortal() } } -------------------------------------------------------------------------------- /e2e/e2e-test-multi/client/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /e2e/e2e-test-multi/client/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import korlibs.korge.gradle.* 2 | 3 | apply() 4 | 5 | korge { 6 | id = "com.sample.clientserver" 7 | targetJvm() 8 | serializationJson() 9 | //targetJs() 10 | } 11 | 12 | dependencies { 13 | add("commonMainImplementation", project(":shared")) 14 | } 15 | -------------------------------------------------------------------------------- /e2e/e2e-test-multi/client/src/commonMain/kotlin/main.kt: -------------------------------------------------------------------------------- 1 | import korlibs.samples.clientserver.mySharedString 2 | import korlibs.korge.* 3 | import korlibs.korge.scene.* 4 | import korlibs.korge.view.* 5 | import korlibs.image.color.* 6 | import korlibs.math.geom.Size 7 | 8 | suspend fun main() = Korge(windowSize = Size(512, 512), backgroundColor = Colors["#2b2b2b"]) { 9 | sceneContainer().changeTo({ MyMainScene() }) 10 | } 11 | 12 | class MyMainScene : Scene() { 13 | override suspend fun SContainer.sceneMain() { 14 | text("Text: $mySharedString") 15 | gameWindow.close() 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /e2e/e2e-test-multi/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.configuration-cache=true 2 | org.gradle.configuration-cache.problems=fail 3 | -------------------------------------------------------------------------------- /e2e/e2e-test-multi/gradle/libs.versions.toml: -------------------------------------------------------------------------------- 1 | [versions] 2 | ktor = "1.3.1" 3 | 4 | [libraries] 5 | ktor-server-netty = { module = "io.ktor:ktor-server-netty", version.ref = "ktor" } 6 | logback = { "module" = "ch.qos.logback:logback-classic", version="1.2.3" } 7 | 8 | 9 | [plugins] 10 | #korge = { id = "com.soywiz.korge", version = "4.0.0-beta2" } 11 | korge = { id = "com.soywiz.korge", version = "999.0.0.999" } 12 | -------------------------------------------------------------------------------- /e2e/e2e-test-multi/gradlew: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | `dirname "$0"`/../../gradlew $* 3 | -------------------------------------------------------------------------------- /e2e/e2e-test-multi/gradlew.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | CALL %~dp0\..\..\gradlew.bat %* 3 | -------------------------------------------------------------------------------- /e2e/e2e-test-multi/server/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /e2e/e2e-test-multi/server/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | application 3 | } 4 | 5 | apply(plugin = "kotlin") 6 | 7 | dependencies { 8 | add("implementation", project(":shared")) 9 | add("implementation", libs.ktor.server.netty) 10 | add("implementation", libs.logback) 11 | 12 | } 13 | 14 | application { 15 | mainClass.set("MainKt") 16 | } 17 | -------------------------------------------------------------------------------- /e2e/e2e-test-multi/server/src/main/kotlin/main.kt: -------------------------------------------------------------------------------- 1 | import korlibs.samples.clientserver.mySharedString 2 | import io.ktor.application.call 3 | import io.ktor.response.respondText 4 | import io.ktor.routing.get 5 | import io.ktor.routing.routing 6 | import io.ktor.server.engine.embeddedServer 7 | import io.ktor.server.netty.Netty 8 | 9 | fun main(args: Array) { 10 | embeddedServer(Netty, 8080) { 11 | routing { 12 | get("/") { 13 | call.respondText("Hello World: $mySharedString") 14 | } 15 | } 16 | }.start(wait = true) 17 | } 18 | -------------------------------------------------------------------------------- /e2e/e2e-test-multi/settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | Eval.xy(this, it, file('../../gradle/repositories.settings.gradle').text) 3 | } 4 | 5 | //plugins { 6 | // //id("com.soywiz.kproject.settings") version "0.0.1-SNAPSHOT" 7 | // id("com.soywiz.kproject.settings") version "0.1.2" 8 | //} 9 | 10 | //kproject("./deps") 11 | 12 | include(":shared") 13 | include(":client") 14 | include(":server") 15 | -------------------------------------------------------------------------------- /e2e/e2e-test-multi/shared/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /e2e/e2e-test-multi/shared/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import korlibs.korge.gradle.* 2 | 3 | apply() 4 | 5 | korge { 6 | targetJvm() 7 | //targetJs() 8 | } 9 | -------------------------------------------------------------------------------- /e2e/e2e-test-multi/shared/src/commonMain/kotlin/korlibs/samples/clientserver/SharedCode.kt: -------------------------------------------------------------------------------- 1 | package korlibs.samples.clientserver 2 | 3 | val mySharedString = "THIS IS A COMMON STRING!" 4 | -------------------------------------------------------------------------------- /e2e/e2e-test/.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle 2 | /.idea 3 | /build 4 | /buildSrc/build 5 | *.iml 6 | *.hprof 7 | *.log 8 | korge.keystore 9 | local.properties 10 | src/main/* 11 | .DS_Store 12 | /opengl32-x64.zip 13 | libglapi.dll 14 | opengl32.dll 15 | /src/androidMain 16 | /src/main 17 | -------------------------------------------------------------------------------- /e2e/e2e-test/buildSrc/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id "org.jetbrains.kotlin.jvm" version "2.0.20" 3 | } 4 | 5 | repositories { 6 | mavenLocal() 7 | mavenCentral() 8 | google() 9 | } 10 | //Eval.xy(this, this, file("../../../gradle/repositories.settings.gradle").text) 11 | 12 | dependencies { 13 | implementation("com.soywiz:korlibs-image:6.0.0") 14 | //implementation("korlibs.korim:korim-jvm:3.4.0") 15 | //implementation("korlibs.korim:korim-jvm:999.0.0.999") 16 | } 17 | -------------------------------------------------------------------------------- /e2e/e2e-test/buildSrc/settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | //Eval.xy(this, it, file('../../../gradle/repositories.settings.gradle').text) 4 | mavenLocal() 5 | mavenCentral() 6 | google() 7 | gradlePluginPortal() 8 | } 9 | } 10 | dependencyResolutionManagement { 11 | versionCatalogs { 12 | libs { 13 | //from(files("../../../gradle/libs.versions.toml")) 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /e2e/e2e-test/gradle.properties: -------------------------------------------------------------------------------- 1 | korgePluginVersion=999.0.0.999 2 | #korgePluginVersion=2.6.3 3 | org.gradle.jvmargs=-Xmx4g 4 | kotlin.mpp.stability.nowarn=true 5 | 6 | kotlin.js.webpack.major.version=4 7 | #kotlin.test.infer.jvm.variant=false 8 | #org.gradle.logging.level=quiet 9 | 10 | kotlin.mpp.androidSourceSetLayoutVersion=2 11 | -------------------------------------------------------------------------------- /e2e/e2e-test/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/e2e/e2e-test/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /e2e/e2e-test/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /e2e/e2e-test/gradlew_linux: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | docker run -it -w /app \ 4 | -v "$(pwd)":/app \ 5 | -v "$HOME/.gradle_linux:/root/.gradle" \ 6 | -v "$HOME/.m2:/root/.m2" \ 7 | eclipse-temurin:21 ./gradlew --no-daemon $* 8 | -------------------------------------------------------------------------------- /e2e/e2e-test/references/DirectionalBlur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/e2e/e2e-test/references/DirectionalBlur.png -------------------------------------------------------------------------------- /e2e/e2e-test/references/Empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/e2e/e2e-test/references/Empty.png -------------------------------------------------------------------------------- /e2e/e2e-test/references/Filters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/e2e/e2e-test/references/Filters.png -------------------------------------------------------------------------------- /e2e/e2e-test/references/IdentityFilter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/e2e/e2e-test/references/IdentityFilter.png -------------------------------------------------------------------------------- /e2e/e2e-test/resources/fonts/1.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/e2e/e2e-test/resources/fonts/1.ttf -------------------------------------------------------------------------------- /e2e/e2e-test/resources/gfx/cp437.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/e2e/e2e-test/resources/gfx/cp437.png -------------------------------------------------------------------------------- /e2e/e2e-test/resources/gfx/korge/korge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/e2e/e2e-test/resources/gfx/korge/korge.png -------------------------------------------------------------------------------- /e2e/e2e-test/resources/gfx/vampire.ase: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/e2e/e2e-test/resources/gfx/vampire.ase -------------------------------------------------------------------------------- /e2e/e2e-test/resources/gfx/vampire_slices_fixed.ase: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/e2e/e2e-test/resources/gfx/vampire_slices_fixed.ase -------------------------------------------------------------------------------- /e2e/e2e-test/settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenLocal() 4 | mavenCentral() 5 | google() 6 | gradlePluginPortal() 7 | } 8 | //Eval.xy(this, it, file('../../gradle/repositories.settings.gradle').text) 9 | } 10 | -------------------------------------------------------------------------------- /e2e/e2e-test/testJs.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | trap killgroup SIGINT 4 | 5 | killgroup(){ 6 | echo killing... 7 | kill 0 8 | } 9 | 10 | hs build/web & 11 | ./gradlew jsWeb -t & 12 | wait -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-all.zip 4 | networkTimeout=10000 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /korge-benchmarks/.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | -------------------------------------------------------------------------------- /korge-benchmarks/src/commonMain/resources/dice.qoi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-benchmarks/src/commonMain/resources/dice.qoi -------------------------------------------------------------------------------- /korge-benchmarks/src/commonMain/resources/mp31.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-benchmarks/src/commonMain/resources/mp31.mp3 -------------------------------------------------------------------------------- /korge-benchmarks/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /korge-core/.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle 2 | /build 3 | /game.storage 4 | /libglapi.dll 5 | /opengl32.dll 6 | /opengl32-x64.zip 7 | /libs 8 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/datastructure/closeable/Closeable.kt: -------------------------------------------------------------------------------- 1 | package korlibs.datastructure.closeable 2 | 3 | @Deprecated("", replaceWith = ReplaceWith("kotlin.AutoCloseable")) 4 | typealias Closeable = AutoCloseable 5 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/datastructure/lock/LockAlias.kt: -------------------------------------------------------------------------------- 1 | package korlibs.datastructure.lock 2 | 3 | @Deprecated("") 4 | typealias Lock = korlibs.concurrent.lock.Lock 5 | 6 | @Deprecated("") 7 | typealias NonRecursiveLock = korlibs.concurrent.lock.NonRecursiveLock 8 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/event/MouseButton.kt: -------------------------------------------------------------------------------- 1 | package korlibs.event 2 | 3 | enum class MouseButton(val id: Int, val bits: Int = 1 shl id) { 4 | LEFT(0), MIDDLE(1), RIGHT(2), BUTTON3(3), 5 | BUTTON4(4), BUTTON5(5), BUTTON6(6), BUTTON7(7), 6 | BUTTON_WHEEL(8), 7 | BUTTON_UNKNOWN(10), 8 | NONE(11, bits = 0); 9 | 10 | val isLeft get() = this == LEFT 11 | val isMiddle get() = this == MIDDLE 12 | val isRight get() = this == RIGHT 13 | 14 | fun pressedFromFlags(flags: Int): Boolean = (flags and this.bits) != 0 15 | 16 | companion object { 17 | val MAX = NONE.ordinal + 1 18 | val BUTTONS = values() 19 | operator fun get(id: Int) = BUTTONS.getOrElse(id) { BUTTON_UNKNOWN } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/graphics/annotation/KoragExperimental.kt: -------------------------------------------------------------------------------- 1 | package korlibs.graphics.annotation 2 | 3 | @Retention(value = AnnotationRetention.BINARY) 4 | @RequiresOptIn(level = RequiresOptIn.Level.WARNING) 5 | annotation class KoragExperimental 6 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/graphics/gl/AGOpenglFactory.kt: -------------------------------------------------------------------------------- 1 | package korlibs.graphics.gl 2 | 3 | import korlibs.graphics.AGFactory 4 | 5 | expect object AGOpenglFactory { 6 | fun create(nativeComponent: Any?): AGFactory 7 | val isTouchDevice: Boolean 8 | } 9 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/graphics/log/AGDummy.kt: -------------------------------------------------------------------------------- 1 | package korlibs.graphics.log 2 | 3 | import korlibs.graphics.* 4 | import korlibs.math.geom.* 5 | 6 | open class AGDummy(size: Size = Size(640, 480)) : AG() { 7 | init { 8 | mainFrameBuffer.setSize(size.width.toInt(), size.height.toInt()) 9 | } 10 | override val graphicExtensions: Set get() = emptySet() 11 | override val isInstancedSupported: Boolean get() = true 12 | override val isFloatTextureSupported: Boolean get() = true 13 | } 14 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/graphics/metal/shader/Shader.kt: -------------------------------------------------------------------------------- 1 | package korlibs.graphics.metal.shader 2 | 3 | import korlibs.graphics.shader.* 4 | import korlibs.korge.internal.* 5 | 6 | @KorgeInternal 7 | fun Pair.toNewMetalShaderStringResult(bufferInputsLayout: MetalShaderBufferInputLayouts): MetalShaderGenerator.Result = let { (vertexShader, fragmentShader) -> MetalShaderGenerator(vertexShader, fragmentShader, bufferInputsLayout) } 8 | .generateResult() 9 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/io/annotations/Keep.kt: -------------------------------------------------------------------------------- 1 | package korlibs.io.annotations 2 | 3 | @Deprecated("", ReplaceWith("korlibs.annotations.Keep")) 4 | typealias Keep = korlibs.annotations.Keep 5 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/io/annotations/KorInternal.kt: -------------------------------------------------------------------------------- 1 | package korlibs.io.annotations 2 | 3 | annotation class KorInternal 4 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/io/async/AsyncAlias.kt: -------------------------------------------------------------------------------- 1 | package korlibs.io.async 2 | 3 | //typealias launch = korlibs.concurrent. 4 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/io/lang/Disposable.kt: -------------------------------------------------------------------------------- 1 | package korlibs.io.lang 2 | 3 | import kotlinx.coroutines.* 4 | 5 | @Deprecated("", replaceWith = ReplaceWith("kotlinx.coroutines.DisposableHandle")) 6 | typealias Disposable = DisposableHandle 7 | 8 | fun AutoCloseable.toDisposable(): DisposableHandle = DisposableHandle { this.close() } 9 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/korge/annotations/KorgeExperimental.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.annotations 2 | 3 | @RequiresOptIn(level = RequiresOptIn.Level.WARNING) 4 | annotation class KorgeExperimental 5 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/korge/internal/DefaultViewport.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.internal 2 | 3 | import korlibs.math.geom.* 4 | 5 | object DefaultViewport { 6 | const val WIDTH = 1280 7 | const val HEIGHT = 720 8 | val SIZE = Size(WIDTH, HEIGHT) 9 | } 10 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/korge/internal/KorgeInternal.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.internal 2 | 3 | /** A mechanism to annotate Korge internal properties and methods that were left open in KorGE 1.0 so they can be marked as internal in KorGE 2.0 */ 4 | @RequiresOptIn(level = RequiresOptIn.Level.WARNING) 5 | annotation class KorgeInternal 6 | 7 | //object KorgeInternalApi 8 | 9 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/korge/internal/KorgeUntested.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.internal 2 | 3 | /** A mechanism to annotate Korge untested properties and methods */ 4 | @RequiresOptIn(level = RequiresOptIn.Level.WARNING) 5 | annotation class KorgeUntested 6 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/korge/internal/KorgeUnused.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.internal 2 | 3 | /** A mechanism to annotate Korge unused properties and methods */ 4 | @RequiresOptIn(level = RequiresOptIn.Level.WARNING) 5 | annotation class KorgeUnused 6 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/korge/render/BitmapExt.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.render 2 | 3 | import korlibs.math.isPowerOfTwo 4 | import korlibs.math.nextPowerOfTwo 5 | import korlibs.image.bitmap.Bitmap32 6 | 7 | /** 8 | * Returns [this] same bitmap if it is already power of two, 9 | * or creates a new [Bitmap32] with the pixels from [this] set at the top-left while keeping the rest of the [Bitmap32] with transparent pixels. 10 | */ 11 | fun Bitmap32.ensurePowerOfTwo(): Bitmap32 = when { 12 | this.width.isPowerOfTwo && this.height.isPowerOfTwo -> this 13 | else -> Bitmap32(this.width.nextPowerOfTwo, this.height.nextPowerOfTwo, this.premultiplied).also { it.put(this) } 14 | } 15 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/korge/render/TextureWithBitmapSlice.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.render 2 | 3 | import korlibs.korge.internal.KorgeInternal 4 | import korlibs.image.bitmap.BmpSlice 5 | import korlibs.math.geom.* 6 | 7 | /** 8 | * A [texture] wrap that includes [scale] and [bounds] information. 9 | * Used internally for atlases. 10 | */ 11 | @KorgeInternal 12 | data class TextureWithBitmapSlice( 13 | val texture: BmpSlice, 14 | val bitmapSlice: BmpSlice, 15 | val scale: Double, 16 | val bounds: Rectangle 17 | ) 18 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/korge/resources/Path.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.resources 2 | 3 | import korlibs.inject.Injector 4 | import kotlin.reflect.KClass 5 | 6 | data class VPath(val path: String) 7 | 8 | suspend fun Injector.getPath(clazz: KClass, path: String): T = getWith(clazz, VPath(path)) 9 | suspend inline fun Injector.getPath(path: String): T = getPath(T::class, path) 10 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/korge/service/storage/InmemoryStorage.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.service.storage 2 | 3 | open class InmemoryStorage : IStorageWithKeys { 4 | val data = LinkedHashMap() 5 | override operator fun set(key: String, value: String) { data[key] = value } 6 | override fun getOrNull(key: String): String? = data[key] 7 | override fun remove(key: String) { data.remove(key) } 8 | override fun removeAll(): Unit = data.clear() 9 | override fun keys(): List = data.keys.toList() 10 | } 11 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/render/Korgw.kt: -------------------------------------------------------------------------------- 1 | package korlibs.render 2 | 3 | object Korgw { 4 | object Sample { 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /korge-core/src/korlibs/render/jvmEngine.kt: -------------------------------------------------------------------------------- 1 | package korlibs.render 2 | 3 | var korgwJvmEngine: String? = null 4 | -------------------------------------------------------------------------------- /korge-core/src@android/korlibs/graphics/gl/AGOpenglFactoryAndroid.kt: -------------------------------------------------------------------------------- 1 | package korlibs.graphics.gl 2 | 3 | import korlibs.graphics.* 4 | 5 | actual object AGOpenglFactory { 6 | actual fun create(nativeComponent: Any?): AGFactory = AGFactoryAndroid 7 | actual val isTouchDevice: Boolean = true 8 | } 9 | -------------------------------------------------------------------------------- /korge-core/src@android/korlibs/korge/KorgeReload_getReloadedClass.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge 2 | 3 | internal actual val KorgeReloadInternal: KorgeReloadInternalImpl = object : KorgeReloadInternalImpl() { 4 | } 5 | -------------------------------------------------------------------------------- /korge-core/src@darwin/korlibs/graphics/gl/AGOpenglFactoryNative.kt: -------------------------------------------------------------------------------- 1 | package korlibs.graphics.gl 2 | 3 | import korlibs.kgl.* 4 | import korlibs.graphics.* 5 | 6 | actual object AGOpenglFactory { 7 | actual fun create(nativeComponent: Any?): AGFactory = AGFactoryNative 8 | actual val isTouchDevice: Boolean = false 9 | } 10 | 11 | object AGFactoryNative : AGFactory { 12 | override val supportsNativeFrame: Boolean = false 13 | override fun create(nativeControl: Any?, config: AGConfig): AG = AGOpengl(KmlGlNative()) 14 | override fun createFastWindow(title: String, width: Int, height: Int): AGWindow = TODO() 15 | } 16 | 17 | fun AGNative(gl: KmlGl = KmlGlNative()): AGOpengl = AGOpengl(gl) 18 | -------------------------------------------------------------------------------- /korge-core/src@darwin/korlibs/korge/KorgeReloadNative.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge 2 | 3 | internal actual val KorgeReloadInternal: KorgeReloadInternalImpl = object : KorgeReloadInternalImpl() { 4 | } 5 | -------------------------------------------------------------------------------- /korge-core/src@darwin/korlibs/metal/MetalProgram.kt: -------------------------------------------------------------------------------- 1 | package korlibs.metal 2 | 3 | import korlibs.graphics.metal.shader.MetalShaderBufferInputLayouts 4 | import korlibs.graphics.shader.* 5 | import platform.Metal.* 6 | 7 | internal data class MetalProgram( 8 | val renderPipelineState: MTLRenderPipelineStateProtocol, 9 | val inputBuffers: MetalShaderBufferInputLayouts 10 | ) { 11 | fun indexOfAttributeOnBuffer(attribute: List): ULong { 12 | return inputBuffers.indexOf(attribute).toULong() 13 | } 14 | 15 | fun indexOfUniformOnBuffer(uniform: Uniform): ULong { 16 | return inputBuffers.indexOf(listOf(uniform)).toULong() 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /korge-core/src@js/korlibs/graphics/gl/AGOpenglFactory.kt: -------------------------------------------------------------------------------- 1 | package korlibs.graphics.gl 2 | 3 | import korlibs.graphics.* 4 | 5 | actual object AGOpenglFactory { 6 | actual fun create(nativeComponent: Any?): AGFactory = AGFactoryWebgl 7 | actual val isTouchDevice: Boolean get() { 8 | return js("('ontouchstart' in window || navigator.maxTouchPoints)").unsafeCast() 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /korge-core/src@js/korlibs/korge/KorgeReload_getReloadedClass.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge 2 | 3 | internal actual val KorgeReloadInternal: KorgeReloadInternalImpl = object : KorgeReloadInternalImpl() { 4 | } 5 | -------------------------------------------------------------------------------- /korge-core/src@js/korlibs/render/internal/KorgwJsInternal.kt: -------------------------------------------------------------------------------- 1 | package korlibs.render.internal 2 | 3 | import org.w3c.dom.Node 4 | import org.w3c.dom.NodeList 5 | import org.w3c.dom.get 6 | 7 | internal fun NodeList.toList(): List = ArrayList().apply { 8 | for (n in 0 until this@toList.length) { 9 | val node = this@toList[n] 10 | if (node != null) add(node) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /korge-core/src@jvm/korlibs/graphics/gl/AGOpenglFactory.kt: -------------------------------------------------------------------------------- 1 | package korlibs.graphics.gl 2 | 3 | import korlibs.graphics.* 4 | import korlibs.render.* 5 | 6 | actual object AGOpenglFactory { 7 | actual fun create(nativeComponent: Any?): AGFactory = JvmAGFactory 8 | actual val isTouchDevice: Boolean = false 9 | } 10 | -------------------------------------------------------------------------------- /korge-core/src@jvm/korlibs/render/awt/GLCanvasGameWindow.kt: -------------------------------------------------------------------------------- 1 | package korlibs.render.awt 2 | 3 | import korlibs.render.platform.* 4 | import java.awt.* 5 | 6 | open class GLCanvasGameWindow( 7 | val canvas: GLCanvas, 8 | ) : BaseAwtGameWindow(canvas.ag) { 9 | init { 10 | exitProcessOnClose = false 11 | canvas.defaultRenderer = { gl, g -> 12 | framePaint(g) 13 | } 14 | } 15 | 16 | override val ctx: BaseOpenglContext get() = canvas.ctx!! 17 | override val component: Component get() = canvas 18 | override val contentComponent: Component get() = canvas 19 | } 20 | -------------------------------------------------------------------------------- /korge-core/src@jvm/korlibs/render/osx/DialogInterfaceJvmCocoa.kt: -------------------------------------------------------------------------------- 1 | package korlibs.render.osx 2 | 3 | import korlibs.render.* 4 | 5 | class DialogInterfaceJvmCocoa(val gwProvider: () -> MacGameWindow) : DialogInterface { 6 | val gw get() = gwProvider() 7 | } 8 | -------------------------------------------------------------------------------- /korge-core/src@jvmAndroid/korlibs/datastructure/_Datastructure_event.jvmAndroid.kt: -------------------------------------------------------------------------------- 1 | @file:Suppress("PackageDirectoryMismatch") 2 | 3 | package korlibs.datastructure.event 4 | 5 | actual fun createPlatformEventLoop(precise: Boolean): SyncEventLoop = 6 | SyncEventLoop(precise) 7 | -------------------------------------------------------------------------------- /korge-core/src@native/korlibs/kgl/KmlGlNativeExpect.kt: -------------------------------------------------------------------------------- 1 | package korlibs.kgl 2 | 3 | import kotlinx.cinterop.* 4 | 5 | expect class KmlGlNative() : NativeBaseKmlGl { 6 | } 7 | 8 | internal expect fun glGetProcAddressAnyOrNull(name: String): COpaquePointer? 9 | -------------------------------------------------------------------------------- /korge-core/src@native/kotlin/korlibs/datastructure/_Datastructure_event.native.kt: -------------------------------------------------------------------------------- 1 | @file:Suppress("PackageDirectoryMismatch") 2 | 3 | package korlibs.datastructure.event 4 | 5 | actual fun createPlatformEventLoop(precise: Boolean): SyncEventLoop = 6 | SyncEventLoop() 7 | -------------------------------------------------------------------------------- /korge-core/src@tvos/korlibs/render/DefaultGameWindowIosTools.kt: -------------------------------------------------------------------------------- 1 | package korlibs.render 2 | 3 | import platform.UIKit.* 4 | 5 | actual val iosTvosTools: IosTvosToolsImpl = object : IosTvosToolsImpl() { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /korge-core/src@wasmJs/korlibs/graphics/gl/AGOpenglFactoryWasm.kt: -------------------------------------------------------------------------------- 1 | package korlibs.graphics.gl 2 | 3 | import korlibs.graphics.* 4 | 5 | @JsFun("() => { return ('ontouchstart' in window || navigator.maxTouchPoints); }") 6 | private external fun _isTouchDevice(): Boolean 7 | 8 | actual object AGOpenglFactory { 9 | actual fun create(nativeComponent: Any?): AGFactory = AGFactoryWebgl 10 | actual val isTouchDevice: Boolean get() = _isTouchDevice() 11 | } 12 | -------------------------------------------------------------------------------- /korge-core/src@wasmJs/korlibs/korge/KorgeReload_getReloadedClass.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge 2 | 3 | internal actual val KorgeReloadInternal: KorgeReloadInternalImpl = object : KorgeReloadInternalImpl() { 4 | } 5 | -------------------------------------------------------------------------------- /korge-core/src@wasmJs/korlibs/render/internal/KorgwJsInternal.kt: -------------------------------------------------------------------------------- 1 | package korlibs.render.internal 2 | 3 | import org.w3c.dom.Node 4 | import org.w3c.dom.NodeList 5 | import org.w3c.dom.get 6 | 7 | internal fun NodeList.toList(): List = ArrayList().apply { 8 | for (n in 0 until this@toList.length) { 9 | val node = this@toList[n] 10 | if (node != null) add(node) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /korge-core/test/korlibs/SkipIOTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs 2 | 3 | import korlibs.platform.* 4 | 5 | //val skipIOTest get() = OS.isJsBrowser 6 | val skipIOTest get() = Platform.isJsBrowserOrWorker || Platform.isJsNodeJs 7 | val doIOTest get() = !skipIOTest 8 | -------------------------------------------------------------------------------- /korge-core/test/korlibs/event/KorevTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.event 2 | 3 | import kotlin.test.Test 4 | 5 | class KorevTest { 6 | @Test 7 | fun test() { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /korge-core/test/korlibs/graphics/AGOpenglTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.graphics 2 | 3 | import kotlin.test.Test 4 | 5 | class AGOpenglTest { 6 | @Test 7 | fun name() { 8 | 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /korge-core/test/korlibs/kgl/KglTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.kgl 2 | 3 | import kotlin.test.Test 4 | 5 | class KglTest { 6 | @Test 7 | fun test() { 8 | 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /korge-core/test/korlibs/render/KorgwTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.render 2 | 3 | import kotlin.test.Test 4 | 5 | class KorgwTest { 6 | @Test 7 | fun test() { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /korge-core/test/korlibs/render/SyncEventLoopCoroutineDispatcherTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.render 2 | 3 | import korlibs.io.async.* 4 | import korlibs.time.* 5 | import kotlinx.coroutines.* 6 | import kotlin.test.* 7 | 8 | class SyncEventLoopCoroutineDispatcherTest { 9 | @Test 10 | fun test() { 11 | val dispatcher = SyncEventLoopCoroutineDispatcher(immediateRun = true) 12 | launchImmediately(dispatcher) { 13 | println("${DateTime.now()}: a") 14 | delay(1000.milliseconds) 15 | println("${DateTime.now()}: b") 16 | } 17 | dispatcher.loopUntilEmpty() 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /korge-core/test/korlibs/test/AnySubject.kt: -------------------------------------------------------------------------------- 1 | package korlibs.test 2 | 3 | import kotlin.contracts.ExperimentalContracts 4 | import kotlin.contracts.contract 5 | import kotlin.test.assertEquals 6 | import kotlin.test.assertIs 7 | 8 | open class AnySubject(val subject: T) { 9 | fun isEqualTo(expected: T) { 10 | assertEquals(expected, subject) 11 | } 12 | 13 | inline fun isInstanceOf(): E { 14 | return isInstanceOf(subject) 15 | } 16 | 17 | @OptIn(ExperimentalContracts::class) 18 | inline fun isInstanceOf(value: Any?): E { 19 | contract { returns() implies (value is E) } 20 | assertIs(subject) 21 | return subject as E 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /korge-core/test/korlibs/test/BooleanSubject.kt: -------------------------------------------------------------------------------- 1 | package korlibs.test 2 | 3 | import kotlin.test.assertFalse 4 | import kotlin.test.assertTrue 5 | 6 | class BooleanSubject(val subject: Boolean) { 7 | fun isTrue() { 8 | assertTrue(subject) 9 | } 10 | fun isFalse() { 11 | assertFalse(subject) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /korge-core/test/korlibs/test/truth.kt: -------------------------------------------------------------------------------- 1 | package korlibs.test 2 | 3 | import kotlin.test.* 4 | 5 | fun assertThat(actual: Double) = DoubleSubject(actual) 6 | fun assertThat(actual: Boolean) = BooleanSubject(actual) 7 | fun assertThat(actual: T) = AnySubject(actual) 8 | fun assertThat(actual: Collection) = CollectionSubject(actual) 9 | inline fun assertThat(actual: Map) = MapSubject(actual) 10 | 11 | fun testAssertFailsWithMessage(expectedErrorMessage: String, block: () -> Unit) { 12 | try { 13 | block() 14 | } catch (assertionError: AssertionError) { 15 | assertEquals(expectedErrorMessage, assertionError.message) 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /korge-gradle-plugin-common/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | /bin 3 | /.gradle 4 | /.idea 5 | /out 6 | -------------------------------------------------------------------------------- /korge-gradle-plugin-common/src/main/kotlin/com/soywiz/kproject/internal/ExceptionsExt.kt: -------------------------------------------------------------------------------- 1 | package com.soywiz.kproject.internal 2 | 3 | internal val invalidOp: Nothing get() = throw RuntimeException() 4 | internal fun invalidOp(msg: String): Nothing = throw RuntimeException(msg) 5 | -------------------------------------------------------------------------------- /korge-gradle-plugin-common/src/main/kotlin/com/soywiz/kproject/internal/IntExt.kt: -------------------------------------------------------------------------------- 1 | package com.soywiz.kproject.internal 2 | 3 | internal fun Int.mask(): Int = (1 shl this) - 1 4 | internal fun Int.extract(offset: Int, count: Int): Int = (this ushr offset) and count.mask() 5 | -------------------------------------------------------------------------------- /korge-gradle-plugin-common/src/main/kotlin/com/soywiz/kproject/model/FileRefExt.kt: -------------------------------------------------------------------------------- 1 | package com.soywiz.kproject.model 2 | 3 | import com.soywiz.kproject.util.* 4 | import java.io.* 5 | import java.util.zip.* 6 | 7 | fun unzipTo(outputDirectory: FileRef, zipFile: File) { 8 | ZipFile(zipFile).use { zip -> 9 | for (entry in zip.entries()) { 10 | if (!entry.isDirectory) { 11 | outputDirectory[entry.name.pathInfo.fullPath.trim('/')] 12 | .writeBytes(zip.getInputStream(entry).use { it.readBytes() }) 13 | } 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /korge-gradle-plugin-common/src/main/kotlin/com/soywiz/kproject/model/Plugin.kt: -------------------------------------------------------------------------------- 1 | package com.soywiz.kproject.model 2 | 3 | sealed interface KPPlugin { 4 | companion object 5 | } 6 | 7 | data class GradlePlugin(val name: String) : KPPlugin 8 | 9 | fun KPPlugin.Companion.parseString(str: String): KPPlugin { 10 | return GradlePlugin(str) 11 | } 12 | 13 | fun KPPlugin.Companion.parseObject(any: Any?): KPPlugin { 14 | return when (any) { 15 | is String -> parseString(any) 16 | else -> TODO("Unsupported plugin $any") 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /korge-gradle-plugin-common/src/main/kotlin/com/soywiz/kproject/util/FileExt.kt: -------------------------------------------------------------------------------- 1 | package com.soywiz.kproject.util 2 | 3 | import java.io.* 4 | 5 | fun File.writeTextIfNew(text: String) { 6 | parentFile.mkdirs() 7 | if (takeIf { it.exists() }?.readText() != text) { 8 | writeText(text) 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /korge-gradle-plugin-common/src/main/kotlin/com/soywiz/kproject/util/Hash.kt: -------------------------------------------------------------------------------- 1 | package com.soywiz.kproject.util 2 | 3 | import java.security.* 4 | 5 | class Hash(val content: ByteArray) { 6 | val str: String = content.hex() 7 | override fun toString(): String = str 8 | } 9 | 10 | fun ByteArray.hash(algo: String): Hash = Hash(MessageDigest.getInstance(algo).digest(this)) 11 | fun ByteArray.sha256(): Hash = hash("SHA-256") 12 | -------------------------------------------------------------------------------- /korge-gradle-plugin-common/src/main/kotlin/com/soywiz/kproject/util/HexExt.kt: -------------------------------------------------------------------------------- 1 | package com.soywiz.kproject.util 2 | 3 | fun ByteArray.hex(): String { 4 | val hex = "0123456789abcdef" 5 | val out = StringBuilder(this.size * 2) 6 | for (n in 0 until size) { 7 | val byte = this[n] 8 | out.append(hex[(byte.toInt() ushr 8) and 0xF]) 9 | out.append(hex[(byte.toInt() ushr 0) and 0xF]) 10 | } 11 | return out.toString() 12 | } 13 | -------------------------------------------------------------------------------- /korge-gradle-plugin-common/src/main/kotlin/com/soywiz/kproject/util/ProjectExt.kt: -------------------------------------------------------------------------------- 1 | package com.soywiz.kproject.util 2 | 3 | import org.gradle.api.* 4 | 5 | fun Project.defineStandardRepositories() { 6 | repositories.apply { 7 | mavenLocal() 8 | mavenCentral() 9 | google() 10 | gradlePluginPortal() 11 | maven { it.url = uri("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev") } 12 | maven { it.url = uri("https://maven.pkg.jetbrains.space/kotlin/p/wasm/experimental") } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /korge-gradle-plugin-common/src/main/kotlin/korlibs/korge/gradle/common/KorgeGradlePluginVersion.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.common 2 | 3 | object KorgeGradlePluginVersion { 4 | val VERSION: String get() = BuildConfig.KOTLIN_PLUGIN_VERSION 5 | } 6 | -------------------------------------------------------------------------------- /korge-gradle-plugin-common/src/test/kotlin/com/soywiz/kproject/model/NewKProjectGradleGeneratorTest.kt: -------------------------------------------------------------------------------- 1 | package com.soywiz.kproject.model 2 | 3 | import kotlin.test.* 4 | 5 | class NewKProjectGradleGeneratorTest { 6 | @Test 7 | fun testEdgeCases() { 8 | val mem = MemoryFiles(linkedMapOf( 9 | "deps.kproject.yml" to byteArrayOf() 10 | )) 11 | 12 | val generator = NewKProjectGradleGenerator(mem.root) 13 | generator.generate("deps.kproject.yml") 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /korge-gradle-plugin-common/src/test/kotlin/com/soywiz/kproject/util/JsonTest.kt: -------------------------------------------------------------------------------- 1 | package com.soywiz.kproject.util 2 | 3 | import com.soywiz.kproject.internal.* 4 | import kotlin.test.* 5 | 6 | class JsonTest { 7 | @Test 8 | fun test() { 9 | assertEquals(1, "{\"a\": 1}".fromJson().dyn["a"].int) 10 | assertEquals("{\"a\":1}", mapOf("a" to 1).toJson()) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /korge-gradle-plugin-settings/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | /bin 3 | /.gradle 4 | /.idea 5 | /out 6 | -------------------------------------------------------------------------------- /korge-gradle-plugin/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | /bin 3 | /.gradle 4 | /.idea 5 | /out 6 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/kotlin/com/soywiz/kproject/KProjectRootPlugin.kt: -------------------------------------------------------------------------------- 1 | package com.soywiz.kproject 2 | 3 | import com.soywiz.kproject.util.* 4 | import org.gradle.api.Plugin 5 | import org.gradle.api.Project 6 | 7 | @Suppress("unused") 8 | class KProjectRootPlugin : Plugin { 9 | override fun apply(project: Project) { 10 | project.allprojects { 11 | it.defineStandardRepositories() 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/kotlin/korlibs/korge/gradle/GameCategory.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle 2 | 3 | enum class GameCategory { 4 | ACTION, ADVENTURE, ARCADE, BOARD, CARD, 5 | CASINO, DICE, EDUCATIONAL, FAMILY, KIDS, 6 | MUSIC, PUZZLE, RACING, ROLE_PLAYING, SIMULATION, 7 | SPORTS, STRATEGY, TRIVIA, WORD; 8 | 9 | companion object { 10 | val VALUES: Map = GameCategory.values().toList().associateBy { it.name.uppercase() } 11 | operator fun get(key: String): GameCategory? = VALUES[key.uppercase().trim()] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/kotlin/korlibs/korge/gradle/KorgeGradlePluginNew.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle 2 | 3 | import korlibs.korge.gradle.targets.* 4 | import org.gradle.api.* 5 | 6 | abstract class KorgeGradleAbstractPlugin(val projectType: ProjectType) : Plugin { 7 | override fun apply(project: Project) { 8 | project.configureAutoVersions() 9 | project.configureBuildScriptClasspathTasks() 10 | KorgeGradleApply(project, projectType).apply(includeIndirectAndroid = true) 11 | } 12 | } 13 | 14 | open class KorgeGradlePlugin : KorgeGradleAbstractPlugin(projectType = ProjectType.EXECUTABLE) 15 | open class KorgeLibraryGradlePlugin : KorgeGradleAbstractPlugin(projectType = ProjectType.LIBRARY) 16 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/kotlin/korlibs/korge/gradle/targets/ModuleResources.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.targets 2 | 3 | import org.gradle.api.* 4 | import org.gradle.api.file.* 5 | import java.io.* 6 | 7 | fun CopySpec.registerModulesResources(project: Project) { 8 | project.afterEvaluate { 9 | for (file in (project.rootDir.resolve("modules").listFiles()?.toList() ?: emptyList())) { 10 | from(File(file, "resources")) 11 | from(File(file, "src/commonMain/resources")) 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/kotlin/korlibs/korge/gradle/targets/ProjectType.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.targets 2 | 3 | enum class ProjectType { 4 | EXECUTABLE, LIBRARY; 5 | 6 | val isExecutable: Boolean get() = this == EXECUTABLE 7 | val isLibrary: Boolean get() = this == LIBRARY 8 | 9 | companion object { 10 | fun fromExecutable(executable: Boolean) = if (executable) EXECUTABLE else LIBRARY 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/kotlin/korlibs/korge/gradle/targets/TaskGroups.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.targets 2 | 3 | const val GROUP_KORGE_RUN: String = "@korge run" 4 | const val GROUP_KORGE_ADB: String = "@korge adb" 5 | const val GROUP_KORGE_LIST: String = "@korge list" 6 | const val GROUP_KORGE_PACKAGE: String = "@korge package" 7 | const val GROUP_KORGE_INSTALL: String = "@korge install" 8 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/kotlin/korlibs/korge/gradle/targets/js/Webpack.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.targets.js 2 | 3 | import org.gradle.api.* 4 | 5 | fun Project.configureWebpackFixes() { 6 | // @TODO: HACK for webpack: https://youtrack.jetbrains.com/issue/KT-48273#focus=Comments-27-5122487.0-0 7 | rootProject.plugins.withType(org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin::class.java) { 8 | //rootProject.extensions.getByType(org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension::class.java).versions.webpackDevServer.version = "4.0.0-rc.0" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/kotlin/korlibs/korge/gradle/targets/native/NativeBuildTypes.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.targets.native 2 | 3 | import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType 4 | 5 | object NativeBuildTypes { 6 | val TYPES = listOf(NativeBuildType.DEBUG, NativeBuildType.RELEASE) 7 | } 8 | 9 | val NativeBuildType.nameType: String get() = when (this) { 10 | NativeBuildType.DEBUG -> "Debug" 11 | NativeBuildType.RELEASE -> "Release" 12 | } 13 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/kotlin/korlibs/korge/gradle/util/GroovyDynamic.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.util 2 | 3 | import groovy.lang.* 4 | import org.gradle.api.* 5 | 6 | fun Project.closure(callback: () -> T) = GroovyClosure(this, callback) 7 | 8 | fun GroovyClosure(owner: Any?, callback: () -> T): Closure = object : Closure(owner) { 9 | override fun call(): T = callback() 10 | } 11 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/kotlin/korlibs/korge/gradle/util/JavaMinVersion.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.util 2 | 3 | import korlibs.* 4 | 5 | fun checkMinimumJavaVersion() { 6 | val javaVersionProp = System.getProperty("java.version") ?: "unknown" 7 | val javaVersion = currentJavaVersion() 8 | 9 | if (javaVersion < 11) { 10 | error("Java 11 or greater is is required, but found $javaVersion - $javaVersionProp") 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/kotlin/korlibs/korge/gradle/util/JsonExt.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.util 2 | 3 | import com.google.gson.* 4 | 5 | operator fun JsonElement.get(key: String): JsonElement = asJsonObject.get(key) 6 | val JsonElement.list: JsonArray get() = asJsonArray 7 | 8 | private val prettyGson by lazy { GsonBuilder().setPrettyPrinting().create() } 9 | fun JsonElement.toStringPretty() = prettyGson.toJson(this) 10 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/kotlin/korlibs/korge/gradle/util/KotlinVersionExt.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.util 2 | 3 | //fun KotlinVersion.Companion.fromString(str: String): KotlinVersion { 4 | // val (major, minor, patch) = str.split(".") + listOf("0", "0", "0") 5 | // return KotlinVersion(major.toInt(), minor.toIntOrNull() ?: 0, patch.toIntOrNull() ?: 0) 6 | //} 7 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/kotlin/korlibs/korge/gradle/util/MD5.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.util 2 | 3 | import java.security.* 4 | 5 | fun ByteArray.md5String(): String { 6 | return MessageDigest.getInstance("MD5").digest(this).hex 7 | } 8 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/kotlin/korlibs/korge/gradle/util/NamedDomainObjectContainerExt.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.util 2 | 3 | import org.gradle.api.Action 4 | import org.gradle.api.NamedDomainObjectContainer 5 | 6 | fun NamedDomainObjectContainer.createOnce(name: String, configureAction: T.() -> Unit): T { 7 | val item = findByName(name) 8 | if (item != null) return item 9 | return create(name, configureAction) 10 | } 11 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/kotlin/korlibs/korge/gradle/util/StreamExt.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.util 2 | 3 | import java.io.* 4 | 5 | fun OutputStream.write8(value: Int) { 6 | write(value) 7 | } 8 | 9 | fun OutputStream.write16LE(value: Int) { 10 | write((value ushr 0) and 0xFF) 11 | write((value ushr 8) and 0xFF) 12 | } 13 | 14 | fun OutputStream.write32LE(value: Int) { 15 | write((value ushr 0) and 0xFF) 16 | write((value ushr 8) and 0xFF) 17 | write((value ushr 16) and 0xFF) 18 | write((value ushr 24) and 0xFF) 19 | } 20 | fun OutputStream.writeBytes(bytes: ByteArray) { 21 | write(bytes) 22 | } 23 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/kotlin/korlibs/korge/gradle/util/UniqueNameGenerator.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.util 2 | 3 | class UniqueNameGenerator { 4 | val nameToSuffix = LinkedHashMap() 5 | 6 | operator fun get(name: String): String { 7 | if (name !in nameToSuffix) { 8 | nameToSuffix[name] = -1 9 | return name 10 | } else { 11 | val index = nameToSuffix[name]!! + 1 12 | nameToSuffix[name] = index 13 | return get("$name$index") 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/kotlin/korlibs/modules/GithubCI.kt: -------------------------------------------------------------------------------- 1 | package korlibs.modules 2 | 3 | import java.io.* 4 | 5 | object GithubCI { 6 | fun setOutput(name: String, value: String) { 7 | val GITHUB_OUTPUT = System.getenv("GITHUB_OUTPUT") 8 | if (GITHUB_OUTPUT != null) { 9 | File(GITHUB_OUTPUT).appendText("$name=$value\n") 10 | } else { 11 | println("::set-output name=$name::$value") 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/resources/META-INF/services/korlibs.korge.gradle.processor.KorgeResourceProcessor: -------------------------------------------------------------------------------- 1 | korlibs.korge.gradle.processor.KorgeTexturePacker 2 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/resources/banners/korge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-gradle-plugin/src/main/resources/banners/korge.png -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/resources/custom-html-body.template.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/resources/custom-html-head.template.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/resources/custom-styles.template.css: -------------------------------------------------------------------------------- 1 | /* custom-styles.template.css */ 2 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/resources/icons/korge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-gradle-plugin/src/main/resources/icons/korge.png -------------------------------------------------------------------------------- /korge-gradle-plugin/src/main/resources/korge.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-gradle-plugin/src/main/resources/korge.keystore -------------------------------------------------------------------------------- /korge-gradle-plugin/src/test/kotlin/korlibs/korge/gradle/NativeExtTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle 2 | 3 | import korlibs.korge.gradle.util.* 4 | import kotlin.test.* 5 | 6 | class NativeExtTest { 7 | @Test 8 | fun test() { 9 | assertTrue(SemVer("1.6.0-M1") >= SemVer("1.6.0")) 10 | assertFalse(SemVer("1.5.1") >= SemVer("1.6.0")) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/test/kotlin/korlibs/korge/gradle/ResourcesTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle 2 | 3 | import korlibs.korge.gradle.targets.KorgeIconProvider 4 | import kotlin.test.Test 5 | 6 | class ResourcesTest { 7 | @Test 8 | fun test() { 9 | KorgeIconProvider().getIconBytes() 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/test/kotlin/korlibs/korge/gradle/typedresources/AseSpriteTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.typedresources 2 | 3 | import korlibs.korge.gradle.util.* 4 | import org.junit.Assert 5 | import org.junit.Test 6 | 7 | class AseSpriteTest { 8 | @Test 9 | fun test() { 10 | val info = ASEInfo.Companion.getAseInfo(getResourceBytes("sprites.ase")) 11 | Assert.assertEquals(0, info.slices.size) 12 | Assert.assertEquals(listOf("TestNum", "FireTrail", "FireTrail2"), info.tags.map { it.tagName }) 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/test/kotlin/korlibs/korge/gradle/typedresources/ResourceTools.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.gradle.typedresources 2 | 3 | import java.net.* 4 | 5 | class ResourceTools 6 | 7 | fun getResourceBytes(path: String): ByteArray = getResourceURL(path).readBytes() 8 | fun getResourceText(path: String): String = getResourceURL(path).readText() 9 | 10 | fun getResourceURL(path: String): URL { 11 | return ResourceTools::class.java.getResource("/${path.trim('/')}") 12 | ?: error("Can't find '$path' in class loaders") 13 | } 14 | -------------------------------------------------------------------------------- /korge-gradle-plugin/src/test/resources/sprites.ase: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-gradle-plugin/src/test/resources/sprites.ase -------------------------------------------------------------------------------- /korge-ipc/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | /.gradle 3 | /.idea 4 | /out 5 | /bin 6 | -------------------------------------------------------------------------------- /korge-ipc/src/test/kotlin/korlibs/korge/ipc/KorgeIPCTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.ipc 2 | 3 | import org.junit.* 4 | import org.junit.Test 5 | import kotlin.test.* 6 | 7 | class KorgeIPCTest { 8 | @Test 9 | fun test() { 10 | assertEquals( 11 | """{"nodeId":1}""", 12 | IPCPacket.fromJson(IPCPacket.REQUEST_NODE_PROPS, IPCNodePropsRequest(1L)).dataString 13 | ) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /korge-reload-agent/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | /.gradle 3 | /.idea 4 | /out 5 | /bin 6 | -------------------------------------------------------------------------------- /korge-reload-agent/src/main/resources/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Agent-Class: korlibs.korge.reloadagent.KorgeReloadAgent 2 | Premain-Class: korlibs.korge.reloadagent.KorgeReloadAgent 3 | Can-Redefine-Classes: true 4 | Can-Retransform-Classes: true -------------------------------------------------------------------------------- /korge-sandbox/.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle 2 | /build 3 | /src/androidMain 4 | -------------------------------------------------------------------------------- /korge-sandbox/16x16 DungeonTileset II by 0x72.url: -------------------------------------------------------------------------------- 1 | [InternetShortcut] 2 | URL=https://0x72.itch.io/dungeontileset-ii 3 | -------------------------------------------------------------------------------- /korge-sandbox/Zelda-like tilesets and sprites - OpenGameArt.org.url: -------------------------------------------------------------------------------- 1 | [InternetShortcut] 2 | URL=https://opengameart.org/content/zelda-like-tilesets-and-sprites 3 | -------------------------------------------------------------------------------- /korge-sandbox/build.gradle: -------------------------------------------------------------------------------- 1 | import korlibs.korge.gradle.targets.jvm.KorgeJavaExec 2 | 3 | description = "Multiplatform Game Engine written in Kotlin" 4 | 5 | korge { 6 | entrypoint("Sandbox", "JvmMain") 7 | } 8 | 9 | dependencies { 10 | add("commonMainApi", project(":korge")) 11 | } 12 | 13 | tasks.register("runJvmAwtSandbox", KorgeJavaExec) { 14 | it.group = "run" 15 | it.dependsOn("jvmMainClasses") 16 | it.mainClass.set("AwtSandboxSample") 17 | } 18 | -------------------------------------------------------------------------------- /korge-sandbox/resources/.gitignore: -------------------------------------------------------------------------------- 1 | *.mpeg 2 | -------------------------------------------------------------------------------- /korge-sandbox/resources/0x72_DungeonTilesetII_v1.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/0x72_DungeonTilesetII_v1.3.png -------------------------------------------------------------------------------- /korge-sandbox/resources/200.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/200.gif -------------------------------------------------------------------------------- /korge-sandbox/resources/7f7f7f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/7f7f7f.png -------------------------------------------------------------------------------- /korge-sandbox/resources/A.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /korge-sandbox/resources/Aseprite/01-Artboard.aseprite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Aseprite/01-Artboard.aseprite -------------------------------------------------------------------------------- /korge-sandbox/resources/Aseprite/02-KingHuman.aseprite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Aseprite/02-KingHuman.aseprite -------------------------------------------------------------------------------- /korge-sandbox/resources/Aseprite/03-Pig.aseprite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Aseprite/03-Pig.aseprite -------------------------------------------------------------------------------- /korge-sandbox/resources/Aseprite/04-PigBox.aseprite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Aseprite/04-PigBox.aseprite -------------------------------------------------------------------------------- /korge-sandbox/resources/Aseprite/05-PigBoom.aseprite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Aseprite/05-PigBoom.aseprite -------------------------------------------------------------------------------- /korge-sandbox/resources/Aseprite/06-PigHide.aseprite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Aseprite/06-PigHide.aseprite -------------------------------------------------------------------------------- /korge-sandbox/resources/Aseprite/07-KingPig.aseprite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Aseprite/07-KingPig.aseprite -------------------------------------------------------------------------------- /korge-sandbox/resources/Aseprite/08-Bomb.aseprite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Aseprite/08-Bomb.aseprite -------------------------------------------------------------------------------- /korge-sandbox/resources/Aseprite/09-Box.aseprite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Aseprite/09-Box.aseprite -------------------------------------------------------------------------------- /korge-sandbox/resources/Aseprite/10-Cannon and Pig.aseprite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Aseprite/10-Cannon and Pig.aseprite -------------------------------------------------------------------------------- /korge-sandbox/resources/Aseprite/11-Door.aseprite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Aseprite/11-Door.aseprite -------------------------------------------------------------------------------- /korge-sandbox/resources/Aseprite/12-Lives and Coins.aseprite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Aseprite/12-Lives and Coins.aseprite -------------------------------------------------------------------------------- /korge-sandbox/resources/Aseprite/13-Dialogue.aseprite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Aseprite/13-Dialogue.aseprite -------------------------------------------------------------------------------- /korge-sandbox/resources/MiniTileset-Dungeon/Dungeon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/MiniTileset-Dungeon/Dungeon.png -------------------------------------------------------------------------------- /korge-sandbox/resources/MiniTileset-Dungeon/Dungeon.tsx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /korge-sandbox/resources/MiniTileset-Dungeon/Thank You!.txt: -------------------------------------------------------------------------------- 1 | I hope you like this small tileset. 2 | 3 | I'm available for commissioned work. If you want some help making your game look great, feel free to reach me on my e-mail "oucemar@gmail.com". 4 | 5 | You can also find me here: 6 | 7 | Twitter @raoucemar 8 | ArtStation: artstation.com/raou_ii -------------------------------------------------------------------------------- /korge-sandbox/resources/Pacifico.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Pacifico.ttf -------------------------------------------------------------------------------- /korge-sandbox/resources/PlayfairDisplay-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/PlayfairDisplay-BoldItalic.ttf -------------------------------------------------------------------------------- /korge-sandbox/resources/Portrait_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Portrait_3.jpg -------------------------------------------------------------------------------- /korge-sandbox/resources/README.md: -------------------------------------------------------------------------------- 1 | 2 | Sprites: 3 | 4 | 5 | Author despain, Jason 6 | 7 | Kings and Pigs: 8 | 9 | 10 | Author Pixel Frog -------------------------------------------------------------------------------- /korge-sandbox/resources/RF_Catacombs/candleA_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/RF_Catacombs/candleA_01.png -------------------------------------------------------------------------------- /korge-sandbox/resources/RF_Catacombs/candleA_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/RF_Catacombs/candleA_02.png -------------------------------------------------------------------------------- /korge-sandbox/resources/RF_Catacombs/candleA_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/RF_Catacombs/candleA_03.png -------------------------------------------------------------------------------- /korge-sandbox/resources/RF_Catacombs/candleA_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/RF_Catacombs/candleA_04.png -------------------------------------------------------------------------------- /korge-sandbox/resources/RF_Catacombs/candleB_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/RF_Catacombs/candleB_01.png -------------------------------------------------------------------------------- /korge-sandbox/resources/RF_Catacombs/candleB_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/RF_Catacombs/candleB_02.png -------------------------------------------------------------------------------- /korge-sandbox/resources/RF_Catacombs/candleB_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/RF_Catacombs/candleB_03.png -------------------------------------------------------------------------------- /korge-sandbox/resources/RF_Catacombs/candleB_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/RF_Catacombs/candleB_04.png -------------------------------------------------------------------------------- /korge-sandbox/resources/RF_Catacombs/decorative.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/RF_Catacombs/decorative.png -------------------------------------------------------------------------------- /korge-sandbox/resources/RF_Catacombs/mainlevbuild.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/RF_Catacombs/mainlevbuild.png -------------------------------------------------------------------------------- /korge-sandbox/resources/RF_Catacombs/public-license.txt: -------------------------------------------------------------------------------- 1 | Artwork created by Szadi art. 2 | 3 | License for Everyone. 4 | 5 | Public domain and free to use, personal or commercial. 6 | Credit is not required but appreciated. You can edit, 7 | but not resell the asset pack (original or changed). -------------------------------------------------------------------------------- /korge-sandbox/resources/RF_Catacombs/spike_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/RF_Catacombs/spike_0.png -------------------------------------------------------------------------------- /korge-sandbox/resources/RF_Catacombs/spike_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/RF_Catacombs/spike_1.png -------------------------------------------------------------------------------- /korge-sandbox/resources/RF_Catacombs/spike_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/RF_Catacombs/spike_2.png -------------------------------------------------------------------------------- /korge-sandbox/resources/RF_Catacombs/spike_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/RF_Catacombs/spike_3.png -------------------------------------------------------------------------------- /korge-sandbox/resources/RF_Catacombs/spike_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/RF_Catacombs/spike_4.png -------------------------------------------------------------------------------- /korge-sandbox/resources/RF_Catacombs/torch_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/RF_Catacombs/torch_1.png -------------------------------------------------------------------------------- /korge-sandbox/resources/RF_Catacombs/torch_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/RF_Catacombs/torch_2.png -------------------------------------------------------------------------------- /korge-sandbox/resources/RF_Catacombs/torch_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/RF_Catacombs/torch_3.png -------------------------------------------------------------------------------- /korge-sandbox/resources/RF_Catacombs/torch_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/RF_Catacombs/torch_4.png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/01-King Human/Attack (78x58).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/01-King Human/Attack (78x58).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/01-King Human/Dead (78x58).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/01-King Human/Dead (78x58).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/01-King Human/Door In (78x58).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/01-King Human/Door In (78x58).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/01-King Human/Door Out (78x58).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/01-King Human/Door Out (78x58).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/01-King Human/Fall (78x58).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/01-King Human/Fall (78x58).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/01-King Human/Ground (78x58).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/01-King Human/Ground (78x58).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/01-King Human/Hit (78x58).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/01-King Human/Hit (78x58).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/01-King Human/Idle (78x58).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/01-King Human/Idle (78x58).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/01-King Human/Jump (78x58).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/01-King Human/Jump (78x58).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/01-King Human/Run (78x58).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/01-King Human/Run (78x58).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/02-King Pig/Attack (38x28).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/02-King Pig/Attack (38x28).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/02-King Pig/Dead (38x28).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/02-King Pig/Dead (38x28).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/02-King Pig/Fall (38x28).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/02-King Pig/Fall (38x28).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/02-King Pig/Ground (38x28).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/02-King Pig/Ground (38x28).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/02-King Pig/Hit (38x28).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/02-King Pig/Hit (38x28).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/02-King Pig/Idle (38x28).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/02-King Pig/Idle (38x28).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/02-King Pig/Jump (38x28).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/02-King Pig/Jump (38x28).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/02-King Pig/Run (38x28).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/02-King Pig/Run (38x28).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/03-Pig/Attack (34x28).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/03-Pig/Attack (34x28).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/03-Pig/Dead (34x28).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/03-Pig/Dead (34x28).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/03-Pig/Fall (34x28).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/03-Pig/Fall (34x28).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/03-Pig/Ground (34x28).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/03-Pig/Ground (34x28).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/03-Pig/Hit (34x28).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/03-Pig/Hit (34x28).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/03-Pig/Idle (34x28).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/03-Pig/Idle (34x28).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/03-Pig/Jump (34x28).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/03-Pig/Jump (34x28).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/03-Pig/Run (34x28).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/03-Pig/Run (34x28).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/04-Pig Throwing a Box/Idle (26x30).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/04-Pig Throwing a Box/Idle (26x30).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/04-Pig Throwing a Box/Picking Box (26x30).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/04-Pig Throwing a Box/Picking Box (26x30).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/04-Pig Throwing a Box/Run (26x30).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/04-Pig Throwing a Box/Run (26x30).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/04-Pig Throwing a Box/Throwing Box (26x30).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/04-Pig Throwing a Box/Throwing Box (26x30).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/05-Pig Thowing a Bomb/Idle (26x26).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/05-Pig Thowing a Bomb/Idle (26x26).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/05-Pig Thowing a Bomb/Picking Bomb (26x26).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/05-Pig Thowing a Bomb/Picking Bomb (26x26).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/05-Pig Thowing a Bomb/Run (26x26).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/05-Pig Thowing a Bomb/Run (26x26).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/05-Pig Thowing a Bomb/Throwing Boom (26x26).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/05-Pig Thowing a Bomb/Throwing Boom (26x26).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/06-Pig Hide in the Box/Fall (26x20).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/06-Pig Hide in the Box/Fall (26x20).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/06-Pig Hide in the Box/Ground (26x20).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/06-Pig Hide in the Box/Ground (26x20).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/06-Pig Hide in the Box/Jump (26x20).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/06-Pig Hide in the Box/Jump (26x20).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/06-Pig Hide in the Box/Jump Anticipation (26x20).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/06-Pig Hide in the Box/Jump Anticipation (26x20).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/06-Pig Hide in the Box/Looking Out (26x20).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/06-Pig Hide in the Box/Looking Out (26x20).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/07-Pig With a Match/Lighting the Cannon (26x18).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/07-Pig With a Match/Lighting the Cannon (26x18).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/07-Pig With a Match/Lighting the Match (26x18).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/07-Pig With a Match/Lighting the Match (26x18).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/07-Pig With a Match/Match On (26x18).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/07-Pig With a Match/Match On (26x18).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/08-Box/Box Pieces 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/08-Box/Box Pieces 1.png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/08-Box/Box Pieces 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/08-Box/Box Pieces 2.png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/08-Box/Box Pieces 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/08-Box/Box Pieces 3.png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/08-Box/Box Pieces 4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/08-Box/Box Pieces 4.png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/08-Box/Hit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/08-Box/Hit.png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/08-Box/Idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/08-Box/Idle.png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/09-Bomb/Bomb Off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/09-Bomb/Bomb Off.png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/09-Bomb/Bomb On (52x56).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/09-Bomb/Bomb On (52x56).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/09-Bomb/Boooooom (52x56).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/09-Bomb/Boooooom (52x56).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/10-Cannon/Cannon Ball.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/10-Cannon/Cannon Ball.png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/10-Cannon/Idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/10-Cannon/Idle.png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/10-Cannon/Shoot (44x28).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/10-Cannon/Shoot (44x28).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/11-Door/Closiong (46x56).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/11-Door/Closiong (46x56).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/11-Door/Idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/11-Door/Idle.png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/11-Door/Opening (46x56).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/11-Door/Opening (46x56).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/12-Live and Coins/Big Diamond Hit (18x14).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/12-Live and Coins/Big Diamond Hit (18x14).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/12-Live and Coins/Big Diamond Idle (18x14).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/12-Live and Coins/Big Diamond Idle (18x14).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/12-Live and Coins/Big Heart Hit (18x14).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/12-Live and Coins/Big Heart Hit (18x14).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/12-Live and Coins/Big Heart Idle (18x14).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/12-Live and Coins/Big Heart Idle (18x14).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/12-Live and Coins/Live Bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/12-Live and Coins/Live Bar.png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/12-Live and Coins/Numbers (6x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/12-Live and Coins/Numbers (6x8).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/12-Live and Coins/Small Diamond (18x14).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/12-Live and Coins/Small Diamond (18x14).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/12-Live and Coins/Small Heart Hit (18x14).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/12-Live and Coins/Small Heart Hit (18x14).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/12-Live and Coins/Small Heart Idle (18x14).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/12-Live and Coins/Small Heart Idle (18x14).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/13-Dialogue Boxes/!!! In (24x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/13-Dialogue Boxes/!!! In (24x8).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/13-Dialogue Boxes/!!! Out (24x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/13-Dialogue Boxes/!!! Out (24x8).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/13-Dialogue Boxes/Attack In (24x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/13-Dialogue Boxes/Attack In (24x8).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/13-Dialogue Boxes/Attack Out (24x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/13-Dialogue Boxes/Attack Out (24x8).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/13-Dialogue Boxes/Boom In (24x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/13-Dialogue Boxes/Boom In (24x8).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/13-Dialogue Boxes/Boom Out (24x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/13-Dialogue Boxes/Boom Out (24x8).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/13-Dialogue Boxes/Dead In (24x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/13-Dialogue Boxes/Dead In (24x8).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/13-Dialogue Boxes/Dead Out (24x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/13-Dialogue Boxes/Dead Out (24x8).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/13-Dialogue Boxes/Hello In (24x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/13-Dialogue Boxes/Hello In (24x8).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/13-Dialogue Boxes/Hello Out (24x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/13-Dialogue Boxes/Hello Out (24x8).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/13-Dialogue Boxes/Hi In (24x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/13-Dialogue Boxes/Hi In (24x8).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/13-Dialogue Boxes/Hi Out (24x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/13-Dialogue Boxes/Hi Out (24x8).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/13-Dialogue Boxes/Interrogation In (24x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/13-Dialogue Boxes/Interrogation In (24x8).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/13-Dialogue Boxes/Interrogation Out (24x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/13-Dialogue Boxes/Interrogation Out (24x8).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/13-Dialogue Boxes/Loser In (24x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/13-Dialogue Boxes/Loser In (24x8).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/13-Dialogue Boxes/Loser Out (24x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/13-Dialogue Boxes/Loser Out (24x8).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/13-Dialogue Boxes/No In (24x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/13-Dialogue Boxes/No In (24x8).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/13-Dialogue Boxes/No Out (24x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/13-Dialogue Boxes/No Out (24x8).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/13-Dialogue Boxes/WTF In (24x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/13-Dialogue Boxes/WTF In (24x8).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/13-Dialogue Boxes/WTF Out (24x8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/13-Dialogue Boxes/WTF Out (24x8).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/14-TileSets/Decorations (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/14-TileSets/Decorations (32x32).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/14-TileSets/Terrain (32x32).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/14-TileSets/Terrain (32x32).png -------------------------------------------------------------------------------- /korge-sandbox/resources/Sprites/Kings and Pigs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/Sprites/Kings and Pigs.png -------------------------------------------------------------------------------- /korge-sandbox/resources/asepritetilemap.aseprite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/asepritetilemap.aseprite -------------------------------------------------------------------------------- /korge-sandbox/resources/atlastest/atlas-test-spine.atlas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/atlastest/atlas-test-spine.atlas.png -------------------------------------------------------------------------------- /korge-sandbox/resources/atlastest/atlas-test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/atlastest/atlas-test.png -------------------------------------------------------------------------------- /korge-sandbox/resources/atlastest/atlas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/atlastest/atlas.png -------------------------------------------------------------------------------- /korge-sandbox/resources/atlastest/atlas.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /korge-sandbox/resources/blade-runner-2049-360p-5sec.mpeg1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/blade-runner-2049-360p-5sec.mpeg1 -------------------------------------------------------------------------------- /korge-sandbox/resources/bunnys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/bunnys.png -------------------------------------------------------------------------------- /korge-sandbox/resources/character.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/character.png -------------------------------------------------------------------------------- /korge-sandbox/resources/character2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/character2.png -------------------------------------------------------------------------------- /korge-sandbox/resources/characters.ase: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/characters.ase -------------------------------------------------------------------------------- /korge-sandbox/resources/clear_sans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/clear_sans.png -------------------------------------------------------------------------------- /korge-sandbox/resources/cp437.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/cp437.png -------------------------------------------------------------------------------- /korge-sandbox/resources/crate.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/crate.jpg -------------------------------------------------------------------------------- /korge-sandbox/resources/crate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/crate.png -------------------------------------------------------------------------------- /korge-sandbox/resources/empty.atlas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/empty.atlas -------------------------------------------------------------------------------- /korge-sandbox/resources/font1.bmglyph: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/font1.bmglyph -------------------------------------------------------------------------------- /korge-sandbox/resources/font1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/font1.png -------------------------------------------------------------------------------- /korge-sandbox/resources/helvetica.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/helvetica.otf -------------------------------------------------------------------------------- /korge-sandbox/resources/image.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/image.9.png -------------------------------------------------------------------------------- /korge-sandbox/resources/img1_grayscale.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/img1_grayscale.jpg -------------------------------------------------------------------------------- /korge-sandbox/resources/korge-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/korge-ui.png -------------------------------------------------------------------------------- /korge-sandbox/resources/korge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/korge.png -------------------------------------------------------------------------------- /korge-sandbox/resources/korim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/korim.png -------------------------------------------------------------------------------- /korge-sandbox/resources/logos.atlas: -------------------------------------------------------------------------------- 1 | logos 2 | -------------------------------------------------------------------------------- /korge-sandbox/resources/logos/korau.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/logos/korau.png -------------------------------------------------------------------------------- /korge-sandbox/resources/logos/korge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/logos/korge.png -------------------------------------------------------------------------------- /korge-sandbox/resources/logos/korim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/logos/korim.png -------------------------------------------------------------------------------- /korge-sandbox/resources/logos_svg/kds.svg: -------------------------------------------------------------------------------- 1 | K DS -------------------------------------------------------------------------------- /korge-sandbox/resources/minesweeper/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/minesweeper/bg.jpg -------------------------------------------------------------------------------- /korge-sandbox/resources/minesweeper/bomba.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/minesweeper/bomba.ico -------------------------------------------------------------------------------- /korge-sandbox/resources/minesweeper/boom.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/minesweeper/boom.wav -------------------------------------------------------------------------------- /korge-sandbox/resources/minesweeper/cells.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/minesweeper/cells.png -------------------------------------------------------------------------------- /korge-sandbox/resources/minesweeper/click.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/minesweeper/click.wav -------------------------------------------------------------------------------- /korge-sandbox/resources/minesweeper/font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/minesweeper/font.ttf -------------------------------------------------------------------------------- /korge-sandbox/resources/minesweeper/light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/minesweeper/light.png -------------------------------------------------------------------------------- /korge-sandbox/resources/msdf/SaniTrixieSans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/msdf/SaniTrixieSans.png -------------------------------------------------------------------------------- /korge-sandbox/resources/myfont-bug.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/myfont-bug.ttf -------------------------------------------------------------------------------- /korge-sandbox/resources/myfont-bug2.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/myfont-bug2.ttf -------------------------------------------------------------------------------- /korge-sandbox/resources/myfont-bug3.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/myfont-bug3.ttf -------------------------------------------------------------------------------- /korge-sandbox/resources/myfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/myfont.ttf -------------------------------------------------------------------------------- /korge-sandbox/resources/noto-glyf_colr_1.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/noto-glyf_colr_1.ttf -------------------------------------------------------------------------------- /korge-sandbox/resources/output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/output.png -------------------------------------------------------------------------------- /korge-sandbox/resources/progress_bar/progress_bar_tex.json: -------------------------------------------------------------------------------- 1 | {"imagePath":"progress_bar_tex.png","width":1024,"SubTexture":[{"width":600,"y":1,"height":4,"name":"_texture/track","x":73},{"width":600,"y":7,"height":4,"name":"_texture/bar","x":73},{"width":88,"y":1,"height":30,"name":"_texture/thrmb","x":675},{"width":70,"y":1,"height":60,"name":"_texture/_diamond","x":1}],"height":64,"name":"progress_bar"} -------------------------------------------------------------------------------- /korge-sandbox/resources/progress_bar/progress_bar_tex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/progress_bar/progress_bar_tex.png -------------------------------------------------------------------------------- /korge-sandbox/resources/psdf/SaniTrixieSans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/psdf/SaniTrixieSans.png -------------------------------------------------------------------------------- /korge-sandbox/resources/roboto-regular-ft-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/roboto-regular-ft-12.png -------------------------------------------------------------------------------- /korge-sandbox/resources/sdf/SaniTrixieSans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/sdf/SaniTrixieSans.png -------------------------------------------------------------------------------- /korge-sandbox/resources/segment7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/segment7.png -------------------------------------------------------------------------------- /korge-sandbox/resources/slice-example.ase: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/slice-example.ase -------------------------------------------------------------------------------- /korge-sandbox/resources/sounds/Deus_Ex_Tempus.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/sounds/Deus_Ex_Tempus.ogg -------------------------------------------------------------------------------- /korge-sandbox/resources/sounds/Snowland.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/sounds/Snowland.mp3 -------------------------------------------------------------------------------- /korge-sandbox/resources/sounds/click.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/sounds/click.mp3 -------------------------------------------------------------------------------- /korge-sandbox/resources/sounds/click.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/sounds/click.wav -------------------------------------------------------------------------------- /korge-sandbox/resources/sounds/mp3.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/sounds/mp3.mp3 -------------------------------------------------------------------------------- /korge-sandbox/resources/sounds/ogg.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/sounds/ogg.ogg -------------------------------------------------------------------------------- /korge-sandbox/resources/sounds/poliamber.xm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/sounds/poliamber.xm -------------------------------------------------------------------------------- /korge-sandbox/resources/sounds/wav.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/sounds/wav.wav -------------------------------------------------------------------------------- /korge-sandbox/resources/sprites.ase: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/sprites.ase -------------------------------------------------------------------------------- /korge-sandbox/resources/twemoji-glyf_colr_1.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/twemoji-glyf_colr_1.ttf -------------------------------------------------------------------------------- /korge-sandbox/resources/uifont.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/uifont.png -------------------------------------------------------------------------------- /korge-sandbox/resources/vampire.ase: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/vampire.ase -------------------------------------------------------------------------------- /korge-sandbox/resources/vampire.ase.license.txt: -------------------------------------------------------------------------------- 1 | 2 | Author despain, Jason -------------------------------------------------------------------------------- /korge-sandbox/resources/vampire_slices_corrupted.ase: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/vampire_slices_corrupted.ase -------------------------------------------------------------------------------- /korge-sandbox/resources/vampire_slices_fixed.ase: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge-sandbox/resources/vampire_slices_fixed.ase -------------------------------------------------------------------------------- /korge-sandbox/src/samples/MainCircleColor.kt: -------------------------------------------------------------------------------- 1 | package samples 2 | 3 | import korlibs.image.color.* 4 | import korlibs.korge.scene.* 5 | import korlibs.korge.view.* 6 | import korlibs.math.geom.* 7 | 8 | class MainCircleColor : Scene() { 9 | override suspend fun SContainer.sceneMain() { 10 | circle(100.0).also { shape -> 11 | //roundRect(100.0, 200.0, 50.0, 50.0).also { shape -> 12 | shape.pos = Point(100, 100) 13 | //it.colorMul = Colors.RED.withAd(0.9) 14 | shape.stroke = Colors.RED 15 | shape.fill = Colors.GREEN 16 | shape.strokeThickness = 16.0 17 | addFastUpdater { shape.radius += 1f } 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /korge-sandbox/src/samples/MainColorTransformFilter.kt: -------------------------------------------------------------------------------- 1 | package samples 2 | 3 | import korlibs.korge.scene.Scene 4 | import korlibs.korge.view.* 5 | import korlibs.korge.view.filter.* 6 | import korlibs.image.color.* 7 | 8 | class MainColorTransformFilter : Scene() { 9 | override suspend fun SContainer.sceneMain() { 10 | //val rect = solidRect(100, 100, ) 11 | val rect = solidRect(100, 100, Colors.DARKGRAY) 12 | //rect.colorAdd = ColorAdd(+100, 0, 0, 0) 13 | rect.filter = ColorTransformFilter(ColorTransform(add = ColorAdd(+127, 0, +127, +255))) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /korge-sandbox/src/samples/MainGifAnimation.kt: -------------------------------------------------------------------------------- 1 | package samples 2 | 3 | import korlibs.korge.scene.* 4 | import korlibs.korge.view.* 5 | import korlibs.korge.view.animation.* 6 | import korlibs.image.format.* 7 | 8 | class MainGifAnimation : Scene() { 9 | override suspend fun SContainer.sceneMain() { 10 | val imageData = korlibs.io.file.std.resourcesVfs["200.gif"] 11 | .readImageData(korlibs.image.format.GIF.toProps()) 12 | //.packInMutableAtlas(MutableAtlasUnit()) 13 | imageAnimationView(imageData.defaultAnimation) 14 | //image(imageData.mainBitmap) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /korge-sandbox/src/samples/MainHaptic.kt: -------------------------------------------------------------------------------- 1 | package samples 2 | 3 | import korlibs.korge.scene.Scene 4 | import korlibs.korge.service.haptic.* 5 | import korlibs.korge.ui.clicked 6 | import korlibs.korge.ui.uiButton 7 | import korlibs.korge.view.SContainer 8 | 9 | class MainHaptic : Scene() { 10 | override suspend fun SContainer.sceneMain() { 11 | views.hapticFeedback 12 | uiButton("hello") { 13 | clicked { 14 | views.hapticFeedback.emit(HapticFeedbackKind.ALIGNMENT) 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /korge-sandbox/src/samples/MainMipmaps.kt: -------------------------------------------------------------------------------- 1 | package samples 2 | 3 | import korlibs.image.bitmap.* 4 | import korlibs.image.format.* 5 | import korlibs.io.file.std.* 6 | import korlibs.korge.scene.* 7 | import korlibs.korge.tween.* 8 | import korlibs.korge.view.* 9 | import korlibs.time.* 10 | 11 | class MainMipmaps : Scene() { 12 | override suspend fun SContainer.sceneMain() { 13 | val image = image(resourcesVfs["korge.png"].readBitmap().mipmaps()) 14 | //image.program = BatchBuilder2D.PROGRAM_PRE_WRAP 15 | while (true) { 16 | tween(image::scaleAvg[0.01f], time = 3.seconds) 17 | tween(image::scaleAvg[0.2f], time = 1.seconds) 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /korge-sandbox/src/samples/pong/main.kt: -------------------------------------------------------------------------------- 1 | package samples.pong 2 | 3 | import korlibs.korge.scene.ScaledScene 4 | import korlibs.korge.scene.sceneContainer 5 | import korlibs.korge.view.SContainer 6 | 7 | class MainPong : ScaledScene(800, 600) { 8 | override suspend fun SContainer.sceneMain() { 9 | injector.root.mapPrototype { MenuScene() } 10 | injector.root.mapPrototype { PlayScene() } 11 | sceneContainer().changeTo() 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /korge-sandbox/src@android/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /korge-sandbox/src@jvm/JvmMain.kt: -------------------------------------------------------------------------------- 1 | import korlibs.io.async.* 2 | import korlibs.korge.* 3 | import samples.* 4 | 5 | object JvmMain { 6 | @JvmStatic 7 | fun main(args: Array) = runBlockingNoJs { 8 | Korge( 9 | windowSize = Korge.DEFAULT_WINDOW_SIZE, 10 | backgroundColor = DEFAULT_KORGE_BG_COLOR, 11 | displayMode = KorgeDisplayMode.CENTER_NO_CLIP, 12 | debug = false, 13 | forceRenderEveryFrame = true 14 | ) { 15 | demoSelector( 16 | Demo(::MainRenderImagesJvmNative), 17 | listOf( 18 | Demo(::MainRenderImagesJvmNative) 19 | ) 20 | ) 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /korge-sandbox/src@jvm/korlibs/korge/editor/KorgeEditor.kt: -------------------------------------------------------------------------------- 1 | import kotlinx.coroutines.* 2 | 3 | object KorgeEditor { 4 | @JvmStatic 5 | fun main(args: Array) { 6 | runBlocking { 7 | main() 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /korge-sandbox/test/korlibs/korge/editor/KorgeEditorTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.editor 2 | 3 | import kotlin.test.* 4 | 5 | class KorgeEditorTest { 6 | @Test 7 | fun test() { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /korge/.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle 2 | /build 3 | /game.storage 4 | /libglapi.dll 5 | /opengl32.dll 6 | /opengl32-x64.zip 7 | /libs 8 | -------------------------------------------------------------------------------- /korge/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import korlibs.applyProjectProperties 2 | 3 | description = "Multiplatform Game Engine written in Kotlin" 4 | 5 | project.extensions.extraProperties.properties.apply { 6 | applyProjectProperties( 7 | "https://github.com/korlibs/korge", 8 | "MIT License", 9 | "https://raw.githubusercontent.com/korlibs/korge/master/LICENSE" 10 | ) 11 | } 12 | 13 | dependencies { 14 | commonMainApi(project(":korge-core")) 15 | jvmMainApi(project(":korge-ipc")) 16 | add("jvmMainApi", "org.jetbrains.kotlinx:kotlinx-coroutines-debug:1.9.0-RC") 17 | } 18 | -------------------------------------------------------------------------------- /korge/resources/META-INF/services/korlibs.korge.ViewsCompleter: -------------------------------------------------------------------------------- 1 | korlibs.korge.StandardViewsCompleter 2 | korlibs.korge.IPCViewsCompleter 3 | -------------------------------------------------------------------------------- /korge/settings.json: -------------------------------------------------------------------------------- 1 | {"hello":"10"} -------------------------------------------------------------------------------- /korge/src/korlibs/korge/KorgeExt.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge 2 | 3 | import korlibs.korge.view.Views 4 | 5 | internal expect fun completeViews(views: Views) 6 | internal expect fun beforeStartingKorge(config: Korge) 7 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/component/OutOverDecorator.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.component 2 | 3 | import korlibs.korge.input.* 4 | import korlibs.korge.view.* 5 | 6 | fun T.decorateOutOver(onEvent: (view: T, over: Boolean) -> Unit = { view, over -> }): T { 7 | val view = this 8 | onEvent(view, false) 9 | mouse { 10 | this.over { onEvent(view, true) } 11 | this.out { if (it.input.numActiveTouches == 0) onEvent(view, false) } 12 | this.upOutside { onEvent(view, false) } 13 | } 14 | return this 15 | } 16 | 17 | fun T.decorateOutOverAlpha(alpha: (over: Boolean) -> Double = { if (it) 1.0 else 0.75 }): T { 18 | return decorateOutOver { view, over -> view.alpha = alpha(over) } 19 | } 20 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/render/RenderContextExt.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.render 2 | 3 | import korlibs.datastructure.* 4 | import korlibs.korge.view.* 5 | 6 | val RenderContext.views: Views? get() = bp as? Views? 7 | 8 | private var RenderContext._debugAnnotateView: View? by extraProperty { null } 9 | 10 | var RenderContext.debugAnnotateView: View? 11 | get() = _debugAnnotateView 12 | set(value) { 13 | views?.invalidatedView(_debugAnnotateView) 14 | _debugAnnotateView = value 15 | views?.invalidatedView(_debugAnnotateView) 16 | } 17 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/service/vibration/NativeVibrationViews.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.service.vibration 2 | 3 | import korlibs.datastructure.* 4 | import korlibs.korge.view.* 5 | 6 | val Views.vibration by extraPropertyThis { NativeVibration(this.coroutineContext) } 7 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/tests/KorgeTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.tests 2 | 3 | @Suppress("unused") 4 | open class KorgeTest : ViewsForTesting() 5 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/time/TimeSpanExt.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.time 2 | 3 | import korlibs.time.TimeSpan 4 | import korlibs.time.milliseconds 5 | import korlibs.math.interpolation.* 6 | import kotlin.time.* 7 | 8 | fun Ratio.interpolate(a: Duration, b: Duration): Duration = this.interpolate(a.milliseconds, b.milliseconds).milliseconds 9 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/ui/UIDefaults.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.ui 2 | 3 | import korlibs.math.geom.* 4 | 5 | val UI_DEFAULT_SIZE = Size(100, 32) 6 | const val UI_DEFAULT_PADDING = 0.0 7 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/ui/UIObservable.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.ui 2 | 3 | import kotlin.reflect.KProperty 4 | 5 | inline fun uiObservable(value: T, noinline observe: (T) -> Unit) = UIObservable(value, observe) 6 | 7 | class UIObservable(val initial: T, val observe: (T) -> Unit) { 8 | var currentValue = initial 9 | 10 | operator fun getValue(obj: Any, prop: KProperty<*>): T { 11 | return currentValue 12 | } 13 | 14 | operator fun setValue(obj: Any, prop: KProperty<*>, value: T) { 15 | if (currentValue != value) { 16 | currentValue = value 17 | observe(value) 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/ui/UISpacing.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.ui 2 | 3 | import korlibs.korge.view.* 4 | import korlibs.math.geom.* 5 | 6 | inline fun Container.uiSpacing( 7 | size: Size = UI_DEFAULT_SIZE, 8 | block: @ViewDslMarker UISpacing.() -> Unit = {} 9 | ): UISpacing = UISpacing(size).addTo(this).apply(block) 10 | 11 | open class UISpacing( 12 | size: Size = UI_DEFAULT_SIZE, 13 | ) : UIView(size), ViewLeaf 14 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/ui/UISwitch.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.ui 2 | 3 | import korlibs.korge.view.* 4 | import korlibs.math.geom.* 5 | 6 | inline fun Container.uiSwitch( 7 | size: Size = UI_DEFAULT_SIZE, 8 | checked: Boolean = false, 9 | text: String = "Switch", 10 | block: @ViewDslMarker UISwitch.() -> Unit = {} 11 | ): UISwitch = UISwitch(size, checked, text).addTo(this).apply(block) 12 | 13 | open class UISwitch( 14 | size: Size = UI_DEFAULT_SIZE, 15 | checked: Boolean = false, 16 | text: String = "Switch", 17 | ) : UIBaseCheckBox(size, checked, text, UISwitch) { 18 | companion object : Kind() 19 | } 20 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/view/BView.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view 2 | 3 | import korlibs.datastructure.iterators.fastForEach 4 | 5 | interface BView { 6 | val bview: View 7 | val bviewAll: List 8 | } 9 | 10 | inline fun BView.bviewFastForEach(block: (view: View) -> Unit) { 11 | bviewAll.fastForEach { block(it) } 12 | } 13 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/view/BaseView.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view 2 | 3 | import korlibs.event.* 4 | 5 | open class BaseView : BaseEventListener() { 6 | val baseParent: BaseView? get() = eventListenerParent as? BaseView? 7 | 8 | open fun invalidateRender() { 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/view/BlendMode.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view 2 | 3 | typealias BlendMode = korlibs.korge.blend.BlendMode 4 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/view/ClipContainer.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view 2 | 3 | import korlibs.math.geom.* 4 | 5 | inline fun Container.clipContainer(size: Size, callback: @ViewDslMarker ClipContainer.() -> Unit = {}) = 6 | ClipContainer(size).addTo(this, callback) 7 | 8 | open class ClipContainer( 9 | size: Size = Size(100, 100), 10 | ) : FixedSizeContainer(size, clip = true) 11 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/view/DummyView.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view 2 | 3 | import korlibs.korge.render.RenderContext 4 | 5 | fun Container.dummyView() = DummyView().also { this.addChild(it) } 6 | 7 | /** 8 | * A Dummy view that doesn't render anything. 9 | */ 10 | open class DummyView : View() { 11 | override fun createInstance(): View = DummyView() 12 | override fun renderInternal(ctx: RenderContext) = Unit 13 | } 14 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/view/FilteredContainer.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view 2 | 3 | import korlibs.korge.render.* 4 | 5 | class FilteredContainer : Container(), View.Reference { 6 | override fun renderInternal(ctx: RenderContext) { 7 | val bounds = getLocalBounds() 8 | ctx.renderToTexture(bounds.width.toInt(), bounds.height.toInt(), { 9 | super.renderInternal(ctx) 10 | }) { 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/view/InvalidateNotifier.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view 2 | 3 | interface InvalidateNotifier { 4 | fun invalidatedView(view: BaseView?) 5 | } 6 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/view/Renderable.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view 2 | 3 | import korlibs.korge.render.RenderContext 4 | 5 | /** 6 | * Represents something that can be rendered. Usually a [View]. 7 | */ 8 | interface Renderable { 9 | /** 10 | * Called when the render needs to be done. The object should use the [ctx] [RenderContext] to perform the drawings. 11 | */ 12 | fun render(ctx: RenderContext): Unit 13 | } 14 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/view/TextExt.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view 2 | 3 | interface IText { 4 | var text: String 5 | } 6 | 7 | interface IHtml { 8 | var html: String 9 | } 10 | 11 | fun View?.setText(text: String) { this.foreachDescendant { if (it is IText) it.text = text } } 12 | fun View?.setHtml(html: String) { this.foreachDescendant { if (it is IHtml) it.html = html } } 13 | 14 | fun QView.setText(text: String) = fastForEach { it.setText(text) } 15 | fun QView.setHtml(html: String) = fastForEach { it.setHtml(html) } 16 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/view/animation/Playable.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view.animation 2 | 3 | interface Playable { 4 | fun play(): Unit 5 | fun stop(): Unit 6 | fun rewind(): Unit = Unit 7 | } 8 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/view/animation/PlayableWithName.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view.animation 2 | 3 | interface PlayableWithName { 4 | val animationName: String? get() = null 5 | fun play(name: String?): Unit = Unit 6 | fun stop(): Unit = Unit 7 | } 8 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/view/filter/FilterWithFiltering.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view.filter 2 | 3 | interface FilterWithFiltering : Filter { 4 | var filtering: Boolean 5 | } 6 | -------------------------------------------------------------------------------- /korge/src/korlibs/korge/view/property/ViewAction.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view.property 2 | 3 | import korlibs.korge.view.* 4 | 5 | /** 6 | * Used by the debugger to make a button to appear 7 | */ 8 | //annotation class ViewAction 9 | class ViewAction(val name: String, val action: Views.(instance: Any) -> Unit) 10 | 11 | class ViewActionList(val actions: List) { 12 | constructor(vararg actions: ViewAction) : this(actions.toList()) 13 | } 14 | -------------------------------------------------------------------------------- /korge/src@android/korlibs/korge/KorgeExtAndroid.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge 2 | 3 | import korlibs.korge.view.* 4 | 5 | internal actual fun completeViews(views: Views) { 6 | } 7 | internal actual fun beforeStartingKorge(config: Korge) { 8 | } 9 | -------------------------------------------------------------------------------- /korge/src@android/korlibs/korge/android/AndroidExt.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.android 2 | 3 | import android.content.Context 4 | import korlibs.korge.view.* 5 | import korlibs.render.* 6 | 7 | val Views.androidContext: Context get() = views.gameWindow.gameWindowAndroidContext 8 | val Views.androidActivityOrNull: KorgwActivity? get() = (views.gameWindow as? AndroidGameWindow?)?.activity 9 | val Views.androidActivity: KorgwActivity get() = androidActivityOrNull ?: error("Couldn't find KorgwActivity") 10 | -------------------------------------------------------------------------------- /korge/src@android/korlibs/korge/tests/enrichTestGameWindow.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.tests 2 | 3 | import korlibs.kgl.* 4 | 5 | actual fun enrichTestGameWindow(window: ViewsForTesting.TestGameWindow) { 6 | runCatching { window.androidContextAny = getAndroidTestContext() } 7 | } 8 | -------------------------------------------------------------------------------- /korge/src@darwin/korlibs/korge/KorgeExtNative.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge 2 | 3 | import korlibs.korge.view.* 4 | 5 | internal actual fun completeViews(views: Views) { 6 | } 7 | internal actual fun beforeStartingKorge(config: Korge) { 8 | } 9 | -------------------------------------------------------------------------------- /korge/src@darwin/korlibs/korge/service/storage/NativeStorageNative.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.service.storage 2 | 3 | import korlibs.io.lang.* 4 | import korlibs.korge.native.* 5 | import korlibs.korge.view.* 6 | 7 | open class DefaultNativeStorage(views: Views) : FiledBasedNativeStorage(views) { 8 | override fun mkdirs(folder: String) = KorgeSimpleNativeSyncIO.mkdirs(folder) 9 | override fun saveStr(data: String) = KorgeSimpleNativeSyncIO.writeBytes(gameStorageFile, data.toByteArray(UTF8)) 10 | override fun loadStr(): String = KorgeSimpleNativeSyncIO.readBytes(gameStorageFile).toString(UTF8) 11 | } 12 | -------------------------------------------------------------------------------- /korge/src@darwin/korlibs/korge/tests/enrichTestGameWindow.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.tests 2 | 3 | actual fun enrichTestGameWindow(window: ViewsForTesting.TestGameWindow) { 4 | } 5 | -------------------------------------------------------------------------------- /korge/src@js/korlibs/korge/KorgeExtJs.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge 2 | 3 | import korlibs.audio.sound.* 4 | import korlibs.korge.view.* 5 | 6 | internal actual fun completeViews(views: Views) { 7 | // Already performed on Korge start 8 | //HtmlSimpleSound.unlock // Tries to unlock audio as soon as possible 9 | } 10 | internal actual fun beforeStartingKorge(config: Korge) { 11 | } 12 | -------------------------------------------------------------------------------- /korge/src@js/korlibs/korge/tests/enrichTestGameWindow.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.tests 2 | 3 | actual fun enrichTestGameWindow(window: ViewsForTesting.TestGameWindow) { 4 | } 5 | -------------------------------------------------------------------------------- /korge/src@jvm/korlibs/korge/ViewsNodeId.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge 2 | 3 | import korlibs.korge.view.* 4 | 5 | open class ViewsNodeId(val views: Views) { 6 | var lastId: Long = 1L 7 | 8 | var View.nodeId by extraViewProp { lastId++ } 9 | 10 | init { 11 | views.stage.nodeId // stage has ID = 1 12 | } 13 | 14 | fun getId(view: View?): Long { 15 | return view?.nodeId ?: 0L 16 | } 17 | 18 | fun findById(id: Long): View? { 19 | views.root.foreachDescendantInline { 20 | if (it.nodeId == id) { 21 | return it 22 | } 23 | } 24 | return null 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /korge/src@jvm/korlibs/korge/testing/KorgeScreenshotTestResults.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.testing 2 | 3 | data class KorgeScreenshotTestResults( 4 | val testMethodName: String, 5 | val results: MutableList = mutableListOf() 6 | ) 7 | -------------------------------------------------------------------------------- /korge/src@jvm/korlibs/korge/tests/enrichTestGameWindow.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.tests 2 | 3 | actual fun enrichTestGameWindow(window: ViewsForTesting.TestGameWindow) { 4 | } 5 | -------------------------------------------------------------------------------- /korge/src@wasmJs/korlibs/korge/KorgeExtJs.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge 2 | 3 | import korlibs.audio.sound.* 4 | import korlibs.korge.view.* 5 | 6 | internal actual fun completeViews(views: Views) { 7 | // Already performed on Korge start 8 | //HtmlSimpleSound.unlock // Tries to unlock audio as soon as possible 9 | } 10 | 11 | internal actual fun beforeStartingKorge(config: Korge) { 12 | } 13 | 14 | -------------------------------------------------------------------------------- /korge/src@wasmJs/korlibs/korge/tests/enrichTestGameWindow.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.tests 2 | 3 | actual fun enrichTestGameWindow(window: ViewsForTesting.TestGameWindow) { 4 | } 5 | -------------------------------------------------------------------------------- /korge/test/korlibs/SkipIOTest.kt: -------------------------------------------------------------------------------- 1 | import korlibs.platform.* 2 | 3 | //val skipIOTest get() = OS.isJsBrowser 4 | val skipIOTest get() = Platform.isJsBrowserOrWorker || Platform.isJsNodeJs 5 | val doIOTest get() = !skipIOTest 6 | -------------------------------------------------------------------------------- /korge/test/korlibs/korge/render/AgAutoFreeManagerTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.render 2 | 3 | import korlibs.io.lang.* 4 | import kotlin.test.* 5 | 6 | class AgAutoFreeManagerTest { 7 | @Test 8 | fun test() { 9 | var log = "" 10 | val free = AgAutoFreeManager() 11 | val a = CloseableCancellable { log += "a" } 12 | val b = CloseableCancellable { log += "b" } 13 | free.reference(a) 14 | free.reference(b) 15 | free.gc() 16 | assertEquals("", log) 17 | free.reference(a) 18 | free.gc() 19 | assertEquals("b", log) 20 | free.gc() 21 | assertEquals("ba", log) 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /korge/test/korlibs/korge/time/TimeSpanTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.time 2 | 3 | import korlibs.time.milliseconds 4 | import korlibs.time.seconds 5 | import kotlin.test.Test 6 | import kotlin.test.assertEquals 7 | 8 | class TimeSpanTest { 9 | private val DELTA = 0.00001 10 | 11 | @Test 12 | fun name() { 13 | assertEquals(1000.0, 1.seconds.milliseconds) 14 | assertEquals(1.0, 1.seconds.seconds) 15 | assertEquals(1000.0, 1000.milliseconds.milliseconds) 16 | assertEquals(1.0, 1000.milliseconds.seconds) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /korge/test/korlibs/korge/time/TimerComponentsTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.time 2 | 3 | class TimerComponentsTest { 4 | //@Test 5 | //fun testTimerAcummulated() = suspendTest { 6 | // var log = "" 7 | // val view = DummyView() 8 | // log += "a" 9 | // view.timeout(5.milliseconds) { 10 | // log += "b" 11 | // view.timeout(5.milliseconds) { 12 | // log += "c" 13 | // } 14 | // } 15 | // assertEquals("a", log) 16 | // view.updateSingleView(7.milliseconds) 17 | // assertEquals("ab", log) 18 | // view.updateSingleView(3.milliseconds) 19 | // assertEquals("abc", log) 20 | //} 21 | } 22 | -------------------------------------------------------------------------------- /korge/test/korlibs/korge/ui/UIMaterialLayerTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.ui 2 | 3 | import korlibs.korge.view.* 4 | import korlibs.math.geom.* 5 | import kotlin.test.* 6 | 7 | class UIMaterialLayerTest { 8 | @Test 9 | fun testBounds() { 10 | val container = Container() 11 | val layer = container.uiMaterialLayer(Size(100, 100)) 12 | assertEquals(Rectangle(0, 0, 100, 100).toInt(), layer.getBounds(container).toInt()) 13 | layer.anchor = Anchor.CENTER 14 | assertEquals(Rectangle(-50, -50, 100, 100).toInt(), layer.getBounds(container).toInt()) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /korge/test/korlibs/korge/view/BitmapSliceViewTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view 2 | 3 | class BitmapSliceViewTest { 4 | //@Test 5 | //fun test() { 6 | // val coords = Bitmap32(64, 128).slice().rotatedRight() 7 | // val image1 = Image(coords) 8 | // val image2 = Image(UntransformedSizeBmpCoordsWithInstance(coords)) 9 | // assertEquals(Size(128, 64), image1.getLocalBoundsOptimized().size) 10 | // assertEquals(Size(64, 128), image2.getLocalBoundsOptimized().size) 11 | //} 12 | } 13 | -------------------------------------------------------------------------------- /korge/test/korlibs/korge/view/StageTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view 2 | 3 | import korlibs.korge.input.mouse 4 | import korlibs.korge.tests.ViewsForTesting 5 | import korlibs.math.geom.* 6 | import kotlin.test.Test 7 | import kotlin.test.assertEquals 8 | 9 | class StageTest : ViewsForTesting() { 10 | @Test 11 | fun test() { 12 | views.input.setMouseGlobalPos(Point(10.0, 20.0), down = false) 13 | stage.scale(0.5, 0.5) 14 | stage.mouse.currentPosGlobal 15 | assertEquals(Point(20, 40), stage.mousePos) 16 | assertEquals(Point(20, 40), views.globalMousePos) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /korge/test/korlibs/korge/view/ViewDebugTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view 2 | 3 | import kotlin.test.* 4 | 5 | class ViewDebugTest { 6 | var myprop = 10.0 7 | 8 | @Test 9 | fun test() { 10 | val view = DummyView() 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /korge/test/korlibs/korge/view/filter/ColorMatrixFilterTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view.filter 2 | 3 | import assertEqualsFloat 4 | import korlibs.math.geom.* 5 | import kotlin.test.Test 6 | 7 | class ColorMatrixFilterTest { 8 | @Test 9 | fun test() { 10 | val grayFilter = ColorMatrixFilter(ColorMatrixFilter.GRAYSCALE_MATRIX) 11 | 12 | assertEqualsFloat( 13 | Vector4F(0.57f, 0.57f, 0.57f, 1f), 14 | grayFilter.colorMatrix.transform(Vector4F(.75f, .5f, .25f, 1f)) 15 | ) 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /korge/test/korlibs/korge/view/filter/DirectionalBlurFilterTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view.filter 2 | 3 | import assertEqualsFloat 4 | import korlibs.korge.view.* 5 | import korlibs.math.geom.* 6 | import kotlin.test.* 7 | 8 | class DirectionalBlurFilterTest { 9 | @Test 10 | fun test() { 11 | val blur = DirectionalBlurFilter(radius = 4.0) 12 | val solidRect = SolidRect(200, 100).filters(blur) 13 | assertEqualsFloat(Rectangle(0, 0, 200, 100), solidRect.getBounds(includeFilters = false)) 14 | assertEqualsFloat(Rectangle(-14, 0, 228, 100), solidRect.getBounds(includeFilters = true)) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /korge/test/korlibs/korge/view/filter/ShaderFilterTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view.filter 2 | 3 | import kotlin.test.Test 4 | import kotlin.test.assertSame 5 | 6 | class ShaderFilterTest { 7 | @Test 8 | fun testShaderFilterDoNotRecreatePrograms() { 9 | val filter1 = ColorMatrixFilter(ColorMatrixFilter.GRAYSCALE_MATRIX) 10 | val filter2 = ColorMatrixFilter(ColorMatrixFilter.SEPIA_MATRIX) 11 | assertSame(filter1.programProvider.getProgram(), filter2.programProvider.getProgram()) 12 | assertSame(filter1.programProvider.getProgram(), filter2.programProvider.getProgram()) 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /korge/test@jvm/korlibs/korge/KorgeReloadTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge 2 | 3 | import korlibs.math.geom.* 4 | import kotlin.test.* 5 | 6 | class KorgeReloadTest { 7 | class MyClass1 { 8 | @KeepOnReload 9 | var v = Point(10, 10) 10 | } 11 | 12 | class MyClass2 { 13 | @KeepOnReload 14 | var v = Point(10, 10) 15 | } 16 | 17 | @Test 18 | fun test() { 19 | val v1 = MyClass1().also { it.v = Point(20, 20) } 20 | val v2 = MyClass2() 21 | KorgeReloadInternalJvm.transferKeepProperties(v1, v2) 22 | assertEquals(Point(20, 20), v2.v) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /korge/test@jvm/korlibs/korge/spike/Spike1.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.spike 2 | 3 | import korlibs.image.color.* 4 | import korlibs.korge.* 5 | import korlibs.korge.view.* 6 | 7 | object Spike1 { 8 | @JvmStatic suspend fun main(args: Array) { 9 | Korge { 10 | solidRect(100, 100, Colors.RED) { 11 | x = 100.0 12 | y = 100.0 13 | } 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /korge/test@jvm/korlibs/korge/test/assertEqualsFileReference.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.test 2 | 3 | import korlibs.io.test.* 4 | 5 | // Use ./gradlew jvmTestFix to update these files 6 | fun assertEqualsFileReference(path: String, content: String) { 7 | assertEqualsJvmFileReference(path, content) 8 | } 9 | -------------------------------------------------------------------------------- /korge/test@jvm/korlibs/korge/view/filter/ColorTransformFilterJvmTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view.filter 2 | 3 | import korlibs.image.color.* 4 | import korlibs.korge.testing.* 5 | import korlibs.korge.view.* 6 | import korlibs.math.geom.* 7 | import kotlin.test.* 8 | 9 | class ColorTransformFilterJvmTest { 10 | @Test 11 | fun test() = korgeScreenshotTest(Size(30, 30)) { 12 | val rect = solidRect(10, 10, Colors.DARKGRAY).xy(10, 10) 13 | rect.filter = ColorTransformFilter(ColorTransform(add = ColorAdd(+127, 0, +127, +255))) 14 | assertScreenshot() 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /korge/test@jvm/korlibs/korge/view/filter/WaveFilterScreenshotJvmTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view.filter 2 | 3 | import korlibs.image.color.* 4 | import korlibs.korge.testing.* 5 | import korlibs.korge.view.* 6 | import korlibs.math.geom.* 7 | import org.junit.* 8 | 9 | class WaveFilterScreenshotJvmTest { 10 | @Test 11 | fun test() = korgeScreenshotTest(Size(150, 150)) { 12 | solidRect(50, 50, Colors.GREEN).xy(50, 50) 13 | .filters(WaveFilter(amplitude = Vector2D(15, 10), crestDistance = Vector2D(25.0, 10.0))) 14 | 15 | assertScreenshot() 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /korge/test@jvm/korlibs/korge/view/ui/UIScreenshotJvmTest.kt: -------------------------------------------------------------------------------- 1 | package korlibs.korge.view.ui 2 | 3 | import korlibs.korge.testing.* 4 | import korlibs.korge.ui.* 5 | import korlibs.korge.view.* 6 | import korlibs.math.geom.* 7 | import org.junit.* 8 | 9 | class UIScreenshotJvmTest { 10 | @Test 11 | fun test() = korgeScreenshotTest(Size(128, 128)) { 12 | uiCheckBox(checked = false, text = "").xy(0, 0) 13 | uiCheckBox(checked = true, text = "").xy(32, 0) 14 | uiCheckBox(checked = true, text = "hi").xy(0, 32) 15 | assertScreenshot() 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /korge/testGoldens/korlibs.korge.image.KorgeImageTest/renderGrayscaleJpegImage_grayscale_jpg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testGoldens/korlibs.korge.image.KorgeImageTest/renderGrayscaleJpegImage_grayscale_jpg.png -------------------------------------------------------------------------------- /korge/testGoldens/korlibs.korge.testing.KorgeScreenshotTest/test12_initial1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testGoldens/korlibs.korge.testing.KorgeScreenshotTest/test12_initial1.png -------------------------------------------------------------------------------- /korge/testGoldens/korlibs.korge.testing.KorgeScreenshotTest/test12_initial2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testGoldens/korlibs.korge.testing.KorgeScreenshotTest/test12_initial2.png -------------------------------------------------------------------------------- /korge/testGoldens/korlibs.korge.testing.KorgeScreenshotTest/test12_initial3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testGoldens/korlibs.korge.testing.KorgeScreenshotTest/test12_initial3.png -------------------------------------------------------------------------------- /korge/testGoldens/korlibs.korge.testing.KorgeScreenshotTest/test12_initial4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testGoldens/korlibs.korge.testing.KorgeScreenshotTest/test12_initial4.png -------------------------------------------------------------------------------- /korge/testresources/Exif5-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/Exif5-2x.png -------------------------------------------------------------------------------- /korge/testresources/Pacifico.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/Pacifico.ttf -------------------------------------------------------------------------------- /korge/testresources/SimpleAGOpengl.clear.ref: -------------------------------------------------------------------------------- 1 | viewport(0, 0, 128, 128) 2 | bindFramebuffer(36160, 0) 3 | disable(3089) 4 | colorMask(true, true, true, true) 5 | clearColor(0.0, 0.0, 0.0, 0.0) 6 | depthMask(true) 7 | clearDepthf(1.0) 8 | stencilMask(-1) 9 | clearStencil(0) 10 | clear(17664) -------------------------------------------------------------------------------- /korge/testresources/atlas-test-spine.atlas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/atlas-test-spine.atlas.png -------------------------------------------------------------------------------- /korge/testresources/atlas-test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/atlas-test.png -------------------------------------------------------------------------------- /korge/testresources/atlas/adventurer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/atlas/adventurer.png -------------------------------------------------------------------------------- /korge/testresources/atlas/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/atlas/sheet.png -------------------------------------------------------------------------------- /korge/testresources/atlas/simple.atlas: -------------------------------------------------------------------------------- 1 | simple 2 | -------------------------------------------------------------------------------- /korge/testresources/atlas/simple/forearm_hit_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/atlas/simple/forearm_hit_0.png -------------------------------------------------------------------------------- /korge/testresources/atlas/simple/forearm_jump_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/atlas/simple/forearm_jump_0.png -------------------------------------------------------------------------------- /korge/testresources/atlas/simple/p_arm_idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/atlas/simple/p_arm_idle.png -------------------------------------------------------------------------------- /korge/testresources/atlas/spritesheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/atlas/spritesheet.png -------------------------------------------------------------------------------- /korge/testresources/button.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/button.9.png -------------------------------------------------------------------------------- /korge/testresources/button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/button.png -------------------------------------------------------------------------------- /korge/testresources/countDown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/countDown.png -------------------------------------------------------------------------------- /korge/testresources/font.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/font.zip -------------------------------------------------------------------------------- /korge/testresources/font/font.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/font/font.png -------------------------------------------------------------------------------- /korge/testresources/font/m5x7_16_outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/font/m5x7_16_outline.png -------------------------------------------------------------------------------- /korge/testresources/font2/font1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/font2/font1.png -------------------------------------------------------------------------------- /korge/testresources/font_atkinson/AtkinsonHyperlegible-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/font_atkinson/AtkinsonHyperlegible-Bold.ttf -------------------------------------------------------------------------------- /korge/testresources/img1_grayscale.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/img1_grayscale.jpg -------------------------------------------------------------------------------- /korge/testresources/korag/AGQueueProcessorContextLost.ref: -------------------------------------------------------------------------------- 1 | genTextures(1, [6001]) 2 | bindTexture(3553, 6001) 3 | texImage2D(3553, 0, 6408, 1, 1, 0, 6408, 5121, Buffer(size=4)) 4 | handleContextLost() 5 | genTextures(1, [6001]) 6 | bindTexture(3553, 6001) 7 | texImage2D(3553, 0, 6408, 1, 1, 0, 6408, 5121, Buffer(size=4)) -------------------------------------------------------------------------------- /korge/testresources/korge-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/korge-ui.png -------------------------------------------------------------------------------- /korge/testresources/korge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/korge.png -------------------------------------------------------------------------------- /korge/testresources/npatch/9patch.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/npatch/9patch.9.png -------------------------------------------------------------------------------- /korge/testresources/simple.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/simple.wav -------------------------------------------------------------------------------- /korge/testresources/texture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/texture.png -------------------------------------------------------------------------------- /korge/testresources/uifont.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testresources/uifont.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/bitmapfont/BitmapFontTest/simple_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/bitmapfont/BitmapFontTest/simple_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/test/TtfFontTest/disableLigaturesWorks_text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/test/TtfFontTest/disableLigaturesWorks_text.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/test/TtfFontTest/testFillTextAlignmentWorks_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/test/TtfFontTest/testFillTextAlignmentWorks_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/testing/KorgeScreenshotTest/test1_initial1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/testing/KorgeScreenshotTest/test1_initial1.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/testing/KorgeScreenshotTest/test1_initial2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/testing/KorgeScreenshotTest/test1_initial2.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/testing/KorgeScreenshotTest/test1_initial3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/testing/KorgeScreenshotTest/test1_initial3.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/testing/KorgeScreenshotTest/testArcShapes_shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/testing/KorgeScreenshotTest/testArcShapes_shapes.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/testing/KorgeScreenshotTest/testContextLost2_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/testing/KorgeScreenshotTest/testContextLost2_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/testing/KorgeScreenshotTest/testContextLost_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/testing/KorgeScreenshotTest/testContextLost_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/testing/KorgeScreenshotTest/testContextLost_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/testing/KorgeScreenshotTest/testContextLost_1.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/testing/KorgeScreenshotTest/testMipmaps_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/testing/KorgeScreenshotTest/testMipmaps_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/GpuShapeViewTest/test2_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/GpuShapeViewTest/test2_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/GpuShapeViewTest/testClipping_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/GpuShapeViewTest/testClipping_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/GpuShapeViewTest/testMultiTextures_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/GpuShapeViewTest/testMultiTextures_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/GpuShapeViewTest/test_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/GpuShapeViewTest/test_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ReferenceGraphicsTest/testBlurFilterInEmptyContainer_blur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ReferenceGraphicsTest/testBlurFilterInEmptyContainer_blur.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ReferenceGraphicsTest/testFSpritesN_N1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ReferenceGraphicsTest/testFSpritesN_N1.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ReferenceGraphicsTest/testFSpritesN_N2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ReferenceGraphicsTest/testFSpritesN_N2.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ReferenceGraphicsTest/testFSpritesN_N3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ReferenceGraphicsTest/testFSpritesN_N3.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ReferenceGraphicsTest/testFSpritesN_N4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ReferenceGraphicsTest/testFSpritesN_N4.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ReferenceGraphicsTest/testGpuShapeViewFilter_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ReferenceGraphicsTest/testGpuShapeViewFilter_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ReferenceGraphicsTest/testGraphics_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ReferenceGraphicsTest/testGraphics_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ReferenceGraphicsTest/testInvertBlendingMode_invertBlend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ReferenceGraphicsTest/testInvertBlendingMode_invertBlend.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ReferenceOpenglTest/testOpenglShapeView_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ReferenceOpenglTest/testOpenglShapeView_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ReferenceOpenglTest/testOpengl_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ReferenceOpenglTest/testOpengl_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ReferenceViewsTest/testClippedContainerInFlippedContainerInTexture_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ReferenceViewsTest/testClippedContainerInFlippedContainerInTexture_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/SDFViewTest/test_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/SDFViewTest/test_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/SolidTriangleTest/test_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/SolidTriangleTest/test_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/SolidTriangleTest/test_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/SolidTriangleTest/test_1.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/TextBlockScreenshotTest/testTextBlock_textBlock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/TextBlockScreenshotTest/testTextBlock_textBlock.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/TransitionViewTest/test_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/TransitionViewTest/test_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/TransitionViewTest/test_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/TransitionViewTest/test_1.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/TransitionViewTest/test_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/TransitionViewTest/test_2.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ViewFixedSizeContainerScreenshotTest/testClipping_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ViewFixedSizeContainerScreenshotTest/testClipping_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ViewFixedSizeContainerScreenshotTest/testClipping_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ViewFixedSizeContainerScreenshotTest/testClipping_1.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ViewsJvmTest/name_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ViewsJvmTest/name_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ViewsJvmTest/testCachedFalseClipFalse_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ViewsJvmTest/testCachedFalseClipFalse_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ViewsJvmTest/testCachedFalse_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ViewsJvmTest/testCachedFalse_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ViewsJvmTest/testCachedTrue_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ViewsJvmTest/testCachedTrue_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ViewsJvmTest/testClipping1_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ViewsJvmTest/testClipping1_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ViewsJvmTest/testFilter_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ViewsJvmTest/testFilter_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ViewsJvmTest/testUIScrollableCacheFalse_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ViewsJvmTest/testUIScrollableCacheFalse_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ViewsJvmTest/testUIScrollableCacheTrue_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ViewsJvmTest/testUIScrollableCacheTrue_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ViewsOpenglJvmTest/testIdentityFilterFor128x128_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ViewsOpenglJvmTest/testIdentityFilterFor128x128_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ViewsOpenglJvmTest/testRenderToTextureWithStencil_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ViewsOpenglJvmTest/testRenderToTextureWithStencil_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ViewsRetinaFilterTest/test_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ViewsRetinaFilterTest/test_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/fast/FSpritesJvmTest/testAlpha_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/fast/FSpritesJvmTest/testAlpha_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/fast/FSpritesJvmTest/test_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/fast/FSpritesJvmTest/test_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/fast/MultiTextureFastRender/test_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/fast/MultiTextureFastRender/test_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/filter/ColorTransformFilterJvmTest/test_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/filter/ColorTransformFilterJvmTest/test_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/filter/DitherFilterJvmTest/test_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/filter/DitherFilterJvmTest/test_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/filter/MaskAndBackdropFilterScreenshotJvmTest/test_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/filter/MaskAndBackdropFilterScreenshotJvmTest/test_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/filter/WaveFilterScreenshotJvmTest/test_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/filter/WaveFilterScreenshotJvmTest/test_0.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/tiles/TileMapViewScreenshotTest/testTilemapOffsetAndOrientation_tilemapOffsetAndOrientation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/tiles/TileMapViewScreenshotTest/testTilemapOffsetAndOrientation_tilemapOffsetAndOrientation.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/tiles/TileMapViewScreenshotTest/testTilemapScreenshotTest_offsetInfiniteTilemap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/tiles/TileMapViewScreenshotTest/testTilemapScreenshotTest_offsetInfiniteTilemap.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/tiles/TileMapViewScreenshotTest/testTilemapScreenshotTest_offsetInfiniteTilemap2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/tiles/TileMapViewScreenshotTest/testTilemapScreenshotTest_offsetInfiniteTilemap2.png -------------------------------------------------------------------------------- /korge/testscreenshots/korlibs/korge/view/ui/UIScreenshotJvmTest/test_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/korlibs/korge/48c78920eb1f0fcc014823a278d3e21b32e39e87/korge/testscreenshots/korlibs/korge/view/ui/UIScreenshotJvmTest/test_0.png -------------------------------------------------------------------------------- /proguard-rules.pro: -------------------------------------------------------------------------------- 1 | #-keep @korlibs.io.annotations.Keep public class * 2 | #-keepnames @korlibs.io.annotations.Keep public class * 3 | #-keepnames public class samples.**.Main.* 4 | -dontobfuscate 5 | --------------------------------------------------------------------------------