From 1b970e786b0ae031c33226c070f27b6548e18898 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Fri, 23 Feb 2024 12:42:04 +0100 Subject: [PATCH 01/46] PoC of an unit test library --- .../minigdx/tiny/cli/command/RunCommand.kt | 10 +- tiny-cli/src/jvmMain/resources/sfx/sfx-0.sfx | 4 + tiny-cli/src/jvmMain/resources/sfx/sfx-1.sfx | 3 + .../src/jvmMain/resources/sfx/tiny-export.zip | Bin 0 -> 226708 bytes .../github/minigdx/tiny/engine/GameEngine.kt | 1 + .../github/minigdx/tiny/engine/GameOptions.kt | 3 +- .../com/github/minigdx/tiny/lua/TestLib.kt | 135 ++++++++++++++++++ .../minigdx/tiny/resources/GameScript.kt | 31 ++++ .../minigdx/tiny/resources/ResourceFactory.kt | 2 +- 9 files changed, 185 insertions(+), 4 deletions(-) create mode 100644 tiny-cli/src/jvmMain/resources/sfx/sfx-0.sfx create mode 100644 tiny-cli/src/jvmMain/resources/sfx/sfx-1.sfx create mode 100644 tiny-cli/src/jvmMain/resources/sfx/tiny-export.zip create mode 100644 tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/TestLib.kt diff --git a/tiny-cli/src/jvmMain/kotlin/com/github/minigdx/tiny/cli/command/RunCommand.kt b/tiny-cli/src/jvmMain/kotlin/com/github/minigdx/tiny/cli/command/RunCommand.kt index 09be5a0c..81228cdf 100644 --- a/tiny-cli/src/jvmMain/kotlin/com/github/minigdx/tiny/cli/command/RunCommand.kt +++ b/tiny-cli/src/jvmMain/kotlin/com/github/minigdx/tiny/cli/command/RunCommand.kt @@ -4,6 +4,8 @@ import com.github.ajalt.clikt.core.Abort import com.github.ajalt.clikt.core.CliktCommand import com.github.ajalt.clikt.parameters.arguments.argument import com.github.ajalt.clikt.parameters.arguments.default +import com.github.ajalt.clikt.parameters.options.flag +import com.github.ajalt.clikt.parameters.options.option import com.github.ajalt.clikt.parameters.types.file import com.github.minigdx.tiny.cli.config.GameParameters import com.github.minigdx.tiny.engine.GameEngine @@ -19,10 +21,13 @@ import java.io.File class RunCommand : CliktCommand(name = "run", help = "Run your game.") { - val gameDirectory by argument(help = "The directory containing all game information") + val gameDirectory by argument(help = "The directory containing all game information.") .file(mustExist = true, canBeDir = true, canBeFile = false) .default(File(".")) + val test by option(help = "Run tests before running the game.") + .flag() + fun isOracleOrOpenJDK(): Boolean { val vendor = System.getProperty("java.vendor")?.lowercase() return vendor?.contains("oracle") == true || vendor?.contains("eclipse") == true || vendor?.contains("openjdk") == true @@ -50,6 +55,7 @@ class RunCommand : CliktCommand(name = "run", help = "Run your game.") { val logger = StdOutLogger("tiny-cli") val vfs = CommonVirtualFileSystem() val gameOption = gameParameters.toGameOptions() + .copy(runTests = test) val gameEngine = GameEngine( gameOptions = gameOption, platform = GlfwPlatform(gameOption, logger, vfs, gameDirectory, LwjglGLRender(logger, gameOption)), @@ -65,7 +71,7 @@ class RunCommand : CliktCommand(name = "run", help = "Run your game.") { val data = File("data") if (data.exists() && data.isDirectory) { - WorkspaceLib.DEFAULT = data.listFiles().map { JvmLocalFile(it.name, data) } + WorkspaceLib.DEFAULT = data.listFiles()?.map { JvmLocalFile(it.name, data) } ?: emptyList() } gameEngine.main() } catch (ex: Exception) { diff --git a/tiny-cli/src/jvmMain/resources/sfx/sfx-0.sfx b/tiny-cli/src/jvmMain/resources/sfx/sfx-0.sfx new file mode 100644 index 00000000..00576a79 --- /dev/null +++ b/tiny-cli/src/jvmMain/resources/sfx/sfx-0.sfx @@ -0,0 +1,4 @@ +tiny-sfx 2 120 255 +0142FF 0143FF 0144FF 0145FF 0146FF 0150FF 0155FF 0001FF 0001FF 0001FF 0138FF 0141FF 0148FF 014CFF 0146FF 0138FF 0135FF 0001FF 0001FF 0001FF 0132FF 0133FF 0134FF 0133FF 012EFF 012AFF 0001FF 0133FF 013FFF 0148FF 014BFF 014CFF +0155FF 0156FF 0157FF 0000FF 0155FF 0152FF 0151FF 0150FF 0153FF 0157FF 015AFF 015BFF 015DFF 015DFF 015CFF 015AFF 0155FF 0154FF 0151FF 014FFF 014FFF 0151FF 0157FF 0158FF 0155FF 0154FF 0000FF 0000FF 0000FF 0000FF 0000FF 0000FF +1 2 1 \ No newline at end of file diff --git a/tiny-cli/src/jvmMain/resources/sfx/sfx-1.sfx b/tiny-cli/src/jvmMain/resources/sfx/sfx-1.sfx new file mode 100644 index 00000000..3e68f32a --- /dev/null +++ b/tiny-cli/src/jvmMain/resources/sfx/sfx-1.sfx @@ -0,0 +1,3 @@ +tiny-sfx 1 120 255 +0422FF 0423FF 0424FF 0425FF 0428FF 042BFF 0000FF 0432FF 0436FF 0438FF 0000FF 0000FF 0000FF 0000FF 0000FF 0000FF 0000FF 0000FF 0000FF 0000FF 0000FF 0000FF 0000FF 0000FF 0000FF 0000FF 0000FF 0000FF 0000FF 0000FF 0000FF 0000FF +1 \ No newline at end of file diff --git a/tiny-cli/src/jvmMain/resources/sfx/tiny-export.zip b/tiny-cli/src/jvmMain/resources/sfx/tiny-export.zip new file mode 100644 index 0000000000000000000000000000000000000000..f30e1c09f6321187cbbce6473e58056a406d5956 GIT binary patch literal 226708 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

L{Nh(>2*Ezk0 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 %I;zMdnqe!A}tc7;}1!&pjCZAu*S@9zW{P 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 literal 0 HcmV?d00001 diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameEngine.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameEngine.kt index d3b70b87..26681b50 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameEngine.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameEngine.kt @@ -201,6 +201,7 @@ class GameEngine( resource.resourceAccess = this // Game script will be evaluated when the boot script will exit scripts[resource.index] = resource + resource.isValid(customizeLuaGlobal) } ENGINE_GAMESCRIPT -> { diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameOptions.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameOptions.kt index a5f97dbc..678072d9 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameOptions.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameOptions.kt @@ -6,7 +6,7 @@ import com.github.minigdx.tiny.graphic.ColorPalette import com.github.minigdx.tiny.input.MouseProject import com.github.minigdx.tiny.input.Vector2 -class GameOptions( +data class GameOptions( val width: Pixel, val height: Pixel, val palette: List, @@ -19,6 +19,7 @@ class GameOptions( val gutter: Pair = 10 to 10, val spriteSize: Pair = 8 to 8, val hideMouseCursor: Boolean = false, + val runTests: Boolean = false, ) : MouseProject { init { diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/TestLib.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/TestLib.kt new file mode 100644 index 00000000..d788eab1 --- /dev/null +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/TestLib.kt @@ -0,0 +1,135 @@ +package com.github.minigdx.tiny.lua + +import com.github.mingdx.tiny.doc.TinyArg +import com.github.mingdx.tiny.doc.TinyCall +import com.github.mingdx.tiny.doc.TinyFunction +import com.github.mingdx.tiny.doc.TinyLib +import com.github.minigdx.tiny.resources.GameScript +import org.luaj.vm2.LuaTable +import org.luaj.vm2.LuaValue +import org.luaj.vm2.lib.OneArgFunction +import org.luaj.vm2.lib.TwoArgFunction + +class TestResult(val script: String, val test: String, val passed: Boolean, val reason: String) + +@TinyLib( + "test", + "Test method utilities used when tests are run. " + + "See link:#_the_tiny_cli_run_command[Run command]", +) +class TestLib(private val script: GameScript) : TwoArgFunction() { + + private val currentScript = script.name + + private var currentTest: String = "" + + private var firstFailure: String? = null + + open inner class Assertor( + private val default: LuaValue? = null, + private val invert: Boolean = false, + private val message: String = "#1 expected to be equals to #2 but is not!", + ) : TwoArgFunction() { + override fun call(arg1: LuaValue, arg2: LuaValue): LuaValue { + val luaValue = default ?: arg2 + val result = arg1.eq_b(luaValue) + return if (invert && !result) { + BTRUE + } else if (result) { + BTRUE + } else { + if (firstFailure == null) { + val msg = message + .replace("#1", arg1.tojstring()) + .replace("#2", luaValue.tojstring()) + firstFailure = msg + } + BFALSE + } + } + } + + @TinyFunction(name = "eq", description = "Assert that `expected` and `actual` are equals") + inner class isEqual : Assertor() { + + @TinyCall("Assert that `expected` and `actual` are equals") + override fun call(@TinyArg("expected") arg1: LuaValue, @TinyArg("actual") arg2: LuaValue): LuaValue { + return super.call(arg1, arg2) + } + } + + @TinyFunction(name = "neq", description = "Assert that `expected` and `actual` are __not__ equals") + inner class isNotEquals : Assertor(invert = true) { + @TinyCall("Assert that `expected` and `actual` are not equals") + override fun call(@TinyArg("expected") arg1: LuaValue, @TinyArg("actual") arg2: LuaValue): LuaValue { + return super.call(arg1, arg2) + } + } + + @TinyFunction(name = "t", description = "Assert that `actual` is true") + inner class isTrue : Assertor(default = BTRUE) { + @TinyCall("Assert that `actual` is true") + override fun call(@TinyArg("actual") arg: LuaValue): LuaValue { + return super.call(arg) + } + } + + @TinyFunction(name = "t", description = "Assert that `actual` is false") + inner class isFalse : Assertor(default = BFALSE) { + + @TinyCall("Assert that `actual` is false") + override fun call(@TinyArg("actual") arg: LuaValue): LuaValue { + return super.call(arg) + } + } + override fun call(arg1: LuaValue, arg2: LuaValue): LuaValue { + val test = LuaTable() + test["create"] = create() + test["eq"] = isEqual() + test["neq"] = isNotEquals() + test["t"] = isTrue() + test["f"] = isFalse() + // test["advance"] = ... + test["record"] = record() + test["screen"] = screen() + + arg2.set("test", test) + arg2.get("package").get("loaded").set("test", test) + return test + } + + @TinyFunction("Create a new `test` named `name`") + inner class create : TwoArgFunction() { + @TinyCall("Create a new `test` named `name`") + override fun call( + @TinyArg("name", description = "The name of the test") arg1: LuaValue, + @TinyArg("test", description = "The test: it has to be a function") arg2: LuaValue, + ): LuaValue { + currentTest = arg1.tojstring() + + firstFailure = null + arg2.call() + firstFailure + if (firstFailure == null) { + script.testResults.add(TestResult(currentScript, currentTest, true, "")) + } else { + script.testResults.add(TestResult(currentScript, currentTest, false, firstFailure!!)) + } + + return NIL + } + } + + inner class record : OneArgFunction() { + override fun call(arg: LuaValue): LuaValue { + // TODO: get the test current name + TODO("Not yet implemented") + } + } + + inner class screen : OneArgFunction() { + override fun call(arg: LuaValue): LuaValue { + TODO("Not yet implemented") + } + } +} diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/resources/GameScript.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/resources/GameScript.kt index f0748b0c..d94181ad 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/resources/GameScript.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/resources/GameScript.kt @@ -4,6 +4,7 @@ import com.github.minigdx.tiny.engine.Exit import com.github.minigdx.tiny.engine.GameOptions import com.github.minigdx.tiny.engine.GameResourceAccess import com.github.minigdx.tiny.input.InputHandler +import com.github.minigdx.tiny.log.Logger import com.github.minigdx.tiny.lua.CtrlLib import com.github.minigdx.tiny.lua.DebugLib import com.github.minigdx.tiny.lua.GfxLib @@ -16,6 +17,8 @@ import com.github.minigdx.tiny.lua.SfxLib import com.github.minigdx.tiny.lua.ShapeLib import com.github.minigdx.tiny.lua.SprLib import com.github.minigdx.tiny.lua.StdLib +import com.github.minigdx.tiny.lua.TestLib +import com.github.minigdx.tiny.lua.TestResult import com.github.minigdx.tiny.lua.TinyBaseLib import com.github.minigdx.tiny.lua.TinyLib import com.github.minigdx.tiny.lua.Vec2Lib @@ -46,6 +49,7 @@ class GameScript( val gameOptions: GameOptions, val inputHandler: InputHandler, val platform: Platform, + val logger: Logger, override val type: ResourceType, ) : GameResource { @@ -68,6 +72,8 @@ class GameScript( private val tinyLib: TinyLib = TinyLib() + internal val testResults = mutableListOf() + class State(val args: LuaValue) private fun createLuaGlobals(customizeLuaGlobal: GameResourceAccess.(Globals) -> Unit, forValidation: Boolean = false): Globals = Globals().apply { @@ -94,6 +100,7 @@ class GameScript( load(JuiceLib()) load(NotesLib()) load(WorkspaceLib(platform = platform)) + load(TestLib(this@GameScript)) this@GameScript.resourceAccess.customizeLuaGlobal(this) @@ -105,6 +112,30 @@ class GameScript( with(createLuaGlobals(customizeLuaGlobal, forValidation = true)) { load(content.decodeToString()).call() get("_init").nullIfNil()?.callSuspend(valueOf(gameOptions.width), valueOf(gameOptions.height)) + if (gameOptions.runTests) { + gameOptions.gameScripts.map { name -> + // use the new content for the game script evaluated + if (name == this@GameScript.name) { + content.decodeToString() + } else { + // use the cached content for the script not updated. + resourceAccess.script(name)?.content!!.decodeToString() + } + }.forEach { scriptContent -> + val globalForTest = createLuaGlobals(customizeLuaGlobal, forValidation = true) + println(scriptContent) + globalForTest.load(scriptContent).call() + globalForTest.get("_test").callSuspend() + } + logger.info("TEST") { "⚙\uFE0F === Ran ${testResults.size} tests ===" } + testResults.forEach { + if (it.passed) { + logger.info("TEST") { "✅ ${it.script} - ${it.test}" } + } else { + logger.info("TEST") { "\uD83D\uDD34 ${it.script} - ${it.test}: ${it.reason}" } + } + } + } } return true } diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/resources/ResourceFactory.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/resources/ResourceFactory.kt index f30425bf..66ee67ac 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/resources/ResourceFactory.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/resources/ResourceFactory.kt @@ -167,7 +167,7 @@ class ResourceFactory( canUseJarPrefix = !protectedResources.contains(resourceType), ), ).map { content -> - GameScript(version++, index, name, gameOptions, inputHandler, platform, resourceType).apply { + GameScript(version++, index, name, gameOptions, inputHandler, platform, logger, resourceType).apply { this.content = content } }.onEach { From 16804d475b97e12cba249ab676465a2d5dbd0c67 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Fri, 23 Feb 2024 23:31:51 +0100 Subject: [PATCH 02/46] Refactor the SFX editor. Remove the possibility to put 2 notes on the same beat --- tiny-cli/src/jvmMain/resources/sfx/game.lua | 414 +++++++++--------- .../src/jvmMain/resources/sfx/widgets.lua | 18 +- .../github/minigdx/tiny/engine/GameEngine.kt | 1 - .../com/github/minigdx/tiny/lua/DebugLib.kt | 2 + .../com/github/minigdx/tiny/lua/SfxLib.kt | 50 ++- .../com/github/minigdx/tiny/sound/Song.kt | 24 +- .../github/minigdx/tiny/sound/SoundManager.kt | 60 +-- .../minigdx/tiny/sound/WaveGenerator.kt | 2 +- .../com/github/minigdx/tiny/lua/SfxLibTest.kt | 66 ++- .../tiny/platform/test/HeadlessPlatform.kt | 2 +- .../minigdx/tiny/sound/SoundConverterTest.kt | 41 +- .../platform/webgl/PicoAudioSoundMananger.kt | 8 +- .../platform/glfw/JavaMidiSoundManager.kt | 8 +- 13 files changed, 351 insertions(+), 345 deletions(-) diff --git a/tiny-cli/src/jvmMain/resources/sfx/game.lua b/tiny-cli/src/jvmMain/resources/sfx/game.lua index 7d3451a1..4a75e8c9 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/game.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/game.lua @@ -92,77 +92,12 @@ function on_active_button(current, prec) current_wave = current.data.wave end -function active_pattern(index, data) - local beats = data["patterns"][index] - if beats == nil then - beats = {} - data["patterns"][index] = beats - end - - for k, f in ipairs(faders) do - widgets.resetFaderValue(f) - if beats[k] ~= nil then - for b in all(beats[k]) do - if b.index > 0 then - local w = waves[b.index] - widgets.setFaderValue(f, b.index, b.note, w.color) - else - -- set silence value - widgets.resetFaderValue(f) - end - end - else - -- set silence value - widgets.resetFaderValue(f) - end - end -end - -function on_active_tab(current, prec) - fader_mode = false - on_switch_mode() - - if prec ~= nil then - local score = generate_score() - prec.content = sfx.to_table(score) - debug.console(generate_score()) - end - - -- restore the previous score of the current tab - if current.content ~= nil then - - local data = current.content - bpm.value = data["bpm"] - volume.value = (data["volume"] / 255) * 10 - -- always get the first pattern - active_pattern(1, data) - - debug.console(generate_score()) - else - bpm.value = 120 - patterns.value = 1 - volume.value = 10 - -- no data, reset to 0 - for k, f in pairs(faders) do - widgets.resetFaderValue(f) - end - active_tab = {} - current.content = sfx.to_table(generate_score()) - end - - active_tab = current -end local window = { width = 0, height = 0 } -function on_new_tab(tab) - local filename = ws.create("sfx", "sfx") - tab.label = filename -end - function on_play_button() local score = nil if fader_mode then @@ -212,36 +147,195 @@ function on_increase_volume(counter) counter.value = math.min(counter.value + 1, 10) end -function on_switch_mode() - fader_mode = not fader_mode - if fader_mode then - switch_mode.overlay = 24 - for w in all(fader_widgets) do - w.enabled = true - end - for w in all(music_widgets) do - w.enabled = false + +function init_faders(tabs) + local index = 1 + + local notes = {} + for k, v in pairs(labels) do + notes[v] = k + end + + local colors = {} + for v in all(waves) do + colors[v.type] = v.color + end + + on_active_tab(tabs[1]) +end + +function to_hex(number) + local hexString = string.format("%X", number) + + -- Add a leading zero if the number is below 16 + if number < 16 then + hexString = "0" .. hexString + end + + return hexString +end + +local editor = { + mode = 0, -- 0 -> sound editor ; 1 -> pattern editor ; 2 -> music editor + play_button = nil, + save_button = nil, + switch_button = nil, + pattern_counter = nil, + bpm_counter = nil, + volume_counter = nil, + active_tab = nil, -- current active (displayed) tab. + sound_editor_widgets = {}, -- all widgets used only in the sound editor mode + patterns_editor_widgets = {}, -- all widgets used only in the patterns editor mode + fader_widgets = {}, -- all faders (used only in the sound editor mode) + wave_widgets = {}, -- all waves button (used only in the sound editor mode) + tabs_widgets = {} -- all the tabs +} + +--[[ + enable widgets regarding the mode selected. +]] +editor.switch_to_mode = function(mode) + editor.mode = mode + + local enabled_sound_widgets = mode == 0 + local enabled_patterns_widgets = mode == 1 + + for w in all(editor.sound_editor_widgets) do + w.enabled = enabled_sound_widgets + end + + for w in all(editor.patterns_editor_widgets) do + w.enabled = enabled_patterns_widgets + end +end + +editor.activate_pattern = function(index, data) + local beats = data["patterns"][index] + + for k, f in ipairs(editor.fader_widgets) do + local beat = beats[k] + if beats[k] ~= nil then + -- set fader value + else + -- set fader value to 0 end - else - switch_mode.overlay = 25 - for w in all(fader_widgets) do - w.enabled = false + end +end + +editor.generate_score = function(content, pattern_selector) + local p = content["patterns"] + local v = math.floor((editor.volume_counter.value * 25.5)) + local bpm = editor.bpm_counter.value + + local score = "tiny-sfx " .. #p .. " " .. bpm .. " " .. v .. "\n" + + -- write patterns + for patterns in all(content["patterns"]) do + local strip = "" + for index = 1, 32 do + local beatStr = "" + local beat = patterns[index] + if beat == nil then + beatStr = beatStr .. "0000FF" + else + beatStr = beatStr .. to_hex(beat.index) .. to_hex(beat.note) .. to_hex(beat.volume) + end + strip = strip .. beatStr .. " " end + -- + score = score .. strip .. "\n" + end + + -- write patterns order + if pattern_selector == nil then + pattern_selector = "" + local stop = false for w in all(music_widgets) do - w.enabled = true + if w.value == 0 then + stop = true + end + if (not stop) then + pattern_selector = pattern_selector .. w.value .. " " + end end end + score = score .. pattern_selector + return score end -function _init(w, h) +--[[ + Callback when a new tab is created. +]] +editor.on_new_tab = function(tab) + -- create a new file and assign the name to the new tab. + local filename = ws.create("sfx", "sfx") + tab.label = filename + tab.content = sfx.to_table(sfx.empty_score()) + table.insert(editor.tabs_widgets, tab) +end - widgets.on_new_tab = on_new_tab - window.width = w - window.height = h +--[[ + Callback when a new tab is active. +]] +editor.on_active_tab = function(current, prev) + editor.switch_to_mode(0) + + if prev ~= nil then + -- update the model of the previous tab before switching. + local score = editor.generate_score(prev.content) + prev.content = sfx.to_table(score) + end + + local data = current.content + + editor.bpm_counter.value = data["bpm"] + editor.volume_counter.value = math.floor((data["volume"] / 255) * 10) + -- always get the first pattern + editor.activate_pattern(1, data) + -- set faders value regarding the first patterns + editor.active_tab = current + + -- TODO: configure widgets regarding the current tab. +--[[ + + if prev ~= nil then + local score = generate_score() + prev.content = sfx.to_table(score) + debug.console(generate_score()) + end + + -- restore the previous score of the current tab + if current.content ~= nil then + + local data = current.content + bpm.value = data["bpm"] + volume.value = (data["volume"] / 255) * 10 + -- always get the first pattern + active_pattern(1, data) + + debug.console(generate_score()) + else + bpm.value = 120 + patterns.value = 1 + volume.value = 10 + -- no data, reset to 0 + for k, f in pairs(faders) do + widgets.resetFaderValue(f) + end + active_tab = {} + current.content = sfx.to_table(generate_score()) + end + + active_tab = current + ]] +end + +editor.create_widgets = function() + -- buttons - widgets.createButton({ + editor.play_button = widgets.createButton({ x = 10, y = 16, overlay = 22, @@ -249,7 +343,7 @@ function _init(w, h) on_active_button = on_play_button }) - widgets.createButton({ + editor.save_button = widgets.createButton({ x = 10, y = 16 + 2 + 16, overlay = 23, @@ -260,7 +354,7 @@ function _init(w, h) on_active_button = on_save_button }) - switch_mode = widgets.createButton({ + editor.switch_button = widgets.createButton({ x = 10, y = 16 + 2 + 16 + 2 + 16, overlay = 24, @@ -268,7 +362,7 @@ function _init(w, h) on_active_button = on_switch_mode }) - patterns = widgets.createCounter({ + editor.pattern_counter = widgets.createCounter({ x = 10, y = 90, value = 1, @@ -277,9 +371,9 @@ function _init(w, h) on_right = on_next_patterns }) - table.insert(fader_widgets, patterns) + table.insert(editor.sound_editor_widgets, editor.pattern_counter) - bpm = widgets.createCounter({ + editor.bpm_counter = widgets.createCounter({ x = 10, y = 90 + 24, value = 120, @@ -288,9 +382,9 @@ function _init(w, h) on_right = on_increase_bpm }) - table.insert(fader_widgets, bpm) + table.insert(editor.sound_editor_widgets, editor.bpm_counter) - volume = widgets.createCounter({ + editor.volume_counter = widgets.createCounter({ x = 10, y = 90 + 24 + 24, value = 10, @@ -299,11 +393,11 @@ function _init(w, h) on_right = on_increase_volume }) - table.insert(fader_widgets, bpm) + table.insert(editor.sound_editor_widgets, editor.volume_counter) -- faders for i = 1, 32 do - local f = widgets.createFader({ + local fader = widgets.createFader({ x = 10 + 16 + i * 12, y = 16 + 16 + 2, height = 256 - 18, @@ -315,8 +409,8 @@ function _init(w, h) }, on_value_update = on_fader_update }) - table.insert(faders, f) - table.insert(fader_widgets, f) + table.insert(editor.fader_widgets, fader) + table.insert(editor.sound_editor_widgets, fader) end -- buttons @@ -331,8 +425,10 @@ function _init(w, h) on_active_button = on_active_button }) - table.insert(fader_widgets, w) + table.insert(editor.sound_editor_widgets, w) + table.insert(editor.wave_widgets, w) + -- activate the first button if i == 0 then w.status = 2 end @@ -352,17 +448,17 @@ function _init(w, h) on_right = on_increase_pattern }) + editor.patterns_editor_widgets[x + (y - 1) * 8] = w + if x == 1 and y == 1 then w.value = 1 end - music_widgets[x + (y - 1) * 8] = w end end - -- tabs + -- tabs local files = ws.list() - local tabs = {} local new_tab_x = 0 if #files > 0 then for w in all(files) do @@ -372,9 +468,10 @@ function _init(w, h) status = 0, label = w, content = sfx.to_table(ws.load(w)), - on_active_tab = on_active_tab + on_active_tab = editor.on_active_tab, + on_new_tab = editor.on_new_tab }) - table.insert(tabs, tab) + table.insert(editor.tabs_widgets, tab) new_tab_x = new_tab_x + tab.width end else @@ -384,119 +481,34 @@ function _init(w, h) width = 2 * 16 + 8, status = 0, label = file, - on_active_tab = on_active_tab + content = sfx.to_table(sfx.empty_score()), + on_active_tab = editor.on_active_tab, + on_new_tab = editor.on_new_tab }) - table.insert(tabs, tab) + table.insert(editor.tabs_widgets, tab) new_tab_x = new_tab_x + tab.width end - tabs[1].status = 1 - active_tab = tabs[1] + -- activate the first tab + editor.tabs_widgets[1].status = 1 + editor.active_tab = editor.tabs_widgets[1] - widgets.createTab({ + local w = widgets.createTab({ x = new_tab_x, width = 24, status = 0, - on_active_tab = on_active_tab, + on_active_tab = editor.on_active_tab, + on_new_tab = editor.on_new_tab, new_tab = true }) - -- - init_faders(tabs) -end - -function init_faders(tabs) - local index = 1 - - local notes = {} - for k, v in pairs(labels) do - notes[v] = k - end - - local colors = {} - for v in all(waves) do - colors[v.type] = v.color - end - - on_active_tab(tabs[1]) -end - -function to_hex(number) - local hexString = string.format("%X", number) - - -- Add a leading zero if the number is below 16 - if number < 16 then - hexString = "0" .. hexString - end - - return hexString end -function generate_score(played_pattern) - - -- new file. So there is not content yet. - if active_tab.content == nil then - local new_pattern = {} - - for index = 1, 32 do - local beat = {} - beat[1] = { - type = 0, - index = 0, - note = 1 - } - - new_pattern[index] = beat - end - - active_tab.content = {} - active_tab.content.patterns = {} - active_tab.content.patterns[1] = new_pattern - end - local p = active_tab.content["patterns"] - local v = math.floor((volume.value * 25.5)) - - local score = "tiny-sfx " .. #p .. " " .. bpm.value .. " " .. v .. "\n" - - -- write patterns - for patterns in all(active_tab.content["patterns"]) do - local strip = "" - for index = 1, 32 do - local beatStr = "" - local beat = patterns[index] - if beat == nil then - beatStr = beatStr .. "0000FF" - else - for note in all(beat) do - if note.note == 0 then - beatStr = beatStr .. "0000FF:" - else - beatStr = beatStr .. to_hex(note.index) .. to_hex(note.note) .. to_hex(255) .. ":" - end - end - beatStr = beatStr:sub(1, -2) - end - strip = strip .. beatStr .. " " - end - -- - score = score .. strip .. "\n" - end - - -- write patterns order - if played_pattern == nil then - played_pattern = "" - local stop = false - for w in all(music_widgets) do - if w.value == 0 then - stop = true - end - if (not stop) then - played_pattern = played_pattern .. w.value .. " " - end - end - end - score = score .. played_pattern +function _init(w, h) + window.width = w + window.height = h - return score + -- + editor.create_widgets() end function _update() diff --git a/tiny-cli/src/jvmMain/resources/sfx/widgets.lua b/tiny-cli/src/jvmMain/resources/sfx/widgets.lua index 14a393bf..26d44aba 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/widgets.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/widgets.lua @@ -45,7 +45,9 @@ local Tab = { label = "+", content = nil, status = 0, -- 0 : inactive ; 1 : active - new_tab = false + new_tab = false, + on_active_tab = nil, + on_new_tab = nil, } local Counter = { @@ -215,6 +217,7 @@ factory.on_clicked = function(x, y) end if new_active ~= nil then + -- create a new tab. if new_active.new_tab then new_active.width = 2 * 16 + 8 new_active.label = "" @@ -225,16 +228,18 @@ factory.on_clicked = function(x, y) width = 24, new_tab = true, x = new_active.x + new_active.width, - on_active_tab = new_active.on_active_tab + on_active_tab = new_active.on_active_tab, + on_new_tab = new_active.on_new_tab, }) - end - factory.on_new_tab(new_active) + new_active.on_new_tab(new_active) end current_active.status = 0 new_active.status = 1 - new_active.on_active_tab(new_active, current_active) + if new_active.on_active_tab ~= nil then + new_active.on_active_tab(new_active, current_active) + end end for c in all(counters) do @@ -265,6 +270,9 @@ function draw_tabs() end function draw_tab(tab) + if tab == nil then + return + end local offset = tab.status * 8 -- body diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameEngine.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameEngine.kt index 26681b50..d3b70b87 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameEngine.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameEngine.kt @@ -201,7 +201,6 @@ class GameEngine( resource.resourceAccess = this // Game script will be evaluated when the boot script will exit scripts[resource.index] = resource - resource.isValid(customizeLuaGlobal) } ENGINE_GAMESCRIPT -> { diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/DebugLib.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/DebugLib.kt index bc5c0381..80aea156 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/DebugLib.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/DebugLib.kt @@ -228,6 +228,8 @@ class DebugLib(private val resourceAccess: GameResourceAccess) : TwoArgFunction( .joinToString(" ") "table[$str]" } + } else if (arg.isfunction()) { + "function(" + (0 until arg.narg()).map { "arg" }.joinToString(", ") + ")" } else { arg.toString() } diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt index 76d351d8..73646158 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt @@ -8,7 +8,6 @@ import com.github.minigdx.tiny.Percent import com.github.minigdx.tiny.Seconds import com.github.minigdx.tiny.engine.GameResourceAccess import com.github.minigdx.tiny.resources.Sound -import com.github.minigdx.tiny.sound.Beat import com.github.minigdx.tiny.sound.NoiseWave import com.github.minigdx.tiny.sound.Pattern import com.github.minigdx.tiny.sound.PulseWave @@ -24,6 +23,7 @@ import org.luaj.vm2.LuaValue import org.luaj.vm2.lib.OneArgFunction import org.luaj.vm2.lib.ThreeArgFunction import org.luaj.vm2.lib.TwoArgFunction +import org.luaj.vm2.lib.ZeroArgFunction import kotlin.math.floor import kotlin.math.max import kotlin.math.min @@ -62,6 +62,7 @@ class SfxLib( ctrl.set("pulse", pulse()) ctrl.set("sawtooth", sawtooth()) ctrl.set("to_table", toTable()) + ctrl.set("empty_score", emptyScore()) ctrl.set("sfx", sfx()) arg2.set("sfx", ctrl) arg2.get("package").get("loaded").set("sfx", ctrl) @@ -190,16 +191,13 @@ class SfxLib( inner class toTable : OneArgFunction() { - private fun Beat.toLuaTable(): LuaTable { - val beat = LuaTable() - notes.forEach { wave -> - val note = LuaTable() - note.set("type", wave.name) - note.set("index", wave.index) - note.set("note", wave.note.index) - beat.insert(0, note) - } - return beat + private fun WaveGenerator.toLuaTable(): LuaTable { + val note = LuaTable() + note.set("type", this.name) + note.set("index", this.index) + note.set("note", this.note.index) + note.set("volume", (this.volume * 255).toInt()) + return note } override fun call(arg: LuaValue): LuaValue { @@ -208,11 +206,11 @@ class SfxLib( val patterns = LuaTable() song.patterns.forEach { (index, pattern) -> - val beats = LuaTable() - pattern.beats.forEach { beat -> - beats.insert(beat.index, beat.toLuaTable()) + val notes = LuaTable() + pattern.notes.forEach { note -> + notes.insert(0, note.toLuaTable()) } - patterns.insert(index, beats) + patterns.insert(index, notes) } val result = LuaTable() result["bpm"] = valueOf(song.bpm) @@ -222,6 +220,15 @@ class SfxLib( } } + inner class emptyScore : ZeroArgFunction() { + override fun call(): LuaValue { + val pattern = Pattern(1, emptyList()) + val song = Song(120, 0.5f, mapOf(1 to pattern), listOf(pattern)) + return valueOf(song.toString()) + } + + } + inner class sfx : TwoArgFunction() { override fun call(arg1: LuaValue, arg2: LuaValue): LuaValue { @@ -282,7 +289,7 @@ class SfxLib( // Map val patterns = lines.drop(1).take(nbPattern.toInt()).mapIndexed { indexPattern, pattern -> val beatsStr = pattern.trim().split(" ") - val beats = convertToBeats(beatsStr, duration) + val beats = convertToWaves(beatsStr, duration) Pattern(indexPattern + 1, beats) }.associateBy { it.index } @@ -298,16 +305,11 @@ class SfxLib( return Song(bpm.toInt(), volume.toInt() / 255f, patterns, patternsOrdered) } - private fun convertToBeats(beatsStr: List, duration: Seconds): List { + private fun convertToWaves(beatsStr: List, duration: Seconds): List { val beats = beatsStr .asSequence() - .mapIndexed { index, beat -> - val notes = beat.split(":") - .asSequence() - .filter { it.isNotBlank() } - .map { note -> convertToWave(note, duration) } - Beat(index + 1, notes.toList()) - } + .filter { it.isNotBlank() } + .map { beat -> convertToWave(beat, duration) } return beats.toList() } diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Song.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Song.kt index b306b1ac..fab4a1bf 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Song.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Song.kt @@ -3,15 +3,9 @@ package com.github.minigdx.tiny.sound import com.github.minigdx.tiny.Seconds /** - * A beat is the representation of one moment in a music. It can be composed of multiple notes of multiple - * kind of wave. + * A pattern is a part of a song. A song is composed of multiple pattern played in a specific order. */ -data class Beat(val index: Int, val notes: List) - -/** - * A pattern is a part of a song. A song is compose of multiple pattern played in a specific order. - */ -data class Pattern(val index: Int, val beats: List) +data class Pattern(val index: Int, val notes: List) /** * A song is a group of pattern. @@ -21,4 +15,18 @@ data class Song(val bpm: Int, val volume: Float, val patterns: Map val durationOfBeat: Seconds = (60f / bpm / 8f) val numberOfBeats = music.count() * 32 + + override fun toString(): String { + val header = "tiny-sfx ${patterns.size} $bpm ${(volume * 255).toInt()}\n" + val patternsInOrder = patterns.map { it }.sortedBy { it.key }.map { it.value } + val patternsStr = patternsInOrder.joinToString("\n") { pattern -> + pattern.notes.joinToString(" ") { wave -> + wave.index.toString(16) + + wave.note.index.toString(16) + + (wave.volume * 255).toInt().toString(16) + } + }.ifBlank { "\n" } + val patternOrder = music.map { it.index }.joinToString(" ") + return header + patternsStr + patternOrder + } } diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/SoundManager.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/SoundManager.kt index d66bfea6..6055b93b 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/SoundManager.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/SoundManager.kt @@ -27,7 +27,7 @@ abstract class SoundManager { if (notes.isEmpty()) return val result = createNotesBuffer(longestDuration, notes) - playBuffer(result, result.size) + playBuffer(result, result.size.toLong()) } protected fun createNotesBuffer( @@ -48,7 +48,7 @@ abstract class SoundManager { /** * @param buffer byte array representing the sound. Each sample is represented with a float from -1.0f to 1.0f */ - abstract fun playBuffer(buffer: FloatArray, numberOfSamples: Int) + abstract fun playBuffer(buffer: FloatArray, numberOfSamples: Long) private fun mix(sample: Int, notes: List): Float { var result = 0f @@ -81,24 +81,16 @@ abstract class SoundManager { private val converter = SoundConverter() - fun createBufferFromSong(song: Song): Pair { + fun createBufferFromSong(song: Song): SoundBuffer { val numberOfSamplesPerBeat = (song.durationOfBeat * SAMPLE_RATE).toInt() - val (lastBeat, strips) = converter.prepareStrip(song) - val buffers = strips.map { (kind, strip) -> - kind to converter.createStrip(numberOfSamplesPerBeat, strip) - }.toMap() - - val numberOfTotalSamples = numberOfSamplesPerBeat * (song.numberOfBeats + 1) - - val mix = FloatArray(numberOfTotalSamples) - (0 until numberOfTotalSamples).forEach { sample -> - var result = 0f - buffers.forEach { (_, line) -> - result += line[sample] - } - mix[sample] = (result / buffers.size.toFloat()) * song.volume - } - return mix to lastBeat * numberOfSamplesPerBeat + + val result = converter.createStrip( + song.volume, + numberOfSamplesPerBeat, + song.music.flatMap { p -> p.notes }.toTypedArray(), + ) + + return result } companion object { @@ -108,29 +100,11 @@ abstract class SoundManager { } } -class SoundConverter { +data class SoundBuffer(val samples: FloatArray, val numberOfSamples: Long) - internal fun prepareStrip(song: Song): Pair>> { - // Create a line per WaveGenerator kind. - val musicPerType: MutableMap> = mutableMapOf() - // All beats of this music. - val beats = song.music.flatMap { pattern -> pattern.beats } - val silence = SilenceWave(song.durationOfBeat) - var lastBeat = 0 - beats.forEachIndexed { index, beat -> - val validNotes = beat.notes.filterNot { it.isSilence } - validNotes.forEach { - val waves = musicPerType.getOrPut(it.name) { Array(song.numberOfBeats + 1) { silence } } - waves[index] = it - } - if (validNotes.isNotEmpty()) { - lastBeat = index + 1 - } - } - return lastBeat to musicPerType - } +class SoundConverter { - internal fun createStrip(numberOfSamplesPerBeat: Int, waves: Array): FloatArray { + internal fun createStrip(songVolume: Float, numberOfSamplesPerBeat: Int, waves: Array): SoundBuffer { // 1/4 of a beat is used to fade val fader = Fader(0.25f * numberOfSamplesPerBeat / SAMPLE_RATE.toFloat()) @@ -143,7 +117,7 @@ class SoundConverter { val volume = firstBeat.volume val value = firstBeat.generate(cursor.current) val sampled = value * volume - result[cursor.absolute] = sampled + result[cursor.absolute] = sampled * songVolume cursor.advance() } @@ -156,12 +130,12 @@ class SoundConverter { (0 until numberOfSamplesPerBeat).forEach { _ -> val sampled = fader.fadeWith(cursor.previous, a, cursor.current, b) - result[cursor.absolute] = sampled + result[cursor.absolute] = sampled * songVolume cursor.advance() } } - return result + return SoundBuffer(result, cursor.absolute.toLong()) } } diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/WaveGenerator.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/WaveGenerator.kt index 630893a0..a8943de4 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/WaveGenerator.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/WaveGenerator.kt @@ -153,7 +153,7 @@ class SilenceWave(duration: Seconds) : WaveGenerator(Note.C0, duration, 1.0f) { override fun copy(duration: Seconds, volume: Percent): WaveGenerator = SilenceWave(duration) - override val name: String = " " + override val name: String = "silence" override val index: Int = 0 } diff --git a/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/SfxLibTest.kt b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/SfxLibTest.kt index a79847d4..55f9633c 100644 --- a/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/SfxLibTest.kt +++ b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/SfxLibTest.kt @@ -1,31 +1,50 @@ package com.github.minigdx.tiny.lua +import com.github.minigdx.tiny.engine.GameResourceAccess +import com.github.minigdx.tiny.graphic.ColorPalette +import com.github.minigdx.tiny.graphic.FrameBuffer +import com.github.minigdx.tiny.graphic.PixelArray +import com.github.minigdx.tiny.graphic.PixelFormat +import com.github.minigdx.tiny.resources.GameLevel +import com.github.minigdx.tiny.resources.GameScript +import com.github.minigdx.tiny.resources.ResourceType +import com.github.minigdx.tiny.resources.Sound +import com.github.minigdx.tiny.resources.SpriteSheet import com.github.minigdx.tiny.sound.SilenceWave import com.github.minigdx.tiny.sound.SineWave +import com.github.minigdx.tiny.sound.Song +import com.github.minigdx.tiny.sound.WaveGenerator import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertTrue class SfxLibTest { - fun trim(str: String): String { - val lastIndex = str.lastIndexOf(')') - if (lastIndex < 0) return str - return str.substring(0, lastIndex + 2) - } - - @Test - fun trimMusic() { - val str = "*-*-sine(Eb)-*-*-" - - assertEquals("*-*-sine(Eb)-", trim(str)) + private val mockResources = object : GameResourceAccess { + override val bootSpritesheet: SpriteSheet = SpriteSheet( + 0, + 0, + "boot", + ResourceType.BOOT_SPRITESHEET, + PixelArray(1, 1, PixelFormat.INDEX), + 1, + 1, + ) + override val frameBuffer: FrameBuffer = FrameBuffer(10, 10, ColorPalette(emptyList())) + override fun spritesheet(index: Int): SpriteSheet? = null + override fun spritesheet(sheet: SpriteSheet) = Unit + override fun level(index: Int): GameLevel? = null + override fun sound(index: Int): Sound? = null + override fun script(name: String): GameScript? = null + override fun note(wave: WaveGenerator) = Unit + override fun sfx(song: Song) = Unit } @Test fun scoreToSong() { val score = """tiny-sfx 2 120 255 - |0101FF:0202FF 0101FF:0202FF - |0101FF:0202FF 0101FF:0202FF + |0101FF 0101FF + |0101FF 0101FF |1 2 1 """.trimMargin() @@ -38,7 +57,7 @@ class SfxLibTest { // patterns ordered by usage assertEquals(3, song.music.size) - assertEquals(song.patterns[1]!!.beats.size, 2) + assertEquals(song.patterns[1]!!.notes.size, 2) } @Test @@ -55,4 +74,23 @@ class SfxLibTest { assertTrue(wave.isSilence) assertEquals(0.1f, wave.duration) } + + @Test + fun toTable() { + val lib = SfxLib(mockResources, false) + val table = lib.toTable().call(lib.emptyScore().call()) + val r = table["patterns"][1].checktable()!!.keys() + assertTrue(r.isEmpty()) + } + + @Test + fun createEmptyScore() { + val expectedScore = """tiny-sfx 1 120 127 + | + |1 + """.trimMargin() + + val score = SfxLib(mockResources, false).emptyScore().call() + assertEquals(expectedScore, score.tojstring()) + } } diff --git a/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/platform/test/HeadlessPlatform.kt b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/platform/test/HeadlessPlatform.kt index a9fa333e..74be5c96 100644 --- a/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/platform/test/HeadlessPlatform.kt +++ b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/platform/test/HeadlessPlatform.kt @@ -96,7 +96,7 @@ class HeadlessPlatform(override val gameOptions: GameOptions, val resources: Map } } - override fun playBuffer(buffer: FloatArray, numberOfSamples: Int) = Unit + override fun playBuffer(buffer: FloatArray, numberOfSamples: Long) = Unit } } diff --git a/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/sound/SoundConverterTest.kt b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/sound/SoundConverterTest.kt index 6859dbc4..bca3b255 100644 --- a/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/sound/SoundConverterTest.kt +++ b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/sound/SoundConverterTest.kt @@ -9,6 +9,7 @@ class SoundConverterTest { @Test fun createStrip() { val result = SoundConverter().createStrip( + 1f, 5, arrayOf( PulseWave(Note.A4, 0.1f), @@ -17,44 +18,6 @@ class SoundConverterTest { ), ) - assertEquals(15, result.size) - } - - @Test - fun prepareStrip() { - val sine = SineWave(Note.C0, 0.1f) - val pulse = PulseWave(Note.C0, 0.1f) - val pattern = Pattern(1, listOf(Beat(1, listOf(sine, pulse)))) - val song = Song(120, 1f, mapOf(pattern.index to pattern), listOf(pattern, pattern)) - - val (lastBeat, result) = SoundConverter().prepareStrip(song) - - assertEquals(2, lastBeat) - assertEquals(2, result.size) - assertEquals(65, result[sine.name]!!.size) - assertEquals(65, result[pulse.name]!!.size) - } - - @Test - fun prepareStripWithSilence() { - val sine = SineWave(Note.C0, 0.1f) - val silence = SilenceWave(0.1f) - val pulse = PulseWave(Note.C0, 0.1f) - val pattern = Pattern( - 1, - listOf( - Beat(1, listOf(sine)), - Beat(2, listOf(silence)), - Beat(3, listOf(pulse)), - ), - ) - val song = Song(120, 1f, mapOf(pattern.index to pattern), listOf(pattern, pattern)) - - val (lastBeat, result) = SoundConverter().prepareStrip(song) - - assertEquals(6, lastBeat) - assertEquals(2, result.size) - assertEquals(65, result[sine.name]!!.size) - assertEquals(65, result[pulse.name]!!.size) + assertEquals(15, result.samples.size) } } diff --git a/tiny-engine/src/jsMain/kotlin/com/github/minigdx/tiny/platform/webgl/PicoAudioSoundMananger.kt b/tiny-engine/src/jsMain/kotlin/com/github/minigdx/tiny/platform/webgl/PicoAudioSoundMananger.kt index f981727a..bffd35e3 100644 --- a/tiny-engine/src/jsMain/kotlin/com/github/minigdx/tiny/platform/webgl/PicoAudioSoundMananger.kt +++ b/tiny-engine/src/jsMain/kotlin/com/github/minigdx/tiny/platform/webgl/PicoAudioSoundMananger.kt @@ -68,14 +68,14 @@ class PicoAudioSoundMananger : SoundManager() { return PicoAudioSound(audio, smf) } - override fun playBuffer(buffer: FloatArray, numberOfSamples: Int) { + override fun playBuffer(buffer: FloatArray, numberOfSamples: Long) { val result = convertBuffer(buffer, numberOfSamples) playSfxBuffer(result) } - private fun convertBuffer(buffer: FloatArray, length: Int): Float32Array { - val result = Float32Array(length) - (0 until length).forEach { index -> + private fun convertBuffer(buffer: FloatArray, length: Long): Float32Array { + val result = Float32Array(length.toInt()) + (0 until length.toInt()).forEach { index -> val byte = buffer[index] result[index] = byte } diff --git a/tiny-engine/src/jvmMain/kotlin/com/github/minigdx/tiny/platform/glfw/JavaMidiSoundManager.kt b/tiny-engine/src/jvmMain/kotlin/com/github/minigdx/tiny/platform/glfw/JavaMidiSoundManager.kt index 92b661d0..c7bf1853 100644 --- a/tiny-engine/src/jvmMain/kotlin/com/github/minigdx/tiny/platform/glfw/JavaMidiSoundManager.kt +++ b/tiny-engine/src/jvmMain/kotlin/com/github/minigdx/tiny/platform/glfw/JavaMidiSoundManager.kt @@ -130,16 +130,16 @@ class JavaMidiSoundManager : SoundManager() { return SfxSound(buffer) } - override fun playBuffer(buffer: FloatArray, numberOfSamples: Int) { + override fun playBuffer(buffer: FloatArray, numberOfSamples: Long) { bufferQueue.offer(convertBuffer(buffer, numberOfSamples)) } private fun convertBuffer( audioBuffer: FloatArray, - length: Int, + length: Long, ): ByteArray { - val buffer = ByteArray(length * 2) - (0 until length).forEach { i -> + val buffer = ByteArray(length.toInt() * 2) + (0 until length.toInt()).forEach { i -> val sample = audioBuffer[i] val sampleValue: Float = (sample * Short.MAX_VALUE) val clippedValue = sampleValue.coerceIn(Short.MIN_VALUE.toFloat(), Short.MAX_VALUE.toFloat()) From 3f95e4f8ca363551abc030516176f37e103ea476 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Fri, 23 Feb 2024 23:41:19 +0100 Subject: [PATCH 03/46] Set faders value --- tiny-cli/src/jvmMain/resources/sfx/game.lua | 36 +++-------------- .../src/jvmMain/resources/sfx/widgets.lua | 40 ++++--------------- 2 files changed, 12 insertions(+), 64 deletions(-) diff --git a/tiny-cli/src/jvmMain/resources/sfx/game.lua b/tiny-cli/src/jvmMain/resources/sfx/game.lua index 4a75e8c9..ad5f7868 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/game.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/game.lua @@ -56,37 +56,6 @@ local switch_mode = nil local fader_widgets = {} local music_widgets = {} -function on_fader_update(fader, value) - widgets.setFaderValue(fader, current_wave.index, math.ceil(value), current_wave.color) - - local actual_pattern = active_tab.content["patterns"][patterns.value] - - if actual_pattern == nil then - actual_pattern = {} - active_tab.content["patterns"][patterns.value] = actual_pattern - end - local beat = actual_pattern[fader.index] - - if beat == nil then - beat = {} - actual_pattern[fader.index] = beat - - end - - local note = beat[current_wave.index] - if note == nil then - local n = { - note = 0, - index = current_wave.index, - type = 0 - } - beat[current_wave.index] = n - end - - beat[current_wave.index].index = current_wave.index - beat[current_wave.index].note = math.ceil(value) - -end function on_active_button(current, prec) current_wave = current.data.wave @@ -395,6 +364,11 @@ editor.create_widgets = function() table.insert(editor.sound_editor_widgets, editor.volume_counter) + local on_fader_update = function(fader, value) + fader.value = math.ceil(value) + fader.tip_color = current_wave.color + end + -- faders for i = 1, 32 do local fader = widgets.createFader({ diff --git a/tiny-cli/src/jvmMain/resources/sfx/widgets.lua b/tiny-cli/src/jvmMain/resources/sfx/widgets.lua index 26d44aba..17e2bffa 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/widgets.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/widgets.lua @@ -7,7 +7,6 @@ local Fader = { min_value = 0, max_value = 10, value = nil, - values = nil, tip_color = 9, disabled_color = 7, label = "", @@ -18,11 +17,6 @@ local Fader = { end } -local FaderValue = { - value = 0, - color = 0 -} - local Button = { x = 0, y = 0, @@ -47,7 +41,7 @@ local Tab = { status = 0, -- 0 : inactive ; 1 : active new_tab = false, on_active_tab = nil, - on_new_tab = nil, + on_new_tab = nil } local Counter = { @@ -95,25 +89,6 @@ factory.createButton = function(value) return result end -factory.setFaderValue = function(fader, index, value, color) - if fader.values == nil then - fader.values = {} - end - - if value <= 0 then - fader.values[index] = nil - else - fader.values[index] = { - value = value, - color = color - } - end -end - -factory.resetFaderValue = function(fader) - fader.values = {} -end - factory.createFader = function(value) local result = new(Fader, value) table.insert(widgets, result) @@ -229,7 +204,7 @@ factory.on_clicked = function(x, y) new_tab = true, x = new_active.x + new_active.width, on_active_tab = new_active.on_active_tab, - on_new_tab = new_active.on_new_tab, + on_new_tab = new_active.on_new_tab }) end @@ -300,13 +275,12 @@ function draw_tab(tab) end function draw_fader(f) - if f.values ~= nil and next(f.values) then - for v in all(f.values) do - local y = f.height - ((v.value - f.min_value) / (f.max_value - f.min_value) * f.height) - local tipy = f.y + y - shape.rectf(f.x, tipy, f.width, 4, v.color) - end + if f.value ~= nil and f.value > 0 then + local y = f.height - ((f.value - f.min_value) / (f.max_value - f.min_value) * f.height) + local tipy = f.y + y + shape.rectf(f.x, tipy, f.width, 4, f.tip_color) else + -- fader value = 0 local y = f.height - (0 / (f.max_value - f.min_value) * f.height) local tipy = f.y + y shape.rectf(f.x, tipy, f.width, 4, f.disabled_color) From 3d0435016f8dd28cc3b4eb8864c538a8c86dcbd8 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Sat, 24 Feb 2024 00:06:56 +0100 Subject: [PATCH 04/46] Switching from tabs to tabs --- tiny-cli/src/jvmMain/resources/sfx/game.lua | 48 ++++++--------------- 1 file changed, 13 insertions(+), 35 deletions(-) diff --git a/tiny-cli/src/jvmMain/resources/sfx/game.lua b/tiny-cli/src/jvmMain/resources/sfx/game.lua index ad5f7868..d38579d8 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/game.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/game.lua @@ -183,10 +183,14 @@ editor.activate_pattern = function(index, data) for k, f in ipairs(editor.fader_widgets) do local beat = beats[k] - if beats[k] ~= nil then + if beat ~= nil and beat.index > 0 then -- set fader value + f.value = beat.note + f.tip_color = waves[beat.index].color else -- set fader value to 0 + f.value = 0 + f.tip_color = 0 end end end @@ -265,40 +269,6 @@ editor.on_active_tab = function(current, prev) editor.activate_pattern(1, data) -- set faders value regarding the first patterns editor.active_tab = current - - -- TODO: configure widgets regarding the current tab. ---[[ - - if prev ~= nil then - local score = generate_score() - prev.content = sfx.to_table(score) - debug.console(generate_score()) - end - - -- restore the previous score of the current tab - if current.content ~= nil then - - local data = current.content - bpm.value = data["bpm"] - volume.value = (data["volume"] / 255) * 10 - -- always get the first pattern - active_pattern(1, data) - - debug.console(generate_score()) - else - bpm.value = 120 - patterns.value = 1 - volume.value = 10 - -- no data, reset to 0 - for k, f in pairs(faders) do - widgets.resetFaderValue(f) - end - active_tab = {} - current.content = sfx.to_table(generate_score()) - end - - active_tab = current - ]] end editor.create_widgets = function() @@ -367,6 +337,14 @@ editor.create_widgets = function() local on_fader_update = function(fader, value) fader.value = math.ceil(value) fader.tip_color = current_wave.color + local current_pattern = editor.active_tab.content["patterns"][editor.pattern_counter.value] + + current_pattern[fader.index] = { + type = current_wave.type, + volume = 1.0, + index = current_wave.index, + note = fader.value + } end -- faders From d4ff03e15be47edb029a247095904799ace6f382 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Sat, 24 Feb 2024 00:17:06 +0100 Subject: [PATCH 05/46] Fix the BPM / volume button to work again --- tiny-cli/src/jvmMain/resources/sfx/game.lua | 51 +++++++++++---------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/tiny-cli/src/jvmMain/resources/sfx/game.lua b/tiny-cli/src/jvmMain/resources/sfx/game.lua index d38579d8..72cf817e 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/game.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/game.lua @@ -56,12 +56,10 @@ local switch_mode = nil local fader_widgets = {} local music_widgets = {} - function on_active_button(current, prec) current_wave = current.data.wave end - local window = { width = 0, height = 0 @@ -82,14 +80,6 @@ function on_save_button() ws.save(active_tab.label, score) end -function on_decrease_bpm(counter) - counter.value = math.max(10, counter.value - 5) -end - -function on_increase_bpm(counter) - counter.value = math.min(220, counter.value + 5) -end - function on_previous_patterns(counter) counter.value = math.max(counter.value - 1, 1) active_pattern(counter.value, active_tab.content) @@ -108,15 +98,6 @@ function on_increase_pattern(counter) counter.value = math.min(counter.value + 1, #active_tab.content["patterns"]) end -function on_decrease_volume(counter) - counter.value = math.max(counter.value - 1, 1) -end - -function on_increase_volume(counter) - counter.value = math.min(counter.value + 1, 10) -end - - function init_faders(tabs) local index = 1 @@ -163,7 +144,7 @@ local editor = { --[[ enable widgets regarding the mode selected. ]] -editor.switch_to_mode = function(mode) +editor.switch_to_mode = function(mode) editor.mode = mode local enabled_sound_widgets = mode == 0 @@ -176,11 +157,13 @@ editor.switch_to_mode = function(mode) for w in all(editor.patterns_editor_widgets) do w.enabled = enabled_patterns_widgets end + + editor.switch_button.overlay = 24 + mode end editor.activate_pattern = function(index, data) local beats = data["patterns"][index] - + for k, f in ipairs(editor.fader_widgets) do local beat = beats[k] if beat ~= nil and beat.index > 0 then @@ -272,7 +255,7 @@ editor.on_active_tab = function(current, prev) end editor.create_widgets = function() - + -- buttons editor.play_button = widgets.createButton({ x = 10, @@ -298,7 +281,9 @@ editor.create_widgets = function() y = 16 + 2 + 16 + 2 + 16, overlay = 24, grouped = false, - on_active_button = on_switch_mode + on_active_button = function() + editor.switch_to_mode((editor.mode + 1) % 2) + end }) editor.pattern_counter = widgets.createCounter({ @@ -312,6 +297,14 @@ editor.create_widgets = function() table.insert(editor.sound_editor_widgets, editor.pattern_counter) + local on_decrease_bpm = function(counter) + counter.value = math.max(10, counter.value - 5) + end + + local on_increase_bpm = function(counter) + counter.value = math.min(220, counter.value + 5) + end + editor.bpm_counter = widgets.createCounter({ x = 10, y = 90 + 24, @@ -323,6 +316,14 @@ editor.create_widgets = function() table.insert(editor.sound_editor_widgets, editor.bpm_counter) + local on_decrease_volume = function(counter) + counter.value = math.max(counter.value - 1, 1) + end + + local on_increase_volume = function(counter) + counter.value = math.min(counter.value + 1, 10) + end + editor.volume_counter = widgets.createCounter({ x = 10, y = 90 + 24 + 24, @@ -344,7 +345,7 @@ editor.create_widgets = function() volume = 1.0, index = current_wave.index, note = fader.value - } + } end -- faders @@ -479,7 +480,7 @@ function _draw() -- background for tabs shape.rectf(0, 0, window.width, 8, 1) - if fader_mode then + if editor.mode == 0 then -- octave limits local per_octave = math.floor((256 - 18) / 9) -- height / nb octaves for octave = 9, 0, -1 do From a5f650ee521c3b78dcaef98add89009fe7e95415 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Sat, 24 Feb 2024 00:33:53 +0100 Subject: [PATCH 06/46] Fix the pattern selection button --- tiny-cli/src/jvmMain/resources/sfx/game.lua | 49 ++++++++------------- 1 file changed, 19 insertions(+), 30 deletions(-) diff --git a/tiny-cli/src/jvmMain/resources/sfx/game.lua b/tiny-cli/src/jvmMain/resources/sfx/game.lua index 72cf817e..b20ce800 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/game.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/game.lua @@ -56,10 +56,6 @@ local switch_mode = nil local fader_widgets = {} local music_widgets = {} -function on_active_button(current, prec) - current_wave = current.data.wave -end - local window = { width = 0, height = 0 @@ -80,16 +76,6 @@ function on_save_button() ws.save(active_tab.label, score) end -function on_previous_patterns(counter) - counter.value = math.max(counter.value - 1, 1) - active_pattern(counter.value, active_tab.content) -end - -function on_next_patterns(counter) - counter.value = math.min(counter.value + 1, 10) - active_pattern(counter.value, active_tab.content) -end - function on_decrease_pattern(counter) counter.value = math.max(counter.value - 1, 1) end @@ -98,22 +84,6 @@ function on_increase_pattern(counter) counter.value = math.min(counter.value + 1, #active_tab.content["patterns"]) end -function init_faders(tabs) - local index = 1 - - local notes = {} - for k, v in pairs(labels) do - notes[v] = k - end - - local colors = {} - for v in all(waves) do - colors[v.type] = v.color - end - - on_active_tab(tabs[1]) -end - function to_hex(number) local hexString = string.format("%X", number) @@ -164,6 +134,11 @@ end editor.activate_pattern = function(index, data) local beats = data["patterns"][index] + if beats == nil then + beats = {} + data["patterns"][index] = beats + end + for k, f in ipairs(editor.fader_widgets) do local beat = beats[k] if beat ~= nil and beat.index > 0 then @@ -286,6 +261,16 @@ editor.create_widgets = function() end }) + local on_previous_patterns = function(counter) + counter.value = math.max(counter.value - 1, 1) + editor.activate_pattern(counter.value, editor.active_tab.content) + end + + local on_next_patterns = function(counter) + counter.value = math.min(counter.value + 1, 10) + editor.activate_pattern(counter.value, editor.active_tab.content) + end + editor.pattern_counter = widgets.createCounter({ x = 10, y = 90, @@ -367,6 +352,10 @@ editor.create_widgets = function() end -- buttons + local on_active_button = function(current, prec) + current_wave = current.data.wave + end + for i = #waves - 1, 0, -1 do local w = widgets.createButton({ x = 10, From 35dc4e1fe5804476393f4c073b5fda067dbb1bab Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Sat, 24 Feb 2024 08:28:44 +0100 Subject: [PATCH 07/46] Fix the save button --- tiny-cli/src/jvmMain/resources/sfx/game.lua | 25 +++++---------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/tiny-cli/src/jvmMain/resources/sfx/game.lua b/tiny-cli/src/jvmMain/resources/sfx/game.lua index b20ce800..b18922ce 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/game.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/game.lua @@ -41,21 +41,8 @@ local waves = {{ index = 6 }} -local bpm = nil -local patterns = nil -local volume = nil - -local faders = {} local current_wave = waves[1] -local active_tab = nil - -local fader_mode = true -local switch_mode = nil - -local fader_widgets = {} -local music_widgets = {} - local window = { width = 0, height = 0 @@ -71,11 +58,6 @@ function on_play_button() sfx.sfx(score) end -function on_save_button() - local score = generate_score() - ws.save(active_tab.label, score) -end - function on_decrease_pattern(counter) counter.value = math.max(counter.value - 1, 1) end @@ -240,6 +222,11 @@ editor.create_widgets = function() on_active_button = on_play_button }) + local on_save_button = function() + local score = editor.generate_score(editor.active_tab.content) + ws.save(editor.active_tab.label, score) + end + editor.save_button = widgets.createButton({ x = 10, y = 16 + 2 + 16, @@ -265,7 +252,7 @@ editor.create_widgets = function() counter.value = math.max(counter.value - 1, 1) editor.activate_pattern(counter.value, editor.active_tab.content) end - + local on_next_patterns = function(counter) counter.value = math.min(counter.value + 1, 10) editor.activate_pattern(counter.value, editor.active_tab.content) From 6111dacaef37ff46822ea4943389181ca7ead865 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Sat, 24 Feb 2024 08:51:44 +0100 Subject: [PATCH 08/46] Fix play button --- tiny-cli/src/jvmMain/resources/sfx/game.lua | 23 ++++++++++++--------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/tiny-cli/src/jvmMain/resources/sfx/game.lua b/tiny-cli/src/jvmMain/resources/sfx/game.lua index b18922ce..bdab68cd 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/game.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/game.lua @@ -48,15 +48,7 @@ local window = { height = 0 } -function on_play_button() - local score = nil - if fader_mode then - score = generate_score(patterns.value) - else - score = generate_score() - end - sfx.sfx(score) -end + function on_decrease_pattern(counter) counter.value = math.max(counter.value - 1, 1) @@ -214,6 +206,17 @@ end editor.create_widgets = function() -- buttons + + local on_play_button = function() + local score = nil + if editor.mode == 0 then + score = editor.generate_score(editor.active_tab.content, editor.pattern_counter.value) + else + score = editor.generate_score(editor.active_tab.content) + end + sfx.sfx(score) + end + editor.play_button = widgets.createButton({ x = 10, y = 16, @@ -314,7 +317,7 @@ editor.create_widgets = function() current_pattern[fader.index] = { type = current_wave.type, - volume = 1.0, + volume = 255, index = current_wave.index, note = fader.value } From 8078bb14c5533df0038301899c91455b52dea187 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Sat, 24 Feb 2024 08:57:23 +0100 Subject: [PATCH 09/46] Linfix --- .../src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt index 73646158..b5ad3af8 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt @@ -226,7 +226,6 @@ class SfxLib( val song = Song(120, 0.5f, mapOf(1 to pattern), listOf(pattern)) return valueOf(song.toString()) } - } inner class sfx : TwoArgFunction() { From ef5eb7f9ba96e3dccea857b42351e9889c8622aa Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Sat, 24 Feb 2024 09:25:12 +0100 Subject: [PATCH 10/46] Make the patterns order editor working again --- tiny-cli/src/jvmMain/resources/sfx/game.lua | 31 +++++++++++-------- .../com/github/minigdx/tiny/lua/SfxLib.kt | 7 +++++ 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/tiny-cli/src/jvmMain/resources/sfx/game.lua b/tiny-cli/src/jvmMain/resources/sfx/game.lua index bdab68cd..6c8ce33a 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/game.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/game.lua @@ -49,15 +49,6 @@ local window = { } - -function on_decrease_pattern(counter) - counter.value = math.max(counter.value - 1, 1) -end - -function on_increase_pattern(counter) - counter.value = math.min(counter.value + 1, #active_tab.content["patterns"]) -end - function to_hex(number) local hexString = string.format("%X", number) @@ -151,20 +142,24 @@ editor.generate_score = function(content, pattern_selector) score = score .. strip .. "\n" end + local music = "not-set" -- write patterns order if pattern_selector == nil then - pattern_selector = "" local stop = false - for w in all(music_widgets) do + music = "" + for w in all(editor.patterns_editor_widgets) do if w.value == 0 then stop = true end if (not stop) then - pattern_selector = pattern_selector .. w.value .. " " + music = music .. w.value .. " " end end + else + music = pattern_selector end - score = score .. pattern_selector + + score = score .. music return score end @@ -367,6 +362,16 @@ editor.create_widgets = function() end -- music buttons + local on_decrease_pattern = function(counter) + counter.value = math.max(counter.value - 1, 1) + editor.active_tab.content["music"][counter.index] = counter.value + end + + local on_increase_pattern = function(counter) + counter.value = math.min(counter.value + 1, #editor.active_tab.content["patterns"]) + editor.active_tab.content["music"][counter.index] = counter.value + end + for x = 1, 8 do for y = 1, 8 do local w = widgets.createCounter({ diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt index b5ad3af8..eb44eba2 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt @@ -212,10 +212,17 @@ class SfxLib( } patterns.insert(index, notes) } + + val music = LuaTable() + song.music.map { it.index }.forEach { + music.insert(0, valueOf(it)) + } + val result = LuaTable() result["bpm"] = valueOf(song.bpm) result["volume"] = valueOf(floor(song.volume.toDouble() * 255)) result["patterns"] = patterns + result["music"] = music return result } } From 2426b581aafd63054828e97b0bbe6955e22cf1ab Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Sun, 25 Feb 2024 11:38:41 +0100 Subject: [PATCH 11/46] Fix issue when resetting fader to silent --- tiny-cli/src/jvmMain/resources/sfx/game.lua | 23 +++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/tiny-cli/src/jvmMain/resources/sfx/game.lua b/tiny-cli/src/jvmMain/resources/sfx/game.lua index 6c8ce33a..c62a2130 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/game.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/game.lua @@ -116,6 +116,8 @@ editor.activate_pattern = function(index, data) f.tip_color = 0 end end + + -- TODO: set the pattenrs editor values. end editor.generate_score = function(content, pattern_selector) @@ -310,12 +312,21 @@ editor.create_widgets = function() fader.tip_color = current_wave.color local current_pattern = editor.active_tab.content["patterns"][editor.pattern_counter.value] - current_pattern[fader.index] = { - type = current_wave.type, - volume = 255, - index = current_wave.index, - note = fader.value - } + if fader.value == 0 then + current_pattern[fader.index] = { + type = 0, + volume = 255, + index = 0, + note = 0 + } + else + current_pattern[fader.index] = { + type = current_wave.type, + volume = 255, + index = current_wave.index, + note = fader.value + } + end end -- faders From 85644e272c0dd39de16d243d613ca53964971846 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Sun, 25 Feb 2024 11:55:33 +0100 Subject: [PATCH 12/46] Activate the first tab when starting the app --- tiny-cli/src/jvmMain/resources/sfx/game.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tiny-cli/src/jvmMain/resources/sfx/game.lua b/tiny-cli/src/jvmMain/resources/sfx/game.lua index c62a2130..07f91fe2 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/game.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/game.lua @@ -440,6 +440,8 @@ editor.create_widgets = function() -- activate the first tab editor.tabs_widgets[1].status = 1 editor.active_tab = editor.tabs_widgets[1] + -- force the switch to the first tab on startup + editor.on_active_tab(editor.active_tab, nil) local w = widgets.createTab({ x = new_tab_x, From b75fa3e13dc5b766423ae0b399b86170f4d0ab8c Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Sun, 25 Feb 2024 12:01:43 +0100 Subject: [PATCH 13/46] When loading a file, set the music editor with the right value. --- tiny-cli/src/jvmMain/resources/sfx/game.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tiny-cli/src/jvmMain/resources/sfx/game.lua b/tiny-cli/src/jvmMain/resources/sfx/game.lua index 07f91fe2..752a812a 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/game.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/game.lua @@ -117,6 +117,12 @@ editor.activate_pattern = function(index, data) end end + for k, f in ipairs(editor.patterns_editor_widgets) do + local pattern_id = data["music"][k] + if pattern_id ~= nil then + f.value = pattern_id + end + end -- TODO: set the pattenrs editor values. end From 398002238cecb8f3ac004f9858e56c3cfefede13 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Mon, 26 Feb 2024 00:05:19 +0100 Subject: [PATCH 14/46] Create widget envelope --- tiny-cli/sfx.aseprite | Bin 1853 -> 2015 bytes tiny-cli/src/jvmMain/resources/sfx/game.lua | 21 ++- tiny-cli/src/jvmMain/resources/sfx/sfx.png | Bin 1629 -> 1865 bytes .../src/jvmMain/resources/sfx/widgets.lua | 134 ++++++++++++++++++ 4 files changed, 153 insertions(+), 2 deletions(-) diff --git a/tiny-cli/sfx.aseprite b/tiny-cli/sfx.aseprite index f99482732a7607499ef7224ef83d6c3b8b65e8ce..3525e1947c735b4dd82a752d157413c20027194b 100644 GIT binary patch delta 1127 zcmV-t1ep814&M&}-;n`-0$&HQf)4|KP6Pk|1t0w{6=VJbAf$+IFG0e=x3VAJwAYJcuFv?!SKfzVE+(np*0AlVhi+ zfAss`F5bO+7}F-11272f-_vwV_Q29opL`ChbGc0tbD`eBz1xAh(E6RiyLj*5-faNy zOibY&+*==bXJQ)f;NIGB@94drREvan@xH;m^`S1%TBDQ)&+c91GXy+`xGhTFaR=$K zXZ5ZIya8Ic2k_1Zau(1cIZ*O{j(Y>|{(|))uwZon-u+L6b8v5M;9Vb)&cVHPu{e;9 zP5$JcR%deG-u}^ZmWlQa?yXCXWs7&OUp;rnN9x<#KYGp*(VoG*^`UvF*3xmgPxi;! zM)i**+AsJC00000py0!c{jPzV>KxguC%?t{%PB3 z^IXc~FZ-~$-hVw(kF~%3yi3h>;vY}D--CDlB)oAvgLkvk5)Q%QUBy8fE1tN?&W&&{ zIal&d+AcZPRZh{abL|lzV86qK zEF;mZL2GMDOMT^^{@xtOom0#i{meRbj&5&_!Q;~tw~}L;btXMd%3GRyOMXwcnsXWL z+Vh@Cy-U<;F17lJ*SWj?BfK*@N8OXQm&TA{bd-16d`DkPbrFqs(zUPZp1Rf|-Ous; zfmobt?bFchopQc^EZ^TE^{>UJwI=9UXG-Uk#%QfGr94O1oU6H~Mp?H!3tiqB<}byQ z#yQRXQEzN|)|nb=V@UUPQm(vd_rN{wXX%c=S-t-keblqAs9HU}{?dC{<#`?eRuI4<#C&lx>`0C*_X@mqC% zZ@wEne)RlS0pKCJE`quWI4eij`H$WYz=|O50k|$$=K*kidh3nR*AKvo(3(8;ORU*n tzS9wPd;t2O4$)`ZqIZ|?f`)eh^nrCI0M`d~6#!zua|8gc%OC$BNAo@TS&;w$ delta 964 zcmV;#13UcR54{cnJ&^%_0=)*Yf)4|KtOEc51t09py32!l!=IGT&am zH={{n`P;i%z5Vicc9&&Yp1gP)EN!`CG~OB0W1rQ$pFH>wU;A(0e}wSom#W2om^61r z;=P~$a_8Nrr#@{bV*r!reLs!+Bo8z##-wv-ol9*ebI#Q}+`Ald7uH@=yz}=C_bvmx zQ?U#0aPRowor>LfhkM7S^e(^FlWLK8=kFWt9iQBVyw)h?!Lxhkc@Kg65SK;GyVAjY z-?Mtx0&k#~(gVD+LC%6+BnN7L-j&|q-94-qL4(!-ynBp?bGUbG@NNuG=Wy@1XdH<9 zMt{;zturZhG~Rp665hVy-f>BDS>xUNcdyO!BgT%#dyiSf+cVrdK6xH$wYXo3N&aZt ztawkn{lZTG004jvuHJ;(1{cTY57(yGHO7@~_G3FW$+yzG+V%?JW(j$JvpkgNU&FN5 zHvE3peXQ{DOOTrB#6MpSKL_jhNm#wXyN%I!*KjbOE0%eaoSWfZbgt%|v|Vy+$h$%J zEaO-6B5qIhu+~0h%VYLbPum+|c@<()2kyYT(zOxyl2@W%H5a$=ZooaOcT!$T-o)Q) z?zD0nzSYTnYq=-(wY)2T`!?{d=9tC3+^f>D*1B^u?-cHp>vZj!y_VNGm$CmD`jxmYMXdL0fA|O?~A-yfp`w&UK7g{+adMxqSQDF-pIG%4@aN$GymovCh=d zyY~FYPQ8n?YA&t%iPgE=_!-_Qoy*;mw%3j!`8CTs@|_-4twp+?EBhVMIJef;4+K z4dDMnZUX=SfW+v3XD+?t0gguc?77$XtBl5bj~{@AICp1!pO{y?_xJ%=@b(7p;EZ^C zgLiO7yuHCYI3wQP;2oS1?|LNlOgJmn`)hmY2RItFe6yC1_R{Y?egGEo>#K5}m)Bpd zeyM5Vt;hEsKL879UgvYZRrkoZm0q;|UW;Elf9-GY@dL0kFe@KPxoL}hSDw>*`~WP} m>iBDQervv)eSGin1F+y-7on~KXJzX;|JMBgN8>Lr#lz&MZU<)o diff --git a/tiny-cli/src/jvmMain/resources/sfx/game.lua b/tiny-cli/src/jvmMain/resources/sfx/game.lua index 752a812a..b6299391 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/game.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/game.lua @@ -71,6 +71,7 @@ local editor = { active_tab = nil, -- current active (displayed) tab. sound_editor_widgets = {}, -- all widgets used only in the sound editor mode patterns_editor_widgets = {}, -- all widgets used only in the patterns editor mode + patterns_fx_widgets = {}, -- all wdgets used for the fx editor fader_widgets = {}, -- all faders (used only in the sound editor mode) wave_widgets = {}, -- all waves button (used only in the sound editor mode) tabs_widgets = {} -- all the tabs @@ -84,6 +85,8 @@ editor.switch_to_mode = function(mode) local enabled_sound_widgets = mode == 0 local enabled_patterns_widgets = mode == 1 + local enabled_music_widgets = mode == 2 + local enabled_fx_widgets = mode == 3 for w in all(editor.sound_editor_widgets) do w.enabled = enabled_sound_widgets @@ -93,6 +96,10 @@ editor.switch_to_mode = function(mode) w.enabled = enabled_patterns_widgets end + for w in all(editor.patterns_fx_widgets) do + w.enabled = enabled_fx_widgets + end + editor.switch_button.overlay = 24 + mode end @@ -250,7 +257,7 @@ editor.create_widgets = function() overlay = 24, grouped = false, on_active_button = function() - editor.switch_to_mode((editor.mode + 1) % 2) + editor.switch_to_mode((editor.mode + 1) % 4) end }) @@ -410,6 +417,16 @@ editor.create_widgets = function() end end + -- fx + local on_envelop_update = function(env, attack, decay, sustain, release) + end + local env = widgets.createEnvelop({ + x = 60, + y = 30, + on_update = on_envelop_update + }) + table.insert(editor.patterns_fx_widgets, env) + -- tabs local files = ws.list() @@ -472,7 +489,7 @@ function _update() widgets._update() if ctrl.pressed(keys.space) then - on_play_button() + editor.play_button.on_active_button() end local new_wave = current_wave diff --git a/tiny-cli/src/jvmMain/resources/sfx/sfx.png b/tiny-cli/src/jvmMain/resources/sfx/sfx.png index 5e04219d55d4c6680009e4e6eb788d463257ccfc..afaf9056bac0d77a313f82b699a3b03e87a1a192 100644 GIT binary patch delta 1645 zcmV-z29o*R49O0VFn@9RT2W%#pt!owIis&KR@7MG8X>lp_6M z#1;w&BMd48Y7d1Jl897@h_r$$1m+M2xk8xZ`V=~lAf>PgAp&uV3m0zO8pEVmzw6n( z`QE*o+1=-XV@Esl&dl!4@ArOFz%*k5t06luzPS^6J2tTP2_Q}Ze)+48Ph>{j z+M-Vv6ZsDJ_qslXLTjG@$^z&znrs4iHDqT1mWeTd0+-ca>tnx=W|{>5yO&RT^_fcm zIWGGH>eB_mV$6G=%w>@PW^@&dk^o(h05ZA`!mf|c#edt}x!tQl!Hp2c_vN>_mp{8a zPx(IROYjX$0WO`x{k^ccb2}{KAYgLi+GpuMziu}f@WyStBXCfVhAj#G9##uhgX_~>ey z8~8CP#K#Khvyf*0+MLSA&(nqV>(lQ)s=crD&;LmC{#qUQ+fV0y4Q=1QA`kC8P0IqU zuiB1Lt%Gj?Zj*gR9CN39k`{wKAq`B+xiP#2UY5H=vEY8ozB4=uPlP4U)iY_o+>H z>do27BpCD77X@)FH@h6dI4G;c{TA)NP5@_*lifBhYavXVbOB=U$A8BpkbN$1yAVQU zlfH0l;OFPdF3z%bv8zzl+;7?)XcPQRn}7Ln``PY7shZt^gs_WqBIJt2x zG^&Arxi2K77j=(E-2i@bb`rL?cBjrgwn8rAyq47@0h|l!CMp8Fs!Y+vS@)u?3hull zke3wN*8GhExow$e?^kYe@5Av;P4^#!@Yj3KC(qx1FbelR90&7*|JJ{8=-}u$X@ApX z9@oOhQ_nRC+^pFE&f9lU`Rt5>;Lle&3ozRi$gTaCM7BGy$l$*e&)%<`T8+UU-G4Be zdMw&5>mvKdb-Dl{OgH~yHzEdg-2jgL{_N}7-r6-AkfU-IAe#hg2Y!F*{Zwn0b+^l^8oi&DSKC(w?(F{aj#sxCKO6i9N5@H=w$u`s zCKFz;q5;CnF@P2=r8*aOSpYSy>5H_zYj9rK^DlZWi+YVf0W~ZDK%XTcw159njQC{~ zU6%*i*%%B*Y4&G~>NHeA0ozPY5!@{$0ww-Lhld&`@CN$2eMo_ARuXvf!r!y1zS zV2w!tu*M_+SYy5TWuR5~Wg%EbrStGr^YndL541EGj?x#WuhR5~@237m0vo|3EX71W*;+*>!nA8UwTJCz8v`*ExRNwf9@f`F?neUvmegQ4O4A>{ zOXFj#+2eEBb#H|o^6TMt+sQ}+Q> r&EuPght*;l5R-ug#2NqqfL{4Op>8D@`HFq(00000NkvXXu0mjf=I=`- delta 1401 zcmV-<1%~>`4&4lpFnL!C$}M%$8BUXK6H^^nbSTfqVuWQ5&Q2BwfFH zAx<8DwN=60dk^ExxkwQaiVqz~b`Ca8>r{MnuHPE3S33Tm7!6GDpfsh2~g9I=j zlE8WyjVCGJpMS;2L$cBL8{i;g0_&kTFuu7JgB=?<@(CcH0{r2{p5MrfrnSY84kpT7 zzj~qXw@~TGCxE&DI*cZp0A3Hp8Guz{44}ec_1A{jFQlC|!T;#al|k)u382Jb@1P+a z5G=={=gAxv31CKF!6*sP2MM5{?;z}Z`#gV}TjvKgD1W#SF+DH8%enl;$BUF7f}sT8 z$Q0npxqkIRY;K*8RU8D&&Ypfh{rp?E$$5FeaX}w>+`t#M-!}GDcQ-Qz!AjRiDW&25>?D+c;%Oc{)e<3smteAB@bo+ zygvH*F2I~*kRPRP(Wwm`? z=Cxy|_8&7G&m@2pr&2^j7CS4K<%>bTXcEW+yetW{X%#H2rz8+jUejN@aVtA}x_M%L zI#U#B2(vyMbl^T3G7ErBk<-?o{bzrNMjK*N?m_EBVIpIO_nfMQKwl?ckpM5ygo$$kP@ zsL4Mkz~_~zIyjpiwDW?yED4k)g|0P!mw!RN)@8O|p8JxEuTM{Ex^y|>%ZoSnpTBf@ z5*J^e2J_|n%}*SsoH290Awf(IF&*}dUQ|*_5X1fBVwf~AJb_bRj{D)%u<+)R< zdGO~hU7j5HUG=)6F2UZEF2FF&odqZ+fyTjKHTBnGI`Da@>JH2c@Sz8PmD%90Q-2lw zUwr#XmY?d~v{|pVUmcC60bAGlZN~!+QCW9k9fE)F?I&^U*ZI41@9ifM_uIXVw*7fs zfYq^*&G}W*`Q)GuEu|)3%Bl5{9u*6 z5b<;#esk-5Y;K)@rb*sp`K-3(7g;~h&Hf-@eq+PBTNmfcs&0aq2XL42O;NT#Z~Z_! z`w3uPa2J=A1!*3bb+<^aE8k@M`MM8 zISn{(nyzelF)+K7@49}Vn?X$DnFa)taR$JXfCdg2SU>**irLvjz$l;=00000NkvXX Hu0mjffFr+& diff --git a/tiny-cli/src/jvmMain/resources/sfx/widgets.lua b/tiny-cli/src/jvmMain/resources/sfx/widgets.lua index 17e2bffa..98267295 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/widgets.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/widgets.lua @@ -60,11 +60,33 @@ local Counter = { spr = 32 } +local Envelop = { + label = "", + value = 0, + x = 0, + y = 0, + width = 128, + height = 64, + enabled = true, + attack = 0, + decay = 0.2, + sustain = 0.5, + release = 0, + + attack_end_x = 0, + attack_end_y = 0, + decay_end_x = 0, + decay_end_y = 0, + release_start_x = 0, + release_start_y = 0 +} + local buttons = {} local tabs = {} local faders = {} local widgets = {} local counters = {} +local envelops = {} local factory = {} @@ -99,6 +121,16 @@ factory.createFader = function(value) return result end +factory.createEnvelop = function(value) + local result = new(Envelop, value) + result.attack_start_x = result.x + result.attack_start_y = result.y + result.height + + table.insert(widgets, result) + table.insert(envelops, result) + return result +end + function inside_widget(w, x, y) return w.x <= x and x <= w.x + w.width and w.y <= y and y <= w.y + w.height end @@ -137,6 +169,29 @@ factory.on_update = function(x, y) c.status = 0 end end + + for e in all(envelops) do + if e.enabled then + e.attack_end_x = e.attack_start_x + e.width * e.attack + e.attack_end_y = e.attack_start_y - e.height + + e.is_over_attack = math.dst2(x, y, e.attack_end_x, e.attack_end_y) <= 4 * 4 + + e.decay_end_x = e.attack_end_x + e.width * e.decay + e.decay_end_y = e.y + (1 - e.sustain) * e.height + + e.is_over_decay = math.dst2(x, y, e.decay_end_x, e.decay_end_y) <= 4 * 4 + + e.release_start_x = e.x + e.width - e.width * e.release + e.release_start_y = e.y + (1 - e.sustain) * e.height + e.is_over_release = math.dst2(x, y, e.release_start_x, e.release_start_y) <= 4 * 4 + + local sx = e.decay_end_x + (e.release_start_x - e.decay_end_x) * 0.5 + local sy = e.y + (1 - e.sustain) * e.height + + e.is_over_sustain = math.dst2(x, y, sx, sy) <= 4 * 4 + end + end end factory.on_click = function(x, y) @@ -154,6 +209,34 @@ factory.on_click = function(x, y) f.on_value_update(f, value) end end + + for e in all(envelops) do + if e.enabled then + if e.is_over_attack then + local dst = math.min(math.max(0, x - e.x), e.width) + local attack = dst / e.width + + debug.log("attack") + e.attack = attack + elseif e.is_over_decay then + local dst = math.min(math.max(0, x - e.attack_end_x), e.width) + local decay = dst / e.width + + debug.log("decay "..decay) + e.decay = decay + elseif e.is_over_sustain then + local dst = math.min(math.max(0, y - e.y), e.height) + local sustain = 1 - dst / e.height + + e.sustain = sustain + elseif e.is_over_release then + local dst = math.min(math.max(0, e.x + e.width - x), e.width) + local release = dst / e.width + + e.release = release + end + end + end end factory.on_clicked = function(x, y) @@ -310,6 +393,48 @@ function draw_counter(counter) print(string.sub(counter.value, 1, 4), counter.x + 3, counter.y + 2) end +function draw_envelop(envelop) + + shape.rect(envelop.x, envelop.y, envelop.width, envelop.height, 9) + + -- attack + print("attack", envelop.attack_end_x, envelop.attack_end_y - 8) + shape.line(envelop.x, envelop.y + envelop.height, envelop.attack_end_x, envelop.attack_end_y, 9) + if envelop.is_over_attack then + shape.circlef(envelop.attack_end_x, envelop.attack_end_y, 2, 9) + else + shape.circle(envelop.attack_end_x, envelop.attack_end_y, 2, 9) + end + + print("decay", envelop.decay_end_x, envelop.decay_end_y - 8) + shape.line(envelop.attack_end_x, envelop.attack_end_y, envelop.decay_end_x, envelop.decay_end_y, 9) + if envelop.is_over_decay then + shape.circlef(envelop.decay_end_x, envelop.decay_end_y, 2, 9) + else + shape.circle(envelop.decay_end_x, envelop.decay_end_y, 2, 9) + end + + print("release", envelop.release_start_x, envelop.release_start_y - 8) + shape.line(envelop.release_start_x, envelop.release_start_y, envelop.x + envelop.width, envelop.y + envelop.height, + 9) + if envelop.is_over_release then + shape.circlef(envelop.release_start_x, envelop.release_start_y, 2, 9) + else + shape.circle(envelop.release_start_x, envelop.release_start_y, 2, 9) + end + + shape.line(envelop.decay_end_x, envelop.decay_end_y, envelop.release_start_x, envelop.release_start_y, 9) + local width = 8 + local height = 4 + if envelop.is_over_sustain then + shape.rectf(envelop.decay_end_x + (envelop.release_start_x - envelop.decay_end_x - width) * 0.5, + envelop.y + (1 - envelop.sustain) * envelop.height - height * 0.5, width, height, 8) + else + shape.rect(envelop.decay_end_x + (envelop.release_start_x - envelop.decay_end_x - width) * 0.5, + envelop.y + (1 - envelop.sustain) * envelop.height - height * 0.5, width, height, 8) + end +end + factory._draw = function() for c in all(counters) do if c.enabled then @@ -329,6 +454,15 @@ factory._draw = function() end end + for e in all(envelops) do + if e.is_over_attack then + debug.log("is over") + end + if e.enabled then + draw_envelop(e) + end + end + draw_tabs() end From fb28dae9c4d14dc266dc6c43a6c63267903e6d36 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Mon, 26 Feb 2024 00:05:49 +0100 Subject: [PATCH 15/46] PoC of audio signal processing with effects --- .../com/github/minigdx/tiny/TypeAlias.kt | 5 + .../com/github/minigdx/tiny/sound/Effect.kt | 122 ++++++++++++++++++ .../minigdx/tiny/sound/WaveGenerator.kt | 5 +- .../src/jvmMain/kotlin/com/DeleteMe.kt | 66 ++++++++++ 4 files changed, 197 insertions(+), 1 deletion(-) create mode 100644 tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt create mode 100644 tiny-engine/src/jvmMain/kotlin/com/DeleteMe.kt diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/TypeAlias.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/TypeAlias.kt index 1037f2a9..cf3894f2 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/TypeAlias.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/TypeAlias.kt @@ -18,3 +18,8 @@ typealias HexColor = String * Value between 0.0 and 1.0 */ typealias Percent = Float + +/** + * Frequency. + */ +typealias Frequency = Int diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt new file mode 100644 index 00000000..d2ef0998 --- /dev/null +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt @@ -0,0 +1,122 @@ +package com.github.minigdx.tiny.sound + +import com.github.minigdx.tiny.Frequency +import com.github.minigdx.tiny.Percent +import com.github.minigdx.tiny.Seconds +import com.github.minigdx.tiny.sound.SoundManager.Companion.SAMPLE_RATE +import com.github.minigdx.tiny.sound.WaveGenerator.Companion.TWO_PI +import kotlin.math.sin + +interface Effect { + /** + * Set the sample at the [index] in the [buffer]. + * + */ + fun apply(index: Int, buffer: FloatArray) +} + +// update frequencies +interface WaveEffect { + + fun apply(index: Int, frequency: Float): Float +} + +/** + * + * Change the frequency over time. + */ +class Sweep( + val sweep: Frequency, +) : WaveEffect { + override fun apply(index: Int, frequency: Float): Float { + return frequency + index * sweep / SAMPLE_RATE.toFloat() + } +} + +class Vibrato( + val vibratoFrequency: Float, + val depth: Percent +) : WaveEffect { + override fun apply(index: Int, frequency: Float): Float { + val t = index / SAMPLE_RATE.toFloat() + val vibrato = sin(TWO_PI * vibratoFrequency * t) * depth + return frequency + vibrato + } + +} + +sealed interface Wave : Effect { + + val waveEffets: Array + + val frequency: Float + + fun angle(index: Int): Float { + val t = index / SAMPLE_RATE.toFloat() + + var f = frequency + waveEffets.forEach { + f = it.apply(index, f) + } + + val angle = TWO_PI * f * t + return angle + } +} + +class SineWave2( + override var frequency: Float, + override val waveEffets: Array = emptyArray(), +) : Wave { + override fun apply(index: Int, buffer: FloatArray) { + buffer[index] = sin(angle(index)) * 0.7f + } +} + + +/** + * Volume envelope. It changes the volume level over time. + */ +class Envelope( + /** + * Time to reach the maximum level volume. + */ + val attack: Seconds, + /** + * Time from the maximum level volume to the sustain volume. + */ + val decay: Seconds, + /** + * Sustain volume. + */ + val sustain: Percent, + /** + * Time to reach the volume 0 + */ + val release: Seconds, +) : Effect { + + private val endOfAttackIndex = (attack * SAMPLE_RATE).toInt() + + private val decayDuration = (decay * SAMPLE_RATE).toInt() + + private val endOfDecay = endOfAttackIndex + decayDuration + + private val releaseDuration = (release * SAMPLE_RATE).toInt() + + override fun apply(index: Int, buffer: FloatArray) { + // attack phase + if (index <= endOfAttackIndex) { + val percentAttack = index / endOfAttackIndex.toFloat() + buffer[index] *= percentAttack + } else if (index > endOfAttackIndex && index <= endOfDecay) { // decay phase + val percentDecay = (index - endOfAttackIndex) / decayDuration.toFloat() + buffer[index] *= 1f - (1f - sustain) * percentDecay + } else if (index > endOfDecay && index <= buffer.size - releaseDuration) { // sustain phase + buffer[index] *= sustain + } else { // release phase + val percentRelease = (index - (buffer.size - releaseDuration)) / releaseDuration.toFloat() + buffer[index] *= sustain * (1f - percentRelease) + } + } +} \ No newline at end of file diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/WaveGenerator.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/WaveGenerator.kt index a8943de4..f4bc33f2 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/WaveGenerator.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/WaveGenerator.kt @@ -14,7 +14,10 @@ sealed class WaveGenerator( val volume: Percent, ) { - val period = SAMPLE_RATE.toFloat() / note.frequency + var frequency: Float = note.frequency + + val period: Float + get() = SAMPLE_RATE.toFloat() / frequency val numberOfSample = SAMPLE_RATE * duration diff --git a/tiny-engine/src/jvmMain/kotlin/com/DeleteMe.kt b/tiny-engine/src/jvmMain/kotlin/com/DeleteMe.kt new file mode 100644 index 00000000..06961bc8 --- /dev/null +++ b/tiny-engine/src/jvmMain/kotlin/com/DeleteMe.kt @@ -0,0 +1,66 @@ +import com.github.minigdx.tiny.lua.Note +import com.github.minigdx.tiny.sound.SineWave2 +import com.github.minigdx.tiny.sound.Sweep +import com.github.minigdx.tiny.sound.Vibrato +import javax.sound.sampled.AudioFormat +import javax.sound.sampled.AudioSystem +import kotlin.experimental.and + +fun main() { + val sampleRate = 44100f // Fréquence d'échantillonnage en Hz + val duration = 2.0 // Durée en secondes + val frequency = 440.0f // Fréquence du son en Hz + + val numSamples = (sampleRate * duration).toInt() + val audioBuffer = FloatArray(numSamples) + + val final = FloatArray(numSamples * 2) + + var chain = listOf( + SineWave2(frequency, arrayOf(Sweep(100), Vibrato(10f, 1f))), + // Envelope(0f, 1f, 0.5f, 0.1f) + ) + + // Générer l'onde carrée + for (i in 0 until numSamples) { + chain.forEach { effect -> + effect.apply(i, audioBuffer) + } + } + audioBuffer.copyInto(final, 0, 0, audioBuffer.size) + +// Générer l'onde carrée + chain = listOf( + SineWave2(Note.C6.frequency, arrayOf(Sweep(100), Vibrato(10f, 1f))), + // Envelope(0f, 1f, 0.5f, 0.1f) + ) + for (i in 0 until numSamples) { + chain.forEach { effect -> + effect.apply(i, audioBuffer) + } + } + audioBuffer.copyInto(final, audioBuffer.size, 0, audioBuffer.size) + + // Jouer le son + playSound(final, sampleRate) +} + + +fun playSound(buffer: FloatArray, sampleRate: Float) { + val format = AudioFormat(sampleRate, 16, 1, true, false) + val line = AudioSystem.getSourceDataLine(format) + + line.open(format) + line.start() + + val byteBuffer = ByteArray(buffer.size * 2) + for (i in buffer.indices) { + val sample = (buffer[i] * Short.MAX_VALUE).toInt().toShort() + byteBuffer[i * 2] = (sample and 0xFF).toByte() + byteBuffer[i * 2 + 1] = ((sample.toInt() ushr 8) and 0xFF).toByte() + } + + line.write(byteBuffer, 0, byteBuffer.size) + line.drain() + line.close() +} From 876bf20bd900247e4dbd83993a54255ec8b5b00c Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Mon, 26 Feb 2024 13:36:10 +0100 Subject: [PATCH 16/46] Rework the sound naming in the PoC --- .../com/github/minigdx/tiny/sound/Effect.kt | 132 ++++++++++++++---- .../src/jvmMain/kotlin/com/DeleteMe.kt | 42 +++--- 2 files changed, 117 insertions(+), 57 deletions(-) diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt index d2ef0998..4e85f6f4 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt @@ -5,18 +5,11 @@ import com.github.minigdx.tiny.Percent import com.github.minigdx.tiny.Seconds import com.github.minigdx.tiny.sound.SoundManager.Companion.SAMPLE_RATE import com.github.minigdx.tiny.sound.WaveGenerator.Companion.TWO_PI +import kotlin.math.abs import kotlin.math.sin +import kotlin.random.Random -interface Effect { - /** - * Set the sample at the [index] in the [buffer]. - * - */ - fun apply(index: Int, buffer: FloatArray) -} - -// update frequencies -interface WaveEffect { +interface Modulation { fun apply(index: Int, frequency: Float): Float } @@ -27,7 +20,7 @@ interface WaveEffect { */ class Sweep( val sweep: Frequency, -) : WaveEffect { +) : Modulation { override fun apply(index: Int, frequency: Float): Float { return frequency + index * sweep / SAMPLE_RATE.toFloat() } @@ -36,7 +29,7 @@ class Sweep( class Vibrato( val vibratoFrequency: Float, val depth: Percent -) : WaveEffect { +) : Modulation { override fun apply(index: Int, frequency: Float): Float { val t = index / SAMPLE_RATE.toFloat() val vibrato = sin(TWO_PI * vibratoFrequency * t) * depth @@ -45,34 +38,111 @@ class Vibrato( } -sealed interface Wave : Effect { +sealed interface SoundGenerator { - val waveEffets: Array + val modulation: Modulation? + + val envelope: Envelope? val frequency: Float fun angle(index: Int): Float { val t = index / SAMPLE_RATE.toFloat() - var f = frequency - waveEffets.forEach { - f = it.apply(index, f) - } - - val angle = TWO_PI * f * t + val apply = modulation?.apply(index, frequency) ?: frequency + val angle = TWO_PI * apply * t return angle } + + fun apply(index: Int): Float + + fun generate(index: Int, buffer: FloatArray) { + val sample = apply(index) + buffer[index] = envelope?.apply(sample, index, buffer) ?: sample + } } -class SineWave2( +class Sine2( override var frequency: Float, - override val waveEffets: Array = emptyArray(), -) : Wave { - override fun apply(index: Int, buffer: FloatArray) { - buffer[index] = sin(angle(index)) * 0.7f + override val modulation: Modulation? = null, + override val envelope: Envelope? = null, +) : SoundGenerator { + override fun apply(index: Int): Float { + return sin(angle(index)) * 0.7f + } +} + +class Square2( + override val frequency: Float, + override val modulation: Modulation?, + override val envelope: Envelope?, +) : SoundGenerator { + override fun apply(index: Int): Float { + val value = sin(angle(index)) + return if (value > 0f) { + 0.7f + } else { + -0.7f + } } } +class Triangle2( + override val frequency: Float, + override val modulation: Modulation?, + override val envelope: Envelope?, +): SoundGenerator { + override fun apply(index: Int): Float { + val angle: Float = sin(angle(index)) + val phase = (angle + 1.0) % 1.0 // Normalize sinValue to the range [0, 1] + return (if (phase < 0.5) 4.0 * phase - 1.0 else 3.0 - 4.0 * phase).toFloat() + } + +} + +class Pulse2( + override val frequency: Float, + override val modulation: Modulation?, + override val envelope: Envelope?, +): SoundGenerator { + override fun apply(index: Int): Float { + val angle = angle(index) + + val t = angle % 1 + val k = abs(2.0 * ((angle / 128.0) % 1.0) - 1.0) + val u = (t + 0.5 * k) % 1.0 + val ret = abs(4.0 * u - 2.0) - abs(8.0 * t - 4.0) + return (ret / 6.0).toFloat() + } +} + +class SawTooth2( + override val frequency: Float, + override val modulation: Modulation?, + override val envelope: Envelope?, +) : SoundGenerator { + override fun apply(index: Int): Float { + val angle: Float = sin(angle(index)) + val phase = (angle * 2f) - 1f + return phase + } +} + +class Noise2( + override val frequency: Float, + override val modulation: Modulation?, + override val envelope: Envelope?, +) : SoundGenerator { + override fun apply(index: Int): Float { + val white = Random.nextFloat() * 2 - 1 + val brown = (lastNoise + (0.02f * white)) / 1.02f + lastNoise = brown + return brown * 3.5f + } + + private var lastNoise = 0.0f +} + /** * Volume envelope. It changes the volume level over time. @@ -94,7 +164,7 @@ class Envelope( * Time to reach the volume 0 */ val release: Seconds, -) : Effect { +) { private val endOfAttackIndex = (attack * SAMPLE_RATE).toInt() @@ -104,19 +174,19 @@ class Envelope( private val releaseDuration = (release * SAMPLE_RATE).toInt() - override fun apply(index: Int, buffer: FloatArray) { + fun apply(sample: Float, index: Int, buffer: FloatArray): Float { // attack phase if (index <= endOfAttackIndex) { val percentAttack = index / endOfAttackIndex.toFloat() - buffer[index] *= percentAttack + return sample * percentAttack } else if (index > endOfAttackIndex && index <= endOfDecay) { // decay phase val percentDecay = (index - endOfAttackIndex) / decayDuration.toFloat() - buffer[index] *= 1f - (1f - sustain) * percentDecay + return sample * (1f - (1f - sustain) * percentDecay) } else if (index > endOfDecay && index <= buffer.size - releaseDuration) { // sustain phase - buffer[index] *= sustain + return sample * sustain } else { // release phase val percentRelease = (index - (buffer.size - releaseDuration)) / releaseDuration.toFloat() - buffer[index] *= sustain * (1f - percentRelease) + return sample * (sustain * (1f - percentRelease)) } } } \ No newline at end of file diff --git a/tiny-engine/src/jvmMain/kotlin/com/DeleteMe.kt b/tiny-engine/src/jvmMain/kotlin/com/DeleteMe.kt index 06961bc8..52dedb9a 100644 --- a/tiny-engine/src/jvmMain/kotlin/com/DeleteMe.kt +++ b/tiny-engine/src/jvmMain/kotlin/com/DeleteMe.kt @@ -1,48 +1,38 @@ import com.github.minigdx.tiny.lua.Note -import com.github.minigdx.tiny.sound.SineWave2 +import com.github.minigdx.tiny.sound.Envelope +import com.github.minigdx.tiny.sound.Sine2 import com.github.minigdx.tiny.sound.Sweep -import com.github.minigdx.tiny.sound.Vibrato import javax.sound.sampled.AudioFormat import javax.sound.sampled.AudioSystem import kotlin.experimental.and fun main() { val sampleRate = 44100f // Fréquence d'échantillonnage en Hz - val duration = 2.0 // Durée en secondes - val frequency = 440.0f // Fréquence du son en Hz + val duration = 0.2 // Durée en secondes val numSamples = (sampleRate * duration).toInt() val audioBuffer = FloatArray(numSamples) - val final = FloatArray(numSamples * 2) + val mod = Sweep(500) + val env = Envelope(0.0f, 0.00f, 0.8f, 0.01f) - var chain = listOf( - SineWave2(frequency, arrayOf(Sweep(100), Vibrato(10f, 1f))), - // Envelope(0f, 1f, 0.5f, 0.1f) - ) + var buffer = FloatArray(0) - // Générer l'onde carrée - for (i in 0 until numSamples) { - chain.forEach { effect -> - effect.apply(i, audioBuffer) + Note.values().forEachIndexed { i, note -> + (0 until numSamples).forEach { index -> + Sine2( + note.frequency, + modulation = mod, + envelope = env, + ).generate(index, audioBuffer) } - } - audioBuffer.copyInto(final, 0, 0, audioBuffer.size) -// Générer l'onde carrée - chain = listOf( - SineWave2(Note.C6.frequency, arrayOf(Sweep(100), Vibrato(10f, 1f))), - // Envelope(0f, 1f, 0.5f, 0.1f) - ) - for (i in 0 until numSamples) { - chain.forEach { effect -> - effect.apply(i, audioBuffer) - } + buffer = buffer.copyOf(buffer.size + audioBuffer.size) + audioBuffer.copyInto(buffer, i * audioBuffer.size, 0, audioBuffer.size) } - audioBuffer.copyInto(final, audioBuffer.size, 0, audioBuffer.size) // Jouer le son - playSound(final, sampleRate) + playSound(buffer, sampleRate) } From 0ad123ffa5790c5255fe3295e0dfd45b10be0ca4 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Mon, 26 Feb 2024 13:36:25 +0100 Subject: [PATCH 17/46] Create checkbox for the sfx editor --- tiny-cli/sfx.aseprite | Bin 2015 -> 2017 bytes tiny-cli/src/jvmMain/resources/sfx/game.lua | 9 +++- tiny-cli/src/jvmMain/resources/sfx/sfx.png | Bin 1865 -> 1871 bytes .../src/jvmMain/resources/sfx/widgets.lua | 50 +++++++++++++++++- 4 files changed, 56 insertions(+), 3 deletions(-) diff --git a/tiny-cli/sfx.aseprite b/tiny-cli/sfx.aseprite index 3525e1947c735b4dd82a752d157413c20027194b..1b5f447c97442548d984da08cfe2dc6c7d021ac7 100644 GIT binary patch delta 1053 zcmV+&1mgSO58)31;gJD<0b#L$5CZ{Flad2ae_A$)ldN~XH_n93wr$&kCogwT+b;C> z55{%wqgwQb2Qj4Y{_D5z`~LfK)v>9jFVf?-bs}dk6P!19)d*3h&_F`oKFA(|8B>)`ojWul1x_B)p6F ze+}-f4|Rdo8l^mVcJCtZA>cm5ZBg=$J4m-Zt9Lcv4bZ|pfOkHSvw#-Kfs%LJ8+i8@ z%ol+Ls{`=ve}NT$Z``}m@&fy(ZKut1Dv!VH!^V35^+>(1{q5&nYOVwSc-s9L zyyGX~jpG@-o28a;2o~=u4$@fh#7%Z?gnP-kl6TT_$+0f)I^FY(U(JhL4{N!@e`7xP zsnyd)c{g(nug1PT+fy@loWMKoT913#E77l#i${3Z;hxt!Deh_BXt^WpqZRvk|MZo5 zs6B7qSK6kvuWLhntGOqxt9i%Q9pGKbF^_xHEACir-g%gJ2KV?p-8yG4Bn*+IXiZP?VS*Om? z<*j}2`1HiBDTTt++hyk}DH61AF3t$yNl?ymm`fA5UWQTL?f zrF}>-I?6k3zN7D@x`@U*>D*U!PhD$~uIKprKrGI+)@kVWPB~td=eJ1xYw>BV33}$4 z(lModwC0&oo}+Wl)!b8~tXrOiF7FKEm*Pp|oaXwdH#R-5jiyz5f?|)V;2#T0K4gf6`}J<$fLjRuIeH}DRek!Ww=9XKP=^+?n+!CCR%Uz=q; z0IN~TH?4d$%lhc?1Hc2lzT$DtufJ;RrDo~x-GB7>0pKCWHI4aNf8B#F<6hL>xB9n^ zUwR)segJqFm5-#{bVR=6$BZ6706diH_^mp>H{XrkfAshP;32v$g1QPgD@WJ)k6sVJ ziXiR*xGtFI0dReK>y6Rp55S7hnmqMOs@bR4^jt^O@d4K>W^hV(s`x#d delta 1051 zcmV+$1myeS58n>~-;n`-0bj9!5CZ{Dlad2ae|l^ZJ6XT^-Z&F>w{6=VJbAf$+IFG0 ze=x3VAJwAYJcuFv?!SKfzVE+(np*0UW2dKo^!wi~-o1Mm(V08fA{ZE8*aBpqkT_2Io!M$~{IFOD_{^XxlXL8@({?T)miS`ZdtxJw&i+8VI zJ$J`P>f75tdd?Ejp25BKp?Rp*(s8*@fA+`PM)i**+AsJC00000py0!c{jPzV>Ky4w7tOoY1?V@T*~7w`>?s*e?3xtQW-e|XI2 zKDBz(0ZxGq}gs>DD!SDX(ePYqi|g zig)gq5jiyz5f?|)U&RrT0On~f6{wd<#`?eRuIMxwoeci@af*CSES1ZTzjd~KHf z0IWtS-?Z}4Ec>J94*(DJ{))#rzyGT3mzt%&cl_x21HeO$YZ~*lf4T?V#=WS$ZuM`S zzw|nK{s8bWDj!L?>4<#C&lx>`0C*_X@mqC%Z@wEne)RkS;32v$g1QPgD@WJ)kKPZ! ziXiR*xGq@d0dReK>y6RZ55S7hnmqMOtl3|_(-C!i0Q#T~(P!JDcbD&ihIat;fpsPT V*9UbK0Aj#%1OTqf1t0$)NAvirK(+t? diff --git a/tiny-cli/src/jvmMain/resources/sfx/game.lua b/tiny-cli/src/jvmMain/resources/sfx/game.lua index b6299391..b229c747 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/game.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/game.lua @@ -421,12 +421,19 @@ editor.create_widgets = function() local on_envelop_update = function(env, attack, decay, sustain, release) end local env = widgets.createEnvelop({ - x = 60, + x = 100, y = 30, on_update = on_envelop_update }) table.insert(editor.patterns_fx_widgets, env) + local c_env = widgets.createCheckbox({ + x = 40, + y = 30, + label = "enable" + }) + table.insert(editor.patterns_fx_widgets, c_env) + -- tabs local files = ws.list() diff --git a/tiny-cli/src/jvmMain/resources/sfx/sfx.png b/tiny-cli/src/jvmMain/resources/sfx/sfx.png index afaf9056bac0d77a313f82b699a3b03e87a1a192..191d55293a21cae3cc09928547f8f8630fb8fccf 100644 GIT binary patch delta 1621 zcmV-b2CDhV4$lsdF#!pYG9rIXs*5pOC?Je5s1T?<6jDecQeh&}3a${CLkMz(2*>p) zbRa=Wkq|-z;uIGy+?aI6Fe%pWdUkKVcW-BQ_j%yh)y%vzv%B;Ay+DE zuAAe2IUM!oJz##ZGF+9-$?@NVlW(~Z(lqL zA%w8K*PqI*%sXA50OKUkwi^ZWkN|o@5}*qbK#xcQ>t!$;rSbF3KJSyQu1|nz#st4IP}=Dkm5StNiNT?L~gKo=x{jIM*Q z>*I6zw)bxJYEW=1gzo2BrX4&eOw#u)TkGE3D!mU~>KHC+Xk* z(QY!}*FXP0gb>0!<&Ta}I=|Ta68u?`z-oDZ_Aow|L|AM(lzto_T%)(g&OsJ*ZB z_kT(A{#qUQtB>b?4Q=1QA`fmqPRjzVuiB1LZGvw8FF;YU_(Ag7xMkAj0{-w>n*M8) zB=K>c(<}@A^qUXTu>a&wznfatIst?*P69vs`%-^vudo*ykN=KIAiFGYyAVQUlfH0l;D_a97iZbJ*i|TN?lH5?5H&luHp_UcWzc5{4lNtfj%0cd}3 zD}?d)mN)&9&e`uh@3K75j;{rW4JHA=29p3_gGm6e!Fut_KTT=i#g7>HD%C zXlXDUrO(e^rs=m|PyIbVdzlV~qqOhqyMF&*mAw&-mMEw@;d8hH7!5S z{(*KTgMjge4a+*s$24>k$B$t)1bNsk( zNdOjO>MOy@YTv5$Z(lr`)X+sqV4nSlP%p^<^%YJ7R!!68t-zkG_NM+fVAUzedh);D zUh2sJ%Qd+V;OXH(<&8Smep7w79%}x6lW_*XlYj;X7rpX-qLC+i T{-hi!00000NkvXXu0mjf`tnDu delta 1612 zcmV-S2DACk4#^IXF#!XSG9rKdVZ;^+2qO$C1Zoe36q1Nkh={a;D+J~c2f0F+Fz%*k5t06lu zzPS^6J2tTP2_Q}Ze))f^j!$Gp-P)p07Zdpo_xHL!g+gne0LlXBGMa1xcr|2a0G5d{ zfC87*U+ZJPkY<_$|GSq@di9x0068xE1M1TS!D7sNpUh>E0A_R*jFJFdkN`5e4#KXF z&&Au^x!tQl!Hp2c_vN>_mp{8aPx(IROYjX$0WO`x{k^ccb31=5;~-#i zyStBXCfVhAj#GbjJjNC`4fyD4nj82rDa6ML>9de#|Jt0&$IsJ+_3P8`KdQa2^w0lD z^Zr^L_}fqCehqEkzakIsJWb02t*_dSQLTe+{x3jLviMo@`M71$<^ulsd7A!vlqB(S zp3^J~{`C8g(&X3wIk*4hZ-1J4u5|(kVVneh^RG*-y~=-T`Zs4MrQ75shgfENYj?7I zkuKvHtK?h@APu`|8g`d5V`hUsCV{s5DhlwbbqlwEmOxWwHT}WSandBn4vvnKSSBtP zZTsfzBs{$HG|eWO>|Aq`B+xiP#2UY5 zH=vEY8oz&S66j6vM-7s|Z1<^6ck0dA$s`!_))xhFEH}Fx!Z;|a#QhfSzfJ&WkCWXt zE^8r7n{)wU@W+40B#?bBZ@UmeWs|;eY~bhT%P!8cb+M~Z*4%H}9cUB$O`G{~``PY7 zshZt^gs_WqBIJt2xG^&Arxi2K77j=J+N8JE^b9NH8w|1w_J+?wF;=GpC zBmtZY>Lw}zysAvm#aZ{FtqShEB#@UB+SdGy0=aFOXYW^Ta___OO-=V7gz(pU&nM5{ ze=rL7J{$-0ga6jQap>UaIBC;l9@oOhQ_nRC+^pFE&f9lU`Rt5>;Lle&3ozRi$gTaC zM7DoBu*l%Q6wltToLY^+AKia2ntCkSF6$!u$91{@Axt;_V>coOb=?4t{r>Fh+1}bU z8<3-N79g7hY6pL|&!4?;^PamzMcsj_0PlP77nu$IGDX3E_wmgn22R}oY}3!4Et6Mc zX9ozY%=Y=?z~Du8PnJ=w`vBs=VC}s&9S?uFM0wqXRS5pG-~Ci;mvy(xsv5nYl~>zW z1@7$r^Nv@y89y8R2S>+AoVL^wm?jfmu%ZFN$}xZzEu}gac3A*5t?7%jy=!n@+4C=Y zEsJ`MKmj!@06?E5A+-NejQC{~U6%*i*%%B*Y4&G~>NHeA0ozPY5!@{$0ww-JBB z_?2xr?1lVhwrBTUYx#42g6a?_w`-Bf3VEn3*nb}_|2W$VRPs9xh8p?^|P9mpJ)F- zJCi}c_``-}KV2Nx75xZe4B$59>l}Z-YX3kplLSx|+}U+`K^g?e}T%GWu5+_xkE zi!t?;U}d#$)%tfYpG<1#q9icS{zIsjWPth#rva;`>GIZR1G7!}w)+R#>BTgjX+Y?P z0EBgB9v;@$Lhb_qmegQ4O4A>{OXFj#+2eEB Date: Tue, 27 Feb 2024 10:33:03 +0100 Subject: [PATCH 18/46] Add knob widget --- tiny-cli/sfx.aseprite | Bin 2017 -> 2168 bytes tiny-cli/src/jvmMain/resources/sfx/game.lua | 53 ++++++++++++++ tiny-cli/src/jvmMain/resources/sfx/sfx.png | Bin 1871 -> 2106 bytes .../src/jvmMain/resources/sfx/widgets.lua | 65 +++++++++++++++++- 4 files changed, 115 insertions(+), 3 deletions(-) diff --git a/tiny-cli/sfx.aseprite b/tiny-cli/sfx.aseprite index 1b5f447c97442548d984da08cfe2dc6c7d021ac7..23e6ad82a0c3f6eea189724fadc5ef4ab4744801 100644 GIT binary patch delta 1281 zcmV+c1^)Ws5BLxQcnFaKegXKgfe-_K=L7%%1t09py31tWumZARGA_IJi~?rSyg4-YF@pdr#tUHKJ{rk83R~}+TW*Po9IDH3w`1-TAhn+Co$*h9qt_m>B7>_6z}}K!@XmG zcTMcVJKP%|ylY}N-r?TZq~6JEJ*^grcmBTN-uOrtWUW!lgJ<{7^Bw~CA&y1PyVOCs z?ODAmfj3Y~>H*%_AZI}>ngcn1?^18@?mx^Ip@mil@a{1l&f(tJ;9Vb{&f(s;v^Ws9 z4gSQ}R%c@0-u~WW7V-8C_r@j0a*KEG-o7%&N9fzz-+Rmg-k#y!_{cm|YGJ$BC;HRc z*6Qzxw_o@P0000`!Kc^rZG*#c{r<-Ea}E8{R@yH8ch7Mw`x%btTk2hZZh40J^EAt5 zIhE&M=hen~{{5_aU-O4Av(`)p{`s=|Gg!w@!y3nX@NO@)giUDiuHc}I6-(Si=hkp9 zIG6KITdq0Q$Vn6O*zDf^k&pYj_ZL_qmOCxoxd6%x+z`LAd z7WbrAsbi&i=VsnDxR=h;Tj%V#yjC+`E9JJOcuyVEysMd~=DgqQoKthDc3Cl(Y3q{u zOD;Z2F(kKJa;wF?l4qqnm%EnBEnD<4^{&&s+P+#|YmHfLyS2Q3tIf4C@9ovO9M#@Q zO1Z7E#X&>5kot7&P?H=4?zL#$Joz?rd=xg2U@~YL#^Ur;j zQSRpfv_f11002Ow_dA!~{Q*WJe)rt#`6|8ry~hv0LWtdeHJ&Ht)!%#k04#WWgLiO7 zyuHCYI3wQP;2oS1Z*TAp&WLwCl6oeb73=-Ay{rcqja&A17UcC+8t3Wt zS82W0TKZe}?>&A17Ghk>m@m~m_Z~k03v1;gEjMkE@6uy>j~{@A zTpfR@&Tq|scWdw8d;9<_c-KX!tH4>=y3W7#dVmoj?g1_f^E`md(_3%!K7W7_ku`bg zmsYb6ui?3l)bRoOkPgXv+v>ftyJr~V9Y7z~xQ_q;000000000000000 z0Pv9X?^C?b2jIv=&(i;o9{&KgLHc(6{^n7O{&}BpC%{pN&S}1-4fg>0X>kts0M-HT z04__;Ik_z7B<=y&DCN3RjRo%j?BE^1{3qE?EJHV(=&jj$HCFhar r0M?_%J)8sBfV*cxKk{w5x@|ZIuo3^fOTPycobx^{fTQpi0UBDZ-k7a^ delta 1129 zcmV-v1eW{w5aAC3;RlfdegR>zfe-_KPy_$~1t055{%wqgwQb2Qj4Y{_D5z`~LfR7D0E5u}Jx$wW4=gS9$;Yrdm)j&U7wR3{yB(+tt?v}x#d`<$ZUcB{ zVhZoz-ul2h6VrGH_tu7cN3ZpyS|q%S_YLl?4|Rdo8l^mVcJCtZA>cm5ZBg=$J4m-Z zt9Lcv4bZ|pfOkHSvw#-Kfs%KB+#7iJ7t9xd1*-$_?tdbjgL`WO@A`;z4(_ds#euYK z@+ZGqoymQB`$vyiCfYZ+w=OxBE#AF;_1qmFsc&!p=rKz~dj|K`hvuPLOWWl>*&k~g z)jyJGzu+eT0001hf)6kDy9REK_isMBzSq=`x7v36-#y3i>}NT$Z``|o(((fPr){Ur zb1IL&?8C--|Mf_{ul?=kU23ia|9IN{8NA~s;f>=Nyql$#a0nLfDh|?E@x)DbZiIWu zxsrF%a>=nS?>gP{j9<-*Tn}rx!(%@8snyd)c{g(nug1PT+fy@loWMKoT913#E77l# zi${3Z;hxt!Deh_BXt^VQ?V}a@dH?j4dZ;~b-dEbDwXbVKeXF@AuB&;+*B#(p$uW<6 z)GO{-ZQgm9cLw+PJl#5HFXc7Oe65z-TJg>ulf2W+Q%l~@I_H#J(k`p!GHD&Fzm(#m z7DIHqmRlD0YM#~dTll3&xU=3GWQ z_q=CP?-I3|ORaw5b?&bJ2=9!}QTL?frF}>-I?6k3zN7D@x`@U*>D*U!PhD$~uIKpr zKrGI+)@kVWPB~tGmgl!f{cG`QtqFSOnbI+(eYED8Ql6u8&ehygqpVw=g)Z+5!oJt z@7;g&_yOP{$2E=lTHS*#<6hL>xB9n^UwR)segJqFm5-#{bVR=6$BZ6706diH_^mp> zH{XrkfAsiR0pKCJE`quWI4eij`Hx-?z=|O50k|%h=K*kidh3nR=MTV&(3(8;ORCwY v*YsRR)bRo6gE~a-ZHxEHF3&KAcL4N(c_skY2Xz$yV!(X_0Itg)W^hV(IdxXG diff --git a/tiny-cli/src/jvmMain/resources/sfx/game.lua b/tiny-cli/src/jvmMain/resources/sfx/game.lua index b229c747..68d77ec6 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/game.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/game.lua @@ -426,6 +426,59 @@ editor.create_widgets = function() on_update = on_envelop_update }) table.insert(editor.patterns_fx_widgets, env) + + local on_update_attack = function(knob) + env.attack = knob.value + end + + local attack = widgets.createKnob({ + x = env.x, + y = env.y + env.height + 4, + label = "attack", + on_update = on_update_attack, + value = env.attack + }) + table.insert(editor.patterns_fx_widgets, attack) + + local on_update_decay = function(knob) + env.decay = knob.value + end + + local decay = widgets.createKnob({ + x = env.x + (16 + 16), + y = env.y + env.height + 4, + label = "decay", + on_update = on_update_decay, + value = env.decay + }) + table.insert(editor.patterns_fx_widgets, decay) + + local on_update_sustain = function(knob) + env.sustain = knob.value + end + + local sustain = widgets.createKnob({ + x = env.x + (16 + 16) * 2, + y = env.y + env.height + 4, + label = "sustain", + on_update = on_update_sustain, + value = env.sustain + }) + table.insert(editor.patterns_fx_widgets, sustain) + + local on_update_release = function(knob) + env.release = knob.value + end + + local on_update_release = widgets.createKnob({ + x = env.x + (16 + 16) * 3, + y = env.y + env.height + 4, + label = "release", + on_update = on_update_release, + value = env.release + }) + table.insert(editor.patterns_fx_widgets, on_update_release) + local c_env = widgets.createCheckbox({ x = 40, diff --git a/tiny-cli/src/jvmMain/resources/sfx/sfx.png b/tiny-cli/src/jvmMain/resources/sfx/sfx.png index 191d55293a21cae3cc09928547f8f8630fb8fccf..13f271a7daf6ec3345143dfa697081eea4517617 100644 GIT binary patch delta 1908 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 Date: Tue, 27 Feb 2024 10:33:58 +0100 Subject: [PATCH 19/46] Read new SFX format using Song2 class --- .../com/github/minigdx/tiny/lua/SfxLib.kt | 89 +++++++++++++++++++ .../com/github/minigdx/tiny/sound/Effect.kt | 13 ++- .../com/github/minigdx/tiny/sound/Song.kt | 12 +++ .../com/github/minigdx/tiny/lua/SfxLibTest.kt | 24 +++++ .../src/jvmMain/kotlin/com/DeleteMe.kt | 1 - 5 files changed, 130 insertions(+), 9 deletions(-) diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt index eb44eba2..a447ac69 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt @@ -8,6 +8,7 @@ import com.github.minigdx.tiny.Percent import com.github.minigdx.tiny.Seconds import com.github.minigdx.tiny.engine.GameResourceAccess import com.github.minigdx.tiny.resources.Sound +import com.github.minigdx.tiny.sound.Envelope import com.github.minigdx.tiny.sound.NoiseWave import com.github.minigdx.tiny.sound.Pattern import com.github.minigdx.tiny.sound.PulseWave @@ -15,8 +16,12 @@ import com.github.minigdx.tiny.sound.SawToothWave import com.github.minigdx.tiny.sound.SilenceWave import com.github.minigdx.tiny.sound.SineWave import com.github.minigdx.tiny.sound.Song +import com.github.minigdx.tiny.sound.Song2 import com.github.minigdx.tiny.sound.SquareWave +import com.github.minigdx.tiny.sound.Sweep +import com.github.minigdx.tiny.sound.Track import com.github.minigdx.tiny.sound.TriangleWave +import com.github.minigdx.tiny.sound.Vibrato import com.github.minigdx.tiny.sound.WaveGenerator import org.luaj.vm2.LuaTable import org.luaj.vm2.LuaValue @@ -271,6 +276,90 @@ class SfxLib( } } + /** + * tiny-sfx + * + * ... + * ...nb pattern... + * + */ + fun convertScoreToSong2(score: String): Song2 { + val lines = score.lines() + if (lines.isEmpty()) { + throw IllegalArgumentException( + "The content of the score is empty. Can't convert it into a song. " + + "Check if the score is not empty or correctly loaded!", + ) + } + + val header = lines.first() + if (!header.startsWith(TINY_SFX_HEADER)) { + throw IllegalArgumentException( + "The '$TINY_SFX_HEADER' is missing from the fist line of the score. " + + "Is the score a valid score?", + ) + } + + val (_, bpm, volume) = header.split(" ") + + val duration = 60f / bpm.toFloat() / 8f + + var tail = lines.drop(1) + + var remainingTrack = 4 + + val tracks = mutableListOf() + do { + val track = tail.first() + val configuration = track.split(" ").map { it.toInt(16) } + val nbPattern = configuration.first() + val (mod, modA, modB, _, _) = configuration.drop(1) + val (env, envA, envB, envC, envD) = configuration.drop(5) + + val modulation = if (mod > 0) { + if (mod == 1) { + Sweep(modA) + } else { + Vibrato(modA / 255f, modB / 255f) + } + } else { + null + } + + val envelope = if (env > 0) { + Envelope(envA / 255f, envB / 255f, envC / 255f, envD / 255f) + } else { + null + } + val (patterns, patternsOrdered) = if (nbPattern > 0) { + val patternsStr = tail.drop(1) + + // Map + val patterns = patternsStr.take(nbPattern).mapIndexed { indexPattern, pattern -> + val beatsStr = pattern.trim().split(" ") + val beats = convertToWaves(beatsStr, duration) + Pattern(indexPattern + 1, beats) + }.associateBy { it.index } + + val patternOrder = patternsStr.drop(nbPattern).first() + val orders = patternOrder.trim().split(" ").map { it.toInt() } + + val patternsOrdered = orders.map { patterns[it]!! } + tail = tail.drop(nbPattern + 2) // drop patterns + configuration + patterns order + patterns to patternsOrdered + } else { + tail = tail.drop(1) // drop configuration + emptyMap() to emptyList() + } + + tracks.add(Track(patterns, patternsOrdered, envelope = envelope, modulation = modulation)) + + remainingTrack-- + } while (remainingTrack > 0) + + return Song2(bpm.toInt(), volume.toInt() / 255f, tracks.toTypedArray()) + } + fun convertScoreToSong(score: String): Song { val lines = score.lines() if (lines.isEmpty()) { diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt index 4e85f6f4..402e5ecd 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt @@ -28,14 +28,13 @@ class Sweep( class Vibrato( val vibratoFrequency: Float, - val depth: Percent + val depth: Percent, ) : Modulation { override fun apply(index: Int, frequency: Float): Float { val t = index / SAMPLE_RATE.toFloat() val vibrato = sin(TWO_PI * vibratoFrequency * t) * depth return frequency + vibrato } - } sealed interface SoundGenerator { @@ -91,20 +90,19 @@ class Triangle2( override val frequency: Float, override val modulation: Modulation?, override val envelope: Envelope?, -): SoundGenerator { +) : SoundGenerator { override fun apply(index: Int): Float { val angle: Float = sin(angle(index)) val phase = (angle + 1.0) % 1.0 // Normalize sinValue to the range [0, 1] return (if (phase < 0.5) 4.0 * phase - 1.0 else 3.0 - 4.0 * phase).toFloat() } - } class Pulse2( override val frequency: Float, override val modulation: Modulation?, override val envelope: Envelope?, -): SoundGenerator { +) : SoundGenerator { override fun apply(index: Int): Float { val angle = angle(index) @@ -143,7 +141,6 @@ class Noise2( private var lastNoise = 0.0f } - /** * Volume envelope. It changes the volume level over time. */ @@ -164,7 +161,7 @@ class Envelope( * Time to reach the volume 0 */ val release: Seconds, -) { +) { private val endOfAttackIndex = (attack * SAMPLE_RATE).toInt() @@ -189,4 +186,4 @@ class Envelope( return sample * (sustain * (1f - percentRelease)) } } -} \ No newline at end of file +} diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Song.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Song.kt index fab4a1bf..0f20bd00 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Song.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Song.kt @@ -30,3 +30,15 @@ data class Song(val bpm: Int, val volume: Float, val patterns: Map return header + patternsStr + patternOrder } } + +data class Track( + val patterns: Map, + val music: List, + val envelope: Envelope? = null, + val modulation: Modulation? = null, +) +class Song2( + val bpm: Int, + val volume: Float, + val tracks: Array, +) diff --git a/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/SfxLibTest.kt b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/SfxLibTest.kt index 55f9633c..0a0a5e9c 100644 --- a/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/SfxLibTest.kt +++ b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/SfxLibTest.kt @@ -60,6 +60,30 @@ class SfxLibTest { assertEquals(song.patterns[1]!!.notes.size, 2) } + @Test + fun scoreToSong2() { + val score = """tiny-sfx 120 255 + |02 00 00 00 00 00 00 00 00 00 00 + |0101FF 0101FF + |0101FF 0101FF + |1 2 1 + |00 00 00 00 00 00 00 00 00 00 00 + |00 00 00 00 00 00 00 00 00 00 00 + |00 00 00 00 00 00 00 00 00 00 00 + """.trimMargin() + + val song = SfxLib.convertScoreToSong2(score) + + assertEquals(120, song.bpm) + assertEquals(1f, song.volume) + assertEquals(4, song.tracks.size) + assertEquals(2, song.tracks[0].patterns.size) + // patterns by index + assertEquals(2, song.tracks[0].patterns[1]!!.notes.size) + // patterns ordered by usage + assertEquals(3, song.tracks[0].music.size) + } + @Test fun convertToNote() { val wave = SfxLib.convertToWave("0101FF", 0.1f) diff --git a/tiny-engine/src/jvmMain/kotlin/com/DeleteMe.kt b/tiny-engine/src/jvmMain/kotlin/com/DeleteMe.kt index 52dedb9a..4b4b4e71 100644 --- a/tiny-engine/src/jvmMain/kotlin/com/DeleteMe.kt +++ b/tiny-engine/src/jvmMain/kotlin/com/DeleteMe.kt @@ -35,7 +35,6 @@ fun main() { playSound(buffer, sampleRate) } - fun playSound(buffer: FloatArray, sampleRate: Float) { val format = AudioFormat(sampleRate, 16, 1, true, false) val line = AudioSystem.getSourceDataLine(format) From ae99be2890a7c7e54ca7886acab1503fb23d3ee8 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Tue, 27 Feb 2024 21:46:31 +0100 Subject: [PATCH 20/46] Play the sound using the new song format. --- .../com/github/minigdx/tiny/lua/SfxLib.kt | 44 ++++++++- .../com/github/minigdx/tiny/sound/Effect.kt | 18 +++- .../com/github/minigdx/tiny/sound/Song.kt | 49 +++++++++- .../github/minigdx/tiny/sound/SoundManager.kt | 22 +++++ .../com/github/minigdx/tiny/sound/SongTest.kt | 54 +++++++++++ .../src/jvmMain/kotlin/com/DeleteMe.kt | 97 +++++++++---------- 6 files changed, 221 insertions(+), 63 deletions(-) create mode 100644 tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/sound/SongTest.kt diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt index a447ac69..cfcb33a4 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt @@ -9,17 +9,27 @@ import com.github.minigdx.tiny.Seconds import com.github.minigdx.tiny.engine.GameResourceAccess import com.github.minigdx.tiny.resources.Sound import com.github.minigdx.tiny.sound.Envelope +import com.github.minigdx.tiny.sound.Modulation +import com.github.minigdx.tiny.sound.Noise2 import com.github.minigdx.tiny.sound.NoiseWave import com.github.minigdx.tiny.sound.Pattern +import com.github.minigdx.tiny.sound.Pattern2 +import com.github.minigdx.tiny.sound.Pulse2 import com.github.minigdx.tiny.sound.PulseWave +import com.github.minigdx.tiny.sound.SawTooth2 import com.github.minigdx.tiny.sound.SawToothWave +import com.github.minigdx.tiny.sound.Silence2 import com.github.minigdx.tiny.sound.SilenceWave +import com.github.minigdx.tiny.sound.Sine2 import com.github.minigdx.tiny.sound.SineWave import com.github.minigdx.tiny.sound.Song import com.github.minigdx.tiny.sound.Song2 +import com.github.minigdx.tiny.sound.SoundGenerator +import com.github.minigdx.tiny.sound.Square2 import com.github.minigdx.tiny.sound.SquareWave import com.github.minigdx.tiny.sound.Sweep import com.github.minigdx.tiny.sound.Track +import com.github.minigdx.tiny.sound.Triangle2 import com.github.minigdx.tiny.sound.TriangleWave import com.github.minigdx.tiny.sound.Vibrato import com.github.minigdx.tiny.sound.WaveGenerator @@ -276,6 +286,22 @@ class SfxLib( } } + fun convertToSound(note: String, mod: Modulation?, env: Envelope?): SoundGenerator { + val wave = note.substring(0, 2).toInt(16) + val noteIndex = note.substring(2, 4).toInt(16) + val volume = note.substring(4, 6).toInt(16) / 255f + + return when (wave) { + 1 -> Sine2(Note.fromIndex(noteIndex).frequency, mod, env) + 2 -> Square2(Note.fromIndex(noteIndex).frequency, mod, env) + 3 -> Triangle2(Note.fromIndex(noteIndex).frequency, mod, env) + 4 -> Noise2(Note.fromIndex(noteIndex).frequency, mod, env) + 5 -> Pulse2(Note.fromIndex(noteIndex).frequency, mod, env) + 6 -> SawTooth2(Note.fromIndex(noteIndex).frequency, mod, env) + else -> Silence2(0f, null, null) + } + } + /** * tiny-sfx * @@ -314,7 +340,7 @@ class SfxLib( val configuration = track.split(" ").map { it.toInt(16) } val nbPattern = configuration.first() val (mod, modA, modB, _, _) = configuration.drop(1) - val (env, envA, envB, envC, envD) = configuration.drop(5) + val (env, envA, envB, envC, envD) = configuration.drop(6) val modulation = if (mod > 0) { if (mod == 1) { @@ -337,8 +363,8 @@ class SfxLib( // Map val patterns = patternsStr.take(nbPattern).mapIndexed { indexPattern, pattern -> val beatsStr = pattern.trim().split(" ") - val beats = convertToWaves(beatsStr, duration) - Pattern(indexPattern + 1, beats) + val beats = convertToSound(beatsStr, modulation, envelope) + Pattern2(indexPattern + 1, beats) }.associateBy { it.index } val patternOrder = patternsStr.drop(nbPattern).first() @@ -349,10 +375,10 @@ class SfxLib( patterns to patternsOrdered } else { tail = tail.drop(1) // drop configuration - emptyMap() to emptyList() + emptyMap() to emptyList() } - tracks.add(Track(patterns, patternsOrdered, envelope = envelope, modulation = modulation)) + tracks.add(Track(patterns, patternsOrdered, duration, envelope = envelope, modulation = modulation)) remainingTrack-- } while (remainingTrack > 0) @@ -408,6 +434,14 @@ class SfxLib( return beats.toList() } + private fun convertToSound(beatsStr: List, mod: Modulation?, env: Envelope?): List { + val beats = beatsStr + .asSequence() + .filter { it.isNotBlank() } + .map { beat -> convertToSound(beat, mod, env) } + return beats.toList() + } + private const val TINY_SFX_HEADER = "tiny-sfx" } } diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt index 402e5ecd..2ded62a3 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt @@ -55,9 +55,9 @@ sealed interface SoundGenerator { fun apply(index: Int): Float - fun generate(index: Int, buffer: FloatArray) { + fun generate(index: Int, beatDuration: Int): Float { val sample = apply(index) - buffer[index] = envelope?.apply(sample, index, buffer) ?: sample + return envelope?.apply(sample, index, beatDuration) ?: sample } } @@ -126,6 +126,14 @@ class SawTooth2( } } +class Silence2( + override val frequency: Float, + override val modulation: Modulation?, + override val envelope: Envelope?, +) : SoundGenerator { + override fun apply(index: Int): Float = 0f +} + class Noise2( override val frequency: Float, override val modulation: Modulation?, @@ -171,7 +179,7 @@ class Envelope( private val releaseDuration = (release * SAMPLE_RATE).toInt() - fun apply(sample: Float, index: Int, buffer: FloatArray): Float { + fun apply(sample: Float, index: Int, nbSample: Int): Float { // attack phase if (index <= endOfAttackIndex) { val percentAttack = index / endOfAttackIndex.toFloat() @@ -179,10 +187,10 @@ class Envelope( } else if (index > endOfAttackIndex && index <= endOfDecay) { // decay phase val percentDecay = (index - endOfAttackIndex) / decayDuration.toFloat() return sample * (1f - (1f - sustain) * percentDecay) - } else if (index > endOfDecay && index <= buffer.size - releaseDuration) { // sustain phase + } else if (index > endOfDecay && index <= nbSample - releaseDuration) { // sustain phase return sample * sustain } else { // release phase - val percentRelease = (index - (buffer.size - releaseDuration)) / releaseDuration.toFloat() + val percentRelease = (index - (nbSample - releaseDuration)) / releaseDuration.toFloat() return sample * (sustain * (1f - percentRelease)) } } diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Song.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Song.kt index 0f20bd00..3d1db1bc 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Song.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Song.kt @@ -1,11 +1,13 @@ package com.github.minigdx.tiny.sound import com.github.minigdx.tiny.Seconds +import com.github.minigdx.tiny.sound.SoundManager.Companion.SAMPLE_RATE /** * A pattern is a part of a song. A song is composed of multiple pattern played in a specific order. */ data class Pattern(val index: Int, val notes: List) +data class Pattern2(val index: Int, val notes: List) /** * A song is a group of pattern. @@ -32,13 +34,52 @@ data class Song(val bpm: Int, val volume: Float, val patterns: Map } data class Track( - val patterns: Map, - val music: List, + val patterns: Map, + val music: List, + val beatDuration: Seconds, val envelope: Envelope? = null, val modulation: Modulation? = null, -) +) { + + private val samplePerBeat = (beatDuration * SAMPLE_RATE).toInt() + private val samplePerPattern = samplePerBeat * 32 + + fun getSample(index: Int): Float { + val position = getPosition(index) ?: return 0f + + val (patternIdx, beatIdx, sampleIdx) = position + val pattern = music[patternIdx] + + val sample = pattern.notes[beatIdx].generate(sampleIdx, samplePerBeat) + return sample + } + + /** + * Regarding an absolute index of a sample, get the relative position into the track. + */ + fun getPosition(index: Int): Triple? { + val patternIndex = index / samplePerPattern + if (patternIndex >= music.size) return null + + val beatIndex = (index - patternIndex * samplePerPattern) / samplePerBeat + val pattern = music[patternIndex] + + if (beatIndex >= pattern.notes.size) return null + + val sampleIndex = (index - patternIndex * samplePerPattern - beatIndex * samplePerBeat) + + return Triple(patternIndex, beatIndex, sampleIndex) + } +} + class Song2( val bpm: Int, val volume: Float, val tracks: Array, -) +) { + val durationOfBeat: Seconds = (60f / bpm / 8f) + + val numberOfBeats = tracks.maxOf { it.music.size } * 32 + + val numberOfTotalSample = (durationOfBeat * SAMPLE_RATE * numberOfBeats).toLong() +} diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/SoundManager.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/SoundManager.kt index 6055b93b..43520188 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/SoundManager.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/SoundManager.kt @@ -79,6 +79,11 @@ abstract class SoundManager { playBuffer(mix, numberOfSamples) } + fun playSong(song: Song2) { + val (mix, numberOfSamples) = createBufferFromSong(song) + playBuffer(mix, numberOfSamples) + } + private val converter = SoundConverter() fun createBufferFromSong(song: Song): SoundBuffer { @@ -93,6 +98,23 @@ abstract class SoundManager { return result } + fun createBufferFromSong(song: Song2): SoundBuffer { + val numberOfSample = song.numberOfTotalSample + + val result = FloatArray(numberOfSample.toInt()) + + val divider = song.tracks.size.toFloat() + (0 until numberOfSample.toInt()).forEach { index -> + song.tracks.forEach { track: Track -> + val sample = track.getSample(index) * divider + result[index] += sample + } + + result[index] = result[index] / divider + } + return SoundBuffer(result, numberOfSample) + } + companion object { const val SAMPLE_RATE = 44100 diff --git a/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/sound/SongTest.kt b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/sound/SongTest.kt new file mode 100644 index 00000000..314aed4b --- /dev/null +++ b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/sound/SongTest.kt @@ -0,0 +1,54 @@ +package com.github.minigdx.tiny.sound + +import com.github.minigdx.tiny.sound.SoundManager.Companion.SAMPLE_RATE +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertNotNull +import kotlin.test.assertNull + +class SongTest { + + @Test + fun getPosition() { + val pattern = Pattern2(1, listOf(Sine2(0f, null, null))) + val track = Track(mapOf(1 to pattern), listOf(pattern, pattern, pattern), 1f, null, null) + + val position = track.getPosition(0) + assertNotNull(position) + val (patternIdx, beatIdx, sample) = position + assertEquals(0, patternIdx) + assertEquals(0, beatIdx) + assertEquals(0, sample) + } + + @Test + fun getPositionOutOfTrack() { + val pattern = Pattern2(1, listOf(Sine2(0f, null, null))) + val track = Track(mapOf(1 to pattern), listOf(pattern, pattern, pattern), 1f, null, null) + + val position = track.getPosition(Int.MAX_VALUE) + assertNull(position) + } + + @Test + fun getPositionInSecondPattern() { + val pattern = Pattern2(1, listOf(Sine2(0f, null, null), Sine2(0f, null, null))) + val track = Track(mapOf(1 to pattern), listOf(pattern, pattern, pattern), 1f, null, null) + + // 1 beats on the seconds pattern. + val index = (33.beats * track.beatDuration * SAMPLE_RATE).toInt() + val position = track.getPosition(index) + assertNotNull(position) + + val (patternIdx, beatIdx, sample) = position + + assertEquals(1, patternIdx) + assertEquals(1, beatIdx) + assertEquals(0, sample) + } + + val Int.beats: Int + get() { + return this + } +} diff --git a/tiny-engine/src/jvmMain/kotlin/com/DeleteMe.kt b/tiny-engine/src/jvmMain/kotlin/com/DeleteMe.kt index 4b4b4e71..b2bce1e9 100644 --- a/tiny-engine/src/jvmMain/kotlin/com/DeleteMe.kt +++ b/tiny-engine/src/jvmMain/kotlin/com/DeleteMe.kt @@ -1,55 +1,54 @@ -import com.github.minigdx.tiny.lua.Note -import com.github.minigdx.tiny.sound.Envelope -import com.github.minigdx.tiny.sound.Sine2 -import com.github.minigdx.tiny.sound.Sweep -import javax.sound.sampled.AudioFormat -import javax.sound.sampled.AudioSystem -import kotlin.experimental.and +import com.github.minigdx.tiny.input.InputHandler +import com.github.minigdx.tiny.input.Key +import com.github.minigdx.tiny.input.TouchSignal +import com.github.minigdx.tiny.input.Vector2 +import com.github.minigdx.tiny.lua.SfxLib +import com.github.minigdx.tiny.platform.glfw.JavaMidiSoundManager fun main() { val sampleRate = 44100f // Fréquence d'échantillonnage en Hz val duration = 0.2 // Durée en secondes - val numSamples = (sampleRate * duration).toInt() - val audioBuffer = FloatArray(numSamples) - - val mod = Sweep(500) - val env = Envelope(0.0f, 0.00f, 0.8f, 0.01f) - - var buffer = FloatArray(0) - - Note.values().forEachIndexed { i, note -> - (0 until numSamples).forEach { index -> - Sine2( - note.frequency, - modulation = mod, - envelope = env, - ).generate(index, audioBuffer) - } - - buffer = buffer.copyOf(buffer.size + audioBuffer.size) - audioBuffer.copyInto(buffer, i * audioBuffer.size, 0, audioBuffer.size) - } - - // Jouer le son - playSound(buffer, sampleRate) -} - -fun playSound(buffer: FloatArray, sampleRate: Float) { - val format = AudioFormat(sampleRate, 16, 1, true, false) - val line = AudioSystem.getSourceDataLine(format) - - line.open(format) - line.start() - - val byteBuffer = ByteArray(buffer.size * 2) - for (i in buffer.indices) { - val sample = (buffer[i] * Short.MAX_VALUE).toInt().toShort() - byteBuffer[i * 2] = (sample and 0xFF).toByte() - byteBuffer[i * 2 + 1] = ((sample.toInt() ushr 8) and 0xFF).toByte() - } - - line.write(byteBuffer, 0, byteBuffer.size) - line.drain() - line.close() + val score = """tiny-sfx 80 255 + |02 00 00 00 00 00 01 01 00 FF 01 + |011FFF 011FFF 011FFF 011FFF 011FFF 011FFF + |021FFF 0112FF 021FFF 0112FF 0212FF + |1 1 1 + |00 00 00 00 00 00 00 00 00 00 00 + |00 00 00 00 00 00 00 00 00 00 00 + |00 00 00 00 00 00 00 00 00 00 00 + """.trimMargin() + + val song = SfxLib.convertScoreToSong2(score) + val javaMidiSoundManager = JavaMidiSoundManager() + javaMidiSoundManager.initSoundManager( + object : InputHandler { + override fun isKeyJustPressed(key: Key): Boolean { + TODO("Not yet implemented") + } + + override fun isKeyPressed(key: Key): Boolean { + TODO("Not yet implemented") + } + + override fun isTouched(signal: TouchSignal): Vector2? { + TODO("Not yet implemented") + } + + override fun isJustTouched(signal: TouchSignal): Vector2? { + TODO("Not yet implemented") + } + + override val currentTouch: Vector2 + get() = TODO("Not yet implemented") + }, + ) + + println("beats: " + song.numberOfBeats) + println("samples: " + song.numberOfTotalSample) + + javaMidiSoundManager.playSong(song) + + Thread.sleep(5000) + javaMidiSoundManager.destroy() } From 58236c7f97353bd9b0317e12d0b8981620d85431 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Tue, 27 Feb 2024 23:52:15 +0100 Subject: [PATCH 21/46] Updating the Envelope in the SFX editor is now changing the sound effect. --- tiny-cli/src/jvmMain/resources/sfx/game.lua | 113 ++++++++++-------- .../src/jvmMain/resources/sfx/widgets.lua | 42 ------- .../github/minigdx/tiny/engine/GameEngine.kt | 6 +- .../minigdx/tiny/engine/GameResourceAccess.kt | 4 +- .../com/github/minigdx/tiny/lua/SfxLib.kt | 99 +++++++++++---- .../com/github/minigdx/tiny/sound/Effect.kt | 67 +++++++++-- .../com/github/minigdx/tiny/sound/Song.kt | 42 +++++++ .../com/github/minigdx/tiny/lua/GfxLibTest.kt | 4 +- .../com/github/minigdx/tiny/lua/SfxLibTest.kt | 4 +- .../com/github/minigdx/tiny/lua/StdLibTest.kt | 4 +- .../platform/webgl/PicoAudioSoundMananger.kt | 2 +- .../platform/glfw/JavaMidiSoundManager.kt | 2 +- 12 files changed, 251 insertions(+), 138 deletions(-) diff --git a/tiny-cli/src/jvmMain/resources/sfx/game.lua b/tiny-cli/src/jvmMain/resources/sfx/game.lua index 68d77ec6..29b8d0ae 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/game.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/game.lua @@ -48,7 +48,6 @@ local window = { height = 0 } - function to_hex(number) local hexString = string.format("%X", number) @@ -74,7 +73,7 @@ local editor = { patterns_fx_widgets = {}, -- all wdgets used for the fx editor fader_widgets = {}, -- all faders (used only in the sound editor mode) wave_widgets = {}, -- all waves button (used only in the sound editor mode) - tabs_widgets = {} -- all the tabs + tabs_widgets = {}, -- all the tab } --[[ @@ -104,11 +103,11 @@ editor.switch_to_mode = function(mode) end editor.activate_pattern = function(index, data) - local beats = data["patterns"][index] + local beats = data["tracks"][1]["patterns"][index] if beats == nil then beats = {} - data["patterns"][index] = beats + data["tracks"][1]["patterns"][index] = beats end for k, f in ipairs(editor.fader_widgets) do @@ -125,7 +124,7 @@ editor.activate_pattern = function(index, data) end for k, f in ipairs(editor.patterns_editor_widgets) do - local pattern_id = data["music"][k] + local pattern_id = data["tracks"][1]["music"][k] if pattern_id ~= nil then f.value = pattern_id end @@ -134,47 +133,54 @@ editor.activate_pattern = function(index, data) end editor.generate_score = function(content, pattern_selector) - local p = content["patterns"] local v = math.floor((editor.volume_counter.value * 25.5)) local bpm = editor.bpm_counter.value - local score = "tiny-sfx " .. #p .. " " .. bpm .. " " .. v .. "\n" - - -- write patterns - for patterns in all(content["patterns"]) do - local strip = "" - for index = 1, 32 do - local beatStr = "" - local beat = patterns[index] - if beat == nil then - beatStr = beatStr .. "0000FF" - else - beatStr = beatStr .. to_hex(beat.index) .. to_hex(beat.note) .. to_hex(beat.volume) - end - strip = strip .. beatStr .. " " - end - -- - score = score .. strip .. "\n" - end - - local music = "not-set" - -- write patterns order - if pattern_selector == nil then - local stop = false - music = "" - for w in all(editor.patterns_editor_widgets) do - if w.value == 0 then - stop = true + local score = "tiny-sfx " .. bpm .. " " .. v .. "\n" + + local tracks = content["tracks"] + for t in all(tracks) do + local p = t["patterns"] + local track = "" .. #p .. " 01 " .. to_hex(t["env"]["attack"]) .. " " .. to_hex(t["env"]["decay"]) .. " " .. + to_hex(t["env"]["sustain"]) .. " " .. to_hex(t["env"]["release"]) .. " 00 00 00 00 00\n" + + -- write patterns + for pattern in all(p) do + local strip = "" + for index = 1, 32 do + local beatStr = "" + local beat = pattern[index] + if beat == nil then + beatStr = beatStr .. "0000FF" + else + beatStr = beatStr .. to_hex(beat.index) .. to_hex(beat.note) .. to_hex(beat.volume) + end + strip = strip .. beatStr .. " " end - if (not stop) then - music = music .. w.value .. " " + -- + track = track .. strip .. "\n" + + local music = "not-set" + -- write patterns order + if pattern_selector == nil then + local stop = false + music = "" + for w in all(editor.patterns_editor_widgets) do + if w.value == 0 then + stop = true + end + if (not stop) then + music = music .. w.value .. " " + end + end + else + music = pattern_selector end + + track = track .. music .. "\n" end - else - music = pattern_selector + score = score .. track end - - score = score .. music return score end @@ -323,7 +329,7 @@ editor.create_widgets = function() local on_fader_update = function(fader, value) fader.value = math.ceil(value) fader.tip_color = current_wave.color - local current_pattern = editor.active_tab.content["patterns"][editor.pattern_counter.value] + local current_pattern = editor.active_tab.content["tracks"][1]["patterns"][editor.pattern_counter.value] if fader.value == 0 then current_pattern[fader.index] = { @@ -388,12 +394,12 @@ editor.create_widgets = function() -- music buttons local on_decrease_pattern = function(counter) counter.value = math.max(counter.value - 1, 1) - editor.active_tab.content["music"][counter.index] = counter.value + editor.active_tab.content["tracks"][1]["music"][counter.index] = counter.value end - + local on_increase_pattern = function(counter) - counter.value = math.min(counter.value + 1, #editor.active_tab.content["patterns"]) - editor.active_tab.content["music"][counter.index] = counter.value + counter.value = math.min(counter.value + 1, #editor.active_tab.content["tracks"][1]["patterns"]) + editor.active_tab.content["tracks"][1]["music"][counter.index] = counter.value end for x = 1, 8 do @@ -419,16 +425,23 @@ editor.create_widgets = function() -- fx local on_envelop_update = function(env, attack, decay, sustain, release) + editor.active_tab.content["tracks"][env.index]["env"].attack = attack * 255 + editor.active_tab.content["tracks"][env.index]["env"].decay = decay * 255 + editor.active_tab.content["tracks"][env.index]["env"].sustain = sustain * 255 + editor.active_tab.content["tracks"][env.index]["env"].release = release * 255 end + local env = widgets.createEnvelop({ x = 100, y = 30, + index = 1, on_update = on_envelop_update }) table.insert(editor.patterns_fx_widgets, env) - + local on_update_attack = function(knob) env.attack = knob.value + on_envelop_update(env, env.attack, env.decay, env.sustain, env.release) end local attack = widgets.createKnob({ @@ -442,8 +455,9 @@ editor.create_widgets = function() local on_update_decay = function(knob) env.decay = knob.value + on_envelop_update(env, env.attack, env.decay, env.sustain, env.release) end - + local decay = widgets.createKnob({ x = env.x + (16 + 16), y = env.y + env.height + 4, @@ -455,8 +469,9 @@ editor.create_widgets = function() local on_update_sustain = function(knob) env.sustain = knob.value + on_envelop_update(env, env.attack, env.decay, env.sustain, env.release) end - + local sustain = widgets.createKnob({ x = env.x + (16 + 16) * 2, y = env.y + env.height + 4, @@ -468,8 +483,9 @@ editor.create_widgets = function() local on_update_release = function(knob) env.release = knob.value + on_envelop_update(env, env.attack, env.decay, env.sustain, env.release) end - + local on_update_release = widgets.createKnob({ x = env.x + (16 + 16) * 3, y = env.y + env.height + 4, @@ -479,7 +495,6 @@ editor.create_widgets = function() }) table.insert(editor.patterns_fx_widgets, on_update_release) - local c_env = widgets.createCheckbox({ x = 40, y = 30, diff --git a/tiny-cli/src/jvmMain/resources/sfx/widgets.lua b/tiny-cli/src/jvmMain/resources/sfx/widgets.lua index d2512785..f7799409 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/widgets.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/widgets.lua @@ -216,21 +216,11 @@ factory.on_update = function(x, y) e.attack_end_x = e.attack_start_x + e.width * e.attack e.attack_end_y = e.attack_start_y - e.height - e.is_over_attack = math.dst2(x, y, e.attack_end_x, e.attack_end_y) <= 4 * 4 - e.decay_end_x = e.attack_end_x + e.width * e.decay e.decay_end_y = e.y + (1 - e.sustain) * e.height - e.is_over_decay = math.dst2(x, y, e.decay_end_x, e.decay_end_y) <= 4 * 4 - e.release_start_x = e.x + e.width - e.width * e.release e.release_start_y = e.y + (1 - e.sustain) * e.height - e.is_over_release = math.dst2(x, y, e.release_start_x, e.release_start_y) <= 4 * 4 - - local sx = e.decay_end_x + (e.release_start_x - e.decay_end_x) * 0.5 - local sy = e.y + (1 - e.sustain) * e.height - - e.is_over_sustain = math.dst2(x, y, sx, sy) <= 4 * 4 end end @@ -259,38 +249,6 @@ factory.on_click = function(x, y) end end - for e in all(envelops) do - if e.enabled then - if e.is_over_attack then - local dst = math.min(math.max(0, x - e.x), e.width) - local attack = dst / e.width - - e.attack = attack - elseif e.is_over_decay then - local dst = math.min(math.max(0, x - e.attack_end_x), e.width) - local decay = dst / e.width - - e.decay = decay - elseif e.is_over_sustain then - local dst = math.min(math.max(0, y - e.y), e.height) - local sustain = 1 - dst / e.height - - e.sustain = sustain - elseif e.is_over_release then - local dst = math.min(math.max(0, e.x + e.width - x), e.width) - local release = dst / e.width - - e.release = release - end - - if e.is_over_attack or e.is_over_decay or e.is_over_sustain or e.is_over_release then - if e.on_update ~= nil then - e.on_update(e, e.attack, e.decay, e.sustain, e.release) - end - end - end - end - for k in all(knobs) do if inside_widget(k, x, y) or k.update_in_progress then local dst = k.y + 8 - y diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameEngine.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameEngine.kt index d3b70b87..0dde6b88 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameEngine.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameEngine.kt @@ -24,7 +24,7 @@ import com.github.minigdx.tiny.resources.ResourceType.GAME_SOUND import com.github.minigdx.tiny.resources.ResourceType.GAME_SPRITESHEET import com.github.minigdx.tiny.resources.Sound import com.github.minigdx.tiny.resources.SpriteSheet -import com.github.minigdx.tiny.sound.Song +import com.github.minigdx.tiny.sound.Song2 import com.github.minigdx.tiny.sound.SoundManager import com.github.minigdx.tiny.sound.WaveGenerator import kotlinx.coroutines.CoroutineScope @@ -97,7 +97,7 @@ class GameEngine( private val notes = mutableListOf() - private var song: Song? = null + private var song: Song2? = null private var longuestDuration: Seconds = 0f private lateinit var scripts: Array @@ -490,7 +490,7 @@ class GameEngine( notes.add(wave) } - override fun sfx(song: Song) { + override fun sfx(song: Song2) { this.song = song } diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameResourceAccess.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameResourceAccess.kt index 1b547275..70277d20 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameResourceAccess.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameResourceAccess.kt @@ -5,7 +5,7 @@ import com.github.minigdx.tiny.resources.GameLevel import com.github.minigdx.tiny.resources.GameScript import com.github.minigdx.tiny.resources.Sound import com.github.minigdx.tiny.resources.SpriteSheet -import com.github.minigdx.tiny.sound.Song +import com.github.minigdx.tiny.sound.Song2 import com.github.minigdx.tiny.sound.WaveGenerator sealed interface DebugAction @@ -56,7 +56,7 @@ interface GameResourceAccess { */ fun note(wave: WaveGenerator) - fun sfx(song: Song) + fun sfx(song: Song2) /** * Find a script by its name. diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt index cfcb33a4..bb1f3623 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt @@ -215,37 +215,79 @@ class SfxLib( return note } + private fun SoundGenerator.toLuaTable(): LuaTable { + val note = LuaTable() + note.set("type", this.name) + note.set("index", this.index) + note.set("note", this.note.index) + note.set("volume", (this.volume * 255).toInt()) + return note + } + override fun call(arg: LuaValue): LuaValue { val score = arg.optjstring(null) ?: return NIL - val song = convertScoreToSong(score) + val song = convertScoreToSong2(score) + + val tracks = LuaTable() + song.tracks.forEach { t -> + val track = LuaTable() - val patterns = LuaTable() - song.patterns.forEach { (index, pattern) -> - val notes = LuaTable() - pattern.notes.forEach { note -> - notes.insert(0, note.toLuaTable()) + val env = LuaTable() + env["attack"] = valueOf(((t.envelope?.attack ?: 0f) * 255).toInt()) + env["decay"] = valueOf(((t.envelope?.decay ?: 0f) * 255).toInt()) + env["sustain"] = valueOf(((t.envelope?.sustain ?: 0f) * 255).toInt()) + env["release"] = valueOf(((t.envelope?.release ?: 0f) * 255).toInt()) + + track["env"] = env + + // TODO: put the modulation parameters + + val patterns = LuaTable() + t.patterns.forEach { (index, pattern) -> + val notes = LuaTable() + pattern.notes.forEach { note -> + notes.insert(0, note.toLuaTable()) + } + patterns.insert(index, notes) } - patterns.insert(index, notes) - } + track["patterns"] = patterns + + val music = LuaTable() + t.music.map { it.index }.forEach { + music.insert(0, valueOf(it)) + } + track["music"] = music - val music = LuaTable() - song.music.map { it.index }.forEach { - music.insert(0, valueOf(it)) + tracks.insert(0, track) } val result = LuaTable() result["bpm"] = valueOf(song.bpm) result["volume"] = valueOf(floor(song.volume.toDouble() * 255)) - result["patterns"] = patterns - result["music"] = music + result["tracks"] = tracks + return result } } inner class emptyScore : ZeroArgFunction() { override fun call(): LuaValue { - val pattern = Pattern(1, emptyList()) - val song = Song(120, 0.5f, mapOf(1 to pattern), listOf(pattern)) + val pattern = Pattern2(1, emptyList()) + val track = Track( + mapOf(1 to pattern), + listOf(pattern), + (60f / 120 / 8f), + Envelope(0.1f, 0f, 1f, 0.1f), + null, + ) + val emptyTrack = Track( + emptyMap(), + emptyList(), + (60f / 120 / 8f), + Envelope(0.1f, 0f, 1f, 0.1f), + null, + ) + val song = Song2(120, 0.5f, arrayOf(track, emptyTrack, emptyTrack, emptyTrack)) return valueOf(song.toString()) } } @@ -254,7 +296,7 @@ class SfxLib( override fun call(arg1: LuaValue, arg2: LuaValue): LuaValue { val score = arg1.optjstring("")!! - val waves = convertScoreToSong(score) + val waves = convertScoreToSong2(score) resourceAccess.sfx(waves) return NIL } @@ -292,13 +334,13 @@ class SfxLib( val volume = note.substring(4, 6).toInt(16) / 255f return when (wave) { - 1 -> Sine2(Note.fromIndex(noteIndex).frequency, mod, env) - 2 -> Square2(Note.fromIndex(noteIndex).frequency, mod, env) - 3 -> Triangle2(Note.fromIndex(noteIndex).frequency, mod, env) - 4 -> Noise2(Note.fromIndex(noteIndex).frequency, mod, env) - 5 -> Pulse2(Note.fromIndex(noteIndex).frequency, mod, env) - 6 -> SawTooth2(Note.fromIndex(noteIndex).frequency, mod, env) - else -> Silence2(0f, null, null) + 1 -> Sine2(Note.fromIndex(noteIndex), mod, env, volume) + 2 -> Square2(Note.fromIndex(noteIndex), mod, env, volume) + 3 -> Triangle2(Note.fromIndex(noteIndex), mod, env, volume) + 4 -> Noise2(Note.fromIndex(noteIndex), mod, env, volume) + 5 -> Pulse2(Note.fromIndex(noteIndex), mod, env, volume) + 6 -> SawTooth2(Note.fromIndex(noteIndex), mod, env, volume) + else -> Silence2(Note.C0, null, null, volume) } } @@ -339,8 +381,8 @@ class SfxLib( val track = tail.first() val configuration = track.split(" ").map { it.toInt(16) } val nbPattern = configuration.first() - val (mod, modA, modB, _, _) = configuration.drop(1) - val (env, envA, envB, envC, envD) = configuration.drop(6) + val (env, envA, envB, envC, envD) = configuration.drop(1) + val (mod, modA, modB, _, _) = configuration.drop(6) val modulation = if (mod > 0) { if (mod == 1) { @@ -353,7 +395,12 @@ class SfxLib( } val envelope = if (env > 0) { - Envelope(envA / 255f, envB / 255f, envC / 255f, envD / 255f) + Envelope( + attack = (envA / 255f) * duration, + decay = (envB / 255f) * duration, + sustain = envC / 255f, + release = (envD / 255f) * duration, + ) } else { null } diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt index 2ded62a3..8a4f5523 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt @@ -3,6 +3,7 @@ package com.github.minigdx.tiny.sound import com.github.minigdx.tiny.Frequency import com.github.minigdx.tiny.Percent import com.github.minigdx.tiny.Seconds +import com.github.minigdx.tiny.lua.Note import com.github.minigdx.tiny.sound.SoundManager.Companion.SAMPLE_RATE import com.github.minigdx.tiny.sound.WaveGenerator.Companion.TWO_PI import kotlin.math.abs @@ -45,6 +46,14 @@ sealed interface SoundGenerator { val frequency: Float + val note: Note + + val index: Int + + val volume: Float + + val name: String + fun angle(index: Int): Float { val t = index / SAMPLE_RATE.toFloat() @@ -62,20 +71,32 @@ sealed interface SoundGenerator { } class Sine2( - override var frequency: Float, + override val note: Note, override val modulation: Modulation? = null, override val envelope: Envelope? = null, + override val volume: Float, ) : SoundGenerator { + + override val index: Int = 1 + override val name: String = "sine" + override val frequency: Float = note.frequency + override fun apply(index: Int): Float { - return sin(angle(index)) * 0.7f + return sin(angle(index)) * 0.7f * volume } } class Square2( - override val frequency: Float, + override val note: Note, override val modulation: Modulation?, override val envelope: Envelope?, + override val volume: Float, ) : SoundGenerator { + + override val index: Int = 2 + override val name: String = "square" + override val frequency: Float = note.frequency + override fun apply(index: Int): Float { val value = sin(angle(index)) return if (value > 0f) { @@ -87,10 +108,16 @@ class Square2( } class Triangle2( - override val frequency: Float, + override val note: Note, override val modulation: Modulation?, override val envelope: Envelope?, + override val volume: Float, ) : SoundGenerator { + + override val index: Int = 3 + override val name: String = "triangle" + override val frequency: Float = note.frequency + override fun apply(index: Int): Float { val angle: Float = sin(angle(index)) val phase = (angle + 1.0) % 1.0 // Normalize sinValue to the range [0, 1] @@ -99,10 +126,16 @@ class Triangle2( } class Pulse2( - override val frequency: Float, + override val note: Note, override val modulation: Modulation?, override val envelope: Envelope?, + override val volume: Float, ) : SoundGenerator { + + override val index: Int = 5 + override val name: String = "pulse" + override val frequency: Float = note.frequency + override fun apply(index: Int): Float { val angle = angle(index) @@ -115,10 +148,16 @@ class Pulse2( } class SawTooth2( - override val frequency: Float, + override val note: Note, override val modulation: Modulation?, override val envelope: Envelope?, + override val volume: Float, ) : SoundGenerator { + + override val index: Int = 6 + override val name: String = "sawtooth" + override val frequency: Float = note.frequency + override fun apply(index: Int): Float { val angle: Float = sin(angle(index)) val phase = (angle * 2f) - 1f @@ -127,18 +166,30 @@ class SawTooth2( } class Silence2( - override val frequency: Float, + override val note: Note, override val modulation: Modulation?, override val envelope: Envelope?, + override val volume: Float, ) : SoundGenerator { + + override val index: Int = 0 + override val name: String = "silence" + override val frequency: Float = note.frequency + override fun apply(index: Int): Float = 0f } class Noise2( - override val frequency: Float, + override val note: Note, override val modulation: Modulation?, override val envelope: Envelope?, + override val volume: Float, ) : SoundGenerator { + + override val index: Int = 4 + override val name: String = "noise" + override val frequency: Float = note.frequency + override fun apply(index: Int): Float { val white = Random.nextFloat() * 2 - 1 val brown = (lastNoise + (0.02f * white)) / 1.02f diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Song.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Song.kt index 3d1db1bc..5a0b5a1b 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Song.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Song.kt @@ -82,4 +82,46 @@ class Song2( val numberOfBeats = tracks.maxOf { it.music.size } * 32 val numberOfTotalSample = (durationOfBeat * SAMPLE_RATE * numberOfBeats).toLong() + + private fun Float.toHex(): String { + val r = (this * 255).toInt().toString(16) + return if (r.length == 1) { + "0$r" + } else { + r + }.uppercase() + } + + override fun toString(): String { + val header = "tiny-sfx $bpm ${(volume * 255).toInt()}\n" + + val tracks = tracks.map { track -> + + var trackHeader = "${track.patterns.size} " + trackHeader += if (track.envelope == null) { + "00 00 00 00 00" + } else { + "01 " + + "${track.envelope.attack.toHex()} " + + "${track.envelope.decay.toHex()} " + + "${track.envelope.sustain.toHex()} " + + "${track.envelope.release.toHex()} " + } + // TODO: support modulation + trackHeader += "00 00 00 00 00" + + val patternsInOrder = track.patterns.map { it }.sortedBy { it.key }.map { it.value } + val patternsStr = patternsInOrder.joinToString("\n") { pattern -> + pattern.notes.joinToString(" ") { wave -> + wave.index.toString(16) + + wave.note.index.toString(16) + + (wave.volume * 255).toInt().toString(16) + } + } + + val patternOrder = track.music.map { it.index }.joinToString(" ") + trackHeader + ("\n" + patternsStr + "\n" + patternOrder).ifBlank { "" } + }.joinToString("\n") + return header + tracks + } } diff --git a/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/GfxLibTest.kt b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/GfxLibTest.kt index 5cc04679..31338845 100644 --- a/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/GfxLibTest.kt +++ b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/GfxLibTest.kt @@ -7,7 +7,7 @@ import com.github.minigdx.tiny.resources.GameLevel import com.github.minigdx.tiny.resources.GameScript import com.github.minigdx.tiny.resources.Sound import com.github.minigdx.tiny.resources.SpriteSheet -import com.github.minigdx.tiny.sound.Song +import com.github.minigdx.tiny.sound.Song2 import com.github.minigdx.tiny.sound.WaveGenerator import org.luaj.vm2.LuaValue.Companion.valueOf import kotlin.test.Test @@ -25,7 +25,7 @@ class GfxLibTest { override fun script(name: String): GameScript? = null override fun note(wave: WaveGenerator) = Unit - override fun sfx(song: Song) = Unit + override fun sfx(song: Song2) = Unit } @Test diff --git a/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/SfxLibTest.kt b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/SfxLibTest.kt index 0a0a5e9c..ab3b20d0 100644 --- a/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/SfxLibTest.kt +++ b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/SfxLibTest.kt @@ -12,7 +12,7 @@ import com.github.minigdx.tiny.resources.Sound import com.github.minigdx.tiny.resources.SpriteSheet import com.github.minigdx.tiny.sound.SilenceWave import com.github.minigdx.tiny.sound.SineWave -import com.github.minigdx.tiny.sound.Song +import com.github.minigdx.tiny.sound.Song2 import com.github.minigdx.tiny.sound.WaveGenerator import kotlin.test.Test import kotlin.test.assertEquals @@ -37,7 +37,7 @@ class SfxLibTest { override fun sound(index: Int): Sound? = null override fun script(name: String): GameScript? = null override fun note(wave: WaveGenerator) = Unit - override fun sfx(song: Song) = Unit + override fun sfx(song: Song2) = Unit } @Test diff --git a/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/StdLibTest.kt b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/StdLibTest.kt index 8ca507df..f4434ac9 100644 --- a/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/StdLibTest.kt +++ b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/StdLibTest.kt @@ -11,7 +11,7 @@ import com.github.minigdx.tiny.resources.GameScript import com.github.minigdx.tiny.resources.ResourceType import com.github.minigdx.tiny.resources.Sound import com.github.minigdx.tiny.resources.SpriteSheet -import com.github.minigdx.tiny.sound.Song +import com.github.minigdx.tiny.sound.Song2 import com.github.minigdx.tiny.sound.WaveGenerator import org.luaj.vm2.LuaValue.Companion.valueOf import org.luaj.vm2.LuaValue.Companion.varargsOf @@ -39,7 +39,7 @@ class StdLibTest { override fun sound(index: Int): Sound? = null override fun script(name: String): GameScript? = null override fun note(wave: WaveGenerator) = Unit - override fun sfx(song: Song) = Unit + override fun sfx(song: Song2) = Unit } private val gameOptions = GameOptions( diff --git a/tiny-engine/src/jsMain/kotlin/com/github/minigdx/tiny/platform/webgl/PicoAudioSoundMananger.kt b/tiny-engine/src/jsMain/kotlin/com/github/minigdx/tiny/platform/webgl/PicoAudioSoundMananger.kt index bffd35e3..5d3a555e 100644 --- a/tiny-engine/src/jsMain/kotlin/com/github/minigdx/tiny/platform/webgl/PicoAudioSoundMananger.kt +++ b/tiny-engine/src/jsMain/kotlin/com/github/minigdx/tiny/platform/webgl/PicoAudioSoundMananger.kt @@ -56,7 +56,7 @@ class PicoAudioSoundMananger : SoundManager() { override suspend fun createSfxSound(bytes: ByteArray): Sound { val score = bytes.decodeToString() - val song = SfxLib.convertScoreToSong(score) + val song = SfxLib.convertScoreToSong2(score) val (buf, length) = createBufferFromSong(song) val buffer = convertBuffer(buf, length) return SfxSound(buffer, this) diff --git a/tiny-engine/src/jvmMain/kotlin/com/github/minigdx/tiny/platform/glfw/JavaMidiSoundManager.kt b/tiny-engine/src/jvmMain/kotlin/com/github/minigdx/tiny/platform/glfw/JavaMidiSoundManager.kt index c7bf1853..8be4958e 100644 --- a/tiny-engine/src/jvmMain/kotlin/com/github/minigdx/tiny/platform/glfw/JavaMidiSoundManager.kt +++ b/tiny-engine/src/jvmMain/kotlin/com/github/minigdx/tiny/platform/glfw/JavaMidiSoundManager.kt @@ -123,7 +123,7 @@ class JavaMidiSoundManager : SoundManager() { override suspend fun createSfxSound(bytes: ByteArray): Sound { val score = bytes.decodeToString() - val waves = SfxLib.convertScoreToSong(score) + val waves = SfxLib.convertScoreToSong2(score) val (buf, length) = createBufferFromSong(waves) val buffer = convertBuffer(buf, length) From e332066b47eeb953765ac8d503fb3b334398e7c8 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Wed, 28 Feb 2024 00:51:19 +0100 Subject: [PATCH 22/46] Allow to stop/play a new sound before the end of the previous one in the SFX editor. --- .../kotlin/com/github/minigdx/tiny/sound/SoundManager.kt | 6 ------ .../kotlin/com/github/minigdx/tiny/sound/SongTest.kt | 7 ++++--- tiny-engine/src/jvmMain/kotlin/com/DeleteMe.kt | 3 --- .../minigdx/tiny/platform/glfw/JavaMidiSoundManager.kt | 7 ++++++- 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/SoundManager.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/SoundManager.kt index 43520188..4d8d5b06 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/SoundManager.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/SoundManager.kt @@ -73,12 +73,6 @@ abstract class SoundManager { } } - fun playSong(song: Song) { - val (mix, numberOfSamples) = createBufferFromSong(song) - - playBuffer(mix, numberOfSamples) - } - fun playSong(song: Song2) { val (mix, numberOfSamples) = createBufferFromSong(song) playBuffer(mix, numberOfSamples) diff --git a/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/sound/SongTest.kt b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/sound/SongTest.kt index 314aed4b..e9600b3e 100644 --- a/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/sound/SongTest.kt +++ b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/sound/SongTest.kt @@ -1,5 +1,6 @@ package com.github.minigdx.tiny.sound +import com.github.minigdx.tiny.lua.Note import com.github.minigdx.tiny.sound.SoundManager.Companion.SAMPLE_RATE import kotlin.test.Test import kotlin.test.assertEquals @@ -10,7 +11,7 @@ class SongTest { @Test fun getPosition() { - val pattern = Pattern2(1, listOf(Sine2(0f, null, null))) + val pattern = Pattern2(1, listOf(Sine2(Note.C0, null, null, 1f))) val track = Track(mapOf(1 to pattern), listOf(pattern, pattern, pattern), 1f, null, null) val position = track.getPosition(0) @@ -23,7 +24,7 @@ class SongTest { @Test fun getPositionOutOfTrack() { - val pattern = Pattern2(1, listOf(Sine2(0f, null, null))) + val pattern = Pattern2(1, listOf(Sine2(Note.C0, null, null, 1f))) val track = Track(mapOf(1 to pattern), listOf(pattern, pattern, pattern), 1f, null, null) val position = track.getPosition(Int.MAX_VALUE) @@ -32,7 +33,7 @@ class SongTest { @Test fun getPositionInSecondPattern() { - val pattern = Pattern2(1, listOf(Sine2(0f, null, null), Sine2(0f, null, null))) + val pattern = Pattern2(1, listOf(Sine2(Note.C0, null, null, 1f), Sine2(Note.C0, null, null, 1f))) val track = Track(mapOf(1 to pattern), listOf(pattern, pattern, pattern), 1f, null, null) // 1 beats on the seconds pattern. diff --git a/tiny-engine/src/jvmMain/kotlin/com/DeleteMe.kt b/tiny-engine/src/jvmMain/kotlin/com/DeleteMe.kt index b2bce1e9..d33492a0 100644 --- a/tiny-engine/src/jvmMain/kotlin/com/DeleteMe.kt +++ b/tiny-engine/src/jvmMain/kotlin/com/DeleteMe.kt @@ -6,9 +6,6 @@ import com.github.minigdx.tiny.lua.SfxLib import com.github.minigdx.tiny.platform.glfw.JavaMidiSoundManager fun main() { - val sampleRate = 44100f // Fréquence d'échantillonnage en Hz - val duration = 0.2 // Durée en secondes - val score = """tiny-sfx 80 255 |02 00 00 00 00 00 01 01 00 FF 01 |011FFF 011FFF 011FFF 011FFF 011FFF 011FFF diff --git a/tiny-engine/src/jvmMain/kotlin/com/github/minigdx/tiny/platform/glfw/JavaMidiSoundManager.kt b/tiny-engine/src/jvmMain/kotlin/com/github/minigdx/tiny/platform/glfw/JavaMidiSoundManager.kt index 8be4958e..3a702534 100644 --- a/tiny-engine/src/jvmMain/kotlin/com/github/minigdx/tiny/platform/glfw/JavaMidiSoundManager.kt +++ b/tiny-engine/src/jvmMain/kotlin/com/github/minigdx/tiny/platform/glfw/JavaMidiSoundManager.kt @@ -105,8 +105,13 @@ class JavaMidiSoundManager : SoundManager() { while (isActive) { val nextBuffer = bufferQueue.take() + if (notesLine.isActive) { + notesLine.close() + notesLine.open() + notesLine.start() + } if (isActive) { - notesLine.write(nextBuffer, 0, nextBuffer.size) + Thread { notesLine.write(nextBuffer, 0, nextBuffer.size) }.start() } } notesLine.close() From 1a0b1f9bc35ddc7926196489a7e88a89539440e7 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Wed, 28 Feb 2024 01:28:16 +0100 Subject: [PATCH 23/46] Fix tests --- .../kotlin/com/github/minigdx/tiny/lua/SfxLibTest.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/SfxLibTest.kt b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/SfxLibTest.kt index ab3b20d0..772849ce 100644 --- a/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/SfxLibTest.kt +++ b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/SfxLibTest.kt @@ -103,15 +103,19 @@ class SfxLibTest { fun toTable() { val lib = SfxLib(mockResources, false) val table = lib.toTable().call(lib.emptyScore().call()) - val r = table["patterns"][1].checktable()!!.keys() + val r = table["tracks"][1]["patterns"][1].checktable()!!.keys() assertTrue(r.isEmpty()) } @Test fun createEmptyScore() { - val expectedScore = """tiny-sfx 1 120 127 + val expectedScore = """tiny-sfx 120 127 + |1 01 19 00 FF 19 00 00 00 00 00 | |1 + |0 01 19 00 FF 19 00 00 00 00 00 + |0 01 19 00 FF 19 00 00 00 00 00 + |0 01 19 00 FF 19 00 00 00 00 00 """.trimMargin() val score = SfxLib(mockResources, false).emptyScore().call() From f37d80774a7a3ca8eaa7e73c85a4ca274b090e58 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Wed, 28 Feb 2024 09:32:19 +0100 Subject: [PATCH 24/46] Add modulation parameters --- tiny-cli/src/jvmMain/resources/sfx/game.lua | 59 ++++++++++++++++++- .../src/jvmMain/resources/sfx/widgets.lua | 2 +- 2 files changed, 58 insertions(+), 3 deletions(-) diff --git a/tiny-cli/src/jvmMain/resources/sfx/game.lua b/tiny-cli/src/jvmMain/resources/sfx/game.lua index 29b8d0ae..1a6e49d2 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/game.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/game.lua @@ -486,14 +486,14 @@ editor.create_widgets = function() on_envelop_update(env, env.attack, env.decay, env.sustain, env.release) end - local on_update_release = widgets.createKnob({ + local release = widgets.createKnob({ x = env.x + (16 + 16) * 3, y = env.y + env.height + 4, label = "release", on_update = on_update_release, value = env.release }) - table.insert(editor.patterns_fx_widgets, on_update_release) + table.insert(editor.patterns_fx_widgets, release) local c_env = widgets.createCheckbox({ x = 40, @@ -502,6 +502,61 @@ editor.create_widgets = function() }) table.insert(editor.patterns_fx_widgets, c_env) + + local on_update_sweep = function(knob) + + end + + local sweep = widgets.createKnob({ + x = env.x, + y = env.y + env.height + 4 + 32, + label = "sweep", + on_update = on_update_sweep, + value = env.release + }) + table.insert(editor.patterns_fx_widgets, sweep) + + local c_sweep = widgets.createCheckbox({ + x = 40, + y = env.y + env.height + 4 + 32, + label = "enable" + }) + table.insert(editor.patterns_fx_widgets, c_sweep) + + local on_update_vibrato = function(knob) + + end + + local vibrato = widgets.createKnob({ + x = env.x, + y = env.y + env.height + 4 + 64, + label = "vibrato", + on_update = on_update_vibrato, + value = env.release + }) + table.insert(editor.patterns_fx_widgets, vibrato) + + local on_update_depth = function(knob) + + end + + + local depth = widgets.createKnob({ + x = env.x + 32, + y = env.y + env.height + 4 + 64, + label = "depth", + on_update = on_update_depth, + value = env.release + }) + table.insert(editor.patterns_fx_widgets, depth) + + local c_vibrato = widgets.createCheckbox({ + x = 40, + y = env.y + env.height + 4 + 64, + label = "enable" + }) + table.insert(editor.patterns_fx_widgets, c_vibrato) + -- tabs local files = ws.list() diff --git a/tiny-cli/src/jvmMain/resources/sfx/widgets.lua b/tiny-cli/src/jvmMain/resources/sfx/widgets.lua index f7799409..62b68e9b 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/widgets.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/widgets.lua @@ -157,7 +157,7 @@ end factory.createCheckbox = function(value) local result = new(Checkbox, value) - + result.width = 12 + #result.label * 4 table.insert(widgets, result) table.insert(checkboxes, result) return result From 55971111ffc71c52a337d7c413a648699e2f6fb6 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Wed, 28 Feb 2024 10:04:45 +0100 Subject: [PATCH 25/46] Restore env parameters --- tiny-cli/src/jvmMain/resources/sfx/game.lua | 25 ++++++++++++++----- .../com/github/minigdx/tiny/lua/SfxLib.kt | 7 +++--- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/tiny-cli/src/jvmMain/resources/sfx/game.lua b/tiny-cli/src/jvmMain/resources/sfx/game.lua index 1a6e49d2..a0bbf5b7 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/game.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/game.lua @@ -67,13 +67,14 @@ local editor = { pattern_counter = nil, bpm_counter = nil, volume_counter = nil, + env = nil, active_tab = nil, -- current active (displayed) tab. sound_editor_widgets = {}, -- all widgets used only in the sound editor mode patterns_editor_widgets = {}, -- all widgets used only in the patterns editor mode patterns_fx_widgets = {}, -- all wdgets used for the fx editor fader_widgets = {}, -- all faders (used only in the sound editor mode) wave_widgets = {}, -- all waves button (used only in the sound editor mode) - tabs_widgets = {}, -- all the tab + tabs_widgets = {} -- all the tab } --[[ @@ -213,6 +214,15 @@ editor.on_active_tab = function(current, prev) editor.bpm_counter.value = data["bpm"] editor.volume_counter.value = math.floor((data["volume"] / 255) * 10) + editor.env.attack = data["tracks"][editor.env.index]["env"].attack / 255 + editor.attack_knob.value = editor.env.attack + editor.env.decay = data["tracks"][editor.env.index]["env"].decay / 255 + editor.decay_knob.value = editor.env.decay + editor.env.sustain = data["tracks"][editor.env.index]["env"].sustain / 255 + editor.sustain_knob.value = editor.env.sustain + editor.env.release = data["tracks"][editor.env.index]["env"].release / 255 + editor.release_knob.value = editor.env.release + -- always get the first pattern editor.activate_pattern(1, data) -- set faders value regarding the first patterns @@ -438,6 +448,7 @@ editor.create_widgets = function() on_update = on_envelop_update }) table.insert(editor.patterns_fx_widgets, env) + editor.env = env local on_update_attack = function(knob) env.attack = knob.value @@ -452,6 +463,7 @@ editor.create_widgets = function() value = env.attack }) table.insert(editor.patterns_fx_widgets, attack) + editor.attack_knob = attack local on_update_decay = function(knob) env.decay = knob.value @@ -466,6 +478,7 @@ editor.create_widgets = function() value = env.decay }) table.insert(editor.patterns_fx_widgets, decay) + editor.decay_knob = decay local on_update_sustain = function(knob) env.sustain = knob.value @@ -480,6 +493,7 @@ editor.create_widgets = function() value = env.sustain }) table.insert(editor.patterns_fx_widgets, sustain) + editor.sustain_knob = sustain local on_update_release = function(knob) env.release = knob.value @@ -494,6 +508,7 @@ editor.create_widgets = function() value = env.release }) table.insert(editor.patterns_fx_widgets, release) + editor.release_knob = release local c_env = widgets.createCheckbox({ x = 40, @@ -502,9 +517,8 @@ editor.create_widgets = function() }) table.insert(editor.patterns_fx_widgets, c_env) - local on_update_sweep = function(knob) - + end local sweep = widgets.createKnob({ @@ -524,7 +538,7 @@ editor.create_widgets = function() table.insert(editor.patterns_fx_widgets, c_sweep) local on_update_vibrato = function(knob) - + end local vibrato = widgets.createKnob({ @@ -537,9 +551,8 @@ editor.create_widgets = function() table.insert(editor.patterns_fx_widgets, vibrato) local on_update_depth = function(knob) - - end + end local depth = widgets.createKnob({ x = env.x + 32, diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt index bb1f3623..f98d17be 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt @@ -231,12 +231,13 @@ class SfxLib( val tracks = LuaTable() song.tracks.forEach { t -> val track = LuaTable() + val inv = 1 / t.beatDuration val env = LuaTable() - env["attack"] = valueOf(((t.envelope?.attack ?: 0f) * 255).toInt()) - env["decay"] = valueOf(((t.envelope?.decay ?: 0f) * 255).toInt()) + env["attack"] = valueOf(((t.envelope?.attack ?: 0f) * 255 * inv).toInt()) + env["decay"] = valueOf(((t.envelope?.decay ?: 0f) * 255 * inv).toInt()) env["sustain"] = valueOf(((t.envelope?.sustain ?: 0f) * 255).toInt()) - env["release"] = valueOf(((t.envelope?.release ?: 0f) * 255).toInt()) + env["release"] = valueOf(((t.envelope?.release ?: 0f) * 255 * inv).toInt()) track["env"] = env From 80b3e053d96a9ec22f3e1a81e549fe16f217cd4c Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Wed, 28 Feb 2024 11:28:36 +0100 Subject: [PATCH 26/46] Add modulation in the lua table and read it back from the score. --- .../com/github/minigdx/tiny/lua/NotesLib.kt | 7 ++++ .../com/github/minigdx/tiny/lua/SfxLib.kt | 34 +++++++++++++++++-- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/NotesLib.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/NotesLib.kt index 92b0cce2..487f58fd 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/NotesLib.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/NotesLib.kt @@ -4,6 +4,7 @@ import com.github.mingdx.tiny.doc.TinyLib import org.luaj.vm2.LuaTable import org.luaj.vm2.LuaValue import org.luaj.vm2.lib.TwoArgFunction +import kotlin.math.abs private const val OCTAVE_0 = 0 private const val OCTAVE_1 = OCTAVE_0 + 12 @@ -185,6 +186,12 @@ enum class Note(val frequency: Float, val index: Int) { fun fromIndex(noteIndex: Int): Note { return notesPerIndex[noteIndex - 1] } + + fun fromFrequency(frequency: Float): Note { + return Note.values().minBy { abs(it.frequency - frequency) } + } + + fun fromFrequency(frequency: Int): Note = fromFrequency(frequency.toFloat()) } } diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt index f98d17be..d834ea93 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt @@ -241,7 +241,35 @@ class SfxLib( track["env"] = env - // TODO: put the modulation parameters + val modulation = t.modulation + + val mod = LuaTable() + when (modulation) { + is Sweep -> { + mod["type"] = 1 + mod["a"] = Note.fromFrequency(modulation.sweep).index + mod["b"] = 0 + mod["c"] = 0 + mod["d"] = 0 + } + + is Vibrato -> { + mod["type"] = 2 + mod["a"] = Note.fromFrequency(modulation.vibratoFrequency).index + mod["b"] = valueOf((modulation.depth.toDouble() * 255).toInt()) + mod["c"] = 0 + mod["d"] = 0 + } + + null -> { + mod["type"] = 0 + mod["a"] = 0 + mod["b"] = 0 + mod["c"] = 0 + mod["d"] = 0 + } + } + track["mod"] = mod val patterns = LuaTable() t.patterns.forEach { (index, pattern) -> @@ -387,9 +415,9 @@ class SfxLib( val modulation = if (mod > 0) { if (mod == 1) { - Sweep(modA) + Sweep(Note.fromIndex(modA).frequency.toInt()) } else { - Vibrato(modA / 255f, modB / 255f) + Vibrato(Note.fromIndex(modA).frequency, modB / 255f) } } else { null From d0117fb8fa8baace4b82abb398513672359f33e7 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Wed, 28 Feb 2024 14:25:44 +0100 Subject: [PATCH 27/46] Support modulation --- tiny-cli/src/jvmMain/resources/sfx/game.lua | 52 ++++++++++++++++--- .../com/github/minigdx/tiny/lua/SfxLib.kt | 4 +- 2 files changed, 47 insertions(+), 9 deletions(-) diff --git a/tiny-cli/src/jvmMain/resources/sfx/game.lua b/tiny-cli/src/jvmMain/resources/sfx/game.lua index a0bbf5b7..cf9697f7 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/game.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/game.lua @@ -143,7 +143,15 @@ editor.generate_score = function(content, pattern_selector) for t in all(tracks) do local p = t["patterns"] local track = "" .. #p .. " 01 " .. to_hex(t["env"]["attack"]) .. " " .. to_hex(t["env"]["decay"]) .. " " .. - to_hex(t["env"]["sustain"]) .. " " .. to_hex(t["env"]["release"]) .. " 00 00 00 00 00\n" + to_hex(t["env"]["sustain"]) .. " " .. to_hex(t["env"]["release"]) + + if t["mod"]["type"] == 1 then + track = track .. " 01 "..to_hex(t["mod"]["a"]).." 00 00 00\n" + elseif t["mod"]["type"] == 2 then + track = track .. " 02 "..to_hex(t["mod"]["a"]).." "..to_hex(t["mod"]["b"]).." 00 00\n" + else + track = track .. " 00 00 00 00 00\n" + end -- write patterns for pattern in all(p) do @@ -206,6 +214,7 @@ editor.on_active_tab = function(current, prev) if prev ~= nil then -- update the model of the previous tab before switching. local score = editor.generate_score(prev.content) + debug.console(score) prev.content = sfx.to_table(score) end @@ -223,6 +232,8 @@ editor.on_active_tab = function(current, prev) editor.env.release = data["tracks"][editor.env.index]["env"].release / 255 editor.release_knob.value = editor.env.release + -- TODO: set back the knob values for mod + -- always get the first pattern editor.activate_pattern(1, data) -- set faders value regarding the first patterns @@ -518,7 +529,10 @@ editor.create_widgets = function() table.insert(editor.patterns_fx_widgets, c_env) local on_update_sweep = function(knob) - + if editor.active_tab.content["tracks"][env.index]["mod"]["type"] ~= 1 then + return + end + editor.active_tab.content["tracks"][env.index]["mod"]["a"] = knob.value * 255 end local sweep = widgets.createKnob({ @@ -529,6 +543,7 @@ editor.create_widgets = function() value = env.release }) table.insert(editor.patterns_fx_widgets, sweep) + editor.sweep_knob = sweep local c_sweep = widgets.createCheckbox({ x = 40, @@ -536,11 +551,15 @@ editor.create_widgets = function() label = "enable" }) table.insert(editor.patterns_fx_widgets, c_sweep) + editor.c_sweep = c_sweep local on_update_vibrato = function(knob) - + if editor.active_tab.content["tracks"][env.index]["mod"]["type"] ~= 2 then + return + end + editor.active_tab.content["tracks"][env.index]["mod"]["a"] = knob.value * 255 end - + local vibrato = widgets.createKnob({ x = env.x, y = env.y + env.height + 4 + 64, @@ -549,11 +568,15 @@ editor.create_widgets = function() value = env.release }) table.insert(editor.patterns_fx_widgets, vibrato) - + editor.vibrato_knob = vibrato + local on_update_depth = function(knob) - + if editor.active_tab.content["tracks"][env.index]["mod"]["type"] ~= 2 then + return + end + editor.active_tab.content["tracks"][env.index]["mod"]["b"] = knob.value * 255 end - + local depth = widgets.createKnob({ x = env.x + 32, y = env.y + env.height + 4 + 64, @@ -562,6 +585,7 @@ editor.create_widgets = function() value = env.release }) table.insert(editor.patterns_fx_widgets, depth) + editor.depth_knob = depth local c_vibrato = widgets.createCheckbox({ x = 40, @@ -569,6 +593,20 @@ editor.create_widgets = function() label = "enable" }) table.insert(editor.patterns_fx_widgets, c_vibrato) + editor.c_vibrato = c_vibrato + + c_vibrato.on_update = function() + c_sweep.value = false + editor.active_tab.content["tracks"][env.index]["mod"]["type"] = 2 + editor.active_tab.content["tracks"][env.index]["mod"]["a"] = editor.vibrato_knob.value * 255 + editor.active_tab.content["tracks"][env.index]["mod"]["b"] = editor.depth_knob.value * 255 + end + + c_sweep.on_update = function() + c_vibrato.value = false + editor.active_tab.content["tracks"][env.index]["mod"]["type"] = 1 + editor.active_tab.content["tracks"][env.index]["mod"]["a"] = editor.sweep_knob.value * 255 + end -- tabs local files = ws.list() diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt index d834ea93..67065428 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt @@ -415,9 +415,9 @@ class SfxLib( val modulation = if (mod > 0) { if (mod == 1) { - Sweep(Note.fromIndex(modA).frequency.toInt()) + Sweep(Note.fromIndex(1 + modA * Note.B8.index / 255).frequency.toInt()) } else { - Vibrato(Note.fromIndex(modA).frequency, modB / 255f) + Vibrato(Note.fromIndex(1 + modA * Note.B8.index / 255).frequency, modB / 255f) } } else { null From 58c379a9dcaab2f173d08a3f306a8fbf664d5e67 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Thu, 29 Feb 2024 00:13:50 +0100 Subject: [PATCH 28/46] Restore modulation parameters --- tiny-cli/src/jvmMain/resources/sfx/game.lua | 33 +++++++++++++++------ 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/tiny-cli/src/jvmMain/resources/sfx/game.lua b/tiny-cli/src/jvmMain/resources/sfx/game.lua index cf9697f7..d49a842b 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/game.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/game.lua @@ -146,12 +146,12 @@ editor.generate_score = function(content, pattern_selector) to_hex(t["env"]["sustain"]) .. " " .. to_hex(t["env"]["release"]) if t["mod"]["type"] == 1 then - track = track .. " 01 "..to_hex(t["mod"]["a"]).." 00 00 00\n" + track = track .. " 01 " .. to_hex(t["mod"]["a"]) .. " 00 00 00\n" elseif t["mod"]["type"] == 2 then - track = track .. " 02 "..to_hex(t["mod"]["a"]).." "..to_hex(t["mod"]["b"]).." 00 00\n" + track = track .. " 02 " .. to_hex(t["mod"]["a"]) .. " " .. to_hex(t["mod"]["b"]) .. " 00 00\n" else track = track .. " 00 00 00 00 00\n" - end + end -- write patterns for pattern in all(p) do @@ -232,7 +232,22 @@ editor.on_active_tab = function(current, prev) editor.env.release = data["tracks"][editor.env.index]["env"].release / 255 editor.release_knob.value = editor.env.release - -- TODO: set back the knob values for mod + editor.vibrato_knob.value = 0 + editor.depth_knob.value = 0 + editor.sweep_knob.value = 0 + editor.c_sweep.value = false + editor.c_vibrato.value = false + local type = data["tracks"][editor.env.index]["mod"].type + if type == 1 then + editor.c_sweep.value = true + editor.sweep_knob.value = data["tracks"][editor.env.index]["mod"].a / 255 + + elseif type == 2 then + editor.c_vibrato.value = true + editor.vibrato_knob.value = data["tracks"][editor.env.index]["mod"].a / 255 + editor.depth_knob.value = data["tracks"][editor.env.index]["mod"].b / 255 + + end -- always get the first pattern editor.activate_pattern(1, data) @@ -559,7 +574,7 @@ editor.create_widgets = function() end editor.active_tab.content["tracks"][env.index]["mod"]["a"] = knob.value * 255 end - + local vibrato = widgets.createKnob({ x = env.x, y = env.y + env.height + 4 + 64, @@ -569,14 +584,14 @@ editor.create_widgets = function() }) table.insert(editor.patterns_fx_widgets, vibrato) editor.vibrato_knob = vibrato - + local on_update_depth = function(knob) if editor.active_tab.content["tracks"][env.index]["mod"]["type"] ~= 2 then return end editor.active_tab.content["tracks"][env.index]["mod"]["b"] = knob.value * 255 end - + local depth = widgets.createKnob({ x = env.x + 32, y = env.y + env.height + 4 + 64, @@ -594,14 +609,14 @@ editor.create_widgets = function() }) table.insert(editor.patterns_fx_widgets, c_vibrato) editor.c_vibrato = c_vibrato - + c_vibrato.on_update = function() c_sweep.value = false editor.active_tab.content["tracks"][env.index]["mod"]["type"] = 2 editor.active_tab.content["tracks"][env.index]["mod"]["a"] = editor.vibrato_knob.value * 255 editor.active_tab.content["tracks"][env.index]["mod"]["b"] = editor.depth_knob.value * 255 end - + c_sweep.on_update = function() c_vibrato.value = false editor.active_tab.content["tracks"][env.index]["mod"]["type"] = 1 From c95152dd3b2d746ee0a523eb427067e45d6d0911 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Thu, 29 Feb 2024 12:02:12 +0100 Subject: [PATCH 29/46] Add direction on the sweep effect. Fix general volume --- tiny-cli/src/jvmMain/resources/sfx/game.lua | 22 +++++++- .../com/github/minigdx/tiny/lua/SfxLib.kt | 54 +------------------ .../com/github/minigdx/tiny/sound/Effect.kt | 10 +++- .../github/minigdx/tiny/sound/SoundManager.kt | 2 +- .../com/github/minigdx/tiny/lua/SfxLibTest.kt | 20 ------- 5 files changed, 32 insertions(+), 76 deletions(-) diff --git a/tiny-cli/src/jvmMain/resources/sfx/game.lua b/tiny-cli/src/jvmMain/resources/sfx/game.lua index d49a842b..e7cf655b 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/game.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/game.lua @@ -146,7 +146,7 @@ editor.generate_score = function(content, pattern_selector) to_hex(t["env"]["sustain"]) .. " " .. to_hex(t["env"]["release"]) if t["mod"]["type"] == 1 then - track = track .. " 01 " .. to_hex(t["mod"]["a"]) .. " 00 00 00\n" + track = track .. " 01 " .. to_hex(t["mod"]["a"]) .. " ".. to_hex(t["mod"]["b"] * 255) .. " 00 00\n" elseif t["mod"]["type"] == 2 then track = track .. " 02 " .. to_hex(t["mod"]["a"]) .. " " .. to_hex(t["mod"]["b"]) .. " 00 00\n" else @@ -235,12 +235,14 @@ editor.on_active_tab = function(current, prev) editor.vibrato_knob.value = 0 editor.depth_knob.value = 0 editor.sweep_knob.value = 0 + editor.acceleration_knob.value = 0 editor.c_sweep.value = false editor.c_vibrato.value = false local type = data["tracks"][editor.env.index]["mod"].type if type == 1 then editor.c_sweep.value = true editor.sweep_knob.value = data["tracks"][editor.env.index]["mod"].a / 255 + editor.acceleration_knob.value = data["tracks"][editor.env.index]["mod"].b elseif type == 2 then editor.c_vibrato.value = true @@ -555,11 +557,26 @@ editor.create_widgets = function() y = env.y + env.height + 4 + 32, label = "sweep", on_update = on_update_sweep, - value = env.release }) table.insert(editor.patterns_fx_widgets, sweep) editor.sweep_knob = sweep + local on_update_acceleration = function(knob) + if editor.active_tab.content["tracks"][env.index]["mod"]["type"] ~= 1 then + return + end + editor.active_tab.content["tracks"][env.index]["mod"]["b"] = knob.value + end + + local acceleration = widgets.createKnob({ + x = env.x + 32, + y = env.y + env.height + 4 + 32, + label = "acceleration", + on_update = on_update_acceleration, + }) + table.insert(editor.patterns_fx_widgets, acceleration) + editor.acceleration_knob = acceleration + local c_sweep = widgets.createCheckbox({ x = 40, y = env.y + env.height + 4 + 32, @@ -621,6 +638,7 @@ editor.create_widgets = function() c_vibrato.value = false editor.active_tab.content["tracks"][env.index]["mod"]["type"] = 1 editor.active_tab.content["tracks"][env.index]["mod"]["a"] = editor.sweep_knob.value * 255 + editor.active_tab.content["tracks"][env.index]["mod"]["b"] = editor.acceleration_knob.value end -- tabs diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt index 67065428..13c6faf0 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SfxLib.kt @@ -12,7 +12,6 @@ import com.github.minigdx.tiny.sound.Envelope import com.github.minigdx.tiny.sound.Modulation import com.github.minigdx.tiny.sound.Noise2 import com.github.minigdx.tiny.sound.NoiseWave -import com.github.minigdx.tiny.sound.Pattern import com.github.minigdx.tiny.sound.Pattern2 import com.github.minigdx.tiny.sound.Pulse2 import com.github.minigdx.tiny.sound.PulseWave @@ -22,7 +21,6 @@ import com.github.minigdx.tiny.sound.Silence2 import com.github.minigdx.tiny.sound.SilenceWave import com.github.minigdx.tiny.sound.Sine2 import com.github.minigdx.tiny.sound.SineWave -import com.github.minigdx.tiny.sound.Song import com.github.minigdx.tiny.sound.Song2 import com.github.minigdx.tiny.sound.SoundGenerator import com.github.minigdx.tiny.sound.Square2 @@ -248,7 +246,7 @@ class SfxLib( is Sweep -> { mod["type"] = 1 mod["a"] = Note.fromFrequency(modulation.sweep).index - mod["b"] = 0 + mod["b"] = if (modulation.acceleration) 1 else 0 mod["c"] = 0 mod["d"] = 0 } @@ -415,7 +413,7 @@ class SfxLib( val modulation = if (mod > 0) { if (mod == 1) { - Sweep(Note.fromIndex(1 + modA * Note.B8.index / 255).frequency.toInt()) + Sweep(Note.fromIndex(1 + modA * Note.B8.index / 255).frequency.toInt(), modB / 255f > 0.5f) } else { Vibrato(Note.fromIndex(1 + modA * Note.B8.index / 255).frequency, modB / 255f) } @@ -462,54 +460,6 @@ class SfxLib( return Song2(bpm.toInt(), volume.toInt() / 255f, tracks.toTypedArray()) } - fun convertScoreToSong(score: String): Song { - val lines = score.lines() - if (lines.isEmpty()) { - throw IllegalArgumentException( - "The content of the score is empty. Can't convert it into a song. " + - "Check if the score is not empty or correctly loaded!", - ) - } - - val header = lines.first() - if (!header.startsWith(TINY_SFX_HEADER)) { - throw IllegalArgumentException( - "The '$TINY_SFX_HEADER' is missing from the fist line of the score. " + - "Is the score a valid score?", - ) - } - - val (_, nbPattern, bpm, volume) = header.split(" ") - - val duration = 60f / bpm.toFloat() / 8f - - // Map - val patterns = lines.drop(1).take(nbPattern.toInt()).mapIndexed { indexPattern, pattern -> - val beatsStr = pattern.trim().split(" ") - val beats = convertToWaves(beatsStr, duration) - Pattern(indexPattern + 1, beats) - }.associateBy { it.index } - - val patternOrder = lines.drop(nbPattern.toInt() + 1).firstOrNull() - val orders = if (patternOrder.isNullOrBlank()) { - listOf(1) - } else { - patternOrder.trim().split(" ").map { it.toInt() } - } - - val patternsOrdered = orders.map { patterns[it]!! } - - return Song(bpm.toInt(), volume.toInt() / 255f, patterns, patternsOrdered) - } - - private fun convertToWaves(beatsStr: List, duration: Seconds): List { - val beats = beatsStr - .asSequence() - .filter { it.isNotBlank() } - .map { beat -> convertToWave(beat, duration) } - return beats.toList() - } - private fun convertToSound(beatsStr: List, mod: Modulation?, env: Envelope?): List { val beats = beatsStr .asSequence() diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt index 8a4f5523..34759519 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/Effect.kt @@ -21,9 +21,17 @@ interface Modulation { */ class Sweep( val sweep: Frequency, + val acceleration: Boolean, ) : Modulation { + + private val way = if (acceleration) { + 1 + } else { + -1 + } + override fun apply(index: Int, frequency: Float): Float { - return frequency + index * sweep / SAMPLE_RATE.toFloat() + return frequency + index * (sweep * way) / SAMPLE_RATE.toFloat() } } diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/SoundManager.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/SoundManager.kt index 4d8d5b06..617bc76b 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/SoundManager.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/sound/SoundManager.kt @@ -104,7 +104,7 @@ abstract class SoundManager { result[index] += sample } - result[index] = result[index] / divider + result[index] = (result[index] / divider) * song.volume } return SoundBuffer(result, numberOfSample) } diff --git a/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/SfxLibTest.kt b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/SfxLibTest.kt index 772849ce..0754a5c6 100644 --- a/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/SfxLibTest.kt +++ b/tiny-engine/src/commonTest/kotlin/com/github/minigdx/tiny/lua/SfxLibTest.kt @@ -40,26 +40,6 @@ class SfxLibTest { override fun sfx(song: Song2) = Unit } - @Test - fun scoreToSong() { - val score = """tiny-sfx 2 120 255 - |0101FF 0101FF - |0101FF 0101FF - |1 2 1 - """.trimMargin() - - val song = SfxLib.convertScoreToSong(score) - - assertEquals(120, song.bpm) - assertEquals(1f, song.volume) - // patterns by index - assertEquals(2, song.patterns.size) - // patterns ordered by usage - assertEquals(3, song.music.size) - - assertEquals(song.patterns[1]!!.notes.size, 2) - } - @Test fun scoreToSong2() { val score = """tiny-sfx 120 255 From b006fb267befcc3b078d73119aebe30a71ba098d Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Sat, 2 Mar 2024 21:53:57 +0100 Subject: [PATCH 30/46] Access the current map properties --- .../com/github/minigdx/tiny/lua/MapLib.kt | 108 +++++++++++------- .../minigdx/tiny/resources/GameLevel.kt | 2 +- .../minigdx/tiny/resources/GameScript.kt | 2 +- 3 files changed, 71 insertions(+), 41 deletions(-) diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/MapLib.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/MapLib.kt index 43bcc338..5bdd4d1c 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/MapLib.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/MapLib.kt @@ -7,8 +7,10 @@ import com.github.mingdx.tiny.doc.TinyFunction import com.github.mingdx.tiny.doc.TinyLib import com.github.minigdx.tiny.Pixel import com.github.minigdx.tiny.engine.GameResourceAccess +import com.github.minigdx.tiny.graphic.ColorPalette import com.github.minigdx.tiny.resources.GameLevel import com.github.minigdx.tiny.resources.LdtkEntity +import com.github.minigdx.tiny.resources.LdtkLevel import kotlinx.serialization.json.JsonArray import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonNull @@ -23,6 +25,7 @@ import org.luaj.vm2.Varargs import org.luaj.vm2.lib.LibFunction import org.luaj.vm2.lib.OneArgFunction import org.luaj.vm2.lib.TwoArgFunction +import org.luaj.vm2.lib.ZeroArgFunction import kotlin.math.floor import kotlin.math.max import kotlin.math.min @@ -35,7 +38,11 @@ import kotlin.math.min "https://ldtk.io/docs/game-dev/super-simple-export/['Super simple export']. " + "Also, Int layers _need_ to have an Auto Layer tileset otherwise, they will not be known by the engine.", ) -class MapLib(private val resourceAccess: GameResourceAccess, private val spriteSize: Pair) : +class MapLib( + private val resourceAccess: GameResourceAccess, + private val spriteSize: Pair, + private val colors: ColorPalette, +) : TwoArgFunction() { private var currentLevel: Int = 0 @@ -51,11 +58,34 @@ class MapLib(private val resourceAccess: GameResourceAccess, private val spriteS map["from"] = from() map["to"] = to() map["level"] = level() + map["x"] = property(int = { it.x }) + map["y"] = property(int = { it.y }) + map["identifier"] = property(str = { it.identifier }) + map["unique_identifier"] = property(str = { it.uniqueIdentifer }) + map["width"] = property(int = { it.width }) + map["height"] = property(int = { it.height }) + map["bgColors"] = property(int = { colors.getColorIndex(it.bgColor) }) + map["customFields"] = property(json = { it.customFields }) arg2["map"] = map arg2["package"]["loaded"]["map"] = map return map } + inner class property( + val int: ((LdtkLevel) -> Int)? = null, + val str: ((LdtkLevel) -> String)? = null, + val json: ((LdtkLevel) -> JsonElement)? = null, + ) : ZeroArgFunction() { + override fun call(): LuaValue { + val level = resourceAccess.level(currentLevel)?.ldktLevel ?: return NIL + val value = int?.invoke(level)?.let { valueOf(it) } + ?: str?.invoke(level)?.let { valueOf(it) } + ?: json?.invoke(level)?.toLua() + ?: NIL + return value + } + } + @TinyFunction("Set the current level to use.") inner class level : OneArgFunction() { @TinyCall("Return the index of the current level.") @@ -252,44 +282,6 @@ entity.customFields -- access custom field of the entity table["customFields"] = customFields.toLua() return table } - - private fun JsonElement.toLua(): LuaValue { - return when (this) { - is JsonArray -> this.toLua() - is JsonObject -> this.toLua() - is JsonPrimitive -> this.toLua() - is JsonNull -> this.toLua() - } - } - - private fun JsonNull.toLua(): LuaValue { - return NIL - } - - private fun JsonObject.toLua(): LuaTable { - val result = LuaTable() - this.forEach { (key, value) -> - result[key] = value.toLua() - } - return result - } - - private fun JsonPrimitive.toLua(): LuaValue { - return if (this.isString) { - return valueOf(this.content) - } else { - this.intOrNull?.let { valueOf(it) } ?: this.doubleOrNull?.let { valueOf(it) } - ?: this.booleanOrNull?.let { valueOf(it) } ?: valueOf(this.content) - } - } - - private fun JsonArray.toLua(): LuaTable { - val result = LuaTable() - this.forEach { - result.insert(0, it.toLua()) - } - return result - } } @TinyFunction("Draw map tiles on the screen.") @@ -411,4 +403,42 @@ entity.customFields -- access custom field of the entity return NONE } } + + private fun JsonElement.toLua(): LuaValue { + return when (this) { + is JsonArray -> this.toLua() + is JsonObject -> this.toLua() + is JsonPrimitive -> this.toLua() + is JsonNull -> this.toLua() + } + } + + private fun JsonNull.toLua(): LuaValue { + return NIL + } + + private fun JsonObject.toLua(): LuaTable { + val result = LuaTable() + this.forEach { (key, value) -> + result[key] = value.toLua() + } + return result + } + + private fun JsonPrimitive.toLua(): LuaValue { + return if (this.isString) { + return valueOf(this.content) + } else { + this.intOrNull?.let { valueOf(it) } ?: this.doubleOrNull?.let { valueOf(it) } + ?: this.booleanOrNull?.let { valueOf(it) } ?: valueOf(this.content) + } + } + + private fun JsonArray.toLua(): LuaTable { + val result = LuaTable() + this.forEach { + result.insert(0, it.toLua()) + } + return result + } } diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/resources/GameLevel.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/resources/GameLevel.kt index bc75ea97..50aae450 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/resources/GameLevel.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/resources/GameLevel.kt @@ -43,7 +43,7 @@ data class LdtkLevel( val width: Int, val height: Int, val bgColor: String, - val customFields: Map, + val customFields: JsonElement, val layers: List, val entities: Map>, ) diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/resources/GameScript.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/resources/GameScript.kt index d94181ad..ec052fef 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/resources/GameScript.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/resources/GameScript.kt @@ -86,7 +86,7 @@ class GameScript( load(StringLib()) load(CoroutineLib()) load(StdLib(gameOptions, resourceAccess)) - load(MapLib(this@GameScript.resourceAccess, gameOptions.spriteSize)) + load(MapLib(this@GameScript.resourceAccess, gameOptions.spriteSize, gameOptions.colors())) load(GfxLib(this@GameScript.resourceAccess)) load(CtrlLib(inputHandler, sprLib)) load(SfxLib(this@GameScript.resourceAccess, playSound = !forValidation)) From 21d229462d21082c9cb07602b2e4ddf747d7a22f Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Tue, 12 Mar 2024 00:29:04 +0100 Subject: [PATCH 31/46] Fixed frame rate on the Web platform. --- .../github/minigdx/tiny/platform/webgl/WebGlPlatform.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tiny-engine/src/jsMain/kotlin/com/github/minigdx/tiny/platform/webgl/WebGlPlatform.kt b/tiny-engine/src/jsMain/kotlin/com/github/minigdx/tiny/platform/webgl/WebGlPlatform.kt index 45d6d04f..8497ba4b 100644 --- a/tiny-engine/src/jsMain/kotlin/com/github/minigdx/tiny/platform/webgl/WebGlPlatform.kt +++ b/tiny-engine/src/jsMain/kotlin/com/github/minigdx/tiny/platform/webgl/WebGlPlatform.kt @@ -27,6 +27,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import org.w3c.dom.HTMLCanvasElement +import kotlin.math.min class WebGlPlatform( private val canvas: HTMLCanvasElement, @@ -56,8 +57,8 @@ class WebGlPlatform( val context = canvas.getContext("webgl2") as? WebGL2RenderingContext ?: throw IllegalStateException( "The canvas context is expected to be a webgl2 context. " + - "WebGL2 doesn't seems to be supported by your browser. " + - "Please update to a compatible browser to run the game in WebGL2.", + "WebGL2 doesn't seems to be supported by your browser. " + + "Please update to a compatible browser to run the game in WebGL2.", ) render = GLRender(KglJs(context), logger, gameOptions) return render.init(windowManager) @@ -70,7 +71,7 @@ class WebGlPlatform( then = nowInSeconds uiScope.launch { - gameLoop.advance(delta.toFloat()) + gameLoop.advance(min(delta.toFloat(), 1 / 60f)) } gameLoop.draw() From f14c3c2bc347f12a7e8128debb2b2922a5b47296 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Tue, 12 Mar 2024 15:32:16 +0100 Subject: [PATCH 32/46] Use better class description on Knob and Button. --- .../src/jvmMain/resources/sfx/widgets.lua | 136 +++++++++++------- 1 file changed, 88 insertions(+), 48 deletions(-) diff --git a/tiny-cli/src/jvmMain/resources/sfx/widgets.lua b/tiny-cli/src/jvmMain/resources/sfx/widgets.lua index 62b68e9b..9e50803b 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/widgets.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/widgets.lua @@ -44,6 +44,12 @@ local Tab = { on_new_tab = nil } +local TabManager = { + on_new_tab = nil, + tags = {}, + active_tab = 0 +} + local Counter = { label = "", value = 0, @@ -113,6 +119,10 @@ local knobs = {} local factory = {} +function inside_widget(w, x, y) + return w.x <= x and x <= w.x + w.width and w.y <= y and y <= w.y + w.height +end + factory.createCounter = function(value) local result = new(Counter, value) table.insert(widgets, result) @@ -127,6 +137,15 @@ factory.createTab = function(value) return result end +TabManager._update = function(self) + +end + +TabManager._draw = function(self) + +end + + factory.createButton = function(value) local result = new(Button, value) table.insert(widgets, result) @@ -134,6 +153,40 @@ factory.createButton = function(value) return result end +Button._update = function(self) + if self.status == 2 then + return + end + + local pos = ctrl.touch() + if inside_widget(self, pos.x, pos.y) then + self.status = 1 + else + self.status = 0 + end + +end + +Button._draw = function(self) + local background = 0 + if self.status > 0 then + background = 1 + end + + spr.draw(background, self.x, self.y) + + if self.overlay ~= nil then + spr.draw(self.overlay, self.x, self.y) + end +end + +--[[ + @deprecated +]] +function draw_button(button) + button:_draw() +end + factory.createFader = function(value) local result = new(Fader, value) table.insert(widgets, result) @@ -172,20 +225,38 @@ factory.createKnob = function(value) end -function inside_widget(w, x, y) - return w.x <= x and x <= w.x + w.width and w.y <= y and y <= w.y + w.height +Knob._draw = function(self) + local angle = (1.8 * math.pi) * self.value + math.pi * 0.6 + + local target_x = math.cos(angle) * 6 + self.x + 8 + local target_y = math.sin(angle) * 6 + self.y + 8 + + spr.sdraw(self.x, self.y, 0, 64, 16, 16) + shape.line(self.x + 8, self.y + 8, target_x, target_y, 9) + print(self.label, self.x, self.y + 18) end -factory.on_update = function(x, y) - for f in all(buttons) do - if f.status == 1 then - f.status = 0 - end +Knob._update = function(self) - if f.status == 0 and inside_widget(f, x, y) then - f.status = 1 + local touching = ctrl.touching(0) + + -- the click started in the widget? + if touching ~= nil and inside_widget(self, touching.x, touching.y) then + local touch = ctrl.touch() + + local dst = self.y + 8 - touch.y + local percent = math.max(math.min(1, dst / 32), 0) + self.value = percent + if self.on_update ~= nil then + self.on_update(self) end end +end + +factory.on_update = function(x, y) + for f in all(buttons) do + f:_update() + end for c in all(counters) do -- inside the widgets @@ -224,11 +295,8 @@ factory.on_update = function(x, y) end end - - if ctrl.touching(0) == nil then - for k in all(knobs) do - k.update_in_progress = false - end + for k in all(knobs) do + k:_update() end end @@ -248,18 +316,6 @@ factory.on_click = function(x, y) f.on_value_update(f, value) end end - - for k in all(knobs) do - if inside_widget(k, x, y) or k.update_in_progress then - local dst = k.y + 8 - y - local percent = math.max(math.min(1, dst / 32), 0) - k.value = percent - k.update_in_progress = true - if k.on_update ~= nil then - k.on_update(k) - end - end - end end factory.on_clicked = function(x, y) @@ -404,19 +460,6 @@ function draw_fader(f) print(f.label, f.x, f.y + f.height + 5) end -function draw_button(button) - local background = 0 - if button.status > 0 then - background = 1 - end - - spr.draw(background, button.x, button.y) - - if button.overlay ~= nil then - spr.draw(button.overlay, button.x, button.y) - end -end - function draw_counter(counter) spr.draw(counter.spr + counter.status, counter.x, counter.y) @@ -476,16 +519,13 @@ function draw_checkbox(c) print(c.label, c.x + 10, c.y + 2) end +--[[ + @deprecated +]] function draw_knob(k) - local angle = (1.8 * math.pi) * k.value + math.pi * 0.6 - - local target_x = math.cos(angle) * 6 + k.x + 8 - local target_y = math.sin(angle) * 6 + k.y + 8 - - spr.sdraw(k.x, k.y, 0, 64, 16, 16) - shape.line(k.x + 8, k.y + 8, target_x, target_y, 9) - print(k.label, k.x, k.y + 18) + k:_draw() end + factory._draw = function() for c in all(counters) do if c.enabled then @@ -507,7 +547,7 @@ factory._draw = function() for e in all(envelops) do if e.is_over_attack then - + end if e.enabled then draw_envelop(e) From c5763b7b6d410c619accfd8a7cd8ea6374cc783d Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Fri, 15 Mar 2024 12:05:02 +0100 Subject: [PATCH 33/46] Refactoring of the SFX editor. --- tiny-cli/sfx.aseprite | Bin 2168 -> 3096 bytes tiny-cli/src/jvmMain/resources/sfx/_tiny.json | 16 +- .../src/jvmMain/resources/sfx/data/sfx-0.sfx | 7 + .../src/jvmMain/resources/sfx/editor.ldtk | 4977 +++++++++++++++++ .../sfx/editor/simplified/Fx/Tiles.png | Bin 0 -> 383 bytes .../sfx/editor/simplified/Fx/_bg.png | Bin 0 -> 322 bytes .../sfx/editor/simplified/Fx/_composite.png | Bin 0 -> 396 bytes .../sfx/editor/simplified/Fx/data.json | 307 + .../sfx/editor/simplified/Level_0/Tiles.png | Bin 0 -> 370 bytes .../sfx/editor/simplified/Level_0/_bg.png | Bin 0 -> 328 bytes .../editor/simplified/Level_0/_composite.png | Bin 0 -> 370 bytes .../sfx/editor/simplified/Level_0/data.json | 130 + .../sfx/editor/simplified/Score/Tiles.png | Bin 0 -> 562 bytes .../sfx/editor/simplified/Score/_bg.png | Bin 0 -> 322 bytes .../editor/simplified/Score/_composite.png | Bin 0 -> 569 bytes .../sfx/editor/simplified/Score/data.json | 914 +++ tiny-cli/src/jvmMain/resources/sfx/mouse.lua | 3 +- tiny-cli/src/jvmMain/resources/sfx/sfx.png | Bin 2106 -> 3324 bytes .../src/jvmMain/resources/sfx/test-game.lua | 329 ++ .../src/jvmMain/resources/sfx/tiny-export.zip | Bin 226708 -> 231750 bytes .../src/jvmMain/resources/sfx/widgets.lua | 589 +- .../github/minigdx/tiny/engine/GameEngine.kt | 51 +- .../minigdx/tiny/engine/GameResourceAccess.kt | 7 + .../minigdx/tiny/engine/ScriptsCollector.kt | 44 + .../minigdx/tiny/graphic/FrameBuffer.kt | 3 +- .../com/github/minigdx/tiny/lua/GfxLib.kt | 12 +- .../com/github/minigdx/tiny/lua/SprLib.kt | 2 + .../com/github/minigdx/tiny/lua/StdLib.kt | 7 +- .../tiny/platform/glfw/GlfwPlatform.kt | 4 + 29 files changed, 7059 insertions(+), 343 deletions(-) create mode 100644 tiny-cli/src/jvmMain/resources/sfx/data/sfx-0.sfx create mode 100644 tiny-cli/src/jvmMain/resources/sfx/editor.ldtk create mode 100644 tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Fx/Tiles.png create mode 100644 tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Fx/_bg.png create mode 100644 tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Fx/_composite.png create mode 100644 tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Fx/data.json create mode 100644 tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Level_0/Tiles.png create mode 100644 tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Level_0/_bg.png create mode 100644 tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Level_0/_composite.png create mode 100644 tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Level_0/data.json create mode 100644 tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Score/Tiles.png create mode 100644 tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Score/_bg.png create mode 100644 tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Score/_composite.png create mode 100644 tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Score/data.json create mode 100644 tiny-cli/src/jvmMain/resources/sfx/test-game.lua create mode 100644 tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/ScriptsCollector.kt diff --git a/tiny-cli/sfx.aseprite b/tiny-cli/sfx.aseprite index 23e6ad82a0c3f6eea189724fadc5ef4ab4744801..5e6c52f6b50f0202a9650daa759a207c64ffdbc1 100644 GIT binary patch delta 2348 zcmYjSYgAKL7QT=QvZNwaM|=@{Q0oISs8JL`810Cb3bnK%Ne~7q5F(@m140Owwpy2p zFj&M^B$*Z!6?s?;F}yB_kP1SCAZY_66bKuWshQtV+nCkR^RVZXQs zLEwMW($X#qx_DPx;#awyxF(RZ?b7lstTdk^3HC?Q?AANk6?<&k@~_pas$K2vKREp+ z7cbez8!*Xb{KW7-)W`cjC}~m$AXjyljn{n z`cD=Z139<+Rke4e?~t?#Jc34Wl_Q6~e7|~CtiR90XC(}BkN8euf3O6lg@ro$yaft3 zk0GI)aYH|sm0xyN>HjK`Dz7!&J%t6ChyXrEs@o9N9+rPpwAbAT4EHl6X1L2OdV!$i zQ`Dc>7{R%kStYCS8S@#SJHJs}m!gCi2;;Ycez#!*Ih{5wY}mQkuLIt_Qf180y_!Ub zEB~!)^R$L8p~RqQ38lWA>*AhIp)m|_900w6A4qzC4aUTUO`$IE4Q39Qt=p?>HB10v zhzd?}p0OmgIpyybnRF3YuqjcZnFXcoH=pzMx*?T(oZG0ewGm@lU|1vF098 z1_TF2BS5h2_S3-e-J;0Dl>*frBT@qn@&5c&M{2J}=x1G@mD*4pkhG%BRD0U2dzg^1D0XSVg#w2ue|kb2D&xeE}glyf(&O z-Y&E6O=8wRqU&4mX3`7IIu2$DWgiyt|gYK$O|~FH`;A&*11e?@S4CsA4rP4ozuW;<)-}nRkW)?1ud}xyB~S6b)C+%if54Mz6yYnp5Y* zvV!)@t-BaAo0fHdXW*>kW$jgU{{VENkl;f%zqGpCW2_;ue~HQRrcWQ7c@kAr&0{D0 ziAmz8f1Or>Oxfqs%eQoieZ3TTLq$MI3*ZSJthF&KuJ0jY@iG69$5G|X>4+fW-DdAr(^7b2BG`UD1@)eOTu>TKDPrzO14tOENmSw()w`f81Rx&V*=j^ zFOUx6eP4rXZXW7TLF&$OzA3jfmCJqQr>Pr9;<4y9e!mC~?5=X<_wd@_F1oJiys~n0 z7%#FR#P6SHziPVIIs%6 z@AmcI0C5m28?#tC1kD8(#~nmZv%3xt2Q5&=@AYznO782p@3QNVFTS6@*M{$6OUz_a z=%kngGhA5R%6bRi4ls`{3!fzqm#l73-@_bPjPFG3rqiaVx%?TV*S6mw0j=1(Km6E& zP79<-Nw)4$Bu!U?f^rM~A!T*nI67zkIB}4$S^q|h)HEf^FBg&3C$t+fJIzt`4^AJW zTdNGHh8Eptg?E7RuPgPsBe%g?!#Y?lC_8y^T+*oQN>~p#zuo$|3l%&)s-0|wCw^Y| z=|A89{s&r8eoEQ-*p{2LMq{H^-8T|P$bp;V7n0S>XYkQcOO`f+7zHmc6j}YGl=SUU z8!1Denxr>@Ontsllla?#I6>q74Ef`1g&2$IF&a-#)Kn(sS=@U+b7+5M&-4mBCdk7>n#Br1wYX>z^iPJm}Dc_$cw&y z){+D-NzH2@Gm z%OHtA6i|=F{ZOm=j6m6Vn;p)2ak#1wNpp_(TsnIO!xP=_3?1;lgg(oo$_GSmD8FW3QsMh&%0K(LjHrQ8BsWx`rnP|P8a4Q)w~=o%cjvN_3x(TmmJJrAK3nr{X3w<5 z9ze$Jc~vUi#~rgmc9zkGo8Ox_xK%nOQ*H6xlog_W+hdx5GyO4du73cE*=73nN_W46 ztnigZ!4T@idiqVQ6A8Kks_o7BpqgNoSnyMw)0m^#>XH_xHo!|w`Txe5b-Z)X@A(t; zS&G}fQ1yXFCb=@~T1vE$Yu|k47nFxcjyXeTu52(}wSySn0EiPK;!oGa;C!HA`IrS8 zqVNC7Agg3hd9H1Lx<=Lh}X%h~p3(7O${$oZzy>{3n01$O-( zst+{bo~)RJA@oHizFF}`h|6&pg>%@C3>z22Eu(%ma`T;l;e(5heEdY`@b`efGIVBR tI|gxH=vyH4+r_`Nn(+`6O)yX4p{*~W9PaP}IfvVlo?|e(;OryB{{=o$A#(r# delta 1434 zcmYM!YfzGD6ae54FR|q)x>MdZw8qNH#3ggpNVNN|WM0}duZ&u`#HyJl0;{-VS&nJx zmZagORWu{5@QMPOwpeMfX`rd0ZYo~+Ff!r^S*P=%=z)&wOlsUOZhHO zZ->4qV48>a>AkybK2b^}+_=EC2u-@^Y+b6ezLUVhXu-5MRSLbpU{LI0c!ueNEt+ zKO`&QCrEsdFJwn&7o=`sYE8gr&2lIKbaVEQ!1&tBT{Sw$jAX`Io%CSMo`<^q(6zx+ z*6(^WnE?P8ZqfTPRrfVOxfJjNQW*2a=u6@sO}$dhyfY)GI7c%hckbjEChgnRd}P11 zH40{Ealfo=%wXNQzn}OAvg_HpkWWPH%O8_2|7>x# z#=kowMkQ3*=&82m9u>B}J;<34<~jW7>W76KRug`CJ+w%_XI1^m*o@8ujaIOjXsqcC97JhIqJ%xGR=HE5 zGvTy2a^{M1U-xiooYPjO_+d}PV z*^N!O;UhB1MJG49@?>bOyJRA~idwMXKsK9=#K|krwyU>i2t;y|%sL{A+){LyC~wvW z1Nte$*%8%g6Jf(0ttP5RQbK~0Qjkx>3}OqSJmq-4H-ad_%(G(a>L26mQXM!|wGL!@ z?NECwBidY55mX(`B+JfAU7G2_zEIg5ha2dOcbI5oruZWJxU9meN$$uj<5XgGaxj`s zn9Wz?P*`vDwx-Zatbcg)`D)w&_(o8Z69xt9}+>#365=T;L=#H8}@?pV$No< z^cQbV%~Jt;hfCtWy$m*!|FNvi1zssUeWUQRuqEjv3O{(1Hdpa?; zFrqJKGOQw5P8OZy8Qs2sVyd&moFOeSrGJW%f6w z;lww!vficKdbcK8eQjnOxVwurvEmq_3;3f^V&JGeF@G1@%4A_k$zO@WH^Zz-b{yHf zg-f(-Gxc>5ioFI3VV2hNJoPxaDH;YSR?){p`nw;%=oVwZLC4 zgVi4j(+2>r3KfPf)xeI~rKyHzS9bF>ye>rhq3iEyE+zJp;t}d+U{4A)gLLs2m-h_g zW+#=7A{l1!@d^{+b&^LuWd~!^tfqnY2yU4Z#t(jVoEi*zqygsROQ)@6(@Q}Fo+Lya zs`^rk3hTb>B=#6*zs>GlWomIdSD&m@fauf?E*}F%j6|> zXokmbjj{ZI^s?=7hM^FbHvzWIH@|!(-%#9I1W$2A@X;4XM7_G3Haej3pgLKjo%GMv zl1nezxBFig68KDG6`&?0n5X~=3nDz&LA_K+!?XtXCKvFL7VCWB|x5gau{21HP66*$kVy5Hb+Ta@*N~~jg LxxxZw9a8f@LI~V` diff --git a/tiny-cli/src/jvmMain/resources/sfx/_tiny.json b/tiny-cli/src/jvmMain/resources/sfx/_tiny.json index 0ead4ff8..691e3daf 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/_tiny.json +++ b/tiny-cli/src/jvmMain/resources/sfx/_tiny.json @@ -2,14 +2,14 @@ "version": "V1", "name": "Tiny SFX Sequencer", "resolution": { - "width": 512, - "height": 288 + "width": 192, + "height": 128 }, "sprites": { - "width": 16, - "height": 16 + "width": 8, + "height": 8 }, - "zoom": 2, + "zoom": 4, "colors": [ "#000000", "#1D2B53", @@ -29,6 +29,7 @@ "#FFCCAA" ], "scripts": [ + "test-game.lua", "game.lua", "mouse.lua", "widgets.lua" @@ -36,5 +37,10 @@ "spritesheets": [ "sfx.png" ], + "levels": [ + "editor/simplified/Level_0", + "editor/simplified/Score", + "editor/simplified/Fx" + ], "hideMouseCursor": true } \ No newline at end of file diff --git a/tiny-cli/src/jvmMain/resources/sfx/data/sfx-0.sfx b/tiny-cli/src/jvmMain/resources/sfx/data/sfx-0.sfx new file mode 100644 index 00000000..95d4265f --- /dev/null +++ b/tiny-cli/src/jvmMain/resources/sfx/data/sfx-0.sfx @@ -0,0 +1,7 @@ +tiny-sfx 35 0 +1 01 17 00 FF 17 01 AF CF 00 00 +023BFF 023CFF 023DFF 023EFF 023EFF 023CFF 023AFF 0238FF 0237FF 0236FF 0236FF 0236FF 023AFF 0340FF 0001FF 0001FF 0001FF 0001FF 0001FF 0001FF 0001FF 0001FF 0001FF 0001FF 0001FF 0001FF 0001FF 0001FF 0001FF 0001FF 0001FF 0001FF +1 +0 01 00 00 FF 00 00 00 00 00 00 +0 01 00 00 FF 00 00 00 00 00 00 +0 01 00 00 FF 00 00 00 00 00 00 diff --git a/tiny-cli/src/jvmMain/resources/sfx/editor.ldtk b/tiny-cli/src/jvmMain/resources/sfx/editor.ldtk new file mode 100644 index 00000000..0da20e61 --- /dev/null +++ b/tiny-cli/src/jvmMain/resources/sfx/editor.ldtk @@ -0,0 +1,4977 @@ +{ + "__header__": { + "fileType": "LDtk Project JSON", + "app": "LDtk", + "doc": "https://ldtk.io/json", + "schema": "https://ldtk.io/files/JSON_SCHEMA.json", + "appAuthor": "Sebastien 'deepnight' Benard", + "appVersion": "1.5.3", + "url": "https://ldtk.io" + }, + "iid": "d3199780-d7b0-11ee-9c45-618e61de5acd", + "jsonVersion": "1.5.3", + "appBuildId": 473703, + "nextUid": 55, + "identifierStyle": "Capitalize", + "toc": [], + "worldLayout": "Free", + "worldGridWidth": 256, + "worldGridHeight": 256, + "defaultLevelWidth": 256, + "defaultLevelHeight": 256, + "defaultPivotX": 0, + "defaultPivotY": 0, + "defaultGridSize": 16, + "defaultEntityWidth": 16, + "defaultEntityHeight": 16, + "bgColor": "#40465B", + "defaultLevelBgColor": "#696A79", + "minifyJson": false, + "externalLevels": false, + "exportTiled": false, + "simplifiedExport": true, + "imageExportMode": "None", + "exportLevelBg": true, + "pngFilePattern": null, + "backupOnSave": false, + "backupLimit": 10, + "backupRelPath": null, + "levelNamePattern": "Level_%idx", + "tutorialDesc": null, + "customCommands": [], + "flags": [], + "defs": { "layers": [ + { + "__type": "Entities", + "identifier": "Entities", + "type": "Entities", + "uid": 7, + "doc": null, + "uiColor": null, + "gridSize": 8, + "guideGridWid": 0, + "guideGridHei": 0, + "displayOpacity": 1, + "inactiveOpacity": 0.6, + "hideInList": false, + "hideFieldsWhenInactive": true, + "canSelectWhenInactive": true, + "renderInWorldView": true, + "pxOffsetX": 0, + "pxOffsetY": 0, + "parallaxFactorX": 0, + "parallaxFactorY": 0, + "parallaxScaling": true, + "requiredTags": [], + "excludedTags": [], + "autoTilesKilledByOtherLayerUid": null, + "uiFilterTags": [], + "useAsyncRender": false, + "intGridValues": [], + "intGridValuesGroups": [], + "autoRuleGroups": [], + "autoSourceLayerDefUid": null, + "tilesetDefUid": null, + "tilePivotX": 0, + "tilePivotY": 0, + "biomeFieldUid": null + }, + { + "__type": "Tiles", + "identifier": "Tiles", + "type": "Tiles", + "uid": 8, + "doc": null, + "uiColor": null, + "gridSize": 8, + "guideGridWid": 0, + "guideGridHei": 0, + "displayOpacity": 1, + "inactiveOpacity": 1, + "hideInList": false, + "hideFieldsWhenInactive": false, + "canSelectWhenInactive": true, + "renderInWorldView": true, + "pxOffsetX": 0, + "pxOffsetY": 0, + "parallaxFactorX": 0, + "parallaxFactorY": 0, + "parallaxScaling": true, + "requiredTags": [], + "excludedTags": [], + "autoTilesKilledByOtherLayerUid": null, + "uiFilterTags": [], + "useAsyncRender": false, + "intGridValues": [], + "intGridValuesGroups": [], + "autoRuleGroups": [], + "autoSourceLayerDefUid": null, + "tilesetDefUid": 1, + "tilePivotX": 0, + "tilePivotY": 0, + "biomeFieldUid": null + } + ], "entities": [ + { + "identifier": "MenuItem", + "uid": 2, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": false, + "doc": null, + "width": 8, + "height": 8, + "resizableX": true, + "resizableY": false, + "minWidth": 8, + "maxWidth": null, + "minHeight": null, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 1, + "lineOpacity": 1, + "hollow": false, + "color": "#BE4A2F", + "renderMode": "Rectangle", + "showName": true, + "tilesetId": null, + "tileRenderMode": "FitInside", + "tileRect": null, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0, + "pivotY": 0, + "fieldDefs": [ + { + "identifier": "Item", + "doc": null, + "__type": "LocalEnum.Item", + "uid": 6, + "type": "F_Enum(5)", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "EntityTile", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": { + "id": "V_String", + "params": ["Space"] + }, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": true, + "allowOutOfLevelRef": true, + "allowedRefs": "OnlySame", + "allowedRefsEntityUid": null, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Help", + "doc": null, + "__type": "String", + "uid": 21, + "type": "F_String", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "Hidden", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": true, + "allowOutOfLevelRef": true, + "allowedRefs": "OnlySame", + "allowedRefsEntityUid": null, + "allowedRefTags": [], + "tilesetUid": null + } + ] + }, + { + "identifier": "Knob", + "uid": 9, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": false, + "doc": null, + "width": 8, + "height": 8, + "resizableX": false, + "resizableY": false, + "minWidth": null, + "maxWidth": null, + "minHeight": null, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 0.08, + "lineOpacity": 0, + "hollow": false, + "color": "#D77643", + "renderMode": "Tile", + "showName": true, + "tilesetId": 1, + "tileRenderMode": "FitInside", + "tileRect": { "tilesetUid": 1, "x": 240, "y": 0, "w": 8, "h": 8 }, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0, + "pivotY": 0, + "fieldDefs": [ + { + "identifier": "Label", + "doc": null, + "__type": "String", + "uid": 10, + "type": "F_String", + "isArray": false, + "canBeNull": true, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "Hidden", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": true, + "allowOutOfLevelRef": true, + "allowedRefs": "OnlySame", + "allowedRefsEntityUid": null, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Help", + "doc": null, + "__type": "String", + "uid": 22, + "type": "F_String", + "isArray": false, + "canBeNull": true, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "Hidden", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": true, + "allowOutOfLevelRef": true, + "allowedRefs": "OnlySame", + "allowedRefsEntityUid": null, + "allowedRefTags": [], + "tilesetUid": null + } + ] + }, + { + "identifier": "Fader", + "uid": 12, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": false, + "doc": null, + "width": 8, + "height": 16, + "resizableX": false, + "resizableY": true, + "minWidth": null, + "maxWidth": null, + "minHeight": 16, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 1, + "lineOpacity": 1, + "hollow": false, + "color": "#63C74D", + "renderMode": "Rectangle", + "showName": true, + "tilesetId": null, + "tileRenderMode": "FitInside", + "tileRect": null, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0, + "pivotY": 0, + "fieldDefs": [ + { + "identifier": "Id", + "doc": null, + "__type": "Int", + "uid": 14, + "type": "F_Int", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "Hidden", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": true, + "allowOutOfLevelRef": true, + "allowedRefs": "OnlySame", + "allowedRefsEntityUid": null, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Type", + "doc": null, + "__type": "LocalEnum.Fader", + "uid": 18, + "type": "F_Enum(16)", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "Hidden", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": { + "id": "V_String", + "params": ["Note"] + }, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": true, + "allowOutOfLevelRef": true, + "allowedRefs": "OnlySame", + "allowedRefsEntityUid": null, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Label", + "doc": null, + "__type": "String", + "uid": 30, + "type": "F_String", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "Hidden", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": true, + "allowOutOfLevelRef": true, + "allowedRefs": "OnlySame", + "allowedRefsEntityUid": null, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Help", + "doc": null, + "__type": "String", + "uid": 31, + "type": "F_String", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "Hidden", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": true, + "allowOutOfLevelRef": true, + "allowedRefs": "OnlySame", + "allowedRefsEntityUid": null, + "allowedRefTags": [], + "tilesetUid": null + } + ] + }, + { + "identifier": "Button", + "uid": 17, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": false, + "doc": null, + "width": 8, + "height": 8, + "resizableX": false, + "resizableY": false, + "minWidth": null, + "maxWidth": null, + "minHeight": null, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 0.08, + "lineOpacity": 0, + "hollow": false, + "color": "#EAD4AA", + "renderMode": "Tile", + "showName": true, + "tilesetId": 1, + "tileRenderMode": "FitInside", + "tileRect": { "tilesetUid": 1, "x": 224, "y": 0, "w": 8, "h": 8 }, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0, + "pivotY": 0, + "fieldDefs": [ + { + "identifier": "Type", + "doc": null, + "__type": "LocalEnum.ButtonType", + "uid": 20, + "type": "F_Enum(19)", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "EntityTile", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": true, + "allowOutOfLevelRef": true, + "allowedRefs": "OnlySame", + "allowedRefsEntityUid": null, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Help", + "doc": null, + "__type": "String", + "uid": 23, + "type": "F_String", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "Hidden", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": true, + "allowOutOfLevelRef": true, + "allowedRefs": "OnlySame", + "allowedRefsEntityUid": null, + "allowedRefTags": [], + "tilesetUid": null + } + ] + }, + { + "identifier": "Envelop", + "uid": 25, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": false, + "doc": null, + "width": 16, + "height": 16, + "resizableX": true, + "resizableY": true, + "minWidth": 16, + "maxWidth": null, + "minHeight": 16, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 1, + "lineOpacity": 1, + "hollow": false, + "color": "#E4A672", + "renderMode": "Rectangle", + "showName": true, + "tilesetId": null, + "tileRenderMode": "FitInside", + "tileRect": null, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0, + "pivotY": 0, + "fieldDefs": [ + { + "identifier": "Help", + "doc": null, + "__type": "String", + "uid": 26, + "type": "F_String", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "Hidden", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": true, + "allowOutOfLevelRef": true, + "allowedRefs": "OnlySame", + "allowedRefsEntityUid": null, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Attack", + "doc": null, + "__type": "EntityRef", + "uid": 32, + "type": "F_EntityRef", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "RefLinkBetweenCenters", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": false, + "allowOutOfLevelRef": false, + "allowedRefs": "OnlySpecificEntity", + "allowedRefsEntityUid": 12, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Decay", + "doc": null, + "__type": "EntityRef", + "uid": 33, + "type": "F_EntityRef", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "RefLinkBetweenCenters", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": false, + "allowOutOfLevelRef": false, + "allowedRefs": "OnlySpecificEntity", + "allowedRefsEntityUid": 12, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Sustain", + "doc": null, + "__type": "EntityRef", + "uid": 34, + "type": "F_EntityRef", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "RefLinkBetweenCenters", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": false, + "allowOutOfLevelRef": false, + "allowedRefs": "OnlySpecificEntity", + "allowedRefsEntityUid": 12, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Release", + "doc": null, + "__type": "EntityRef", + "uid": 35, + "type": "F_EntityRef", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "RefLinkBetweenCenters", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": false, + "allowOutOfLevelRef": false, + "allowedRefs": "OnlySpecificEntity", + "allowedRefsEntityUid": 12, + "allowedRefTags": [], + "tilesetUid": null + } + ] + }, + { + "identifier": "Checkbox", + "uid": 27, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": false, + "doc": null, + "width": 8, + "height": 8, + "resizableX": false, + "resizableY": false, + "minWidth": null, + "maxWidth": null, + "minHeight": null, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 0.08, + "lineOpacity": 0, + "hollow": false, + "color": "#733E39", + "renderMode": "Tile", + "showName": true, + "tilesetId": 1, + "tileRenderMode": "FitInside", + "tileRect": { "tilesetUid": 1, "x": 8, "y": 48, "w": 8, "h": 8 }, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0, + "pivotY": 0, + "fieldDefs": [ + { + "identifier": "Help", + "doc": null, + "__type": "String", + "uid": 28, + "type": "F_String", + "isArray": false, + "canBeNull": true, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "Hidden", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": true, + "allowOutOfLevelRef": true, + "allowedRefs": "OnlySame", + "allowedRefsEntityUid": null, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Label", + "doc": null, + "__type": "String", + "uid": 29, + "type": "F_String", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "Hidden", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "StraightArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": true, + "allowOutOfLevelRef": true, + "allowedRefs": "OnlySame", + "allowedRefsEntityUid": null, + "allowedRefTags": [], + "tilesetUid": null + } + ] + }, + { + "identifier": "Vibrato", + "uid": 36, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": true, + "doc": null, + "width": 8, + "height": 8, + "resizableX": true, + "resizableY": true, + "minWidth": 8, + "maxWidth": null, + "minHeight": 8, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 1, + "lineOpacity": 1, + "hollow": false, + "color": "#3E2731", + "renderMode": "Rectangle", + "showName": true, + "tilesetId": null, + "tileRenderMode": "FitInside", + "tileRect": null, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0, + "pivotY": 0, + "fieldDefs": [ + { + "identifier": "Enabled", + "doc": null, + "__type": "EntityRef", + "uid": 39, + "type": "F_EntityRef", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "RefLinkBetweenCenters", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": false, + "allowOutOfLevelRef": false, + "allowedRefs": "OnlySpecificEntity", + "allowedRefsEntityUid": 27, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Vibrato", + "doc": null, + "__type": "EntityRef", + "uid": 40, + "type": "F_EntityRef", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "RefLinkBetweenCenters", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": false, + "allowOutOfLevelRef": false, + "allowedRefs": "OnlySpecificEntity", + "allowedRefsEntityUid": 9, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Depth", + "doc": null, + "__type": "EntityRef", + "uid": 41, + "type": "F_EntityRef", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "RefLinkBetweenCenters", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": false, + "allowOutOfLevelRef": false, + "allowedRefs": "OnlySpecificEntity", + "allowedRefsEntityUid": 9, + "allowedRefTags": [], + "tilesetUid": null + } + ] + }, + { + "identifier": "Sweep", + "uid": 37, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": true, + "doc": null, + "width": 8, + "height": 8, + "resizableX": true, + "resizableY": true, + "minWidth": 8, + "maxWidth": null, + "minHeight": 8, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 1, + "lineOpacity": 1, + "hollow": false, + "color": "#FEAE34", + "renderMode": "Rectangle", + "showName": true, + "tilesetId": null, + "tileRenderMode": "FitInside", + "tileRect": null, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0, + "pivotY": 0, + "fieldDefs": [ + { + "identifier": "Sweep", + "doc": null, + "__type": "EntityRef", + "uid": 42, + "type": "F_EntityRef", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "RefLinkBetweenCenters", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": false, + "allowOutOfLevelRef": false, + "allowedRefs": "OnlySpecificEntity", + "allowedRefsEntityUid": 9, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Acceleration", + "doc": null, + "__type": "EntityRef", + "uid": 43, + "type": "F_EntityRef", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "RefLinkBetweenCenters", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": false, + "allowOutOfLevelRef": false, + "allowedRefs": "OnlySpecificEntity", + "allowedRefsEntityUid": 9, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Enabled", + "doc": null, + "__type": "EntityRef", + "uid": 44, + "type": "F_EntityRef", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "RefLinkBetweenCenters", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": false, + "allowOutOfLevelRef": false, + "allowedRefs": "OnlySpecificEntity", + "allowedRefsEntityUid": 27, + "allowedRefTags": [], + "tilesetUid": null + } + ] + }, + { + "identifier": "TiedNote", + "uid": 38, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": true, + "doc": null, + "width": 8, + "height": 8, + "resizableX": true, + "resizableY": true, + "minWidth": 8, + "maxWidth": null, + "minHeight": 8, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 1, + "lineOpacity": 1, + "hollow": false, + "color": "#FEE761", + "renderMode": "Rectangle", + "showName": true, + "tilesetId": null, + "tileRenderMode": "FitInside", + "tileRect": null, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0, + "pivotY": 0, + "fieldDefs": [ + { + "identifier": "Enabled", + "doc": null, + "__type": "EntityRef", + "uid": 45, + "type": "F_EntityRef", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "RefLinkBetweenCenters", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": false, + "allowOutOfLevelRef": false, + "allowedRefs": "OnlySpecificEntity", + "allowedRefsEntityUid": 27, + "allowedRefTags": [], + "tilesetUid": null + } + ] + }, + { + "identifier": "WaveSelector", + "uid": 46, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": false, + "doc": null, + "width": 8, + "height": 8, + "resizableX": false, + "resizableY": false, + "minWidth": null, + "maxWidth": null, + "minHeight": null, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 1, + "lineOpacity": 1, + "hollow": false, + "color": "#3E8948", + "renderMode": "Rectangle", + "showName": true, + "tilesetId": null, + "tileRenderMode": "FitInside", + "tileRect": null, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0, + "pivotY": 0, + "fieldDefs": [ + { + "identifier": "Sine", + "doc": null, + "__type": "EntityRef", + "uid": 47, + "type": "F_EntityRef", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "RefLinkBetweenCenters", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": false, + "allowOutOfLevelRef": false, + "allowedRefs": "OnlySpecificEntity", + "allowedRefsEntityUid": 17, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Triangle", + "doc": null, + "__type": "EntityRef", + "uid": 48, + "type": "F_EntityRef", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "RefLinkBetweenCenters", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": false, + "allowOutOfLevelRef": false, + "allowedRefs": "OnlySpecificEntity", + "allowedRefsEntityUid": 17, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Pulse", + "doc": null, + "__type": "EntityRef", + "uid": 49, + "type": "F_EntityRef", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "RefLinkBetweenCenters", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": false, + "allowOutOfLevelRef": false, + "allowedRefs": "OnlySpecificEntity", + "allowedRefsEntityUid": 17, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Noise", + "doc": null, + "__type": "EntityRef", + "uid": 50, + "type": "F_EntityRef", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "RefLinkBetweenCenters", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": false, + "allowOutOfLevelRef": false, + "allowedRefs": "OnlySpecificEntity", + "allowedRefsEntityUid": 17, + "allowedRefTags": [], + "tilesetUid": null + } + ] + }, + { + "identifier": "Sound", + "uid": 51, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": true, + "doc": null, + "width": 8, + "height": 8, + "resizableX": true, + "resizableY": true, + "minWidth": 8, + "maxWidth": null, + "minHeight": 8, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 1, + "lineOpacity": 1, + "hollow": false, + "color": "#124E89", + "renderMode": "Rectangle", + "showName": true, + "tilesetId": null, + "tileRenderMode": "FitInside", + "tileRect": null, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0, + "pivotY": 0, + "fieldDefs": [ + { + "identifier": "Notes", + "doc": null, + "__type": "Array", + "uid": 52, + "type": "F_EntityRef", + "isArray": true, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "RefLinkBetweenCenters", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": false, + "allowOutOfLevelRef": false, + "allowedRefs": "OnlySpecificEntity", + "allowedRefsEntityUid": 12, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Volumes", + "doc": null, + "__type": "Array", + "uid": 53, + "type": "F_EntityRef", + "isArray": true, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "RefLinkBetweenCenters", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": false, + "allowOutOfLevelRef": false, + "allowedRefs": "OnlySpecificEntity", + "allowedRefsEntityUid": 12, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "WaveSelector", + "doc": null, + "__type": "EntityRef", + "uid": 54, + "type": "F_EntityRef", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "RefLinkBetweenCenters", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": false, + "allowOutOfLevelRef": false, + "allowedRefs": "OnlySpecificEntity", + "allowedRefsEntityUid": 46, + "allowedRefTags": [], + "tilesetUid": null + } + ] + } + ], "tilesets": [ + { + "__cWid": 32, + "__cHei": 32, + "identifier": "Sfx", + "uid": 1, + "relPath": "sfx.png", + "embedAtlas": null, + "pxWid": 256, + "pxHei": 256, + "tileGridSize": 8, + "spacing": 0, + "padding": 0, + "tags": [], + "tagsSourceEnumUid": null, + "enumTags": [], + "customData": [], + "savedSelections": [], + "cachedPixelData": { + "opaqueTiles": "0000000011110011111111111000000000000000011100111111111110000000000000000000000000000000001111100000000000000000000000000111111000000000000000111111111101111110000000000000001111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "averageColors": "fbbbfbbbfdccfdcc0000000000000000f625f625f625f62575252225f778f778f878f999f778f878f778fbbbfbbbf235f725bbaa7baa3baa5feecfee5dcc20d3faaafaaafccbfccb00000000000000008225f235f235f23572252225f736f736f736f736f736f736f736f736f736f846f7350000bdcc9dcc2f0540853fa022af1f050f05308540853fa02fa022af02af1fe22fe23f7a2f7a20d310d32fa01fa0376847684768476868792779877937680000e725f625f725f867f856f86749990f051f052085208500000000000012af1fe21fe200003f7a20c410b478455845376827681768176727672767676747670000f625f235f636f856f725f8564889fbbbfbbbfbbbfbbbfbbbfbbb00000000000000000000000000000000f446f446f446f557f446f446f446f658f658f2350000f725f636f735f867f856f8671aabea9aea9aeaaaea9aea9aeaaa00000000000000000000000000000000f7bff8bff8bff9cff8bff8bff8bffbdefbdef2afd235d235d23500002bbc2bbc00000000e888e68600000000000000000000000000000000000000000000000000000000000000000000000000000000000000004fee4fee4fee0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b99aba9a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b999ca89000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004fee4fee0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004fee4fee0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004fee4fee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004fee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + } + } + ], "enums": [ + { "identifier": "Item", "uid": 5, "values": [ + { "id": "Fx", "tileRect": { "tilesetUid": 1, "x": 120, "y": 0, "w": 8, "h": 8 }, "color": 12470831 }, + { "id": "Wave", "tileRect": { "tilesetUid": 1, "x": 112, "y": 0, "w": 8, "h": 8 }, "color": 14120515 }, + { "id": "Music", "tileRect": { "tilesetUid": 1, "x": 128, "y": 0, "w": 8, "h": 8 }, "color": 15389866 }, + { "id": "Save", "tileRect": { "tilesetUid": 1, "x": 136, "y": 0, "w": 8, "h": 8 }, "color": 14984818 }, + { "id": "Space", "tileRect": { "tilesetUid": 1, "x": 152, "y": 8, "w": 8, "h": 8 }, "color": 7552569 }, + { "id": "Prev", "tileRect": { "tilesetUid": 1, "x": 168, "y": 0, "w": 8, "h": 8 }, "color": 4073265 }, + { "id": "Next", "tileRect": { "tilesetUid": 1, "x": 176, "y": 0, "w": 8, "h": 8 }, "color": 16690740 }, + { "id": "Help", "tileRect": null, "color": 6539085 }, + { "id": "Filename", "tileRect": null, "color": 16705377 } + ], "iconTilesetUid": 1, "externalRelPath": null, "externalFileChecksum": null, "tags": [] }, + { "identifier": "Fader", "uid": 16, "values": [ { "id": "Note", "tileRect": null, "color": 12470831 }, { "id": "Volume", "tileRect": null, "color": 14120515 } ], "iconTilesetUid": null, "externalRelPath": null, "externalFileChecksum": null, "tags": [] }, + { "identifier": "ButtonType", "uid": 19, "values": [ + { "id": "Sine", "tileRect": { "tilesetUid": 1, "x": 224, "y": 8, "w": 8, "h": 8 }, "color": 12470831 }, + { "id": "Noise", "tileRect": { "tilesetUid": 1, "x": 232, "y": 8, "w": 8, "h": 8 }, "color": 14120515 }, + { "id": "Pulse", "tileRect": { "tilesetUid": 1, "x": 240, "y": 8, "w": 8, "h": 8 }, "color": 15389866 }, + { "id": "Triangle", "tileRect": { "tilesetUid": 1, "x": 248, "y": 8, "w": 8, "h": 8 }, "color": 14984818 }, + { "id": "Play", "tileRect": { "tilesetUid": 1, "x": 248, "y": 0, "w": 8, "h": 8 }, "color": 7552569 }, + { "id": "Prev", "tileRect": { "tilesetUid": 1, "x": 224, "y": 40, "w": 8, "h": 8 }, "color": 4073265 }, + { "id": "Next", "tileRect": { "tilesetUid": 1, "x": 232, "y": 40, "w": 8, "h": 8 }, "color": 16690740 } + ], "iconTilesetUid": 1, "externalRelPath": null, "externalFileChecksum": null, "tags": [] } + ], "externalEnums": [], "levelFields": [] }, + "levels": [ + { + "identifier": "Level_0", + "iid": "d319e5a0-d7b0-11ee-9c45-898e2a016ceb", + "uid": 0, + "worldX": 0, + "worldY": 0, + "worldDepth": 0, + "pxWid": 192, + "pxHei": 128, + "__bgColor": "#696A79", + "bgColor": null, + "useAutoIdentifier": true, + "bgRelPath": null, + "bgPos": null, + "bgPivotX": 0.5, + "bgPivotY": 0.5, + "__smartColor": "#ADADB5", + "__bgPos": null, + "externalRelPath": null, + "fieldInstances": [], + "layerInstances": [ + { + "__identifier": "Entities", + "__type": "Entities", + "__cWid": 24, + "__cHei": 16, + "__gridSize": 8, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": null, + "__tilesetRelPath": null, + "iid": "8a2f1940-d7b0-11ee-9c45-cd8bc568018a", + "levelId": 0, + "layerDefUid": 7, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 7970479, + "overrideTilesetUid": null, + "gridTiles": [], + "entityInstances": [ + { + "__identifier": "MenuItem", + "__grid": [0,0], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 112, "y": 0, "w": 8, "h": 8 }, + "__smartColor": "#BE4A2F", + "iid": "a32b9540-d7b0-11ee-9c45-491e1f214479", + "width": 8, + "height": 8, + "defUid": 2, + "px": [0,0], + "fieldInstances": [ + { "__identifier": "Item", "__type": "LocalEnum.Item", "__value": "Wave", "__tile": { "tilesetUid": 1, "x": 112, "y": 0, "w": 8, "h": 8 }, "defUid": 6, "realEditorValues": [{ + "id": "V_String", + "params": ["Wave"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Sound editor", "__tile": null, "defUid": 21, "realEditorValues": [{ + "id": "V_String", + "params": ["Sound editor"] + }] } + ], + "__worldX": 0, + "__worldY": 0 + }, + { + "__identifier": "MenuItem", + "__grid": [1,0], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 120, "y": 0, "w": 8, "h": 8 }, + "__smartColor": "#BE4A2F", + "iid": "ae1f62b0-d7b0-11ee-9c45-3b41b8a1c01f", + "width": 8, + "height": 8, + "defUid": 2, + "px": [8,0], + "fieldInstances": [ + { "__identifier": "Item", "__type": "LocalEnum.Item", "__value": "Fx", "__tile": { "tilesetUid": 1, "x": 120, "y": 0, "w": 8, "h": 8 }, "defUid": 6, "realEditorValues": [{ + "id": "V_String", + "params": ["Fx"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Fx editor", "__tile": null, "defUid": 21, "realEditorValues": [{ + "id": "V_String", + "params": ["Fx editor"] + }] } + ], + "__worldX": 8, + "__worldY": 0 + }, + { + "__identifier": "MenuItem", + "__grid": [2,0], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 128, "y": 0, "w": 8, "h": 8 }, + "__smartColor": "#BE4A2F", + "iid": "b3dbe430-d7b0-11ee-9c45-fdbc2054fa36", + "width": 8, + "height": 8, + "defUid": 2, + "px": [16,0], + "fieldInstances": [ + { "__identifier": "Item", "__type": "LocalEnum.Item", "__value": "Music", "__tile": { "tilesetUid": 1, "x": 128, "y": 0, "w": 8, "h": 8 }, "defUid": 6, "realEditorValues": [{ + "id": "V_String", + "params": ["Music"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Music editor", "__tile": null, "defUid": 21, "realEditorValues": [{ + "id": "V_String", + "params": ["Music editor"] + }] } + ], + "__worldX": 16, + "__worldY": 0 + }, + { + "__identifier": "MenuItem", + "__grid": [4,0], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 136, "y": 0, "w": 8, "h": 8 }, + "__smartColor": "#BE4A2F", + "iid": "b93e5ed0-d7b0-11ee-9c45-7fcf1ae264e3", + "width": 8, + "height": 8, + "defUid": 2, + "px": [32,0], + "fieldInstances": [ + { "__identifier": "Item", "__type": "LocalEnum.Item", "__value": "Save", "__tile": { "tilesetUid": 1, "x": 136, "y": 0, "w": 8, "h": 8 }, "defUid": 6, "realEditorValues": [{ + "id": "V_String", + "params": ["Save"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Save files", "__tile": null, "defUid": 21, "realEditorValues": [{ + "id": "V_String", + "params": ["Save files"] + }] } + ], + "__worldX": 32, + "__worldY": 0 + }, + { + "__identifier": "MenuItem", + "__grid": [6,0], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 168, "y": 0, "w": 8, "h": 8 }, + "__smartColor": "#BE4A2F", + "iid": "fce7b3d0-d7b0-11ee-9c45-9dddf90ef7e1", + "width": 8, + "height": 8, + "defUid": 2, + "px": [48,0], + "fieldInstances": [ + { "__identifier": "Item", "__type": "LocalEnum.Item", "__value": "Prev", "__tile": { "tilesetUid": 1, "x": 168, "y": 0, "w": 8, "h": 8 }, "defUid": 6, "realEditorValues": [{ + "id": "V_String", + "params": ["Prev"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Previous file", "__tile": null, "defUid": 21, "realEditorValues": [{ + "id": "V_String", + "params": ["Previous file"] + }] } + ], + "__worldX": 48, + "__worldY": 0 + }, + { + "__identifier": "MenuItem", + "__grid": [11,0], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 176, "y": 0, "w": 8, "h": 8 }, + "__smartColor": "#BE4A2F", + "iid": "04f9be10-d7b0-11ee-9c45-5153c382042a", + "width": 8, + "height": 8, + "defUid": 2, + "px": [88,0], + "fieldInstances": [ + { "__identifier": "Item", "__type": "LocalEnum.Item", "__value": "Next", "__tile": { "tilesetUid": 1, "x": 176, "y": 0, "w": 8, "h": 8 }, "defUid": 6, "realEditorValues": [{ + "id": "V_String", + "params": ["Next"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Next File", "__tile": null, "defUid": 21, "realEditorValues": [{ + "id": "V_String", + "params": ["Next File"] + }] } + ], + "__worldX": 88, + "__worldY": 0 + }, + { + "__identifier": "MenuItem", + "__grid": [7,0], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#BE4A2F", + "iid": "f0987fa0-d7b0-11ee-9c45-4bfc6d23b807", + "width": 32, + "height": 8, + "defUid": 2, + "px": [56,0], + "fieldInstances": [ + { "__identifier": "Item", "__type": "LocalEnum.Item", "__value": "Filename", "__tile": null, "defUid": 6, "realEditorValues": [{ + "id": "V_String", + "params": ["Filename"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 21, "realEditorValues": [] } + ], + "__worldX": 56, + "__worldY": 0 + }, + { + "__identifier": "MenuItem", + "__grid": [13,0], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#BE4A2F", + "iid": "f564d4c0-d7b0-11ee-9c45-958bceaa5715", + "width": 80, + "height": 8, + "defUid": 2, + "px": [104,0], + "fieldInstances": [ + { "__identifier": "Item", "__type": "LocalEnum.Item", "__value": "Help", "__tile": null, "defUid": 6, "realEditorValues": [{ + "id": "V_String", + "params": ["Help"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 21, "realEditorValues": [] } + ], + "__worldX": 104, + "__worldY": 0 + } + ] + }, + { + "__identifier": "Tiles", + "__type": "Tiles", + "__cWid": 24, + "__cHei": 16, + "__gridSize": 8, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": 1, + "__tilesetRelPath": "sfx.png", + "iid": "ccd0e620-d7b0-11ee-9c45-edfc77d24873", + "levelId": 0, + "layerDefUid": 8, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 3426962, + "overrideTilesetUid": null, + "gridTiles": [ + { "px": [0,0], "src": [184,0], "f": 0, "t": 23, "d": [0], "a": 1 }, + { "px": [8,0], "src": [184,0], "f": 0, "t": 23, "d": [1], "a": 1 }, + { "px": [16,0], "src": [184,0], "f": 0, "t": 23, "d": [2], "a": 1 }, + { "px": [24,0], "src": [184,0], "f": 0, "t": 23, "d": [3], "a": 1 }, + { "px": [32,0], "src": [184,0], "f": 0, "t": 23, "d": [4], "a": 1 }, + { "px": [40,0], "src": [184,0], "f": 0, "t": 23, "d": [5], "a": 1 }, + { "px": [48,0], "src": [184,0], "f": 0, "t": 23, "d": [6], "a": 1 }, + { "px": [56,0], "src": [144,0], "f": 0, "t": 18, "d": [7], "a": 1 }, + { "px": [64,0], "src": [152,0], "f": 0, "t": 19, "d": [8], "a": 1 }, + { "px": [72,0], "src": [152,0], "f": 0, "t": 19, "d": [9], "a": 1 }, + { "px": [80,0], "src": [160,0], "f": 0, "t": 20, "d": [10], "a": 1 }, + { "px": [88,0], "src": [184,0], "f": 0, "t": 23, "d": [11], "a": 1 }, + { "px": [96,0], "src": [184,0], "f": 0, "t": 23, "d": [12], "a": 1 }, + { "px": [104,0], "src": [184,0], "f": 0, "t": 23, "d": [13], "a": 1 }, + { "px": [112,0], "src": [184,0], "f": 0, "t": 23, "d": [14], "a": 1 }, + { "px": [120,0], "src": [184,0], "f": 0, "t": 23, "d": [15], "a": 1 }, + { "px": [128,0], "src": [184,0], "f": 0, "t": 23, "d": [16], "a": 1 }, + { "px": [136,0], "src": [184,0], "f": 0, "t": 23, "d": [17], "a": 1 }, + { "px": [144,0], "src": [184,0], "f": 0, "t": 23, "d": [18], "a": 1 }, + { "px": [152,0], "src": [184,0], "f": 0, "t": 23, "d": [19], "a": 1 }, + { "px": [160,0], "src": [184,0], "f": 0, "t": 23, "d": [20], "a": 1 }, + { "px": [168,0], "src": [184,0], "f": 0, "t": 23, "d": [21], "a": 1 }, + { "px": [176,0], "src": [184,0], "f": 0, "t": 23, "d": [22], "a": 1 }, + { "px": [184,0], "src": [184,0], "f": 0, "t": 23, "d": [23], "a": 1 }, + { "px": [0,8], "src": [112,8], "f": 0, "t": 46, "d": [24], "a": 1 }, + { "px": [8,8], "src": [112,8], "f": 0, "t": 46, "d": [25], "a": 1 }, + { "px": [16,8], "src": [112,8], "f": 0, "t": 46, "d": [26], "a": 1 }, + { "px": [24,8], "src": [112,8], "f": 0, "t": 46, "d": [27], "a": 1 }, + { "px": [32,8], "src": [112,8], "f": 0, "t": 46, "d": [28], "a": 1 }, + { "px": [40,8], "src": [112,8], "f": 0, "t": 46, "d": [29], "a": 1 }, + { "px": [48,8], "src": [112,8], "f": 0, "t": 46, "d": [30], "a": 1 }, + { "px": [56,8], "src": [112,8], "f": 0, "t": 46, "d": [31], "a": 1 }, + { "px": [64,8], "src": [112,8], "f": 0, "t": 46, "d": [32], "a": 1 }, + { "px": [72,8], "src": [112,8], "f": 0, "t": 46, "d": [33], "a": 1 }, + { "px": [80,8], "src": [112,8], "f": 0, "t": 46, "d": [34], "a": 1 }, + { "px": [88,8], "src": [112,8], "f": 0, "t": 46, "d": [35], "a": 1 }, + { "px": [96,8], "src": [112,8], "f": 0, "t": 46, "d": [36], "a": 1 }, + { "px": [104,8], "src": [112,8], "f": 0, "t": 46, "d": [37], "a": 1 }, + { "px": [112,8], "src": [112,8], "f": 0, "t": 46, "d": [38], "a": 1 }, + { "px": [120,8], "src": [112,8], "f": 0, "t": 46, "d": [39], "a": 1 }, + { "px": [128,8], "src": [112,8], "f": 0, "t": 46, "d": [40], "a": 1 }, + { "px": [136,8], "src": [112,8], "f": 0, "t": 46, "d": [41], "a": 1 }, + { "px": [144,8], "src": [112,8], "f": 0, "t": 46, "d": [42], "a": 1 }, + { "px": [152,8], "src": [112,8], "f": 0, "t": 46, "d": [43], "a": 1 }, + { "px": [160,8], "src": [112,8], "f": 0, "t": 46, "d": [44], "a": 1 }, + { "px": [168,8], "src": [112,8], "f": 0, "t": 46, "d": [45], "a": 1 }, + { "px": [176,8], "src": [112,8], "f": 0, "t": 46, "d": [46], "a": 1 }, + { "px": [184,8], "src": [112,8], "f": 0, "t": 46, "d": [47], "a": 1 }, + { "px": [0,16], "src": [192,0], "f": 0, "t": 24, "d": [48], "a": 1 }, + { "px": [8,16], "src": [192,0], "f": 0, "t": 24, "d": [49], "a": 1 }, + { "px": [16,16], "src": [192,0], "f": 0, "t": 24, "d": [50], "a": 1 }, + { "px": [24,16], "src": [192,0], "f": 0, "t": 24, "d": [51], "a": 1 }, + { "px": [32,16], "src": [192,0], "f": 0, "t": 24, "d": [52], "a": 1 }, + { "px": [40,16], "src": [192,0], "f": 0, "t": 24, "d": [53], "a": 1 }, + { "px": [48,16], "src": [192,0], "f": 0, "t": 24, "d": [54], "a": 1 }, + { "px": [56,16], "src": [192,0], "f": 0, "t": 24, "d": [55], "a": 1 }, + { "px": [64,16], "src": [192,0], "f": 0, "t": 24, "d": [56], "a": 1 }, + { "px": [72,16], "src": [192,0], "f": 0, "t": 24, "d": [57], "a": 1 }, + { "px": [80,16], "src": [192,0], "f": 0, "t": 24, "d": [58], "a": 1 }, + { "px": [88,16], "src": [192,0], "f": 0, "t": 24, "d": [59], "a": 1 }, + { "px": [96,16], "src": [192,0], "f": 0, "t": 24, "d": [60], "a": 1 }, + { "px": [104,16], "src": [192,0], "f": 0, "t": 24, "d": [61], "a": 1 }, + { "px": [112,16], "src": [192,0], "f": 0, "t": 24, "d": [62], "a": 1 }, + { "px": [120,16], "src": [192,0], "f": 0, "t": 24, "d": [63], "a": 1 }, + { "px": [128,16], "src": [192,0], "f": 0, "t": 24, "d": [64], "a": 1 }, + { "px": [136,16], "src": [192,0], "f": 0, "t": 24, "d": [65], "a": 1 }, + { "px": [144,16], "src": [192,0], "f": 0, "t": 24, "d": [66], "a": 1 }, + { "px": [152,16], "src": [192,0], "f": 0, "t": 24, "d": [67], "a": 1 }, + { "px": [160,16], "src": [192,0], "f": 0, "t": 24, "d": [68], "a": 1 }, + { "px": [168,16], "src": [192,0], "f": 0, "t": 24, "d": [69], "a": 1 }, + { "px": [176,16], "src": [192,0], "f": 0, "t": 24, "d": [70], "a": 1 }, + { "px": [184,16], "src": [192,0], "f": 0, "t": 24, "d": [71], "a": 1 }, + { "px": [0,24], "src": [192,0], "f": 0, "t": 24, "d": [72], "a": 1 }, + { "px": [8,24], "src": [192,0], "f": 0, "t": 24, "d": [73], "a": 1 }, + { "px": [16,24], "src": [192,0], "f": 0, "t": 24, "d": [74], "a": 1 }, + { "px": [24,24], "src": [192,0], "f": 0, "t": 24, "d": [75], "a": 1 }, + { "px": [32,24], "src": [192,0], "f": 0, "t": 24, "d": [76], "a": 1 }, + { "px": [40,24], "src": [192,0], "f": 0, "t": 24, "d": [77], "a": 1 }, + { "px": [48,24], "src": [192,0], "f": 0, "t": 24, "d": [78], "a": 1 }, + { "px": [56,24], "src": [192,0], "f": 0, "t": 24, "d": [79], "a": 1 }, + { "px": [64,24], "src": [192,0], "f": 0, "t": 24, "d": [80], "a": 1 }, + { "px": [72,24], "src": [192,0], "f": 0, "t": 24, "d": [81], "a": 1 }, + { "px": [80,24], "src": [192,0], "f": 0, "t": 24, "d": [82], "a": 1 }, + { "px": [88,24], "src": [192,0], "f": 0, "t": 24, "d": [83], "a": 1 }, + { "px": [96,24], "src": [192,0], "f": 0, "t": 24, "d": [84], "a": 1 }, + { "px": [104,24], "src": [192,0], "f": 0, "t": 24, "d": [85], "a": 1 }, + { "px": [112,24], "src": [192,0], "f": 0, "t": 24, "d": [86], "a": 1 }, + { "px": [120,24], "src": [192,0], "f": 0, "t": 24, "d": [87], "a": 1 }, + { "px": [128,24], "src": [192,0], "f": 0, "t": 24, "d": [88], "a": 1 }, + { "px": [136,24], "src": [192,0], "f": 0, "t": 24, "d": [89], "a": 1 }, + { "px": [144,24], "src": [192,0], "f": 0, "t": 24, "d": [90], "a": 1 }, + { "px": [152,24], "src": [192,0], "f": 0, "t": 24, "d": [91], "a": 1 }, + { "px": [160,24], "src": [192,0], "f": 0, "t": 24, "d": [92], "a": 1 }, + { "px": [168,24], "src": [192,0], "f": 0, "t": 24, "d": [93], "a": 1 }, + { "px": [176,24], "src": [192,0], "f": 0, "t": 24, "d": [94], "a": 1 }, + { "px": [184,24], "src": [192,0], "f": 0, "t": 24, "d": [95], "a": 1 }, + { "px": [0,32], "src": [192,0], "f": 0, "t": 24, "d": [96], "a": 1 }, + { "px": [8,32], "src": [192,0], "f": 0, "t": 24, "d": [97], "a": 1 }, + { "px": [16,32], "src": [192,0], "f": 0, "t": 24, "d": [98], "a": 1 }, + { "px": [24,32], "src": [192,0], "f": 0, "t": 24, "d": [99], "a": 1 }, + { "px": [32,32], "src": [192,0], "f": 0, "t": 24, "d": [100], "a": 1 }, + { "px": [40,32], "src": [192,0], "f": 0, "t": 24, "d": [101], "a": 1 }, + { "px": [48,32], "src": [192,0], "f": 0, "t": 24, "d": [102], "a": 1 }, + { "px": [56,32], "src": [192,0], "f": 0, "t": 24, "d": [103], "a": 1 }, + { "px": [64,32], "src": [192,0], "f": 0, "t": 24, "d": [104], "a": 1 }, + { "px": [72,32], "src": [192,0], "f": 0, "t": 24, "d": [105], "a": 1 }, + { "px": [80,32], "src": [192,0], "f": 0, "t": 24, "d": [106], "a": 1 }, + { "px": [88,32], "src": [192,0], "f": 0, "t": 24, "d": [107], "a": 1 }, + { "px": [96,32], "src": [192,0], "f": 0, "t": 24, "d": [108], "a": 1 }, + { "px": [104,32], "src": [192,0], "f": 0, "t": 24, "d": [109], "a": 1 }, + { "px": [112,32], "src": [192,0], "f": 0, "t": 24, "d": [110], "a": 1 }, + { "px": [120,32], "src": [192,0], "f": 0, "t": 24, "d": [111], "a": 1 }, + { "px": [128,32], "src": [192,0], "f": 0, "t": 24, "d": [112], "a": 1 }, + { "px": [136,32], "src": [192,0], "f": 0, "t": 24, "d": [113], "a": 1 }, + { "px": [144,32], "src": [192,0], "f": 0, "t": 24, "d": [114], "a": 1 }, + { "px": [152,32], "src": [192,0], "f": 0, "t": 24, "d": [115], "a": 1 }, + { "px": [160,32], "src": [192,0], "f": 0, "t": 24, "d": [116], "a": 1 }, + { "px": [168,32], "src": [192,0], "f": 0, "t": 24, "d": [117], "a": 1 }, + { "px": [176,32], "src": [192,0], "f": 0, "t": 24, "d": [118], "a": 1 }, + { "px": [184,32], "src": [192,0], "f": 0, "t": 24, "d": [119], "a": 1 }, + { "px": [0,40], "src": [192,0], "f": 0, "t": 24, "d": [120], "a": 1 }, + { "px": [8,40], "src": [192,0], "f": 0, "t": 24, "d": [121], "a": 1 }, + { "px": [16,40], "src": [192,0], "f": 0, "t": 24, "d": [122], "a": 1 }, + { "px": [24,40], "src": [192,0], "f": 0, "t": 24, "d": [123], "a": 1 }, + { "px": [32,40], "src": [192,0], "f": 0, "t": 24, "d": [124], "a": 1 }, + { "px": [40,40], "src": [192,0], "f": 0, "t": 24, "d": [125], "a": 1 }, + { "px": [48,40], "src": [192,0], "f": 0, "t": 24, "d": [126], "a": 1 }, + { "px": [56,40], "src": [192,0], "f": 0, "t": 24, "d": [127], "a": 1 }, + { "px": [64,40], "src": [192,0], "f": 0, "t": 24, "d": [128], "a": 1 }, + { "px": [72,40], "src": [192,0], "f": 0, "t": 24, "d": [129], "a": 1 }, + { "px": [80,40], "src": [192,0], "f": 0, "t": 24, "d": [130], "a": 1 }, + { "px": [88,40], "src": [192,0], "f": 0, "t": 24, "d": [131], "a": 1 }, + { "px": [96,40], "src": [192,0], "f": 0, "t": 24, "d": [132], "a": 1 }, + { "px": [104,40], "src": [192,0], "f": 0, "t": 24, "d": [133], "a": 1 }, + { "px": [112,40], "src": [192,0], "f": 0, "t": 24, "d": [134], "a": 1 }, + { "px": [120,40], "src": [192,0], "f": 0, "t": 24, "d": [135], "a": 1 }, + { "px": [128,40], "src": [192,0], "f": 0, "t": 24, "d": [136], "a": 1 }, + { "px": [136,40], "src": [192,0], "f": 0, "t": 24, "d": [137], "a": 1 }, + { "px": [144,40], "src": [192,0], "f": 0, "t": 24, "d": [138], "a": 1 }, + { "px": [152,40], "src": [192,0], "f": 0, "t": 24, "d": [139], "a": 1 }, + { "px": [160,40], "src": [192,0], "f": 0, "t": 24, "d": [140], "a": 1 }, + { "px": [168,40], "src": [192,0], "f": 0, "t": 24, "d": [141], "a": 1 }, + { "px": [176,40], "src": [192,0], "f": 0, "t": 24, "d": [142], "a": 1 }, + { "px": [184,40], "src": [192,0], "f": 0, "t": 24, "d": [143], "a": 1 }, + { "px": [0,48], "src": [192,0], "f": 0, "t": 24, "d": [144], "a": 1 }, + { "px": [8,48], "src": [192,0], "f": 0, "t": 24, "d": [145], "a": 1 }, + { "px": [16,48], "src": [192,0], "f": 0, "t": 24, "d": [146], "a": 1 }, + { "px": [24,48], "src": [192,0], "f": 0, "t": 24, "d": [147], "a": 1 }, + { "px": [32,48], "src": [192,0], "f": 0, "t": 24, "d": [148], "a": 1 }, + { "px": [40,48], "src": [192,0], "f": 0, "t": 24, "d": [149], "a": 1 }, + { "px": [48,48], "src": [192,0], "f": 0, "t": 24, "d": [150], "a": 1 }, + { "px": [56,48], "src": [192,0], "f": 0, "t": 24, "d": [151], "a": 1 }, + { "px": [64,48], "src": [192,0], "f": 0, "t": 24, "d": [152], "a": 1 }, + { "px": [72,48], "src": [192,0], "f": 0, "t": 24, "d": [153], "a": 1 }, + { "px": [80,48], "src": [192,0], "f": 0, "t": 24, "d": [154], "a": 1 }, + { "px": [88,48], "src": [192,0], "f": 0, "t": 24, "d": [155], "a": 1 }, + { "px": [96,48], "src": [192,0], "f": 0, "t": 24, "d": [156], "a": 1 }, + { "px": [104,48], "src": [192,0], "f": 0, "t": 24, "d": [157], "a": 1 }, + { "px": [112,48], "src": [192,0], "f": 0, "t": 24, "d": [158], "a": 1 }, + { "px": [120,48], "src": [192,0], "f": 0, "t": 24, "d": [159], "a": 1 }, + { "px": [128,48], "src": [192,0], "f": 0, "t": 24, "d": [160], "a": 1 }, + { "px": [136,48], "src": [192,0], "f": 0, "t": 24, "d": [161], "a": 1 }, + { "px": [144,48], "src": [192,0], "f": 0, "t": 24, "d": [162], "a": 1 }, + { "px": [152,48], "src": [192,0], "f": 0, "t": 24, "d": [163], "a": 1 }, + { "px": [160,48], "src": [192,0], "f": 0, "t": 24, "d": [164], "a": 1 }, + { "px": [168,48], "src": [192,0], "f": 0, "t": 24, "d": [165], "a": 1 }, + { "px": [176,48], "src": [192,0], "f": 0, "t": 24, "d": [166], "a": 1 }, + { "px": [184,48], "src": [192,0], "f": 0, "t": 24, "d": [167], "a": 1 }, + { "px": [0,56], "src": [192,0], "f": 0, "t": 24, "d": [168], "a": 1 }, + { "px": [8,56], "src": [192,0], "f": 0, "t": 24, "d": [169], "a": 1 }, + { "px": [16,56], "src": [192,0], "f": 0, "t": 24, "d": [170], "a": 1 }, + { "px": [24,56], "src": [192,0], "f": 0, "t": 24, "d": [171], "a": 1 }, + { "px": [32,56], "src": [192,0], "f": 0, "t": 24, "d": [172], "a": 1 }, + { "px": [40,56], "src": [192,0], "f": 0, "t": 24, "d": [173], "a": 1 }, + { "px": [48,56], "src": [192,0], "f": 0, "t": 24, "d": [174], "a": 1 }, + { "px": [56,56], "src": [192,0], "f": 0, "t": 24, "d": [175], "a": 1 }, + { "px": [64,56], "src": [192,0], "f": 0, "t": 24, "d": [176], "a": 1 }, + { "px": [72,56], "src": [192,0], "f": 0, "t": 24, "d": [177], "a": 1 }, + { "px": [80,56], "src": [192,0], "f": 0, "t": 24, "d": [178], "a": 1 }, + { "px": [88,56], "src": [192,0], "f": 0, "t": 24, "d": [179], "a": 1 }, + { "px": [96,56], "src": [192,0], "f": 0, "t": 24, "d": [180], "a": 1 }, + { "px": [104,56], "src": [192,0], "f": 0, "t": 24, "d": [181], "a": 1 }, + { "px": [112,56], "src": [192,0], "f": 0, "t": 24, "d": [182], "a": 1 }, + { "px": [120,56], "src": [192,0], "f": 0, "t": 24, "d": [183], "a": 1 }, + { "px": [128,56], "src": [192,0], "f": 0, "t": 24, "d": [184], "a": 1 }, + { "px": [136,56], "src": [192,0], "f": 0, "t": 24, "d": [185], "a": 1 }, + { "px": [144,56], "src": [192,0], "f": 0, "t": 24, "d": [186], "a": 1 }, + { "px": [152,56], "src": [192,0], "f": 0, "t": 24, "d": [187], "a": 1 }, + { "px": [160,56], "src": [192,0], "f": 0, "t": 24, "d": [188], "a": 1 }, + { "px": [168,56], "src": [192,0], "f": 0, "t": 24, "d": [189], "a": 1 }, + { "px": [176,56], "src": [192,0], "f": 0, "t": 24, "d": [190], "a": 1 }, + { "px": [184,56], "src": [192,0], "f": 0, "t": 24, "d": [191], "a": 1 }, + { "px": [0,64], "src": [192,0], "f": 0, "t": 24, "d": [192], "a": 1 }, + { "px": [8,64], "src": [192,0], "f": 0, "t": 24, "d": [193], "a": 1 }, + { "px": [16,64], "src": [192,0], "f": 0, "t": 24, "d": [194], "a": 1 }, + { "px": [24,64], "src": [192,0], "f": 0, "t": 24, "d": [195], "a": 1 }, + { "px": [32,64], "src": [192,0], "f": 0, "t": 24, "d": [196], "a": 1 }, + { "px": [40,64], "src": [192,0], "f": 0, "t": 24, "d": [197], "a": 1 }, + { "px": [48,64], "src": [192,0], "f": 0, "t": 24, "d": [198], "a": 1 }, + { "px": [56,64], "src": [192,0], "f": 0, "t": 24, "d": [199], "a": 1 }, + { "px": [64,64], "src": [192,0], "f": 0, "t": 24, "d": [200], "a": 1 }, + { "px": [72,64], "src": [192,0], "f": 0, "t": 24, "d": [201], "a": 1 }, + { "px": [80,64], "src": [192,0], "f": 0, "t": 24, "d": [202], "a": 1 }, + { "px": [88,64], "src": [192,0], "f": 0, "t": 24, "d": [203], "a": 1 }, + { "px": [96,64], "src": [192,0], "f": 0, "t": 24, "d": [204], "a": 1 }, + { "px": [104,64], "src": [192,0], "f": 0, "t": 24, "d": [205], "a": 1 }, + { "px": [112,64], "src": [192,0], "f": 0, "t": 24, "d": [206], "a": 1 }, + { "px": [120,64], "src": [192,0], "f": 0, "t": 24, "d": [207], "a": 1 }, + { "px": [128,64], "src": [192,0], "f": 0, "t": 24, "d": [208], "a": 1 }, + { "px": [136,64], "src": [192,0], "f": 0, "t": 24, "d": [209], "a": 1 }, + { "px": [144,64], "src": [192,0], "f": 0, "t": 24, "d": [210], "a": 1 }, + { "px": [152,64], "src": [192,0], "f": 0, "t": 24, "d": [211], "a": 1 }, + { "px": [160,64], "src": [192,0], "f": 0, "t": 24, "d": [212], "a": 1 }, + { "px": [168,64], "src": [192,0], "f": 0, "t": 24, "d": [213], "a": 1 }, + { "px": [176,64], "src": [192,0], "f": 0, "t": 24, "d": [214], "a": 1 }, + { "px": [184,64], "src": [192,0], "f": 0, "t": 24, "d": [215], "a": 1 }, + { "px": [0,72], "src": [192,0], "f": 0, "t": 24, "d": [216], "a": 1 }, + { "px": [8,72], "src": [192,0], "f": 0, "t": 24, "d": [217], "a": 1 }, + { "px": [16,72], "src": [192,0], "f": 0, "t": 24, "d": [218], "a": 1 }, + { "px": [24,72], "src": [192,0], "f": 0, "t": 24, "d": [219], "a": 1 }, + { "px": [32,72], "src": [192,0], "f": 0, "t": 24, "d": [220], "a": 1 }, + { "px": [40,72], "src": [192,0], "f": 0, "t": 24, "d": [221], "a": 1 }, + { "px": [48,72], "src": [192,0], "f": 0, "t": 24, "d": [222], "a": 1 }, + { "px": [56,72], "src": [192,0], "f": 0, "t": 24, "d": [223], "a": 1 }, + { "px": [64,72], "src": [192,0], "f": 0, "t": 24, "d": [224], "a": 1 }, + { "px": [72,72], "src": [192,0], "f": 0, "t": 24, "d": [225], "a": 1 }, + { "px": [80,72], "src": [192,0], "f": 0, "t": 24, "d": [226], "a": 1 }, + { "px": [88,72], "src": [192,0], "f": 0, "t": 24, "d": [227], "a": 1 }, + { "px": [96,72], "src": [192,0], "f": 0, "t": 24, "d": [228], "a": 1 }, + { "px": [104,72], "src": [192,0], "f": 0, "t": 24, "d": [229], "a": 1 }, + { "px": [112,72], "src": [192,0], "f": 0, "t": 24, "d": [230], "a": 1 }, + { "px": [120,72], "src": [192,0], "f": 0, "t": 24, "d": [231], "a": 1 }, + { "px": [128,72], "src": [192,0], "f": 0, "t": 24, "d": [232], "a": 1 }, + { "px": [136,72], "src": [192,0], "f": 0, "t": 24, "d": [233], "a": 1 }, + { "px": [144,72], "src": [192,0], "f": 0, "t": 24, "d": [234], "a": 1 }, + { "px": [152,72], "src": [192,0], "f": 0, "t": 24, "d": [235], "a": 1 }, + { "px": [160,72], "src": [192,0], "f": 0, "t": 24, "d": [236], "a": 1 }, + { "px": [168,72], "src": [192,0], "f": 0, "t": 24, "d": [237], "a": 1 }, + { "px": [176,72], "src": [192,0], "f": 0, "t": 24, "d": [238], "a": 1 }, + { "px": [184,72], "src": [192,0], "f": 0, "t": 24, "d": [239], "a": 1 }, + { "px": [0,80], "src": [192,0], "f": 0, "t": 24, "d": [240], "a": 1 }, + { "px": [8,80], "src": [192,0], "f": 0, "t": 24, "d": [241], "a": 1 }, + { "px": [16,80], "src": [192,0], "f": 0, "t": 24, "d": [242], "a": 1 }, + { "px": [24,80], "src": [192,0], "f": 0, "t": 24, "d": [243], "a": 1 }, + { "px": [32,80], "src": [192,0], "f": 0, "t": 24, "d": [244], "a": 1 }, + { "px": [40,80], "src": [192,0], "f": 0, "t": 24, "d": [245], "a": 1 }, + { "px": [48,80], "src": [192,0], "f": 0, "t": 24, "d": [246], "a": 1 }, + { "px": [56,80], "src": [192,0], "f": 0, "t": 24, "d": [247], "a": 1 }, + { "px": [64,80], "src": [192,0], "f": 0, "t": 24, "d": [248], "a": 1 }, + { "px": [72,80], "src": [192,0], "f": 0, "t": 24, "d": [249], "a": 1 }, + { "px": [80,80], "src": [192,0], "f": 0, "t": 24, "d": [250], "a": 1 }, + { "px": [88,80], "src": [192,0], "f": 0, "t": 24, "d": [251], "a": 1 }, + { "px": [96,80], "src": [192,0], "f": 0, "t": 24, "d": [252], "a": 1 }, + { "px": [104,80], "src": [192,0], "f": 0, "t": 24, "d": [253], "a": 1 }, + { "px": [112,80], "src": [192,0], "f": 0, "t": 24, "d": [254], "a": 1 }, + { "px": [120,80], "src": [192,0], "f": 0, "t": 24, "d": [255], "a": 1 }, + { "px": [128,80], "src": [192,0], "f": 0, "t": 24, "d": [256], "a": 1 }, + { "px": [136,80], "src": [192,0], "f": 0, "t": 24, "d": [257], "a": 1 }, + { "px": [144,80], "src": [192,0], "f": 0, "t": 24, "d": [258], "a": 1 }, + { "px": [152,80], "src": [192,0], "f": 0, "t": 24, "d": [259], "a": 1 }, + { "px": [160,80], "src": [192,0], "f": 0, "t": 24, "d": [260], "a": 1 }, + { "px": [168,80], "src": [192,0], "f": 0, "t": 24, "d": [261], "a": 1 }, + { "px": [176,80], "src": [192,0], "f": 0, "t": 24, "d": [262], "a": 1 }, + { "px": [184,80], "src": [192,0], "f": 0, "t": 24, "d": [263], "a": 1 }, + { "px": [0,88], "src": [192,0], "f": 0, "t": 24, "d": [264], "a": 1 }, + { "px": [8,88], "src": [192,0], "f": 0, "t": 24, "d": [265], "a": 1 }, + { "px": [16,88], "src": [192,0], "f": 0, "t": 24, "d": [266], "a": 1 }, + { "px": [24,88], "src": [192,0], "f": 0, "t": 24, "d": [267], "a": 1 }, + { "px": [32,88], "src": [192,0], "f": 0, "t": 24, "d": [268], "a": 1 }, + { "px": [40,88], "src": [192,0], "f": 0, "t": 24, "d": [269], "a": 1 }, + { "px": [48,88], "src": [192,0], "f": 0, "t": 24, "d": [270], "a": 1 }, + { "px": [56,88], "src": [192,0], "f": 0, "t": 24, "d": [271], "a": 1 }, + { "px": [64,88], "src": [192,0], "f": 0, "t": 24, "d": [272], "a": 1 }, + { "px": [72,88], "src": [192,0], "f": 0, "t": 24, "d": [273], "a": 1 }, + { "px": [80,88], "src": [192,0], "f": 0, "t": 24, "d": [274], "a": 1 }, + { "px": [88,88], "src": [192,0], "f": 0, "t": 24, "d": [275], "a": 1 }, + { "px": [96,88], "src": [192,0], "f": 0, "t": 24, "d": [276], "a": 1 }, + { "px": [104,88], "src": [192,0], "f": 0, "t": 24, "d": [277], "a": 1 }, + { "px": [112,88], "src": [192,0], "f": 0, "t": 24, "d": [278], "a": 1 }, + { "px": [120,88], "src": [192,0], "f": 0, "t": 24, "d": [279], "a": 1 }, + { "px": [128,88], "src": [192,0], "f": 0, "t": 24, "d": [280], "a": 1 }, + { "px": [136,88], "src": [192,0], "f": 0, "t": 24, "d": [281], "a": 1 }, + { "px": [144,88], "src": [192,0], "f": 0, "t": 24, "d": [282], "a": 1 }, + { "px": [152,88], "src": [192,0], "f": 0, "t": 24, "d": [283], "a": 1 }, + { "px": [160,88], "src": [192,0], "f": 0, "t": 24, "d": [284], "a": 1 }, + { "px": [168,88], "src": [192,0], "f": 0, "t": 24, "d": [285], "a": 1 }, + { "px": [176,88], "src": [192,0], "f": 0, "t": 24, "d": [286], "a": 1 }, + { "px": [184,88], "src": [192,0], "f": 0, "t": 24, "d": [287], "a": 1 }, + { "px": [0,96], "src": [192,0], "f": 0, "t": 24, "d": [288], "a": 1 }, + { "px": [8,96], "src": [192,0], "f": 0, "t": 24, "d": [289], "a": 1 }, + { "px": [16,96], "src": [192,0], "f": 0, "t": 24, "d": [290], "a": 1 }, + { "px": [24,96], "src": [192,0], "f": 0, "t": 24, "d": [291], "a": 1 }, + { "px": [32,96], "src": [192,0], "f": 0, "t": 24, "d": [292], "a": 1 }, + { "px": [40,96], "src": [192,0], "f": 0, "t": 24, "d": [293], "a": 1 }, + { "px": [48,96], "src": [192,0], "f": 0, "t": 24, "d": [294], "a": 1 }, + { "px": [56,96], "src": [192,0], "f": 0, "t": 24, "d": [295], "a": 1 }, + { "px": [64,96], "src": [192,0], "f": 0, "t": 24, "d": [296], "a": 1 }, + { "px": [72,96], "src": [192,0], "f": 0, "t": 24, "d": [297], "a": 1 }, + { "px": [80,96], "src": [192,0], "f": 0, "t": 24, "d": [298], "a": 1 }, + { "px": [88,96], "src": [192,0], "f": 0, "t": 24, "d": [299], "a": 1 }, + { "px": [96,96], "src": [192,0], "f": 0, "t": 24, "d": [300], "a": 1 }, + { "px": [104,96], "src": [192,0], "f": 0, "t": 24, "d": [301], "a": 1 }, + { "px": [112,96], "src": [192,0], "f": 0, "t": 24, "d": [302], "a": 1 }, + { "px": [120,96], "src": [192,0], "f": 0, "t": 24, "d": [303], "a": 1 }, + { "px": [128,96], "src": [192,0], "f": 0, "t": 24, "d": [304], "a": 1 }, + { "px": [136,96], "src": [192,0], "f": 0, "t": 24, "d": [305], "a": 1 }, + { "px": [144,96], "src": [192,0], "f": 0, "t": 24, "d": [306], "a": 1 }, + { "px": [152,96], "src": [192,0], "f": 0, "t": 24, "d": [307], "a": 1 }, + { "px": [160,96], "src": [192,0], "f": 0, "t": 24, "d": [308], "a": 1 }, + { "px": [168,96], "src": [192,0], "f": 0, "t": 24, "d": [309], "a": 1 }, + { "px": [176,96], "src": [192,0], "f": 0, "t": 24, "d": [310], "a": 1 }, + { "px": [184,96], "src": [192,0], "f": 0, "t": 24, "d": [311], "a": 1 }, + { "px": [0,104], "src": [192,0], "f": 0, "t": 24, "d": [312], "a": 1 }, + { "px": [8,104], "src": [192,0], "f": 0, "t": 24, "d": [313], "a": 1 }, + { "px": [16,104], "src": [192,0], "f": 0, "t": 24, "d": [314], "a": 1 }, + { "px": [24,104], "src": [192,0], "f": 0, "t": 24, "d": [315], "a": 1 }, + { "px": [32,104], "src": [192,0], "f": 0, "t": 24, "d": [316], "a": 1 }, + { "px": [40,104], "src": [192,0], "f": 0, "t": 24, "d": [317], "a": 1 }, + { "px": [48,104], "src": [192,0], "f": 0, "t": 24, "d": [318], "a": 1 }, + { "px": [56,104], "src": [192,0], "f": 0, "t": 24, "d": [319], "a": 1 }, + { "px": [64,104], "src": [192,0], "f": 0, "t": 24, "d": [320], "a": 1 }, + { "px": [72,104], "src": [192,0], "f": 0, "t": 24, "d": [321], "a": 1 }, + { "px": [80,104], "src": [192,0], "f": 0, "t": 24, "d": [322], "a": 1 }, + { "px": [88,104], "src": [192,0], "f": 0, "t": 24, "d": [323], "a": 1 }, + { "px": [96,104], "src": [192,0], "f": 0, "t": 24, "d": [324], "a": 1 }, + { "px": [104,104], "src": [192,0], "f": 0, "t": 24, "d": [325], "a": 1 }, + { "px": [112,104], "src": [192,0], "f": 0, "t": 24, "d": [326], "a": 1 }, + { "px": [120,104], "src": [192,0], "f": 0, "t": 24, "d": [327], "a": 1 }, + { "px": [128,104], "src": [192,0], "f": 0, "t": 24, "d": [328], "a": 1 }, + { "px": [136,104], "src": [192,0], "f": 0, "t": 24, "d": [329], "a": 1 }, + { "px": [144,104], "src": [192,0], "f": 0, "t": 24, "d": [330], "a": 1 }, + { "px": [152,104], "src": [192,0], "f": 0, "t": 24, "d": [331], "a": 1 }, + { "px": [160,104], "src": [192,0], "f": 0, "t": 24, "d": [332], "a": 1 }, + { "px": [168,104], "src": [192,0], "f": 0, "t": 24, "d": [333], "a": 1 }, + { "px": [176,104], "src": [192,0], "f": 0, "t": 24, "d": [334], "a": 1 }, + { "px": [184,104], "src": [192,0], "f": 0, "t": 24, "d": [335], "a": 1 }, + { "px": [0,112], "src": [192,0], "f": 0, "t": 24, "d": [336], "a": 1 }, + { "px": [8,112], "src": [192,0], "f": 0, "t": 24, "d": [337], "a": 1 }, + { "px": [16,112], "src": [192,0], "f": 0, "t": 24, "d": [338], "a": 1 }, + { "px": [24,112], "src": [192,0], "f": 0, "t": 24, "d": [339], "a": 1 }, + { "px": [32,112], "src": [192,0], "f": 0, "t": 24, "d": [340], "a": 1 }, + { "px": [40,112], "src": [192,0], "f": 0, "t": 24, "d": [341], "a": 1 }, + { "px": [48,112], "src": [192,0], "f": 0, "t": 24, "d": [342], "a": 1 }, + { "px": [56,112], "src": [192,0], "f": 0, "t": 24, "d": [343], "a": 1 }, + { "px": [64,112], "src": [192,0], "f": 0, "t": 24, "d": [344], "a": 1 }, + { "px": [72,112], "src": [192,0], "f": 0, "t": 24, "d": [345], "a": 1 }, + { "px": [80,112], "src": [192,0], "f": 0, "t": 24, "d": [346], "a": 1 }, + { "px": [88,112], "src": [192,0], "f": 0, "t": 24, "d": [347], "a": 1 }, + { "px": [96,112], "src": [192,0], "f": 0, "t": 24, "d": [348], "a": 1 }, + { "px": [104,112], "src": [192,0], "f": 0, "t": 24, "d": [349], "a": 1 }, + { "px": [112,112], "src": [192,0], "f": 0, "t": 24, "d": [350], "a": 1 }, + { "px": [120,112], "src": [192,0], "f": 0, "t": 24, "d": [351], "a": 1 }, + { "px": [128,112], "src": [192,0], "f": 0, "t": 24, "d": [352], "a": 1 }, + { "px": [136,112], "src": [192,0], "f": 0, "t": 24, "d": [353], "a": 1 }, + { "px": [144,112], "src": [192,0], "f": 0, "t": 24, "d": [354], "a": 1 }, + { "px": [152,112], "src": [192,0], "f": 0, "t": 24, "d": [355], "a": 1 }, + { "px": [160,112], "src": [192,0], "f": 0, "t": 24, "d": [356], "a": 1 }, + { "px": [168,112], "src": [192,0], "f": 0, "t": 24, "d": [357], "a": 1 }, + { "px": [176,112], "src": [192,0], "f": 0, "t": 24, "d": [358], "a": 1 }, + { "px": [184,112], "src": [192,0], "f": 0, "t": 24, "d": [359], "a": 1 }, + { "px": [0,120], "src": [192,0], "f": 0, "t": 24, "d": [360], "a": 1 }, + { "px": [8,120], "src": [192,0], "f": 0, "t": 24, "d": [361], "a": 1 }, + { "px": [16,120], "src": [192,0], "f": 0, "t": 24, "d": [362], "a": 1 }, + { "px": [24,120], "src": [192,0], "f": 0, "t": 24, "d": [363], "a": 1 }, + { "px": [32,120], "src": [192,0], "f": 0, "t": 24, "d": [364], "a": 1 }, + { "px": [40,120], "src": [192,0], "f": 0, "t": 24, "d": [365], "a": 1 }, + { "px": [48,120], "src": [192,0], "f": 0, "t": 24, "d": [366], "a": 1 }, + { "px": [56,120], "src": [192,0], "f": 0, "t": 24, "d": [367], "a": 1 }, + { "px": [64,120], "src": [192,0], "f": 0, "t": 24, "d": [368], "a": 1 }, + { "px": [72,120], "src": [192,0], "f": 0, "t": 24, "d": [369], "a": 1 }, + { "px": [80,120], "src": [192,0], "f": 0, "t": 24, "d": [370], "a": 1 }, + { "px": [88,120], "src": [192,0], "f": 0, "t": 24, "d": [371], "a": 1 }, + { "px": [96,120], "src": [192,0], "f": 0, "t": 24, "d": [372], "a": 1 }, + { "px": [104,120], "src": [192,0], "f": 0, "t": 24, "d": [373], "a": 1 }, + { "px": [112,120], "src": [192,0], "f": 0, "t": 24, "d": [374], "a": 1 }, + { "px": [120,120], "src": [192,0], "f": 0, "t": 24, "d": [375], "a": 1 }, + { "px": [128,120], "src": [192,0], "f": 0, "t": 24, "d": [376], "a": 1 }, + { "px": [136,120], "src": [192,0], "f": 0, "t": 24, "d": [377], "a": 1 }, + { "px": [144,120], "src": [192,0], "f": 0, "t": 24, "d": [378], "a": 1 }, + { "px": [152,120], "src": [192,0], "f": 0, "t": 24, "d": [379], "a": 1 }, + { "px": [160,120], "src": [192,0], "f": 0, "t": 24, "d": [380], "a": 1 }, + { "px": [168,120], "src": [192,0], "f": 0, "t": 24, "d": [381], "a": 1 }, + { "px": [176,120], "src": [192,0], "f": 0, "t": 24, "d": [382], "a": 1 }, + { "px": [184,120], "src": [192,0], "f": 0, "t": 24, "d": [383], "a": 1 } + ], + "entityInstances": [] + } + ], + "__neighbours": [] + }, + { + "identifier": "Score", + "iid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "uid": 11, + "worldX": -184, + "worldY": 0, + "worldDepth": 0, + "pxWid": 176, + "pxHei": 128, + "__bgColor": "#696A79", + "bgColor": null, + "useAutoIdentifier": false, + "bgRelPath": null, + "bgPos": null, + "bgPivotX": 0.5, + "bgPivotY": 0.5, + "__smartColor": "#ADADB5", + "__bgPos": null, + "externalRelPath": null, + "fieldInstances": [], + "layerInstances": [ + { + "__identifier": "Entities", + "__type": "Entities", + "__cWid": 22, + "__cHei": 16, + "__gridSize": 8, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": null, + "__tilesetRelPath": null, + "iid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelId": 11, + "layerDefUid": 7, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 8486625, + "overrideTilesetUid": null, + "gridTiles": [], + "entityInstances": [ + { + "__identifier": "Knob", + "__grid": [1,3], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 240, "y": 0, "w": 8, "h": 8 }, + "__smartColor": "#D77643", + "iid": "81bb5b70-d7b0-11ee-9c45-1393fc15fd52", + "width": 8, + "height": 8, + "defUid": 9, + "px": [8,24], + "fieldInstances": [ + { "__identifier": "Label", "__type": "String", "__value": "BPM", "__tile": null, "defUid": 10, "realEditorValues": [{ + "id": "V_String", + "params": ["BPM"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Sound speed", "__tile": null, "defUid": 22, "realEditorValues": [{ + "id": "V_String", + "params": ["Sound speed"] + }] } + ], + "__worldX": -176, + "__worldY": 24 + }, + { + "__identifier": "Knob", + "__grid": [1,5], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 240, "y": 0, "w": 8, "h": 8 }, + "__smartColor": "#D77643", + "iid": "8269eaf0-d7b0-11ee-9c45-f7dd92d8e86a", + "width": 8, + "height": 8, + "defUid": 9, + "px": [8,40], + "fieldInstances": [ + { "__identifier": "Label", "__type": "String", "__value": "Vol", "__tile": null, "defUid": 10, "realEditorValues": [{ + "id": "V_String", + "params": ["Vol"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Volume", "__tile": null, "defUid": 22, "realEditorValues": [{ + "id": "V_String", + "params": ["Volume"] + }] } + ], + "__worldX": -176, + "__worldY": 40 + }, + { + "__identifier": "Fader", + "__grid": [4,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "0a8a2250-d7b0-11ee-9c45-f3f620a19840", + "width": 8, + "height": 64, + "defUid": 12, + "px": [32,24], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 0, "__tile": null, "defUid": 14, "realEditorValues": [] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Note", "__tile": null, "defUid": 18, "realEditorValues": [] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -152, + "__worldY": 24 + }, + { + "__identifier": "Fader", + "__grid": [5,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "0f5d7c50-d7b0-11ee-9c45-659ee29bd963", + "width": 8, + "height": 64, + "defUid": 12, + "px": [40,24], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 1, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [1] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Note", "__tile": null, "defUid": 18, "realEditorValues": [] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -144, + "__worldY": 24 + }, + { + "__identifier": "Fader", + "__grid": [6,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "11cf8dc0-d7b0-11ee-9c45-4548249d3ddd", + "width": 8, + "height": 64, + "defUid": 12, + "px": [48,24], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 2, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [2] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Note", "__tile": null, "defUid": 18, "realEditorValues": [] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -136, + "__worldY": 24 + }, + { + "__identifier": "Fader", + "__grid": [7,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "140be930-d7b0-11ee-9c45-3f3c3372924a", + "width": 8, + "height": 64, + "defUid": 12, + "px": [56,24], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 3, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [3] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Note", "__tile": null, "defUid": 18, "realEditorValues": [] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -128, + "__worldY": 24 + }, + { + "__identifier": "Fader", + "__grid": [8,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "15fce3c0-d7b0-11ee-9c45-892356fc9be2", + "width": 8, + "height": 64, + "defUid": 12, + "px": [64,24], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 4, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [4] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Note", "__tile": null, "defUid": 18, "realEditorValues": [] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -120, + "__worldY": 24 + }, + { + "__identifier": "Fader", + "__grid": [9,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "17edde50-d7b0-11ee-9c45-d77653f28fd8", + "width": 8, + "height": 64, + "defUid": 12, + "px": [72,24], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 5, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [5] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Note", "__tile": null, "defUid": 18, "realEditorValues": [] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -112, + "__worldY": 24 + }, + { + "__identifier": "Fader", + "__grid": [10,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "1976ef50-d7b0-11ee-9c45-87486553f86a", + "width": 8, + "height": 64, + "defUid": 12, + "px": [80,24], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 6, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [6] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Note", "__tile": null, "defUid": 18, "realEditorValues": [] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -104, + "__worldY": 24 + }, + { + "__identifier": "Fader", + "__grid": [11,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "1b565db0-d7b0-11ee-9c45-710e8310ff44", + "width": 8, + "height": 64, + "defUid": 12, + "px": [88,24], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 7, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [7] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Note", "__tile": null, "defUid": 18, "realEditorValues": [] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -96, + "__worldY": 24 + }, + { + "__identifier": "Fader", + "__grid": [12,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "1cd13de0-d7b0-11ee-9c45-7347fbd85af6", + "width": 8, + "height": 64, + "defUid": 12, + "px": [96,24], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 8, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [8] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Note", "__tile": null, "defUid": 18, "realEditorValues": [] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -88, + "__worldY": 24 + }, + { + "__identifier": "Fader", + "__grid": [13,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "1e892710-d7b0-11ee-9c45-d9663decde43", + "width": 8, + "height": 64, + "defUid": 12, + "px": [104,24], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 9, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [9] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Note", "__tile": null, "defUid": 18, "realEditorValues": [] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -80, + "__worldY": 24 + }, + { + "__identifier": "Fader", + "__grid": [14,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "1fe5d0e0-d7b0-11ee-9c45-07b6b3cd35d3", + "width": 8, + "height": 64, + "defUid": 12, + "px": [112,24], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 10, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [10] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Note", "__tile": null, "defUid": 18, "realEditorValues": [] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -72, + "__worldY": 24 + }, + { + "__identifier": "Fader", + "__grid": [15,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "216481a0-d7b0-11ee-9c45-cbec261e7a16", + "width": 8, + "height": 64, + "defUid": 12, + "px": [120,24], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 11, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [11] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Note", "__tile": null, "defUid": 18, "realEditorValues": [] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -64, + "__worldY": 24 + }, + { + "__identifier": "Fader", + "__grid": [16,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "23aaa110-d7b0-11ee-9c45-cf064c568765", + "width": 8, + "height": 64, + "defUid": 12, + "px": [128,24], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 12, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [12] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Note", "__tile": null, "defUid": 18, "realEditorValues": [] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -56, + "__worldY": 24 + }, + { + "__identifier": "Fader", + "__grid": [17,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "29929f60-d7b0-11ee-9c45-e30c233251c0", + "width": 8, + "height": 64, + "defUid": 12, + "px": [136,24], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 13, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [13] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Note", "__tile": null, "defUid": 18, "realEditorValues": [] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -48, + "__worldY": 24 + }, + { + "__identifier": "Fader", + "__grid": [18,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "2b6b7e10-d7b0-11ee-9c45-75f6259cccd4", + "width": 8, + "height": 64, + "defUid": 12, + "px": [144,24], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 14, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [14] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Note", "__tile": null, "defUid": 18, "realEditorValues": [] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -40, + "__worldY": 24 + }, + { + "__identifier": "Fader", + "__grid": [19,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "2d064250-d7b0-11ee-9c45-8d5b82f86ad8", + "width": 8, + "height": 64, + "defUid": 12, + "px": [152,24], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 15, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [15] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Note", "__tile": null, "defUid": 18, "realEditorValues": [] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -32, + "__worldY": 24 + }, + { + "__identifier": "Fader", + "__grid": [4,12], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "30130d20-d7b0-11ee-9c45-5b03bdc82e8d", + "width": 8, + "height": 24, + "defUid": 12, + "px": [32,96], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 0, "__tile": null, "defUid": 14, "realEditorValues": [] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Volume", "__tile": null, "defUid": 18, "realEditorValues": [{ + "id": "V_String", + "params": ["Volume"] + }] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -152, + "__worldY": 96 + }, + { + "__identifier": "Fader", + "__grid": [19,12], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "33e4d5a0-d7b0-11ee-9c45-03f58a09ef3a", + "width": 8, + "height": 24, + "defUid": 12, + "px": [152,96], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 15, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [15] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Volume", "__tile": null, "defUid": 18, "realEditorValues": [{ + "id": "V_String", + "params": ["Volume"] + }] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -32, + "__worldY": 96 + }, + { + "__identifier": "Fader", + "__grid": [18,12], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "35c1d300-d7b0-11ee-9c45-652431f43e59", + "width": 8, + "height": 24, + "defUid": 12, + "px": [144,96], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 14, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [14] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Volume", "__tile": null, "defUid": 18, "realEditorValues": [{ + "id": "V_String", + "params": ["Volume"] + }] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -40, + "__worldY": 96 + }, + { + "__identifier": "Fader", + "__grid": [17,12], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "3709bc50-d7b0-11ee-9c45-a909819b4c69", + "width": 8, + "height": 24, + "defUid": 12, + "px": [136,96], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 13, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [13] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Volume", "__tile": null, "defUid": 18, "realEditorValues": [{ + "id": "V_String", + "params": ["Volume"] + }] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -48, + "__worldY": 96 + }, + { + "__identifier": "Fader", + "__grid": [16,12], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "38b98f30-d7b0-11ee-9c45-e9c4aca553cf", + "width": 8, + "height": 24, + "defUid": 12, + "px": [128,96], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 12, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [12] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Volume", "__tile": null, "defUid": 18, "realEditorValues": [{ + "id": "V_String", + "params": ["Volume"] + }] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -56, + "__worldY": 96 + }, + { + "__identifier": "Fader", + "__grid": [15,12], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "3a6395b0-d7b0-11ee-9c45-bb4c45dd2a49", + "width": 8, + "height": 24, + "defUid": 12, + "px": [120,96], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 11, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [11] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Volume", "__tile": null, "defUid": 18, "realEditorValues": [{ + "id": "V_String", + "params": ["Volume"] + }] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -64, + "__worldY": 96 + }, + { + "__identifier": "Fader", + "__grid": [14,12], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "3baf4f90-d7b0-11ee-9c45-317a8a8d8d76", + "width": 8, + "height": 24, + "defUid": 12, + "px": [112,96], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 10, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [10] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Volume", "__tile": null, "defUid": 18, "realEditorValues": [{ + "id": "V_String", + "params": ["Volume"] + }] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -72, + "__worldY": 96 + }, + { + "__identifier": "Fader", + "__grid": [13,12], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "3d1c4d10-d7b0-11ee-9c45-23ced0781d31", + "width": 8, + "height": 24, + "defUid": 12, + "px": [104,96], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 9, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [9] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Volume", "__tile": null, "defUid": 18, "realEditorValues": [{ + "id": "V_String", + "params": ["Volume"] + }] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -80, + "__worldY": 96 + }, + { + "__identifier": "Fader", + "__grid": [12,12], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "3eb98250-d7b0-11ee-9c45-79310f529909", + "width": 8, + "height": 24, + "defUid": 12, + "px": [96,96], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 8, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [8] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Volume", "__tile": null, "defUid": 18, "realEditorValues": [{ + "id": "V_String", + "params": ["Volume"] + }] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -88, + "__worldY": 96 + }, + { + "__identifier": "Fader", + "__grid": [11,12], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "405e7fc0-d7b0-11ee-9c45-71b978a208e3", + "width": 8, + "height": 24, + "defUid": 12, + "px": [88,96], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 7, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [7] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Volume", "__tile": null, "defUid": 18, "realEditorValues": [{ + "id": "V_String", + "params": ["Volume"] + }] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -96, + "__worldY": 96 + }, + { + "__identifier": "Fader", + "__grid": [10,12], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "42021da0-d7b0-11ee-9c45-c1042f7217d3", + "width": 8, + "height": 24, + "defUid": 12, + "px": [80,96], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 6, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [6] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Volume", "__tile": null, "defUid": 18, "realEditorValues": [{ + "id": "V_String", + "params": ["Volume"] + }] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -104, + "__worldY": 96 + }, + { + "__identifier": "Fader", + "__grid": [9,12], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "437e3650-d7b0-11ee-9c45-79156bc825e1", + "width": 8, + "height": 24, + "defUid": 12, + "px": [72,96], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 5, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [5] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Volume", "__tile": null, "defUid": 18, "realEditorValues": [{ + "id": "V_String", + "params": ["Volume"] + }] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -112, + "__worldY": 96 + }, + { + "__identifier": "Fader", + "__grid": [8,12], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "44fa7610-d7b0-11ee-9c45-f99165959d0d", + "width": 8, + "height": 24, + "defUid": 12, + "px": [64,96], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 4, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [4] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Volume", "__tile": null, "defUid": 18, "realEditorValues": [{ + "id": "V_String", + "params": ["Volume"] + }] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -120, + "__worldY": 96 + }, + { + "__identifier": "Fader", + "__grid": [7,12], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "467b97d0-d7b0-11ee-9c45-f7d164b4aa43", + "width": 8, + "height": 24, + "defUid": 12, + "px": [56,96], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 3, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [3] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Volume", "__tile": null, "defUid": 18, "realEditorValues": [{ + "id": "V_String", + "params": ["Volume"] + }] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -128, + "__worldY": 96 + }, + { + "__identifier": "Fader", + "__grid": [6,12], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "47bd66a0-d7b0-11ee-9c45-61dd17052f39", + "width": 8, + "height": 24, + "defUid": 12, + "px": [48,96], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 2, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [2] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Volume", "__tile": null, "defUid": 18, "realEditorValues": [{ + "id": "V_String", + "params": ["Volume"] + }] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -136, + "__worldY": 96 + }, + { + "__identifier": "Fader", + "__grid": [5,12], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "49447bd0-d7b0-11ee-9c45-d31317fa9d4d", + "width": 8, + "height": 24, + "defUid": 12, + "px": [40,96], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 1, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [1] }] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Volume", "__tile": null, "defUid": 18, "realEditorValues": [{ + "id": "V_String", + "params": ["Volume"] + }] }, + { "__identifier": "Label", "__type": "String", "__value": "", "__tile": null, "defUid": 30, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 31, "realEditorValues": [] } + ], + "__worldX": -144, + "__worldY": 96 + }, + { + "__identifier": "Button", + "__grid": [1,14], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 248, "y": 8, "w": 8, "h": 8 }, + "__smartColor": "#EAD4AA", + "iid": "ed1e7a70-d7b0-11ee-9c45-f73e9e67b133", + "width": 8, + "height": 8, + "defUid": 17, + "px": [8,112], + "fieldInstances": [ + { "__identifier": "Type", "__type": "LocalEnum.ButtonType", "__value": "Triangle", "__tile": { "tilesetUid": 1, "x": 248, "y": 8, "w": 8, "h": 8 }, "defUid": 20, "realEditorValues": [{ + "id": "V_String", + "params": ["Triangle"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Triangle wave", "__tile": null, "defUid": 23, "realEditorValues": [{ + "id": "V_String", + "params": ["Triangle wave"] + }] } + ], + "__worldX": -176, + "__worldY": 112 + }, + { + "__identifier": "Button", + "__grid": [1,13], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 240, "y": 8, "w": 8, "h": 8 }, + "__smartColor": "#EAD4AA", + "iid": "eda8b910-d7b0-11ee-9c45-c9b6431ad22b", + "width": 8, + "height": 8, + "defUid": 17, + "px": [8,104], + "fieldInstances": [ + { "__identifier": "Type", "__type": "LocalEnum.ButtonType", "__value": "Pulse", "__tile": { "tilesetUid": 1, "x": 240, "y": 8, "w": 8, "h": 8 }, "defUid": 20, "realEditorValues": [{ + "id": "V_String", + "params": ["Pulse"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Pulse wave", "__tile": null, "defUid": 23, "realEditorValues": [{ + "id": "V_String", + "params": ["Pulse wave"] + }] } + ], + "__worldX": -176, + "__worldY": 104 + }, + { + "__identifier": "Button", + "__grid": [1,12], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 232, "y": 8, "w": 8, "h": 8 }, + "__smartColor": "#EAD4AA", + "iid": "ee42af20-d7b0-11ee-9c45-89858f04af7f", + "width": 8, + "height": 8, + "defUid": 17, + "px": [8,96], + "fieldInstances": [ + { "__identifier": "Type", "__type": "LocalEnum.ButtonType", "__value": "Noise", "__tile": { "tilesetUid": 1, "x": 232, "y": 8, "w": 8, "h": 8 }, "defUid": 20, "realEditorValues": [{ + "id": "V_String", + "params": ["Noise"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Noise wave", "__tile": null, "defUid": 23, "realEditorValues": [{ + "id": "V_String", + "params": ["Noise wave"] + }] } + ], + "__worldX": -176, + "__worldY": 96 + }, + { + "__identifier": "Button", + "__grid": [1,11], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 224, "y": 8, "w": 8, "h": 8 }, + "__smartColor": "#EAD4AA", + "iid": "eedf1630-d7b0-11ee-9c45-3bf9451c412d", + "width": 8, + "height": 8, + "defUid": 17, + "px": [8,88], + "fieldInstances": [ + { "__identifier": "Type", "__type": "LocalEnum.ButtonType", "__value": "Sine", "__tile": { "tilesetUid": 1, "x": 224, "y": 8, "w": 8, "h": 8 }, "defUid": 20, "realEditorValues": [{ + "id": "V_String", + "params": ["Sine"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Sine wave", "__tile": null, "defUid": 23, "realEditorValues": [{ + "id": "V_String", + "params": ["Sine wave"] + }] } + ], + "__worldX": -176, + "__worldY": 88 + }, + { + "__identifier": "Button", + "__grid": [3,2], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 248, "y": 0, "w": 8, "h": 8 }, + "__smartColor": "#EAD4AA", + "iid": "5c45e690-d7b0-11ee-9c45-79131b730640", + "width": 8, + "height": 8, + "defUid": 17, + "px": [24,16], + "fieldInstances": [ + { "__identifier": "Type", "__type": "LocalEnum.ButtonType", "__value": "Play", "__tile": { "tilesetUid": 1, "x": 248, "y": 0, "w": 8, "h": 8 }, "defUid": 20, "realEditorValues": [{ + "id": "V_String", + "params": ["Play"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Play", "__tile": null, "defUid": 23, "realEditorValues": [{ + "id": "V_String", + "params": ["Play"] + }] } + ], + "__worldX": -160, + "__worldY": 16 + }, + { + "__identifier": "Button", + "__grid": [8,2], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 224, "y": 40, "w": 8, "h": 8 }, + "__smartColor": "#EAD4AA", + "iid": "995f4f60-d7b0-11ee-9c45-814a8ea4b593", + "width": 8, + "height": 8, + "defUid": 17, + "px": [64,16], + "fieldInstances": [ + { "__identifier": "Type", "__type": "LocalEnum.ButtonType", "__value": "Prev", "__tile": { "tilesetUid": 1, "x": 224, "y": 40, "w": 8, "h": 8 }, "defUid": 20, "realEditorValues": [{ + "id": "V_String", + "params": ["Prev"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Previous pattern", "__tile": null, "defUid": 23, "realEditorValues": [{ + "id": "V_String", + "params": ["Previous pattern"] + }] } + ], + "__worldX": -120, + "__worldY": 16 + }, + { + "__identifier": "Button", + "__grid": [14,2], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 232, "y": 40, "w": 8, "h": 8 }, + "__smartColor": "#EAD4AA", + "iid": "9a336840-d7b0-11ee-9c45-05ba2659cb19", + "width": 8, + "height": 8, + "defUid": 17, + "px": [112,16], + "fieldInstances": [ + { "__identifier": "Type", "__type": "LocalEnum.ButtonType", "__value": "Next", "__tile": { "tilesetUid": 1, "x": 232, "y": 40, "w": 8, "h": 8 }, "defUid": 20, "realEditorValues": [{ + "id": "V_String", + "params": ["Next"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Next Pattern", "__tile": null, "defUid": 23, "realEditorValues": [{ + "id": "V_String", + "params": ["Next Pattern"] + }] } + ], + "__worldX": -72, + "__worldY": 16 + }, + { + "__identifier": "WaveSelector", + "__grid": [3,13], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#3E8948", + "iid": "bc606820-d7b0-11ee-9c45-b9274d263161", + "width": 8, + "height": 8, + "defUid": 46, + "px": [24,104], + "fieldInstances": [ + { "__identifier": "Sine", "__type": "EntityRef", "__value": { + "entityIid": "eedf1630-d7b0-11ee-9c45-3bf9451c412d", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, "__tile": null, "defUid": 47, "realEditorValues": [{ + "id": "V_String", + "params": ["eedf1630-d7b0-11ee-9c45-3bf9451c412d"] + }] }, + { "__identifier": "Triangle", "__type": "EntityRef", "__value": { + "entityIid": "ed1e7a70-d7b0-11ee-9c45-f73e9e67b133", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, "__tile": null, "defUid": 48, "realEditorValues": [{ + "id": "V_String", + "params": ["ed1e7a70-d7b0-11ee-9c45-f73e9e67b133"] + }] }, + { "__identifier": "Pulse", "__type": "EntityRef", "__value": { + "entityIid": "eda8b910-d7b0-11ee-9c45-c9b6431ad22b", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, "__tile": null, "defUid": 49, "realEditorValues": [{ + "id": "V_String", + "params": ["eda8b910-d7b0-11ee-9c45-c9b6431ad22b"] + }] }, + { "__identifier": "Noise", "__type": "EntityRef", "__value": { + "entityIid": "ee42af20-d7b0-11ee-9c45-89858f04af7f", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, "__tile": null, "defUid": 50, "realEditorValues": [{ + "id": "V_String", + "params": ["ee42af20-d7b0-11ee-9c45-89858f04af7f"] + }] } + ], + "__worldX": -160, + "__worldY": 104 + }, + { + "__identifier": "Sound", + "__grid": [21,2], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#124E89", + "iid": "e6e8b640-d7b0-11ee-9c45-c78fc47bf091", + "width": 8, + "height": 8, + "defUid": 51, + "px": [168,16], + "fieldInstances": [ + { "__identifier": "Notes", "__type": "Array", "__value": [ + { + "entityIid": "0a8a2250-d7b0-11ee-9c45-f3f620a19840", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "0f5d7c50-d7b0-11ee-9c45-659ee29bd963", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "11cf8dc0-d7b0-11ee-9c45-4548249d3ddd", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "140be930-d7b0-11ee-9c45-3f3c3372924a", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "15fce3c0-d7b0-11ee-9c45-892356fc9be2", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "17edde50-d7b0-11ee-9c45-d77653f28fd8", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "1976ef50-d7b0-11ee-9c45-87486553f86a", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "1cd13de0-d7b0-11ee-9c45-7347fbd85af6", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "1b565db0-d7b0-11ee-9c45-710e8310ff44", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "1e892710-d7b0-11ee-9c45-d9663decde43", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "1fe5d0e0-d7b0-11ee-9c45-07b6b3cd35d3", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "216481a0-d7b0-11ee-9c45-cbec261e7a16", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "23aaa110-d7b0-11ee-9c45-cf064c568765", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "29929f60-d7b0-11ee-9c45-e30c233251c0", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "2b6b7e10-d7b0-11ee-9c45-75f6259cccd4", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "2d064250-d7b0-11ee-9c45-8d5b82f86ad8", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + } + ], "__tile": null, "defUid": 52, "realEditorValues": [ + { + "id": "V_String", + "params": ["0a8a2250-d7b0-11ee-9c45-f3f620a19840"] + }, + { + "id": "V_String", + "params": ["0f5d7c50-d7b0-11ee-9c45-659ee29bd963"] + }, + { + "id": "V_String", + "params": ["11cf8dc0-d7b0-11ee-9c45-4548249d3ddd"] + }, + { + "id": "V_String", + "params": ["140be930-d7b0-11ee-9c45-3f3c3372924a"] + }, + { + "id": "V_String", + "params": ["15fce3c0-d7b0-11ee-9c45-892356fc9be2"] + }, + { + "id": "V_String", + "params": ["17edde50-d7b0-11ee-9c45-d77653f28fd8"] + }, + { + "id": "V_String", + "params": ["1976ef50-d7b0-11ee-9c45-87486553f86a"] + }, + { + "id": "V_String", + "params": ["1cd13de0-d7b0-11ee-9c45-7347fbd85af6"] + }, + { + "id": "V_String", + "params": ["1b565db0-d7b0-11ee-9c45-710e8310ff44"] + }, + { + "id": "V_String", + "params": ["1e892710-d7b0-11ee-9c45-d9663decde43"] + }, + { + "id": "V_String", + "params": ["1fe5d0e0-d7b0-11ee-9c45-07b6b3cd35d3"] + }, + { + "id": "V_String", + "params": ["216481a0-d7b0-11ee-9c45-cbec261e7a16"] + }, + { + "id": "V_String", + "params": ["23aaa110-d7b0-11ee-9c45-cf064c568765"] + }, + { + "id": "V_String", + "params": ["29929f60-d7b0-11ee-9c45-e30c233251c0"] + }, + { + "id": "V_String", + "params": ["2b6b7e10-d7b0-11ee-9c45-75f6259cccd4"] + }, + { + "id": "V_String", + "params": ["2d064250-d7b0-11ee-9c45-8d5b82f86ad8"] + } + ] }, + { "__identifier": "Volumes", "__type": "Array", "__value": [ + { + "entityIid": "30130d20-d7b0-11ee-9c45-5b03bdc82e8d", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "49447bd0-d7b0-11ee-9c45-d31317fa9d4d", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "47bd66a0-d7b0-11ee-9c45-61dd17052f39", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "467b97d0-d7b0-11ee-9c45-f7d164b4aa43", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "44fa7610-d7b0-11ee-9c45-f99165959d0d", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "437e3650-d7b0-11ee-9c45-79156bc825e1", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "42021da0-d7b0-11ee-9c45-c1042f7217d3", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "405e7fc0-d7b0-11ee-9c45-71b978a208e3", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "3eb98250-d7b0-11ee-9c45-79310f529909", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "3d1c4d10-d7b0-11ee-9c45-23ced0781d31", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "3baf4f90-d7b0-11ee-9c45-317a8a8d8d76", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "3a6395b0-d7b0-11ee-9c45-bb4c45dd2a49", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "38b98f30-d7b0-11ee-9c45-e9c4aca553cf", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "3709bc50-d7b0-11ee-9c45-a909819b4c69", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "35c1d300-d7b0-11ee-9c45-652431f43e59", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + { + "entityIid": "33e4d5a0-d7b0-11ee-9c45-03f58a09ef3a", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + } + ], "__tile": null, "defUid": 53, "realEditorValues": [ + { + "id": "V_String", + "params": ["30130d20-d7b0-11ee-9c45-5b03bdc82e8d"] + }, + { + "id": "V_String", + "params": ["49447bd0-d7b0-11ee-9c45-d31317fa9d4d"] + }, + { + "id": "V_String", + "params": ["47bd66a0-d7b0-11ee-9c45-61dd17052f39"] + }, + { + "id": "V_String", + "params": ["467b97d0-d7b0-11ee-9c45-f7d164b4aa43"] + }, + { + "id": "V_String", + "params": ["44fa7610-d7b0-11ee-9c45-f99165959d0d"] + }, + { + "id": "V_String", + "params": ["437e3650-d7b0-11ee-9c45-79156bc825e1"] + }, + { + "id": "V_String", + "params": ["42021da0-d7b0-11ee-9c45-c1042f7217d3"] + }, + { + "id": "V_String", + "params": ["405e7fc0-d7b0-11ee-9c45-71b978a208e3"] + }, + { + "id": "V_String", + "params": ["3eb98250-d7b0-11ee-9c45-79310f529909"] + }, + { + "id": "V_String", + "params": ["3d1c4d10-d7b0-11ee-9c45-23ced0781d31"] + }, + { + "id": "V_String", + "params": ["3baf4f90-d7b0-11ee-9c45-317a8a8d8d76"] + }, + { + "id": "V_String", + "params": ["3a6395b0-d7b0-11ee-9c45-bb4c45dd2a49"] + }, + { + "id": "V_String", + "params": ["38b98f30-d7b0-11ee-9c45-e9c4aca553cf"] + }, + { + "id": "V_String", + "params": ["3709bc50-d7b0-11ee-9c45-a909819b4c69"] + }, + { + "id": "V_String", + "params": ["35c1d300-d7b0-11ee-9c45-652431f43e59"] + }, + { + "id": "V_String", + "params": ["33e4d5a0-d7b0-11ee-9c45-03f58a09ef3a"] + } + ] }, + { "__identifier": "WaveSelector", "__type": "EntityRef", "__value": { + "entityIid": "bc606820-d7b0-11ee-9c45-b9274d263161", + "layerIid": "4a687451-d7b0-11ee-9c45-f9fbfe85abb1", + "levelIid": "4a687450-d7b0-11ee-9c45-2f52ca2677e5", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, "__tile": null, "defUid": 54, "realEditorValues": [{ + "id": "V_String", + "params": ["bc606820-d7b0-11ee-9c45-b9274d263161"] + }] } + ], + "__worldX": -16, + "__worldY": 16 + } + ] + }, + { + "__identifier": "Tiles", + "__type": "Tiles", + "__cWid": 22, + "__cHei": 16, + "__gridSize": 8, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": 1, + "__tilesetRelPath": "sfx.png", + "iid": "4a687452-d7b0-11ee-9c45-0146150d1680", + "levelId": 11, + "layerDefUid": 8, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 5174790, + "overrideTilesetUid": null, + "gridTiles": [ + { "px": [0,16], "src": [200,16], "f": 0, "t": 89, "d": [44], "a": 1 }, + { "px": [8,16], "src": [208,16], "f": 0, "t": 90, "d": [45], "a": 1 }, + { "px": [16,16], "src": [216,16], "f": 0, "t": 91, "d": [46], "a": 1 }, + { "px": [24,16], "src": [192,0], "f": 0, "t": 24, "d": [47], "a": 1 }, + { "px": [24,16], "src": [192,40], "f": 0, "t": 184, "d": [47], "a": 1 }, + { "px": [32,16], "src": [192,0], "f": 0, "t": 24, "d": [48], "a": 1 }, + { "px": [32,16], "src": [200,40], "f": 0, "t": 185, "d": [48], "a": 1 }, + { "px": [40,16], "src": [192,0], "f": 0, "t": 24, "d": [49], "a": 1 }, + { "px": [40,16], "src": [200,40], "f": 0, "t": 185, "d": [49], "a": 1 }, + { "px": [48,16], "src": [192,0], "f": 0, "t": 24, "d": [50], "a": 1 }, + { "px": [48,16], "src": [200,40], "f": 0, "t": 185, "d": [50], "a": 1 }, + { "px": [56,16], "src": [192,0], "f": 0, "t": 24, "d": [51], "a": 1 }, + { "px": [56,16], "src": [200,40], "f": 0, "t": 185, "d": [51], "a": 1 }, + { "px": [64,16], "src": [192,0], "f": 0, "t": 24, "d": [52], "a": 1 }, + { "px": [64,16], "src": [200,40], "f": 0, "t": 185, "d": [52], "a": 1 }, + { "px": [72,16], "src": [192,0], "f": 0, "t": 24, "d": [53], "a": 1 }, + { "px": [72,16], "src": [200,40], "f": 0, "t": 185, "d": [53], "a": 1 }, + { "px": [80,16], "src": [192,0], "f": 0, "t": 24, "d": [54], "a": 1 }, + { "px": [80,16], "src": [200,40], "f": 0, "t": 185, "d": [54], "a": 1 }, + { "px": [80,16], "src": [192,48], "f": 0, "t": 216, "d": [54], "a": 1 }, + { "px": [88,16], "src": [192,0], "f": 0, "t": 24, "d": [55], "a": 1 }, + { "px": [88,16], "src": [200,40], "f": 0, "t": 185, "d": [55], "a": 1 }, + { "px": [88,16], "src": [200,48], "f": 0, "t": 217, "d": [55], "a": 1 }, + { "px": [96,16], "src": [192,0], "f": 0, "t": 24, "d": [56], "a": 1 }, + { "px": [96,16], "src": [200,40], "f": 0, "t": 185, "d": [56], "a": 1 }, + { "px": [96,16], "src": [208,48], "f": 0, "t": 218, "d": [56], "a": 1 }, + { "px": [104,16], "src": [192,0], "f": 0, "t": 24, "d": [57], "a": 1 }, + { "px": [104,16], "src": [200,40], "f": 0, "t": 185, "d": [57], "a": 1 }, + { "px": [112,16], "src": [192,0], "f": 0, "t": 24, "d": [58], "a": 1 }, + { "px": [112,16], "src": [200,40], "f": 0, "t": 185, "d": [58], "a": 1 }, + { "px": [120,16], "src": [192,0], "f": 0, "t": 24, "d": [59], "a": 1 }, + { "px": [120,16], "src": [200,40], "f": 0, "t": 185, "d": [59], "a": 1 }, + { "px": [128,16], "src": [192,0], "f": 0, "t": 24, "d": [60], "a": 1 }, + { "px": [128,16], "src": [200,40], "f": 0, "t": 185, "d": [60], "a": 1 }, + { "px": [136,16], "src": [192,0], "f": 0, "t": 24, "d": [61], "a": 1 }, + { "px": [136,16], "src": [200,40], "f": 0, "t": 185, "d": [61], "a": 1 }, + { "px": [144,16], "src": [192,0], "f": 0, "t": 24, "d": [62], "a": 1 }, + { "px": [144,16], "src": [200,40], "f": 0, "t": 185, "d": [62], "a": 1 }, + { "px": [152,16], "src": [192,0], "f": 0, "t": 24, "d": [63], "a": 1 }, + { "px": [152,16], "src": [208,40], "f": 0, "t": 186, "d": [63], "a": 1 }, + { "px": [160,16], "src": [192,0], "f": 0, "t": 24, "d": [64], "a": 1 }, + { "px": [168,16], "src": [192,0], "f": 0, "t": 24, "d": [65], "a": 1 }, + { "px": [0,24], "src": [200,24], "f": 0, "t": 121, "d": [66], "a": 1 }, + { "px": [8,24], "src": [208,24], "f": 0, "t": 122, "d": [67], "a": 1 }, + { "px": [16,24], "src": [216,24], "f": 0, "t": 123, "d": [68], "a": 1 }, + { "px": [24,24], "src": [192,0], "f": 0, "t": 24, "d": [69], "a": 1 }, + { "px": [24,24], "src": [0,88], "f": 0, "t": 352, "d": [69], "a": 1 }, + { "px": [32,24], "src": [192,0], "f": 0, "t": 24, "d": [70], "a": 1 }, + { "px": [40,24], "src": [192,0], "f": 0, "t": 24, "d": [71], "a": 1 }, + { "px": [48,24], "src": [192,0], "f": 0, "t": 24, "d": [72], "a": 1 }, + { "px": [56,24], "src": [192,0], "f": 0, "t": 24, "d": [73], "a": 1 }, + { "px": [64,24], "src": [192,0], "f": 0, "t": 24, "d": [74], "a": 1 }, + { "px": [72,24], "src": [192,0], "f": 0, "t": 24, "d": [75], "a": 1 }, + { "px": [80,24], "src": [192,0], "f": 0, "t": 24, "d": [76], "a": 1 }, + { "px": [88,24], "src": [192,0], "f": 0, "t": 24, "d": [77], "a": 1 }, + { "px": [96,24], "src": [192,0], "f": 0, "t": 24, "d": [78], "a": 1 }, + { "px": [104,24], "src": [192,0], "f": 0, "t": 24, "d": [79], "a": 1 }, + { "px": [112,24], "src": [192,0], "f": 0, "t": 24, "d": [80], "a": 1 }, + { "px": [120,24], "src": [192,0], "f": 0, "t": 24, "d": [81], "a": 1 }, + { "px": [128,24], "src": [192,0], "f": 0, "t": 24, "d": [82], "a": 1 }, + { "px": [136,24], "src": [192,0], "f": 0, "t": 24, "d": [83], "a": 1 }, + { "px": [144,24], "src": [192,0], "f": 0, "t": 24, "d": [84], "a": 1 }, + { "px": [152,24], "src": [192,0], "f": 0, "t": 24, "d": [85], "a": 1 }, + { "px": [160,24], "src": [192,0], "f": 0, "t": 24, "d": [86], "a": 1 }, + { "px": [168,24], "src": [192,0], "f": 0, "t": 24, "d": [87], "a": 1 }, + { "px": [0,32], "src": [200,24], "f": 0, "t": 121, "d": [88], "a": 1 }, + { "px": [8,32], "src": [208,24], "f": 0, "t": 122, "d": [89], "a": 1 }, + { "px": [16,32], "src": [216,24], "f": 0, "t": 123, "d": [90], "a": 1 }, + { "px": [24,32], "src": [192,0], "f": 0, "t": 24, "d": [91], "a": 1 }, + { "px": [24,32], "src": [0,96], "f": 0, "t": 384, "d": [91], "a": 1 }, + { "px": [32,32], "src": [192,0], "f": 0, "t": 24, "d": [92], "a": 1 }, + { "px": [40,32], "src": [192,0], "f": 0, "t": 24, "d": [93], "a": 1 }, + { "px": [48,32], "src": [192,0], "f": 0, "t": 24, "d": [94], "a": 1 }, + { "px": [56,32], "src": [192,0], "f": 0, "t": 24, "d": [95], "a": 1 }, + { "px": [64,32], "src": [192,0], "f": 0, "t": 24, "d": [96], "a": 1 }, + { "px": [72,32], "src": [192,0], "f": 0, "t": 24, "d": [97], "a": 1 }, + { "px": [80,32], "src": [192,0], "f": 0, "t": 24, "d": [98], "a": 1 }, + { "px": [88,32], "src": [192,0], "f": 0, "t": 24, "d": [99], "a": 1 }, + { "px": [96,32], "src": [192,0], "f": 0, "t": 24, "d": [100], "a": 1 }, + { "px": [104,32], "src": [192,0], "f": 0, "t": 24, "d": [101], "a": 1 }, + { "px": [112,32], "src": [192,0], "f": 0, "t": 24, "d": [102], "a": 1 }, + { "px": [120,32], "src": [192,0], "f": 0, "t": 24, "d": [103], "a": 1 }, + { "px": [128,32], "src": [192,0], "f": 0, "t": 24, "d": [104], "a": 1 }, + { "px": [136,32], "src": [192,0], "f": 0, "t": 24, "d": [105], "a": 1 }, + { "px": [144,32], "src": [192,0], "f": 0, "t": 24, "d": [106], "a": 1 }, + { "px": [152,32], "src": [192,0], "f": 0, "t": 24, "d": [107], "a": 1 }, + { "px": [160,32], "src": [192,0], "f": 0, "t": 24, "d": [108], "a": 1 }, + { "px": [168,32], "src": [192,0], "f": 0, "t": 24, "d": [109], "a": 1 }, + { "px": [0,40], "src": [200,24], "f": 0, "t": 121, "d": [110], "a": 1 }, + { "px": [8,40], "src": [208,24], "f": 0, "t": 122, "d": [111], "a": 1 }, + { "px": [16,40], "src": [216,24], "f": 0, "t": 123, "d": [112], "a": 1 }, + { "px": [24,40], "src": [192,0], "f": 0, "t": 24, "d": [113], "a": 1 }, + { "px": [24,40], "src": [0,104], "f": 0, "t": 416, "d": [113], "a": 1 }, + { "px": [32,40], "src": [192,0], "f": 0, "t": 24, "d": [114], "a": 1 }, + { "px": [40,40], "src": [192,0], "f": 0, "t": 24, "d": [115], "a": 1 }, + { "px": [48,40], "src": [192,0], "f": 0, "t": 24, "d": [116], "a": 1 }, + { "px": [56,40], "src": [192,0], "f": 0, "t": 24, "d": [117], "a": 1 }, + { "px": [64,40], "src": [192,0], "f": 0, "t": 24, "d": [118], "a": 1 }, + { "px": [72,40], "src": [192,0], "f": 0, "t": 24, "d": [119], "a": 1 }, + { "px": [80,40], "src": [192,0], "f": 0, "t": 24, "d": [120], "a": 1 }, + { "px": [88,40], "src": [192,0], "f": 0, "t": 24, "d": [121], "a": 1 }, + { "px": [96,40], "src": [192,0], "f": 0, "t": 24, "d": [122], "a": 1 }, + { "px": [104,40], "src": [192,0], "f": 0, "t": 24, "d": [123], "a": 1 }, + { "px": [112,40], "src": [192,0], "f": 0, "t": 24, "d": [124], "a": 1 }, + { "px": [120,40], "src": [192,0], "f": 0, "t": 24, "d": [125], "a": 1 }, + { "px": [128,40], "src": [192,0], "f": 0, "t": 24, "d": [126], "a": 1 }, + { "px": [136,40], "src": [192,0], "f": 0, "t": 24, "d": [127], "a": 1 }, + { "px": [144,40], "src": [192,0], "f": 0, "t": 24, "d": [128], "a": 1 }, + { "px": [152,40], "src": [192,0], "f": 0, "t": 24, "d": [129], "a": 1 }, + { "px": [160,40], "src": [192,0], "f": 0, "t": 24, "d": [130], "a": 1 }, + { "px": [168,40], "src": [192,0], "f": 0, "t": 24, "d": [131], "a": 1 }, + { "px": [0,48], "src": [200,24], "f": 0, "t": 121, "d": [132], "a": 1 }, + { "px": [8,48], "src": [208,24], "f": 0, "t": 122, "d": [133], "a": 1 }, + { "px": [16,48], "src": [216,24], "f": 0, "t": 123, "d": [134], "a": 1 }, + { "px": [24,48], "src": [192,0], "f": 0, "t": 24, "d": [135], "a": 1 }, + { "px": [32,48], "src": [192,0], "f": 0, "t": 24, "d": [136], "a": 1 }, + { "px": [40,48], "src": [192,0], "f": 0, "t": 24, "d": [137], "a": 1 }, + { "px": [48,48], "src": [192,0], "f": 0, "t": 24, "d": [138], "a": 1 }, + { "px": [56,48], "src": [192,0], "f": 0, "t": 24, "d": [139], "a": 1 }, + { "px": [64,48], "src": [192,0], "f": 0, "t": 24, "d": [140], "a": 1 }, + { "px": [72,48], "src": [192,0], "f": 0, "t": 24, "d": [141], "a": 1 }, + { "px": [80,48], "src": [192,0], "f": 0, "t": 24, "d": [142], "a": 1 }, + { "px": [88,48], "src": [192,0], "f": 0, "t": 24, "d": [143], "a": 1 }, + { "px": [96,48], "src": [192,0], "f": 0, "t": 24, "d": [144], "a": 1 }, + { "px": [104,48], "src": [192,0], "f": 0, "t": 24, "d": [145], "a": 1 }, + { "px": [112,48], "src": [192,0], "f": 0, "t": 24, "d": [146], "a": 1 }, + { "px": [120,48], "src": [192,0], "f": 0, "t": 24, "d": [147], "a": 1 }, + { "px": [128,48], "src": [192,0], "f": 0, "t": 24, "d": [148], "a": 1 }, + { "px": [136,48], "src": [192,0], "f": 0, "t": 24, "d": [149], "a": 1 }, + { "px": [144,48], "src": [192,0], "f": 0, "t": 24, "d": [150], "a": 1 }, + { "px": [152,48], "src": [192,0], "f": 0, "t": 24, "d": [151], "a": 1 }, + { "px": [160,48], "src": [192,0], "f": 0, "t": 24, "d": [152], "a": 1 }, + { "px": [168,48], "src": [192,0], "f": 0, "t": 24, "d": [153], "a": 1 }, + { "px": [0,56], "src": [200,24], "f": 0, "t": 121, "d": [154], "a": 1 }, + { "px": [8,56], "src": [208,24], "f": 0, "t": 122, "d": [155], "a": 1 }, + { "px": [16,56], "src": [216,24], "f": 0, "t": 123, "d": [156], "a": 1 }, + { "px": [24,56], "src": [192,0], "f": 0, "t": 24, "d": [157], "a": 1 }, + { "px": [32,56], "src": [192,0], "f": 0, "t": 24, "d": [158], "a": 1 }, + { "px": [40,56], "src": [192,0], "f": 0, "t": 24, "d": [159], "a": 1 }, + { "px": [48,56], "src": [192,0], "f": 0, "t": 24, "d": [160], "a": 1 }, + { "px": [56,56], "src": [192,0], "f": 0, "t": 24, "d": [161], "a": 1 }, + { "px": [64,56], "src": [192,0], "f": 0, "t": 24, "d": [162], "a": 1 }, + { "px": [72,56], "src": [192,0], "f": 0, "t": 24, "d": [163], "a": 1 }, + { "px": [80,56], "src": [192,0], "f": 0, "t": 24, "d": [164], "a": 1 }, + { "px": [88,56], "src": [192,0], "f": 0, "t": 24, "d": [165], "a": 1 }, + { "px": [96,56], "src": [192,0], "f": 0, "t": 24, "d": [166], "a": 1 }, + { "px": [104,56], "src": [192,0], "f": 0, "t": 24, "d": [167], "a": 1 }, + { "px": [112,56], "src": [192,0], "f": 0, "t": 24, "d": [168], "a": 1 }, + { "px": [120,56], "src": [192,0], "f": 0, "t": 24, "d": [169], "a": 1 }, + { "px": [128,56], "src": [192,0], "f": 0, "t": 24, "d": [170], "a": 1 }, + { "px": [136,56], "src": [192,0], "f": 0, "t": 24, "d": [171], "a": 1 }, + { "px": [144,56], "src": [192,0], "f": 0, "t": 24, "d": [172], "a": 1 }, + { "px": [152,56], "src": [192,0], "f": 0, "t": 24, "d": [173], "a": 1 }, + { "px": [160,56], "src": [192,0], "f": 0, "t": 24, "d": [174], "a": 1 }, + { "px": [168,56], "src": [192,0], "f": 0, "t": 24, "d": [175], "a": 1 }, + { "px": [0,64], "src": [200,24], "f": 0, "t": 121, "d": [176], "a": 1 }, + { "px": [8,64], "src": [208,24], "f": 0, "t": 122, "d": [177], "a": 1 }, + { "px": [16,64], "src": [216,24], "f": 0, "t": 123, "d": [178], "a": 1 }, + { "px": [24,64], "src": [192,0], "f": 0, "t": 24, "d": [179], "a": 1 }, + { "px": [32,64], "src": [192,0], "f": 0, "t": 24, "d": [180], "a": 1 }, + { "px": [40,64], "src": [192,0], "f": 0, "t": 24, "d": [181], "a": 1 }, + { "px": [48,64], "src": [192,0], "f": 0, "t": 24, "d": [182], "a": 1 }, + { "px": [56,64], "src": [192,0], "f": 0, "t": 24, "d": [183], "a": 1 }, + { "px": [64,64], "src": [192,0], "f": 0, "t": 24, "d": [184], "a": 1 }, + { "px": [72,64], "src": [192,0], "f": 0, "t": 24, "d": [185], "a": 1 }, + { "px": [80,64], "src": [192,0], "f": 0, "t": 24, "d": [186], "a": 1 }, + { "px": [88,64], "src": [192,0], "f": 0, "t": 24, "d": [187], "a": 1 }, + { "px": [96,64], "src": [192,0], "f": 0, "t": 24, "d": [188], "a": 1 }, + { "px": [104,64], "src": [192,0], "f": 0, "t": 24, "d": [189], "a": 1 }, + { "px": [112,64], "src": [192,0], "f": 0, "t": 24, "d": [190], "a": 1 }, + { "px": [120,64], "src": [192,0], "f": 0, "t": 24, "d": [191], "a": 1 }, + { "px": [128,64], "src": [192,0], "f": 0, "t": 24, "d": [192], "a": 1 }, + { "px": [136,64], "src": [192,0], "f": 0, "t": 24, "d": [193], "a": 1 }, + { "px": [144,64], "src": [192,0], "f": 0, "t": 24, "d": [194], "a": 1 }, + { "px": [152,64], "src": [192,0], "f": 0, "t": 24, "d": [195], "a": 1 }, + { "px": [160,64], "src": [192,0], "f": 0, "t": 24, "d": [196], "a": 1 }, + { "px": [168,64], "src": [192,0], "f": 0, "t": 24, "d": [197], "a": 1 }, + { "px": [0,72], "src": [200,24], "f": 0, "t": 121, "d": [198], "a": 1 }, + { "px": [8,72], "src": [208,24], "f": 0, "t": 122, "d": [199], "a": 1 }, + { "px": [16,72], "src": [216,24], "f": 0, "t": 123, "d": [200], "a": 1 }, + { "px": [24,72], "src": [192,0], "f": 0, "t": 24, "d": [201], "a": 1 }, + { "px": [32,72], "src": [192,0], "f": 0, "t": 24, "d": [202], "a": 1 }, + { "px": [40,72], "src": [192,0], "f": 0, "t": 24, "d": [203], "a": 1 }, + { "px": [48,72], "src": [192,0], "f": 0, "t": 24, "d": [204], "a": 1 }, + { "px": [56,72], "src": [192,0], "f": 0, "t": 24, "d": [205], "a": 1 }, + { "px": [64,72], "src": [192,0], "f": 0, "t": 24, "d": [206], "a": 1 }, + { "px": [72,72], "src": [192,0], "f": 0, "t": 24, "d": [207], "a": 1 }, + { "px": [80,72], "src": [192,0], "f": 0, "t": 24, "d": [208], "a": 1 }, + { "px": [88,72], "src": [192,0], "f": 0, "t": 24, "d": [209], "a": 1 }, + { "px": [96,72], "src": [192,0], "f": 0, "t": 24, "d": [210], "a": 1 }, + { "px": [104,72], "src": [192,0], "f": 0, "t": 24, "d": [211], "a": 1 }, + { "px": [112,72], "src": [192,0], "f": 0, "t": 24, "d": [212], "a": 1 }, + { "px": [120,72], "src": [192,0], "f": 0, "t": 24, "d": [213], "a": 1 }, + { "px": [128,72], "src": [192,0], "f": 0, "t": 24, "d": [214], "a": 1 }, + { "px": [136,72], "src": [192,0], "f": 0, "t": 24, "d": [215], "a": 1 }, + { "px": [144,72], "src": [192,0], "f": 0, "t": 24, "d": [216], "a": 1 }, + { "px": [152,72], "src": [192,0], "f": 0, "t": 24, "d": [217], "a": 1 }, + { "px": [160,72], "src": [192,0], "f": 0, "t": 24, "d": [218], "a": 1 }, + { "px": [168,72], "src": [192,0], "f": 0, "t": 24, "d": [219], "a": 1 }, + { "px": [0,80], "src": [200,24], "f": 0, "t": 121, "d": [220], "a": 1 }, + { "px": [8,80], "src": [208,24], "f": 0, "t": 122, "d": [221], "a": 1 }, + { "px": [16,80], "src": [216,24], "f": 0, "t": 123, "d": [222], "a": 1 }, + { "px": [24,80], "src": [192,0], "f": 0, "t": 24, "d": [223], "a": 1 }, + { "px": [32,80], "src": [192,0], "f": 0, "t": 24, "d": [224], "a": 1 }, + { "px": [40,80], "src": [192,0], "f": 0, "t": 24, "d": [225], "a": 1 }, + { "px": [48,80], "src": [192,0], "f": 0, "t": 24, "d": [226], "a": 1 }, + { "px": [56,80], "src": [192,0], "f": 0, "t": 24, "d": [227], "a": 1 }, + { "px": [64,80], "src": [192,0], "f": 0, "t": 24, "d": [228], "a": 1 }, + { "px": [72,80], "src": [192,0], "f": 0, "t": 24, "d": [229], "a": 1 }, + { "px": [80,80], "src": [192,0], "f": 0, "t": 24, "d": [230], "a": 1 }, + { "px": [88,80], "src": [192,0], "f": 0, "t": 24, "d": [231], "a": 1 }, + { "px": [96,80], "src": [192,0], "f": 0, "t": 24, "d": [232], "a": 1 }, + { "px": [104,80], "src": [192,0], "f": 0, "t": 24, "d": [233], "a": 1 }, + { "px": [112,80], "src": [192,0], "f": 0, "t": 24, "d": [234], "a": 1 }, + { "px": [120,80], "src": [192,0], "f": 0, "t": 24, "d": [235], "a": 1 }, + { "px": [128,80], "src": [192,0], "f": 0, "t": 24, "d": [236], "a": 1 }, + { "px": [136,80], "src": [192,0], "f": 0, "t": 24, "d": [237], "a": 1 }, + { "px": [144,80], "src": [192,0], "f": 0, "t": 24, "d": [238], "a": 1 }, + { "px": [152,80], "src": [192,0], "f": 0, "t": 24, "d": [239], "a": 1 }, + { "px": [160,80], "src": [192,0], "f": 0, "t": 24, "d": [240], "a": 1 }, + { "px": [168,80], "src": [192,0], "f": 0, "t": 24, "d": [241], "a": 1 }, + { "px": [0,88], "src": [200,24], "f": 0, "t": 121, "d": [242], "a": 1 }, + { "px": [8,88], "src": [208,24], "f": 0, "t": 122, "d": [243], "a": 1 }, + { "px": [16,88], "src": [216,24], "f": 0, "t": 123, "d": [244], "a": 1 }, + { "px": [24,88], "src": [192,0], "f": 0, "t": 24, "d": [245], "a": 1 }, + { "px": [24,88], "src": [8,88], "f": 0, "t": 353, "d": [245], "a": 1 }, + { "px": [32,88], "src": [192,8], "f": 0, "t": 56, "d": [246], "a": 1 }, + { "px": [40,88], "src": [192,8], "f": 0, "t": 56, "d": [247], "a": 1 }, + { "px": [48,88], "src": [192,8], "f": 0, "t": 56, "d": [248], "a": 1 }, + { "px": [56,88], "src": [192,8], "f": 0, "t": 56, "d": [249], "a": 1 }, + { "px": [64,88], "src": [192,8], "f": 0, "t": 56, "d": [250], "a": 1 }, + { "px": [72,88], "src": [192,8], "f": 0, "t": 56, "d": [251], "a": 1 }, + { "px": [80,88], "src": [192,8], "f": 0, "t": 56, "d": [252], "a": 1 }, + { "px": [88,88], "src": [192,8], "f": 0, "t": 56, "d": [253], "a": 1 }, + { "px": [96,88], "src": [192,8], "f": 0, "t": 56, "d": [254], "a": 1 }, + { "px": [104,88], "src": [192,8], "f": 0, "t": 56, "d": [255], "a": 1 }, + { "px": [112,88], "src": [192,8], "f": 0, "t": 56, "d": [256], "a": 1 }, + { "px": [120,88], "src": [192,8], "f": 0, "t": 56, "d": [257], "a": 1 }, + { "px": [128,88], "src": [192,8], "f": 0, "t": 56, "d": [258], "a": 1 }, + { "px": [136,88], "src": [192,8], "f": 0, "t": 56, "d": [259], "a": 1 }, + { "px": [144,88], "src": [192,8], "f": 0, "t": 56, "d": [260], "a": 1 }, + { "px": [152,88], "src": [192,8], "f": 0, "t": 56, "d": [261], "a": 1 }, + { "px": [160,88], "src": [192,0], "f": 0, "t": 24, "d": [262], "a": 1 }, + { "px": [168,88], "src": [192,0], "f": 0, "t": 24, "d": [263], "a": 1 }, + { "px": [0,96], "src": [200,24], "f": 0, "t": 121, "d": [264], "a": 1 }, + { "px": [8,96], "src": [208,24], "f": 0, "t": 122, "d": [265], "a": 1 }, + { "px": [16,96], "src": [216,24], "f": 0, "t": 123, "d": [266], "a": 1 }, + { "px": [24,96], "src": [192,0], "f": 0, "t": 24, "d": [267], "a": 1 }, + { "px": [24,96], "src": [8,96], "f": 0, "t": 385, "d": [267], "a": 1 }, + { "px": [32,96], "src": [192,0], "f": 0, "t": 24, "d": [268], "a": 1 }, + { "px": [40,96], "src": [192,0], "f": 0, "t": 24, "d": [269], "a": 1 }, + { "px": [48,96], "src": [192,0], "f": 0, "t": 24, "d": [270], "a": 1 }, + { "px": [56,96], "src": [192,0], "f": 0, "t": 24, "d": [271], "a": 1 }, + { "px": [64,96], "src": [192,0], "f": 0, "t": 24, "d": [272], "a": 1 }, + { "px": [72,96], "src": [192,0], "f": 0, "t": 24, "d": [273], "a": 1 }, + { "px": [80,96], "src": [192,0], "f": 0, "t": 24, "d": [274], "a": 1 }, + { "px": [88,96], "src": [192,0], "f": 0, "t": 24, "d": [275], "a": 1 }, + { "px": [96,96], "src": [192,0], "f": 0, "t": 24, "d": [276], "a": 1 }, + { "px": [104,96], "src": [192,0], "f": 0, "t": 24, "d": [277], "a": 1 }, + { "px": [112,96], "src": [192,0], "f": 0, "t": 24, "d": [278], "a": 1 }, + { "px": [120,96], "src": [192,0], "f": 0, "t": 24, "d": [279], "a": 1 }, + { "px": [128,96], "src": [192,0], "f": 0, "t": 24, "d": [280], "a": 1 }, + { "px": [136,96], "src": [192,0], "f": 0, "t": 24, "d": [281], "a": 1 }, + { "px": [144,96], "src": [192,0], "f": 0, "t": 24, "d": [282], "a": 1 }, + { "px": [152,96], "src": [192,0], "f": 0, "t": 24, "d": [283], "a": 1 }, + { "px": [160,96], "src": [192,0], "f": 0, "t": 24, "d": [284], "a": 1 }, + { "px": [168,96], "src": [192,0], "f": 0, "t": 24, "d": [285], "a": 1 }, + { "px": [0,104], "src": [200,24], "f": 0, "t": 121, "d": [286], "a": 1 }, + { "px": [8,104], "src": [208,24], "f": 0, "t": 122, "d": [287], "a": 1 }, + { "px": [16,104], "src": [216,24], "f": 0, "t": 123, "d": [288], "a": 1 }, + { "px": [24,104], "src": [192,0], "f": 0, "t": 24, "d": [289], "a": 1 }, + { "px": [24,104], "src": [8,104], "f": 0, "t": 417, "d": [289], "a": 1 }, + { "px": [32,104], "src": [192,0], "f": 0, "t": 24, "d": [290], "a": 1 }, + { "px": [40,104], "src": [192,0], "f": 0, "t": 24, "d": [291], "a": 1 }, + { "px": [48,104], "src": [192,0], "f": 0, "t": 24, "d": [292], "a": 1 }, + { "px": [56,104], "src": [192,0], "f": 0, "t": 24, "d": [293], "a": 1 }, + { "px": [64,104], "src": [192,0], "f": 0, "t": 24, "d": [294], "a": 1 }, + { "px": [72,104], "src": [192,0], "f": 0, "t": 24, "d": [295], "a": 1 }, + { "px": [80,104], "src": [192,0], "f": 0, "t": 24, "d": [296], "a": 1 }, + { "px": [88,104], "src": [192,0], "f": 0, "t": 24, "d": [297], "a": 1 }, + { "px": [96,104], "src": [192,0], "f": 0, "t": 24, "d": [298], "a": 1 }, + { "px": [104,104], "src": [192,0], "f": 0, "t": 24, "d": [299], "a": 1 }, + { "px": [112,104], "src": [192,0], "f": 0, "t": 24, "d": [300], "a": 1 }, + { "px": [120,104], "src": [192,0], "f": 0, "t": 24, "d": [301], "a": 1 }, + { "px": [128,104], "src": [192,0], "f": 0, "t": 24, "d": [302], "a": 1 }, + { "px": [136,104], "src": [192,0], "f": 0, "t": 24, "d": [303], "a": 1 }, + { "px": [144,104], "src": [192,0], "f": 0, "t": 24, "d": [304], "a": 1 }, + { "px": [152,104], "src": [192,0], "f": 0, "t": 24, "d": [305], "a": 1 }, + { "px": [160,104], "src": [192,0], "f": 0, "t": 24, "d": [306], "a": 1 }, + { "px": [168,104], "src": [192,0], "f": 0, "t": 24, "d": [307], "a": 1 }, + { "px": [0,112], "src": [200,24], "f": 0, "t": 121, "d": [308], "a": 1 }, + { "px": [8,112], "src": [208,24], "f": 0, "t": 122, "d": [309], "a": 1 }, + { "px": [16,112], "src": [216,24], "f": 0, "t": 123, "d": [310], "a": 1 }, + { "px": [24,112], "src": [192,0], "f": 0, "t": 24, "d": [311], "a": 1 }, + { "px": [24,112], "src": [8,112], "f": 0, "t": 449, "d": [311], "a": 1 }, + { "px": [32,112], "src": [192,0], "f": 0, "t": 24, "d": [312], "a": 1 }, + { "px": [40,112], "src": [192,0], "f": 0, "t": 24, "d": [313], "a": 1 }, + { "px": [48,112], "src": [192,0], "f": 0, "t": 24, "d": [314], "a": 1 }, + { "px": [56,112], "src": [192,0], "f": 0, "t": 24, "d": [315], "a": 1 }, + { "px": [64,112], "src": [192,0], "f": 0, "t": 24, "d": [316], "a": 1 }, + { "px": [72,112], "src": [192,0], "f": 0, "t": 24, "d": [317], "a": 1 }, + { "px": [80,112], "src": [192,0], "f": 0, "t": 24, "d": [318], "a": 1 }, + { "px": [88,112], "src": [192,0], "f": 0, "t": 24, "d": [319], "a": 1 }, + { "px": [96,112], "src": [192,0], "f": 0, "t": 24, "d": [320], "a": 1 }, + { "px": [104,112], "src": [192,0], "f": 0, "t": 24, "d": [321], "a": 1 }, + { "px": [112,112], "src": [192,0], "f": 0, "t": 24, "d": [322], "a": 1 }, + { "px": [120,112], "src": [192,0], "f": 0, "t": 24, "d": [323], "a": 1 }, + { "px": [128,112], "src": [192,0], "f": 0, "t": 24, "d": [324], "a": 1 }, + { "px": [136,112], "src": [192,0], "f": 0, "t": 24, "d": [325], "a": 1 }, + { "px": [144,112], "src": [192,0], "f": 0, "t": 24, "d": [326], "a": 1 }, + { "px": [152,112], "src": [192,0], "f": 0, "t": 24, "d": [327], "a": 1 }, + { "px": [160,112], "src": [192,0], "f": 0, "t": 24, "d": [328], "a": 1 }, + { "px": [168,112], "src": [192,0], "f": 0, "t": 24, "d": [329], "a": 1 }, + { "px": [0,120], "src": [200,32], "f": 0, "t": 153, "d": [330], "a": 1 }, + { "px": [8,120], "src": [208,32], "f": 0, "t": 154, "d": [331], "a": 1 }, + { "px": [16,120], "src": [216,32], "f": 0, "t": 155, "d": [332], "a": 1 }, + { "px": [24,120], "src": [192,0], "f": 0, "t": 24, "d": [333], "a": 1 }, + { "px": [24,120], "src": [8,120], "f": 0, "t": 481, "d": [333], "a": 1 }, + { "px": [32,120], "src": [192,0], "f": 0, "t": 24, "d": [334], "a": 1 }, + { "px": [40,120], "src": [192,0], "f": 0, "t": 24, "d": [335], "a": 1 }, + { "px": [48,120], "src": [192,0], "f": 0, "t": 24, "d": [336], "a": 1 }, + { "px": [56,120], "src": [192,0], "f": 0, "t": 24, "d": [337], "a": 1 }, + { "px": [64,120], "src": [192,0], "f": 0, "t": 24, "d": [338], "a": 1 }, + { "px": [72,120], "src": [192,0], "f": 0, "t": 24, "d": [339], "a": 1 }, + { "px": [80,120], "src": [192,0], "f": 0, "t": 24, "d": [340], "a": 1 }, + { "px": [88,120], "src": [192,0], "f": 0, "t": 24, "d": [341], "a": 1 }, + { "px": [96,120], "src": [192,0], "f": 0, "t": 24, "d": [342], "a": 1 }, + { "px": [104,120], "src": [192,0], "f": 0, "t": 24, "d": [343], "a": 1 }, + { "px": [112,120], "src": [192,0], "f": 0, "t": 24, "d": [344], "a": 1 }, + { "px": [120,120], "src": [192,0], "f": 0, "t": 24, "d": [345], "a": 1 }, + { "px": [128,120], "src": [192,0], "f": 0, "t": 24, "d": [346], "a": 1 }, + { "px": [136,120], "src": [192,0], "f": 0, "t": 24, "d": [347], "a": 1 }, + { "px": [144,120], "src": [192,0], "f": 0, "t": 24, "d": [348], "a": 1 }, + { "px": [152,120], "src": [192,0], "f": 0, "t": 24, "d": [349], "a": 1 }, + { "px": [160,120], "src": [192,0], "f": 0, "t": 24, "d": [350], "a": 1 }, + { "px": [168,120], "src": [192,0], "f": 0, "t": 24, "d": [351], "a": 1 } + ], + "entityInstances": [] + } + ], + "__neighbours": [] + }, + { + "identifier": "Fx", + "iid": "ec22b110-d7b0-11ee-9c45-ab95af96fe31", + "uid": 24, + "worldX": -184, + "worldY": 136, + "worldDepth": 0, + "pxWid": 176, + "pxHei": 128, + "__bgColor": "#696A79", + "bgColor": null, + "useAutoIdentifier": false, + "bgRelPath": null, + "bgPos": null, + "bgPivotX": 0.5, + "bgPivotY": 0.5, + "__smartColor": "#ADADB5", + "__bgPos": null, + "externalRelPath": null, + "fieldInstances": [], + "layerInstances": [ + { + "__identifier": "Entities", + "__type": "Entities", + "__cWid": 22, + "__cHei": 16, + "__gridSize": 8, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": null, + "__tilesetRelPath": null, + "iid": "ec22d820-d7b0-11ee-9c45-8bfde102ddf7", + "levelId": 24, + "layerDefUid": 7, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 230778, + "overrideTilesetUid": null, + "gridTiles": [], + "entityInstances": [ + { + "__identifier": "Envelop", + "__grid": [1,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#E4A672", + "iid": "23d6cd90-d7b0-11ee-9c45-ad1ff16e75a4", + "width": 96, + "height": 32, + "defUid": 25, + "px": [8,24], + "fieldInstances": [ + { "__identifier": "Help", "__type": "String", "__value": "", "__tile": null, "defUid": 26, "realEditorValues": [] }, + { "__identifier": "Attack", "__type": "EntityRef", "__value": { + "entityIid": "2bb43340-d7b0-11ee-9c45-fbf46d07ab4f", + "layerIid": "ec22d820-d7b0-11ee-9c45-8bfde102ddf7", + "levelIid": "ec22b110-d7b0-11ee-9c45-ab95af96fe31", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, "__tile": null, "defUid": 32, "realEditorValues": [{ + "id": "V_String", + "params": ["2bb43340-d7b0-11ee-9c45-fbf46d07ab4f"] + }] }, + { "__identifier": "Decay", "__type": "EntityRef", "__value": { + "entityIid": "2c5cf660-d7b0-11ee-9c45-435911ada77f", + "layerIid": "ec22d820-d7b0-11ee-9c45-8bfde102ddf7", + "levelIid": "ec22b110-d7b0-11ee-9c45-ab95af96fe31", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, "__tile": null, "defUid": 33, "realEditorValues": [{ + "id": "V_String", + "params": ["2c5cf660-d7b0-11ee-9c45-435911ada77f"] + }] }, + { "__identifier": "Sustain", "__type": "EntityRef", "__value": { + "entityIid": "2ceba1d0-d7b0-11ee-9c45-cb0bed1a7a11", + "layerIid": "ec22d820-d7b0-11ee-9c45-8bfde102ddf7", + "levelIid": "ec22b110-d7b0-11ee-9c45-ab95af96fe31", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, "__tile": null, "defUid": 34, "realEditorValues": [{ + "id": "V_String", + "params": ["2ceba1d0-d7b0-11ee-9c45-cb0bed1a7a11"] + }] }, + { "__identifier": "Release", "__type": "EntityRef", "__value": { + "entityIid": "2d6b0b00-d7b0-11ee-9c45-bfbf11e2d3ee", + "layerIid": "ec22d820-d7b0-11ee-9c45-8bfde102ddf7", + "levelIid": "ec22b110-d7b0-11ee-9c45-ab95af96fe31", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, "__tile": null, "defUid": 35, "realEditorValues": [{ + "id": "V_String", + "params": ["2d6b0b00-d7b0-11ee-9c45-bfbf11e2d3ee"] + }] } + ], + "__worldX": -176, + "__worldY": 160 + }, + { + "__identifier": "Fader", + "__grid": [14,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "2bb43340-d7b0-11ee-9c45-fbf46d07ab4f", + "width": 8, + "height": 32, + "defUid": 12, + "px": [112,24], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 0, "__tile": null, "defUid": 14, "realEditorValues": [] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Note", "__tile": null, "defUid": 18, "realEditorValues": [] }, + { "__identifier": "Label", "__type": "String", "__value": "Attack", "__tile": null, "defUid": 30, "realEditorValues": [{ + "id": "V_String", + "params": ["Attack"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Attack", "__tile": null, "defUid": 31, "realEditorValues": [{ + "id": "V_String", + "params": ["Attack"] + }] } + ], + "__worldX": -72, + "__worldY": 160 + }, + { + "__identifier": "Fader", + "__grid": [16,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "2c5cf660-d7b0-11ee-9c45-435911ada77f", + "width": 8, + "height": 32, + "defUid": 12, + "px": [128,24], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 0, "__tile": null, "defUid": 14, "realEditorValues": [] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Note", "__tile": null, "defUid": 18, "realEditorValues": [] }, + { "__identifier": "Label", "__type": "String", "__value": "Decay", "__tile": null, "defUid": 30, "realEditorValues": [{ + "id": "V_String", + "params": ["Decay"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Decay", "__tile": null, "defUid": 31, "realEditorValues": [{ + "id": "V_String", + "params": ["Decay"] + }] } + ], + "__worldX": -56, + "__worldY": 160 + }, + { + "__identifier": "Fader", + "__grid": [18,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "2ceba1d0-d7b0-11ee-9c45-cb0bed1a7a11", + "width": 8, + "height": 32, + "defUid": 12, + "px": [144,24], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 0, "__tile": null, "defUid": 14, "realEditorValues": [] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Note", "__tile": null, "defUid": 18, "realEditorValues": [] }, + { "__identifier": "Label", "__type": "String", "__value": "Sustain", "__tile": null, "defUid": 30, "realEditorValues": [{ + "id": "V_String", + "params": ["Sustain"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Sustain", "__tile": null, "defUid": 31, "realEditorValues": [{ + "id": "V_String", + "params": ["Sustain"] + }] } + ], + "__worldX": -40, + "__worldY": 160 + }, + { + "__identifier": "Fader", + "__grid": [20,3], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#63C74D", + "iid": "2d6b0b00-d7b0-11ee-9c45-bfbf11e2d3ee", + "width": 8, + "height": 32, + "defUid": 12, + "px": [160,24], + "fieldInstances": [ + { "__identifier": "Id", "__type": "Int", "__value": 0, "__tile": null, "defUid": 14, "realEditorValues": [] }, + { "__identifier": "Type", "__type": "LocalEnum.Fader", "__value": "Note", "__tile": null, "defUid": 18, "realEditorValues": [] }, + { "__identifier": "Label", "__type": "String", "__value": "Release", "__tile": null, "defUid": 30, "realEditorValues": [{ + "id": "V_String", + "params": ["Release"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Release", "__tile": null, "defUid": 31, "realEditorValues": [{ + "id": "V_String", + "params": ["Release"] + }] } + ], + "__worldX": -24, + "__worldY": 160 + }, + { + "__identifier": "Checkbox", + "__grid": [1,8], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 8, "y": 48, "w": 8, "h": 8 }, + "__smartColor": "#733E39", + "iid": "e5e606d0-d7b0-11ee-9c45-d70f97b23e45", + "width": 8, + "height": 8, + "defUid": 27, + "px": [8,64], + "fieldInstances": [ + { "__identifier": "Help", "__type": "String", "__value": "Enable Vibrato", "__tile": null, "defUid": 28, "realEditorValues": [{ + "id": "V_String", + "params": ["Enable Vibrato"] + }] }, + { "__identifier": "Label", "__type": "String", "__value": "Vibrato", "__tile": null, "defUid": 29, "realEditorValues": [{ + "id": "V_String", + "params": ["Vibrato"] + }] } + ], + "__worldX": -176, + "__worldY": 200 + }, + { + "__identifier": "Checkbox", + "__grid": [7,8], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 8, "y": 48, "w": 8, "h": 8 }, + "__smartColor": "#733E39", + "iid": "e735df60-d7b0-11ee-9c45-dd4d3c622987", + "width": 8, + "height": 8, + "defUid": 27, + "px": [56,64], + "fieldInstances": [ + { "__identifier": "Help", "__type": "String", "__value": "Enable Sweep", "__tile": null, "defUid": 28, "realEditorValues": [{ + "id": "V_String", + "params": ["Enable Sweep"] + }] }, + { "__identifier": "Label", "__type": "String", "__value": "Sweep", "__tile": null, "defUid": 29, "realEditorValues": [{ + "id": "V_String", + "params": ["Sweep"] + }] } + ], + "__worldX": -128, + "__worldY": 200 + }, + { + "__identifier": "Checkbox", + "__grid": [14,8], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 8, "y": 48, "w": 8, "h": 8 }, + "__smartColor": "#733E39", + "iid": "e7cbddd0-d7b0-11ee-9c45-253ec4365407", + "width": 8, + "height": 8, + "defUid": 27, + "px": [112,64], + "fieldInstances": [ + { "__identifier": "Help", "__type": "String", "__value": "Enable Tied notes", "__tile": null, "defUid": 28, "realEditorValues": [{ + "id": "V_String", + "params": ["Enable Tied notes"] + }] }, + { "__identifier": "Label", "__type": "String", "__value": "Tied Notes", "__tile": null, "defUid": 29, "realEditorValues": [{ + "id": "V_String", + "params": ["Tied Notes"] + }] } + ], + "__worldX": -72, + "__worldY": 200 + }, + { + "__identifier": "Knob", + "__grid": [1,10], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 240, "y": 0, "w": 8, "h": 8 }, + "__smartColor": "#D77643", + "iid": "ff596080-d7b0-11ee-9c45-1f3b77b3729a", + "width": 8, + "height": 8, + "defUid": 9, + "px": [8,80], + "fieldInstances": [ + { "__identifier": "Label", "__type": "String", "__value": "Vibrato", "__tile": null, "defUid": 10, "realEditorValues": [{ + "id": "V_String", + "params": ["Vibrato"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Vibrato strengh", "__tile": null, "defUid": 22, "realEditorValues": [{ + "id": "V_String", + "params": ["Vibrato strengh"] + }] } + ], + "__worldX": -176, + "__worldY": 216 + }, + { + "__identifier": "Knob", + "__grid": [7,10], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 240, "y": 0, "w": 8, "h": 8 }, + "__smartColor": "#D77643", + "iid": "00629320-d7b0-11ee-9c45-e5865a129229", + "width": 8, + "height": 8, + "defUid": 9, + "px": [56,80], + "fieldInstances": [ + { "__identifier": "Label", "__type": "String", "__value": "Acceleration", "__tile": null, "defUid": 10, "realEditorValues": [{ + "id": "V_String", + "params": ["Acceleration"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Speed of the sweep", "__tile": null, "defUid": 22, "realEditorValues": [{ + "id": "V_String", + "params": ["Speed of the sweep"] + }] } + ], + "__worldX": -128, + "__worldY": 216 + }, + { + "__identifier": "Knob", + "__grid": [1,13], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 240, "y": 0, "w": 8, "h": 8 }, + "__smartColor": "#D77643", + "iid": "02a5cc60-d7b0-11ee-9c45-2734f6647c99", + "width": 8, + "height": 8, + "defUid": 9, + "px": [8,104], + "fieldInstances": [ + { "__identifier": "Label", "__type": "String", "__value": "Depth", "__tile": null, "defUid": 10, "realEditorValues": [{ + "id": "V_String", + "params": ["Depth"] + }] }, + { "__identifier": "Help", "__type": "String", "__value": "Depth of the vibrato", "__tile": null, "defUid": 22, "realEditorValues": [{ + "id": "V_String", + "params": ["Depth of the vibrato"] + }] } + ], + "__worldX": -176, + "__worldY": 240 + }, + { + "__identifier": "TiedNote", + "__grid": [16,8], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#FEE761", + "iid": "a8568790-d7b0-11ee-9c45-5b915a231bb5", + "width": 8, + "height": 48, + "defUid": 38, + "px": [128,64], + "fieldInstances": [{ "__identifier": "Enabled", "__type": "EntityRef", "__value": { + "entityIid": "e7cbddd0-d7b0-11ee-9c45-253ec4365407", + "layerIid": "ec22d820-d7b0-11ee-9c45-8bfde102ddf7", + "levelIid": "ec22b110-d7b0-11ee-9c45-ab95af96fe31", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, "__tile": null, "defUid": 45, "realEditorValues": [{ + "id": "V_String", + "params": ["e7cbddd0-d7b0-11ee-9c45-253ec4365407"] + }] }], + "__worldX": -56, + "__worldY": 200 + }, + { + "__identifier": "Sweep", + "__grid": [10,8], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#FEAE34", + "iid": "b121cfb0-d7b0-11ee-9c45-873cbd53dbe4", + "width": 8, + "height": 48, + "defUid": 37, + "px": [80,64], + "fieldInstances": [ + { "__identifier": "Sweep", "__type": "EntityRef", "__value": { + "entityIid": "00629320-d7b0-11ee-9c45-e5865a129229", + "layerIid": "ec22d820-d7b0-11ee-9c45-8bfde102ddf7", + "levelIid": "ec22b110-d7b0-11ee-9c45-ab95af96fe31", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, "__tile": null, "defUid": 42, "realEditorValues": [{ + "id": "V_String", + "params": ["00629320-d7b0-11ee-9c45-e5865a129229"] + }] }, + { "__identifier": "Acceleration", "__type": "EntityRef", "__value": { + "entityIid": "36470c00-d7b0-11ee-9c45-e50fdd11de4e", + "layerIid": "ec22d820-d7b0-11ee-9c45-8bfde102ddf7", + "levelIid": "ec22b110-d7b0-11ee-9c45-ab95af96fe31", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, "__tile": null, "defUid": 43, "realEditorValues": [{ + "id": "V_String", + "params": ["36470c00-d7b0-11ee-9c45-e50fdd11de4e"] + }] }, + { "__identifier": "Enabled", "__type": "EntityRef", "__value": { + "entityIid": "e735df60-d7b0-11ee-9c45-dd4d3c622987", + "layerIid": "ec22d820-d7b0-11ee-9c45-8bfde102ddf7", + "levelIid": "ec22b110-d7b0-11ee-9c45-ab95af96fe31", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, "__tile": null, "defUid": 44, "realEditorValues": [{ + "id": "V_String", + "params": ["e735df60-d7b0-11ee-9c45-dd4d3c622987"] + }] } + ], + "__worldX": -104, + "__worldY": 200 + }, + { + "__identifier": "Vibrato", + "__grid": [4,8], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#3E2731", + "iid": "b53b2880-d7b0-11ee-9c45-1305f3f9e32a", + "width": 8, + "height": 48, + "defUid": 36, + "px": [32,64], + "fieldInstances": [ + { "__identifier": "Enabled", "__type": "EntityRef", "__value": { + "entityIid": "e5e606d0-d7b0-11ee-9c45-d70f97b23e45", + "layerIid": "ec22d820-d7b0-11ee-9c45-8bfde102ddf7", + "levelIid": "ec22b110-d7b0-11ee-9c45-ab95af96fe31", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, "__tile": null, "defUid": 39, "realEditorValues": [{ + "id": "V_String", + "params": ["e5e606d0-d7b0-11ee-9c45-d70f97b23e45"] + }] }, + { "__identifier": "Vibrato", "__type": "EntityRef", "__value": { + "entityIid": "ff596080-d7b0-11ee-9c45-1f3b77b3729a", + "layerIid": "ec22d820-d7b0-11ee-9c45-8bfde102ddf7", + "levelIid": "ec22b110-d7b0-11ee-9c45-ab95af96fe31", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, "__tile": null, "defUid": 40, "realEditorValues": [{ + "id": "V_String", + "params": ["ff596080-d7b0-11ee-9c45-1f3b77b3729a"] + }] }, + { "__identifier": "Depth", "__type": "EntityRef", "__value": { + "entityIid": "02a5cc60-d7b0-11ee-9c45-2734f6647c99", + "layerIid": "ec22d820-d7b0-11ee-9c45-8bfde102ddf7", + "levelIid": "ec22b110-d7b0-11ee-9c45-ab95af96fe31", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, "__tile": null, "defUid": 41, "realEditorValues": [{ + "id": "V_String", + "params": ["02a5cc60-d7b0-11ee-9c45-2734f6647c99"] + }] } + ], + "__worldX": -152, + "__worldY": 200 + }, + { + "__identifier": "Knob", + "__grid": [7,13], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 240, "y": 0, "w": 8, "h": 8 }, + "__smartColor": "#D77643", + "iid": "36470c00-d7b0-11ee-9c45-e50fdd11de4e", + "width": 8, + "height": 8, + "defUid": 9, + "px": [56,104], + "fieldInstances": [ + { "__identifier": "Label", "__type": "String", "__value": null, "__tile": null, "defUid": 10, "realEditorValues": [] }, + { "__identifier": "Help", "__type": "String", "__value": null, "__tile": null, "defUid": 22, "realEditorValues": [] } + ], + "__worldX": -128, + "__worldY": 240 + } + ] + }, + { + "__identifier": "Tiles", + "__type": "Tiles", + "__cWid": 22, + "__cHei": 16, + "__gridSize": 8, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": 1, + "__tilesetRelPath": "sfx.png", + "iid": "ec22d821-d7b0-11ee-9c45-5b5625330fbe", + "levelId": 24, + "layerDefUid": 8, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 8001766, + "overrideTilesetUid": null, + "gridTiles": [ + { "px": [0,16], "src": [192,0], "f": 0, "t": 24, "d": [44], "a": 1 }, + { "px": [8,16], "src": [192,0], "f": 0, "t": 24, "d": [45], "a": 1 }, + { "px": [16,16], "src": [192,0], "f": 0, "t": 24, "d": [46], "a": 1 }, + { "px": [24,16], "src": [192,0], "f": 0, "t": 24, "d": [47], "a": 1 }, + { "px": [32,16], "src": [192,0], "f": 0, "t": 24, "d": [48], "a": 1 }, + { "px": [40,16], "src": [192,0], "f": 0, "t": 24, "d": [49], "a": 1 }, + { "px": [48,16], "src": [192,0], "f": 0, "t": 24, "d": [50], "a": 1 }, + { "px": [56,16], "src": [192,0], "f": 0, "t": 24, "d": [51], "a": 1 }, + { "px": [64,16], "src": [192,0], "f": 0, "t": 24, "d": [52], "a": 1 }, + { "px": [72,16], "src": [192,0], "f": 0, "t": 24, "d": [53], "a": 1 }, + { "px": [80,16], "src": [192,0], "f": 0, "t": 24, "d": [54], "a": 1 }, + { "px": [88,16], "src": [192,0], "f": 0, "t": 24, "d": [55], "a": 1 }, + { "px": [96,16], "src": [192,0], "f": 0, "t": 24, "d": [56], "a": 1 }, + { "px": [104,16], "src": [192,0], "f": 0, "t": 24, "d": [57], "a": 1 }, + { "px": [112,16], "src": [192,0], "f": 0, "t": 24, "d": [58], "a": 1 }, + { "px": [120,16], "src": [192,0], "f": 0, "t": 24, "d": [59], "a": 1 }, + { "px": [128,16], "src": [192,0], "f": 0, "t": 24, "d": [60], "a": 1 }, + { "px": [136,16], "src": [192,0], "f": 0, "t": 24, "d": [61], "a": 1 }, + { "px": [144,16], "src": [192,0], "f": 0, "t": 24, "d": [62], "a": 1 }, + { "px": [152,16], "src": [192,0], "f": 0, "t": 24, "d": [63], "a": 1 }, + { "px": [160,16], "src": [192,0], "f": 0, "t": 24, "d": [64], "a": 1 }, + { "px": [168,16], "src": [192,0], "f": 0, "t": 24, "d": [65], "a": 1 }, + { "px": [0,24], "src": [192,0], "f": 0, "t": 24, "d": [66], "a": 1 }, + { "px": [8,24], "src": [192,0], "f": 0, "t": 24, "d": [67], "a": 1 }, + { "px": [16,24], "src": [192,0], "f": 0, "t": 24, "d": [68], "a": 1 }, + { "px": [24,24], "src": [192,0], "f": 0, "t": 24, "d": [69], "a": 1 }, + { "px": [32,24], "src": [192,0], "f": 0, "t": 24, "d": [70], "a": 1 }, + { "px": [40,24], "src": [192,0], "f": 0, "t": 24, "d": [71], "a": 1 }, + { "px": [48,24], "src": [192,0], "f": 0, "t": 24, "d": [72], "a": 1 }, + { "px": [56,24], "src": [192,0], "f": 0, "t": 24, "d": [73], "a": 1 }, + { "px": [64,24], "src": [192,0], "f": 0, "t": 24, "d": [74], "a": 1 }, + { "px": [72,24], "src": [192,0], "f": 0, "t": 24, "d": [75], "a": 1 }, + { "px": [80,24], "src": [192,0], "f": 0, "t": 24, "d": [76], "a": 1 }, + { "px": [88,24], "src": [192,0], "f": 0, "t": 24, "d": [77], "a": 1 }, + { "px": [96,24], "src": [192,0], "f": 0, "t": 24, "d": [78], "a": 1 }, + { "px": [104,24], "src": [192,0], "f": 0, "t": 24, "d": [79], "a": 1 }, + { "px": [112,24], "src": [192,0], "f": 0, "t": 24, "d": [80], "a": 1 }, + { "px": [112,24], "src": [248,16], "f": 0, "t": 95, "d": [80], "a": 1 }, + { "px": [120,24], "src": [192,0], "f": 0, "t": 24, "d": [81], "a": 1 }, + { "px": [128,24], "src": [192,0], "f": 0, "t": 24, "d": [82], "a": 1 }, + { "px": [128,24], "src": [248,16], "f": 0, "t": 95, "d": [82], "a": 1 }, + { "px": [136,24], "src": [192,0], "f": 0, "t": 24, "d": [83], "a": 1 }, + { "px": [144,24], "src": [192,0], "f": 0, "t": 24, "d": [84], "a": 1 }, + { "px": [144,24], "src": [248,16], "f": 0, "t": 95, "d": [84], "a": 1 }, + { "px": [152,24], "src": [192,0], "f": 0, "t": 24, "d": [85], "a": 1 }, + { "px": [160,24], "src": [192,0], "f": 0, "t": 24, "d": [86], "a": 1 }, + { "px": [160,24], "src": [248,16], "f": 0, "t": 95, "d": [86], "a": 1 }, + { "px": [168,24], "src": [192,0], "f": 0, "t": 24, "d": [87], "a": 1 }, + { "px": [0,32], "src": [192,0], "f": 0, "t": 24, "d": [88], "a": 1 }, + { "px": [8,32], "src": [192,0], "f": 0, "t": 24, "d": [89], "a": 1 }, + { "px": [16,32], "src": [192,0], "f": 0, "t": 24, "d": [90], "a": 1 }, + { "px": [24,32], "src": [192,0], "f": 0, "t": 24, "d": [91], "a": 1 }, + { "px": [32,32], "src": [192,0], "f": 0, "t": 24, "d": [92], "a": 1 }, + { "px": [40,32], "src": [192,0], "f": 0, "t": 24, "d": [93], "a": 1 }, + { "px": [48,32], "src": [192,0], "f": 0, "t": 24, "d": [94], "a": 1 }, + { "px": [56,32], "src": [192,0], "f": 0, "t": 24, "d": [95], "a": 1 }, + { "px": [64,32], "src": [192,0], "f": 0, "t": 24, "d": [96], "a": 1 }, + { "px": [72,32], "src": [192,0], "f": 0, "t": 24, "d": [97], "a": 1 }, + { "px": [80,32], "src": [192,0], "f": 0, "t": 24, "d": [98], "a": 1 }, + { "px": [88,32], "src": [192,0], "f": 0, "t": 24, "d": [99], "a": 1 }, + { "px": [96,32], "src": [192,0], "f": 0, "t": 24, "d": [100], "a": 1 }, + { "px": [104,32], "src": [192,0], "f": 0, "t": 24, "d": [101], "a": 1 }, + { "px": [112,32], "src": [192,0], "f": 0, "t": 24, "d": [102], "a": 1 }, + { "px": [112,32], "src": [248,24], "f": 0, "t": 127, "d": [102], "a": 1 }, + { "px": [120,32], "src": [192,0], "f": 0, "t": 24, "d": [103], "a": 1 }, + { "px": [128,32], "src": [192,0], "f": 0, "t": 24, "d": [104], "a": 1 }, + { "px": [128,32], "src": [248,24], "f": 0, "t": 127, "d": [104], "a": 1 }, + { "px": [136,32], "src": [192,0], "f": 0, "t": 24, "d": [105], "a": 1 }, + { "px": [144,32], "src": [192,0], "f": 0, "t": 24, "d": [106], "a": 1 }, + { "px": [144,32], "src": [248,24], "f": 0, "t": 127, "d": [106], "a": 1 }, + { "px": [152,32], "src": [192,0], "f": 0, "t": 24, "d": [107], "a": 1 }, + { "px": [160,32], "src": [192,0], "f": 0, "t": 24, "d": [108], "a": 1 }, + { "px": [160,32], "src": [248,24], "f": 0, "t": 127, "d": [108], "a": 1 }, + { "px": [168,32], "src": [192,0], "f": 0, "t": 24, "d": [109], "a": 1 }, + { "px": [0,40], "src": [192,0], "f": 0, "t": 24, "d": [110], "a": 1 }, + { "px": [8,40], "src": [192,0], "f": 0, "t": 24, "d": [111], "a": 1 }, + { "px": [16,40], "src": [192,0], "f": 0, "t": 24, "d": [112], "a": 1 }, + { "px": [24,40], "src": [192,0], "f": 0, "t": 24, "d": [113], "a": 1 }, + { "px": [32,40], "src": [192,0], "f": 0, "t": 24, "d": [114], "a": 1 }, + { "px": [40,40], "src": [192,0], "f": 0, "t": 24, "d": [115], "a": 1 }, + { "px": [48,40], "src": [192,0], "f": 0, "t": 24, "d": [116], "a": 1 }, + { "px": [56,40], "src": [192,0], "f": 0, "t": 24, "d": [117], "a": 1 }, + { "px": [64,40], "src": [192,0], "f": 0, "t": 24, "d": [118], "a": 1 }, + { "px": [72,40], "src": [192,0], "f": 0, "t": 24, "d": [119], "a": 1 }, + { "px": [80,40], "src": [192,0], "f": 0, "t": 24, "d": [120], "a": 1 }, + { "px": [88,40], "src": [192,0], "f": 0, "t": 24, "d": [121], "a": 1 }, + { "px": [96,40], "src": [192,0], "f": 0, "t": 24, "d": [122], "a": 1 }, + { "px": [104,40], "src": [192,0], "f": 0, "t": 24, "d": [123], "a": 1 }, + { "px": [112,40], "src": [192,0], "f": 0, "t": 24, "d": [124], "a": 1 }, + { "px": [112,40], "src": [248,24], "f": 0, "t": 127, "d": [124], "a": 1 }, + { "px": [120,40], "src": [192,0], "f": 0, "t": 24, "d": [125], "a": 1 }, + { "px": [128,40], "src": [192,0], "f": 0, "t": 24, "d": [126], "a": 1 }, + { "px": [128,40], "src": [248,24], "f": 0, "t": 127, "d": [126], "a": 1 }, + { "px": [136,40], "src": [192,0], "f": 0, "t": 24, "d": [127], "a": 1 }, + { "px": [144,40], "src": [192,0], "f": 0, "t": 24, "d": [128], "a": 1 }, + { "px": [144,40], "src": [248,24], "f": 0, "t": 127, "d": [128], "a": 1 }, + { "px": [152,40], "src": [192,0], "f": 0, "t": 24, "d": [129], "a": 1 }, + { "px": [160,40], "src": [192,0], "f": 0, "t": 24, "d": [130], "a": 1 }, + { "px": [160,40], "src": [248,24], "f": 0, "t": 127, "d": [130], "a": 1 }, + { "px": [168,40], "src": [192,0], "f": 0, "t": 24, "d": [131], "a": 1 }, + { "px": [0,48], "src": [192,0], "f": 0, "t": 24, "d": [132], "a": 1 }, + { "px": [8,48], "src": [192,0], "f": 0, "t": 24, "d": [133], "a": 1 }, + { "px": [16,48], "src": [192,0], "f": 0, "t": 24, "d": [134], "a": 1 }, + { "px": [24,48], "src": [192,0], "f": 0, "t": 24, "d": [135], "a": 1 }, + { "px": [32,48], "src": [192,0], "f": 0, "t": 24, "d": [136], "a": 1 }, + { "px": [40,48], "src": [192,0], "f": 0, "t": 24, "d": [137], "a": 1 }, + { "px": [48,48], "src": [192,0], "f": 0, "t": 24, "d": [138], "a": 1 }, + { "px": [56,48], "src": [192,0], "f": 0, "t": 24, "d": [139], "a": 1 }, + { "px": [64,48], "src": [192,0], "f": 0, "t": 24, "d": [140], "a": 1 }, + { "px": [72,48], "src": [192,0], "f": 0, "t": 24, "d": [141], "a": 1 }, + { "px": [80,48], "src": [192,0], "f": 0, "t": 24, "d": [142], "a": 1 }, + { "px": [88,48], "src": [192,0], "f": 0, "t": 24, "d": [143], "a": 1 }, + { "px": [96,48], "src": [192,0], "f": 0, "t": 24, "d": [144], "a": 1 }, + { "px": [104,48], "src": [192,0], "f": 0, "t": 24, "d": [145], "a": 1 }, + { "px": [112,48], "src": [192,0], "f": 0, "t": 24, "d": [146], "a": 1 }, + { "px": [112,48], "src": [248,24], "f": 0, "t": 127, "d": [146], "a": 1 }, + { "px": [120,48], "src": [192,0], "f": 0, "t": 24, "d": [147], "a": 1 }, + { "px": [128,48], "src": [192,0], "f": 0, "t": 24, "d": [148], "a": 1 }, + { "px": [128,48], "src": [248,24], "f": 0, "t": 127, "d": [148], "a": 1 }, + { "px": [136,48], "src": [192,0], "f": 0, "t": 24, "d": [149], "a": 1 }, + { "px": [144,48], "src": [192,0], "f": 0, "t": 24, "d": [150], "a": 1 }, + { "px": [144,48], "src": [248,24], "f": 0, "t": 127, "d": [150], "a": 1 }, + { "px": [152,48], "src": [192,0], "f": 0, "t": 24, "d": [151], "a": 1 }, + { "px": [160,48], "src": [192,0], "f": 0, "t": 24, "d": [152], "a": 1 }, + { "px": [160,48], "src": [248,24], "f": 0, "t": 127, "d": [152], "a": 1 }, + { "px": [168,48], "src": [192,0], "f": 0, "t": 24, "d": [153], "a": 1 }, + { "px": [0,56], "src": [192,0], "f": 0, "t": 24, "d": [154], "a": 1 }, + { "px": [8,56], "src": [192,0], "f": 0, "t": 24, "d": [155], "a": 1 }, + { "px": [16,56], "src": [192,0], "f": 0, "t": 24, "d": [156], "a": 1 }, + { "px": [24,56], "src": [192,0], "f": 0, "t": 24, "d": [157], "a": 1 }, + { "px": [32,56], "src": [192,0], "f": 0, "t": 24, "d": [158], "a": 1 }, + { "px": [40,56], "src": [192,0], "f": 0, "t": 24, "d": [159], "a": 1 }, + { "px": [48,56], "src": [192,0], "f": 0, "t": 24, "d": [160], "a": 1 }, + { "px": [56,56], "src": [192,0], "f": 0, "t": 24, "d": [161], "a": 1 }, + { "px": [64,56], "src": [192,0], "f": 0, "t": 24, "d": [162], "a": 1 }, + { "px": [72,56], "src": [192,0], "f": 0, "t": 24, "d": [163], "a": 1 }, + { "px": [80,56], "src": [192,0], "f": 0, "t": 24, "d": [164], "a": 1 }, + { "px": [88,56], "src": [192,0], "f": 0, "t": 24, "d": [165], "a": 1 }, + { "px": [96,56], "src": [192,0], "f": 0, "t": 24, "d": [166], "a": 1 }, + { "px": [104,56], "src": [192,0], "f": 0, "t": 24, "d": [167], "a": 1 }, + { "px": [112,56], "src": [192,0], "f": 0, "t": 24, "d": [168], "a": 1 }, + { "px": [112,56], "src": [248,32], "f": 0, "t": 159, "d": [168], "a": 1 }, + { "px": [120,56], "src": [192,0], "f": 0, "t": 24, "d": [169], "a": 1 }, + { "px": [128,56], "src": [192,0], "f": 0, "t": 24, "d": [170], "a": 1 }, + { "px": [128,56], "src": [248,32], "f": 0, "t": 159, "d": [170], "a": 1 }, + { "px": [136,56], "src": [192,0], "f": 0, "t": 24, "d": [171], "a": 1 }, + { "px": [144,56], "src": [192,0], "f": 0, "t": 24, "d": [172], "a": 1 }, + { "px": [144,56], "src": [248,32], "f": 0, "t": 159, "d": [172], "a": 1 }, + { "px": [152,56], "src": [192,0], "f": 0, "t": 24, "d": [173], "a": 1 }, + { "px": [160,56], "src": [192,0], "f": 0, "t": 24, "d": [174], "a": 1 }, + { "px": [160,56], "src": [248,32], "f": 0, "t": 159, "d": [174], "a": 1 }, + { "px": [168,56], "src": [192,0], "f": 0, "t": 24, "d": [175], "a": 1 }, + { "px": [0,64], "src": [192,0], "f": 0, "t": 24, "d": [176], "a": 1 }, + { "px": [8,64], "src": [192,0], "f": 0, "t": 24, "d": [177], "a": 1 }, + { "px": [16,64], "src": [192,0], "f": 0, "t": 24, "d": [178], "a": 1 }, + { "px": [24,64], "src": [192,0], "f": 0, "t": 24, "d": [179], "a": 1 }, + { "px": [32,64], "src": [192,0], "f": 0, "t": 24, "d": [180], "a": 1 }, + { "px": [40,64], "src": [192,0], "f": 0, "t": 24, "d": [181], "a": 1 }, + { "px": [48,64], "src": [192,0], "f": 0, "t": 24, "d": [182], "a": 1 }, + { "px": [56,64], "src": [192,0], "f": 0, "t": 24, "d": [183], "a": 1 }, + { "px": [64,64], "src": [192,0], "f": 0, "t": 24, "d": [184], "a": 1 }, + { "px": [72,64], "src": [192,0], "f": 0, "t": 24, "d": [185], "a": 1 }, + { "px": [80,64], "src": [192,0], "f": 0, "t": 24, "d": [186], "a": 1 }, + { "px": [88,64], "src": [192,0], "f": 0, "t": 24, "d": [187], "a": 1 }, + { "px": [96,64], "src": [192,0], "f": 0, "t": 24, "d": [188], "a": 1 }, + { "px": [104,64], "src": [192,0], "f": 0, "t": 24, "d": [189], "a": 1 }, + { "px": [112,64], "src": [192,0], "f": 0, "t": 24, "d": [190], "a": 1 }, + { "px": [120,64], "src": [192,0], "f": 0, "t": 24, "d": [191], "a": 1 }, + { "px": [128,64], "src": [192,0], "f": 0, "t": 24, "d": [192], "a": 1 }, + { "px": [136,64], "src": [192,0], "f": 0, "t": 24, "d": [193], "a": 1 }, + { "px": [144,64], "src": [192,0], "f": 0, "t": 24, "d": [194], "a": 1 }, + { "px": [152,64], "src": [192,0], "f": 0, "t": 24, "d": [195], "a": 1 }, + { "px": [160,64], "src": [192,0], "f": 0, "t": 24, "d": [196], "a": 1 }, + { "px": [168,64], "src": [192,0], "f": 0, "t": 24, "d": [197], "a": 1 }, + { "px": [0,72], "src": [192,0], "f": 0, "t": 24, "d": [198], "a": 1 }, + { "px": [8,72], "src": [192,0], "f": 0, "t": 24, "d": [199], "a": 1 }, + { "px": [16,72], "src": [192,0], "f": 0, "t": 24, "d": [200], "a": 1 }, + { "px": [24,72], "src": [192,0], "f": 0, "t": 24, "d": [201], "a": 1 }, + { "px": [32,72], "src": [192,0], "f": 0, "t": 24, "d": [202], "a": 1 }, + { "px": [40,72], "src": [192,0], "f": 0, "t": 24, "d": [203], "a": 1 }, + { "px": [48,72], "src": [192,0], "f": 0, "t": 24, "d": [204], "a": 1 }, + { "px": [56,72], "src": [192,0], "f": 0, "t": 24, "d": [205], "a": 1 }, + { "px": [64,72], "src": [192,0], "f": 0, "t": 24, "d": [206], "a": 1 }, + { "px": [72,72], "src": [192,0], "f": 0, "t": 24, "d": [207], "a": 1 }, + { "px": [80,72], "src": [192,0], "f": 0, "t": 24, "d": [208], "a": 1 }, + { "px": [88,72], "src": [192,0], "f": 0, "t": 24, "d": [209], "a": 1 }, + { "px": [96,72], "src": [192,0], "f": 0, "t": 24, "d": [210], "a": 1 }, + { "px": [104,72], "src": [192,0], "f": 0, "t": 24, "d": [211], "a": 1 }, + { "px": [112,72], "src": [192,0], "f": 0, "t": 24, "d": [212], "a": 1 }, + { "px": [120,72], "src": [192,0], "f": 0, "t": 24, "d": [213], "a": 1 }, + { "px": [128,72], "src": [192,0], "f": 0, "t": 24, "d": [214], "a": 1 }, + { "px": [136,72], "src": [192,0], "f": 0, "t": 24, "d": [215], "a": 1 }, + { "px": [144,72], "src": [192,0], "f": 0, "t": 24, "d": [216], "a": 1 }, + { "px": [152,72], "src": [192,0], "f": 0, "t": 24, "d": [217], "a": 1 }, + { "px": [160,72], "src": [192,0], "f": 0, "t": 24, "d": [218], "a": 1 }, + { "px": [168,72], "src": [192,0], "f": 0, "t": 24, "d": [219], "a": 1 }, + { "px": [0,80], "src": [192,0], "f": 0, "t": 24, "d": [220], "a": 1 }, + { "px": [8,80], "src": [192,0], "f": 0, "t": 24, "d": [221], "a": 1 }, + { "px": [16,80], "src": [192,0], "f": 0, "t": 24, "d": [222], "a": 1 }, + { "px": [24,80], "src": [192,0], "f": 0, "t": 24, "d": [223], "a": 1 }, + { "px": [32,80], "src": [192,0], "f": 0, "t": 24, "d": [224], "a": 1 }, + { "px": [40,80], "src": [192,0], "f": 0, "t": 24, "d": [225], "a": 1 }, + { "px": [48,80], "src": [192,0], "f": 0, "t": 24, "d": [226], "a": 1 }, + { "px": [56,80], "src": [192,0], "f": 0, "t": 24, "d": [227], "a": 1 }, + { "px": [64,80], "src": [192,0], "f": 0, "t": 24, "d": [228], "a": 1 }, + { "px": [72,80], "src": [192,0], "f": 0, "t": 24, "d": [229], "a": 1 }, + { "px": [80,80], "src": [192,0], "f": 0, "t": 24, "d": [230], "a": 1 }, + { "px": [88,80], "src": [192,0], "f": 0, "t": 24, "d": [231], "a": 1 }, + { "px": [96,80], "src": [192,0], "f": 0, "t": 24, "d": [232], "a": 1 }, + { "px": [104,80], "src": [192,0], "f": 0, "t": 24, "d": [233], "a": 1 }, + { "px": [112,80], "src": [192,0], "f": 0, "t": 24, "d": [234], "a": 1 }, + { "px": [120,80], "src": [192,0], "f": 0, "t": 24, "d": [235], "a": 1 }, + { "px": [128,80], "src": [192,0], "f": 0, "t": 24, "d": [236], "a": 1 }, + { "px": [136,80], "src": [192,0], "f": 0, "t": 24, "d": [237], "a": 1 }, + { "px": [144,80], "src": [192,0], "f": 0, "t": 24, "d": [238], "a": 1 }, + { "px": [152,80], "src": [192,0], "f": 0, "t": 24, "d": [239], "a": 1 }, + { "px": [160,80], "src": [192,0], "f": 0, "t": 24, "d": [240], "a": 1 }, + { "px": [168,80], "src": [192,0], "f": 0, "t": 24, "d": [241], "a": 1 }, + { "px": [0,88], "src": [192,0], "f": 0, "t": 24, "d": [242], "a": 1 }, + { "px": [8,88], "src": [192,0], "f": 0, "t": 24, "d": [243], "a": 1 }, + { "px": [16,88], "src": [192,0], "f": 0, "t": 24, "d": [244], "a": 1 }, + { "px": [24,88], "src": [192,0], "f": 0, "t": 24, "d": [245], "a": 1 }, + { "px": [32,88], "src": [192,0], "f": 0, "t": 24, "d": [246], "a": 1 }, + { "px": [40,88], "src": [192,0], "f": 0, "t": 24, "d": [247], "a": 1 }, + { "px": [48,88], "src": [192,0], "f": 0, "t": 24, "d": [248], "a": 1 }, + { "px": [56,88], "src": [192,0], "f": 0, "t": 24, "d": [249], "a": 1 }, + { "px": [64,88], "src": [192,0], "f": 0, "t": 24, "d": [250], "a": 1 }, + { "px": [72,88], "src": [192,0], "f": 0, "t": 24, "d": [251], "a": 1 }, + { "px": [80,88], "src": [192,0], "f": 0, "t": 24, "d": [252], "a": 1 }, + { "px": [88,88], "src": [192,0], "f": 0, "t": 24, "d": [253], "a": 1 }, + { "px": [96,88], "src": [192,0], "f": 0, "t": 24, "d": [254], "a": 1 }, + { "px": [104,88], "src": [192,0], "f": 0, "t": 24, "d": [255], "a": 1 }, + { "px": [112,88], "src": [192,0], "f": 0, "t": 24, "d": [256], "a": 1 }, + { "px": [120,88], "src": [192,0], "f": 0, "t": 24, "d": [257], "a": 1 }, + { "px": [128,88], "src": [192,0], "f": 0, "t": 24, "d": [258], "a": 1 }, + { "px": [136,88], "src": [192,0], "f": 0, "t": 24, "d": [259], "a": 1 }, + { "px": [144,88], "src": [192,0], "f": 0, "t": 24, "d": [260], "a": 1 }, + { "px": [152,88], "src": [192,0], "f": 0, "t": 24, "d": [261], "a": 1 }, + { "px": [160,88], "src": [192,0], "f": 0, "t": 24, "d": [262], "a": 1 }, + { "px": [168,88], "src": [192,0], "f": 0, "t": 24, "d": [263], "a": 1 }, + { "px": [0,96], "src": [192,0], "f": 0, "t": 24, "d": [264], "a": 1 }, + { "px": [8,96], "src": [192,0], "f": 0, "t": 24, "d": [265], "a": 1 }, + { "px": [16,96], "src": [192,0], "f": 0, "t": 24, "d": [266], "a": 1 }, + { "px": [24,96], "src": [192,0], "f": 0, "t": 24, "d": [267], "a": 1 }, + { "px": [32,96], "src": [192,0], "f": 0, "t": 24, "d": [268], "a": 1 }, + { "px": [40,96], "src": [192,0], "f": 0, "t": 24, "d": [269], "a": 1 }, + { "px": [48,96], "src": [192,0], "f": 0, "t": 24, "d": [270], "a": 1 }, + { "px": [56,96], "src": [192,0], "f": 0, "t": 24, "d": [271], "a": 1 }, + { "px": [64,96], "src": [192,0], "f": 0, "t": 24, "d": [272], "a": 1 }, + { "px": [72,96], "src": [192,0], "f": 0, "t": 24, "d": [273], "a": 1 }, + { "px": [80,96], "src": [192,0], "f": 0, "t": 24, "d": [274], "a": 1 }, + { "px": [88,96], "src": [192,0], "f": 0, "t": 24, "d": [275], "a": 1 }, + { "px": [96,96], "src": [192,0], "f": 0, "t": 24, "d": [276], "a": 1 }, + { "px": [104,96], "src": [192,0], "f": 0, "t": 24, "d": [277], "a": 1 }, + { "px": [112,96], "src": [192,0], "f": 0, "t": 24, "d": [278], "a": 1 }, + { "px": [120,96], "src": [192,0], "f": 0, "t": 24, "d": [279], "a": 1 }, + { "px": [128,96], "src": [192,0], "f": 0, "t": 24, "d": [280], "a": 1 }, + { "px": [136,96], "src": [192,0], "f": 0, "t": 24, "d": [281], "a": 1 }, + { "px": [144,96], "src": [192,0], "f": 0, "t": 24, "d": [282], "a": 1 }, + { "px": [152,96], "src": [192,0], "f": 0, "t": 24, "d": [283], "a": 1 }, + { "px": [160,96], "src": [192,0], "f": 0, "t": 24, "d": [284], "a": 1 }, + { "px": [168,96], "src": [192,0], "f": 0, "t": 24, "d": [285], "a": 1 }, + { "px": [0,104], "src": [192,0], "f": 0, "t": 24, "d": [286], "a": 1 }, + { "px": [8,104], "src": [192,0], "f": 0, "t": 24, "d": [287], "a": 1 }, + { "px": [16,104], "src": [192,0], "f": 0, "t": 24, "d": [288], "a": 1 }, + { "px": [24,104], "src": [192,0], "f": 0, "t": 24, "d": [289], "a": 1 }, + { "px": [32,104], "src": [192,0], "f": 0, "t": 24, "d": [290], "a": 1 }, + { "px": [40,104], "src": [192,0], "f": 0, "t": 24, "d": [291], "a": 1 }, + { "px": [48,104], "src": [192,0], "f": 0, "t": 24, "d": [292], "a": 1 }, + { "px": [56,104], "src": [192,0], "f": 0, "t": 24, "d": [293], "a": 1 }, + { "px": [64,104], "src": [192,0], "f": 0, "t": 24, "d": [294], "a": 1 }, + { "px": [72,104], "src": [192,0], "f": 0, "t": 24, "d": [295], "a": 1 }, + { "px": [80,104], "src": [192,0], "f": 0, "t": 24, "d": [296], "a": 1 }, + { "px": [88,104], "src": [192,0], "f": 0, "t": 24, "d": [297], "a": 1 }, + { "px": [96,104], "src": [192,0], "f": 0, "t": 24, "d": [298], "a": 1 }, + { "px": [104,104], "src": [192,0], "f": 0, "t": 24, "d": [299], "a": 1 }, + { "px": [112,104], "src": [192,0], "f": 0, "t": 24, "d": [300], "a": 1 }, + { "px": [120,104], "src": [192,0], "f": 0, "t": 24, "d": [301], "a": 1 }, + { "px": [128,104], "src": [192,0], "f": 0, "t": 24, "d": [302], "a": 1 }, + { "px": [136,104], "src": [192,0], "f": 0, "t": 24, "d": [303], "a": 1 }, + { "px": [144,104], "src": [192,0], "f": 0, "t": 24, "d": [304], "a": 1 }, + { "px": [152,104], "src": [192,0], "f": 0, "t": 24, "d": [305], "a": 1 }, + { "px": [160,104], "src": [192,0], "f": 0, "t": 24, "d": [306], "a": 1 }, + { "px": [168,104], "src": [192,0], "f": 0, "t": 24, "d": [307], "a": 1 }, + { "px": [0,112], "src": [192,0], "f": 0, "t": 24, "d": [308], "a": 1 }, + { "px": [8,112], "src": [192,0], "f": 0, "t": 24, "d": [309], "a": 1 }, + { "px": [16,112], "src": [192,0], "f": 0, "t": 24, "d": [310], "a": 1 }, + { "px": [24,112], "src": [192,0], "f": 0, "t": 24, "d": [311], "a": 1 }, + { "px": [32,112], "src": [192,0], "f": 0, "t": 24, "d": [312], "a": 1 }, + { "px": [40,112], "src": [192,0], "f": 0, "t": 24, "d": [313], "a": 1 }, + { "px": [48,112], "src": [192,0], "f": 0, "t": 24, "d": [314], "a": 1 }, + { "px": [56,112], "src": [192,0], "f": 0, "t": 24, "d": [315], "a": 1 }, + { "px": [64,112], "src": [192,0], "f": 0, "t": 24, "d": [316], "a": 1 }, + { "px": [72,112], "src": [192,0], "f": 0, "t": 24, "d": [317], "a": 1 }, + { "px": [80,112], "src": [192,0], "f": 0, "t": 24, "d": [318], "a": 1 }, + { "px": [88,112], "src": [192,0], "f": 0, "t": 24, "d": [319], "a": 1 }, + { "px": [96,112], "src": [192,0], "f": 0, "t": 24, "d": [320], "a": 1 }, + { "px": [104,112], "src": [192,0], "f": 0, "t": 24, "d": [321], "a": 1 }, + { "px": [112,112], "src": [192,0], "f": 0, "t": 24, "d": [322], "a": 1 }, + { "px": [120,112], "src": [192,0], "f": 0, "t": 24, "d": [323], "a": 1 }, + { "px": [128,112], "src": [192,0], "f": 0, "t": 24, "d": [324], "a": 1 }, + { "px": [136,112], "src": [192,0], "f": 0, "t": 24, "d": [325], "a": 1 }, + { "px": [144,112], "src": [192,0], "f": 0, "t": 24, "d": [326], "a": 1 }, + { "px": [152,112], "src": [192,0], "f": 0, "t": 24, "d": [327], "a": 1 }, + { "px": [160,112], "src": [192,0], "f": 0, "t": 24, "d": [328], "a": 1 }, + { "px": [168,112], "src": [192,0], "f": 0, "t": 24, "d": [329], "a": 1 }, + { "px": [0,120], "src": [192,0], "f": 0, "t": 24, "d": [330], "a": 1 }, + { "px": [8,120], "src": [192,0], "f": 0, "t": 24, "d": [331], "a": 1 }, + { "px": [16,120], "src": [192,0], "f": 0, "t": 24, "d": [332], "a": 1 }, + { "px": [24,120], "src": [192,0], "f": 0, "t": 24, "d": [333], "a": 1 }, + { "px": [32,120], "src": [192,0], "f": 0, "t": 24, "d": [334], "a": 1 }, + { "px": [40,120], "src": [192,0], "f": 0, "t": 24, "d": [335], "a": 1 }, + { "px": [48,120], "src": [192,0], "f": 0, "t": 24, "d": [336], "a": 1 }, + { "px": [56,120], "src": [192,0], "f": 0, "t": 24, "d": [337], "a": 1 }, + { "px": [64,120], "src": [192,0], "f": 0, "t": 24, "d": [338], "a": 1 }, + { "px": [72,120], "src": [192,0], "f": 0, "t": 24, "d": [339], "a": 1 }, + { "px": [80,120], "src": [192,0], "f": 0, "t": 24, "d": [340], "a": 1 }, + { "px": [88,120], "src": [192,0], "f": 0, "t": 24, "d": [341], "a": 1 }, + { "px": [96,120], "src": [192,0], "f": 0, "t": 24, "d": [342], "a": 1 }, + { "px": [104,120], "src": [192,0], "f": 0, "t": 24, "d": [343], "a": 1 }, + { "px": [112,120], "src": [192,0], "f": 0, "t": 24, "d": [344], "a": 1 }, + { "px": [120,120], "src": [192,0], "f": 0, "t": 24, "d": [345], "a": 1 }, + { "px": [128,120], "src": [192,0], "f": 0, "t": 24, "d": [346], "a": 1 }, + { "px": [136,120], "src": [192,0], "f": 0, "t": 24, "d": [347], "a": 1 }, + { "px": [144,120], "src": [192,0], "f": 0, "t": 24, "d": [348], "a": 1 }, + { "px": [152,120], "src": [192,0], "f": 0, "t": 24, "d": [349], "a": 1 }, + { "px": [160,120], "src": [192,0], "f": 0, "t": 24, "d": [350], "a": 1 }, + { "px": [168,120], "src": [192,0], "f": 0, "t": 24, "d": [351], "a": 1 } + ], + "entityInstances": [] + } + ], + "__neighbours": [] + } + ], + "worlds": [], + "dummyWorldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" +} \ No newline at end of file diff --git a/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Fx/Tiles.png b/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Fx/Tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..859b0ae4255f7d4596e625d575d6d5db28c3da21 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^8-TchgAGWoKKuAH0|TR*r;B4q#jUq@Hu5$o2($%? zE!>hM^R3WAQ^H$VXzszs_vY{UB=s}P+t3&b*u25Izs@;?$?bqbf`9=N8)I{W;{lEt z4C@T-XTD?I6M1CoSJl&d8_anuF7It%)k$ChBSvls7>YOm)C)yo8yW93lG>0f(9HCKqk~x-vk9fe25B!D-kL2GNo0!V~oMJZe3=*2}?DmfV2s~Z=T-G@yGywoaaBVIC literal 0 HcmV?d00001 diff --git a/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Fx/_bg.png b/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Fx/_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..da36e498ca5416bf7999fd64c3f22e9603aa8592 GIT binary patch literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^8-TchgAGWoKKuAH0|O(cr;B4q#jUrO40#zCI1U)R zX=1)|xRqm)oaqLgO;rz83otS_Hy%77A;H7L#>SkSU|;}b_5ei^5_oi2fI`iUh9Dsx zwqrmckStF11_n5l0}aD49;zH_H;U6R#@c RN`Ya+;OXk;vd$@?2>``TUmO4c literal 0 HcmV?d00001 diff --git a/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Fx/_composite.png b/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Fx/_composite.png new file mode 100644 index 0000000000000000000000000000000000000000..08f37465963d878ab2c8a5fdbe40454f5f0efc67 GIT binary patch literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^8-TchgAGWoKKuAH0|R5Qr;B4q#jUq@778{P@Hkx5 zYjQF4Ti(EHz{B3O@swA;2%ezQxT0?{50fht>9ws)%<_19n4hbOB z4JaaDaFW^X*)0VvMr9zILjouZR_Mdt}yY|Pinnl>Cssm^6d;G~t&P)9p3h&AH!#J*Qdf+tSB U6+iv#Is*`Ry85}Sb4q9e0AII6p#T5? literal 0 HcmV?d00001 diff --git a/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Level_0/_bg.png b/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Level_0/_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..deb89f58e011a2c8c62df7bd7dce661420bcc1b3 GIT binary patch literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SNgAGW=wxne|hey{w|`t}yY|Pinnl>Cssm^6d;G~t&P)9p3h&AH!#J*Qdf+tSB U6+iv#Is*`Ry85}Sb4q9e0AII6p#T5? literal 0 HcmV?d00001 diff --git a/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Level_0/data.json b/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Level_0/data.json new file mode 100644 index 00000000..04de43ed --- /dev/null +++ b/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Level_0/data.json @@ -0,0 +1,130 @@ +{ + "identifier": "Level_0", + "uniqueIdentifer": "d319e5a0-d7b0-11ee-9c45-898e2a016ceb", + "x": 0, + "y": 0, + "width": 192, + "height": 128, + "bgColor": "#696A79", + "neighbourLevels": [], + "customFields" : {}, + "layers": [ + "Tiles.png" + ], + "entities": { + "MenuItem": [ + { + "id": "MenuItem", + "iid": "a32b9540-d7b0-11ee-9c45-491e1f214479", + "layer": "Entities", + "x": 0, + "y": 0, + "width": 8, + "height": 8, + "color": 12470831, + "customFields": { + "Item": "Wave", + "Help": "Sound editor" + } + }, + { + "id": "MenuItem", + "iid": "ae1f62b0-d7b0-11ee-9c45-3b41b8a1c01f", + "layer": "Entities", + "x": 8, + "y": 0, + "width": 8, + "height": 8, + "color": 12470831, + "customFields": { + "Item": "Fx", + "Help": "Fx editor" + } + }, + { + "id": "MenuItem", + "iid": "b3dbe430-d7b0-11ee-9c45-fdbc2054fa36", + "layer": "Entities", + "x": 16, + "y": 0, + "width": 8, + "height": 8, + "color": 12470831, + "customFields": { + "Item": "Music", + "Help": "Music editor" + } + }, + { + "id": "MenuItem", + "iid": "b93e5ed0-d7b0-11ee-9c45-7fcf1ae264e3", + "layer": "Entities", + "x": 32, + "y": 0, + "width": 8, + "height": 8, + "color": 12470831, + "customFields": { + "Item": "Save", + "Help": "Save files" + } + }, + { + "id": "MenuItem", + "iid": "fce7b3d0-d7b0-11ee-9c45-9dddf90ef7e1", + "layer": "Entities", + "x": 48, + "y": 0, + "width": 8, + "height": 8, + "color": 12470831, + "customFields": { + "Item": "Prev", + "Help": "Previous file" + } + }, + { + "id": "MenuItem", + "iid": "04f9be10-d7b0-11ee-9c45-5153c382042a", + "layer": "Entities", + "x": 88, + "y": 0, + "width": 8, + "height": 8, + "color": 12470831, + "customFields": { + "Item": "Next", + "Help": "Next File" + } + }, + { + "id": "MenuItem", + "iid": "f0987fa0-d7b0-11ee-9c45-4bfc6d23b807", + "layer": "Entities", + "x": 56, + "y": 0, + "width": 32, + "height": 8, + "color": 12470831, + "customFields": { + "Item": "Filename", + "Help": "" + } + }, + { + "id": "MenuItem", + "iid": "f564d4c0-d7b0-11ee-9c45-958bceaa5715", + "layer": "Entities", + "x": 104, + "y": 0, + "width": 80, + "height": 8, + "color": 12470831, + "customFields": { + "Item": "Help", + "Help": "" + } + } + ] + } +} \ No newline at end of file diff --git a/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Score/Tiles.png b/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Score/Tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..0e26bd8a8018c24465034917d108bafa7c732da3 GIT binary patch literal 562 zcmeAS@N?(olHy`uVBq!ia0vp^8-TchgAGWoKKuAH0|VnvPZ!6Kid%2*8umRhkZ4QP zbMib|xPx1j_xgi|Eprq!TvfzfR32FTd;5H{T<@|QS2LbXy`GX@&c|+y4P>Wnznt2j z(Zy12vpu)M*8JkH=ejNjY>!BP{GO+p#K;|SfJtma1FO!1JB-hND6r@}h-EtWv$2Bf zp{C2nad;4c=^TSdPg` zu=F(i-{I6DuKy^ZU;D_N-vPM?itn#^#O-iHSmI8j;D+S_95=cxSa{Y!=shnYH|R6W zV^&U3H()AbcRQevz@n4D!o$SIsGI;q0tOrsjNB58%?*MZfXH71Q^N58N5laRkj1P$ z4UV`BaDL0^Z!dlGyq8+dftS%7!Ua{ImNEA4H~ahb-uu_Ju zS^R)5X8NXY^y1^}N|zp>i?vypzA5$H`=@nNeZDVqobX5eU^`_w0EA8pG8rUeF1S3j3^P6SkSU|;}b_5ei^5_oi2fI`iUh9Dsx zwqrmckStF11_n5l0}aD49;zH_H;U6R#@c RN`Ya+;OXk;vd$@?2>``TUmO4c literal 0 HcmV?d00001 diff --git a/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Score/_composite.png b/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Score/_composite.png new file mode 100644 index 0000000000000000000000000000000000000000..0638b734e65439c9d555cc4e7782c5b15eeade27 GIT binary patch literal 569 zcmeAS@N?(olHy`uVBq!ia0vp^8-TchgAGWoKKuAH0|OI-r;B4q#jUq@_x2ug5NHTA zck*zt3}Iwdm^k4A8|$PX#uJT8T@M{<`+Dnf?Lpy3OLjYd$jsaG{klxwb9I-i6+!|A z91<)&4UPvC5(EsG*ch9EOrQu4liPv({2e*p1>AxkP0lHM{jKJX`o?e1bzKga9+Cc- zyk0elkvrl5lh}p^R-FfT7@t=NFo}K8VSHYr;HNmpNyNTY;&;Nj<+F=Drxo+*B(TiM z*soHyT~?n#k=ZX_(dWR+C!z*r2`n*23BnTAKqoN%-{{mKE?#JGoaN@%{FMLNGe0mc-!7o`pybms z#_jKC@7w>o^zL@%WTxpHJMx*Dfi3`=(!XN@GtiAYz8KEZ^tmAm48brCmK>&JrsiZ5 zkZW>U7xZ!JB=`VX>_B&=t!1o_l3gP(185t|8*`%-AKNQkdVn4gWn$djv3Og)YW1g? zCJzh+{~Oi1o_WGpUhn#0_QHd+4vFwus2>!v0!9`v&<;E8VQ@Znv;A41crybKc)I$z JtaD0e0sxz|$v(0 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 diff --git a/tiny-cli/src/jvmMain/resources/sfx/test-game.lua b/tiny-cli/src/jvmMain/resources/sfx/test-game.lua new file mode 100644 index 00000000..dfed6bc5 --- /dev/null +++ b/tiny-cli/src/jvmMain/resources/sfx/test-game.lua @@ -0,0 +1,329 @@ +local widgets = require("widgets") +local mouse = require("mouse") + +local menu = {} +local help = nil + +-- name to level index +local mode = { + score = { + id = 1, + widgets = {} + }, + fx = { + id = 2, + widgets = {} + } +} + +local button_type = { + Sine = { + spr = 60, + color = 9 + }, + Noise = { + spr = 61, + color = 4, + }, + Triangle = { + spr = 63, + color = 13 + }, + Pulse = { + spr = 62, + color = 10 + }, + Play = { + spr = 31 + }, + Prev = { + spr = 32 * 5 + 28 + }, + Next = { + spr = 32 * 5 + 29 + } +} +local current_mode = mode.score + +function switch_to(new_mode) + current_mode = new_mode + -- configure every buttons? +end + +function _init() + widgets:_init() + help = nil + menu = {} + + local on_click = { + Prev = function(self) + debug.console("previous") + end, + Next = function(self) + debug.console("next") + end, + Wave = function(self) + switch_to(mode.score) + end, + Fx = function(self) + switch_to(mode.fx) + debug.console("FX") + end + } + + for i in all(map.entities["MenuItem"]) do + if i.customFields.Item == "Help" then + local w = widgets:create_help(i) + table.insert(menu, w) + help = w + end + end + + local on_menu_item_hover = function(self) + help.label = self.help + end + + for i in all(map.entities["MenuItem"]) do + local w = widgets:create_menu_item(i) + table.insert(menu, w) + w.on_hover = on_menu_item_hover + w.on_click = on_click[i.customFields.Item] + end + + -- preload mode + for name, m in pairs(mode) do + debug.console("preload screen " .. name) + map.level(m.id) + for k in all(map.entities["Knob"]) do + local knob = widgets:create_knob(k) + knob.on_hover = on_menu_item_hover + table.insert(m.widgets, knob) + end + + for k in all(map.entities["Button"]) do + local knob = widgets:create_button(k) + knob.on_hover = on_menu_item_hover + knob.overlay = button_type[k.customFields.Type].spr + knob.type = k.customFields.Type + table.insert(m.widgets, knob) + end + + for k in all(map.entities["Fader"]) do + local knob = widgets:create_fader(k) + knob.on_hover = on_menu_item_hover + knob.id = k.customFields.Id + knob.type = k.customFields.Type + -- knob.on_value_update + table.insert(m.widgets, knob) + end + + for k in all(map.entities["Checkbox"]) do + local knob = widgets:create_checkbox(k) + knob.on_hover = on_menu_item_hover + table.insert(m.widgets, knob) + end + + local find_widget = function(widgets, ref) + for w in all(widgets) do + if w.iid == ref.entityIid then + return w + end + end + end + + for k in all(map.entities["Envelop"]) do + local knob = widgets:create_envelop(k) + knob.on_hover = on_menu_item_hover + local f = find_widget(m.widgets, knob.customFields.Attack) + knob.attack_fader = f + f.on_value_update = function(self, value) + knob.attack = value + end + + f = find_widget(m.widgets, knob.customFields.Decay) + knob.decay_fader = f + f.on_value_update = function(self, value) + knob.decay = value + end + + f = find_widget(m.widgets, knob.customFields.Sustain) + knob.sustain_fader = f + f.on_value_update = function(self, value) + knob.sustain = value + end + + f = find_widget(m.widgets, knob.customFields.Release) + knob.release_fader = f + f.on_value_update = function(self, value) + knob.release = value + end + + table.insert(m.widgets, knob) + end + + for k in all(map.entities["Vibrato"]) do + local Vibrato = { + enabled = false, + vibrato = 0, + depth = 0, + _update = function(self) + end, + _draw = function(self) + debug.log("v " .. self.vibrato) + debug.log("d " .. self.depth) + end + } + local knob = new(Vibrato, k) + local e = find_widget(m.widgets, knob.customFields.Enabled) + e.on_changed = function(self, value) + knob.enabled = value + end + + local v = find_widget(m.widgets, knob.customFields.Vibrato) + v.on_update = function(self, value) + knob.vibrato = value + end + local d = find_widget(m.widgets, knob.customFields.Depth) + d.on_update = function(self, value) + knob.depth = value + end + + table.insert(m.widgets, knob) + end + + for k in all(map.entities["Sweep"]) do + local Sweep = { + enabled = false, + sweep = 0, + acceleration = 0, + _update = function(self) + end, + _draw = function(self) + debug.log("s " .. self.sweep) + debug.log("a " .. self.acceleration) + end + } + local knob = new(Sweep, k) + local e = find_widget(m.widgets, knob.customFields.Enabled) + e.on_changed = function(self, value) + knob.enabled = value + end + + local v = find_widget(m.widgets, knob.customFields.Sweep) + v.on_update = function(self, value) + knob.sweep = value + end + local d = find_widget(m.widgets, knob.customFields.Acceleration) + d.on_update = function(self, value) + knob.acceleration = value + end + + table.insert(m.widgets, knob) + end + + for k in all(map.entities["WaveSelector"]) do + local WaveSelector = { + selected = "Sine", + selector = {}, + _update = function(self) + end, + _draw = function(self) + end + } + local knob = new(WaveSelector, k) + local on_changed = function(self) + knob.selected = self.type + debug.console("selected?") + debug.console(knob.selected) + for b in all(knob.selector) do + b.status = 0 + end + self.status = 2 + end + + local e = find_widget(m.widgets, knob.customFields.Sine) + table.insert(knob.selector, e) + e.on_changed = on_changed + + e = find_widget(m.widgets, knob.customFields.Triangle) + table.insert(knob.selector, e) + e.on_changed = on_changed + + e = find_widget(m.widgets, knob.customFields.Noise) + table.insert(knob.selector, e) + e.on_changed = on_changed + + e = find_widget(m.widgets, knob.customFields.Pulse) + table.insert(knob.selector, e) + e.on_changed = on_changed + + table.insert(m.widgets, knob) + end + + for k in all(map.entities["Sound"]) do + local Sound = { + volumes = {}, + notes = {}, + } + local s = new(Sound, k) + local selector = find_widget(m.widgets, k.customFields.WaveSelector) + for key,v in ipairs(k.customFields.Volumes) do + local f = find_widget(m.widgets, v) + f.on_value_update = function(self, value) + s.volumes[key] = value + end + end + + for key,v in ipairs(k.customFields.Notes) do + local f = find_widget(m.widgets, v) + f.on_value_update = function(self, value) + s.notes[key] = value + self.tip_color = button_type[selector.selected].color + debug.console(self.tip_color) + end + end + end + end + + switch_to(mode.score) +end + +function _update() + mouse._update(function() + end, function() + end, function() + end) + widgets:_update() + + for w in all(menu) do + w:_update() + end + + help:_update() + + for w in all(current_mode.widgets) do + w:_update() + end +end + +function _draw() + gfx.cls() + + map.level(0) + map.draw() + map.level(current_mode.id) + map.layer(1) + map.draw() + + for w in all(menu) do + w:_draw() + end + help:_draw() + + widgets:_draw() + + for w in all(current_mode.widgets) do + w:_draw() + end + mouse._draw(2) +end diff --git a/tiny-cli/src/jvmMain/resources/sfx/tiny-export.zip b/tiny-cli/src/jvmMain/resources/sfx/tiny-export.zip index f30e1c09f6321187cbbce6473e58056a406d5956..0189deccab04687cb89422b556ebe9f8f2d597f5 100644 GIT binary patch delta 229545 zcmV)0K+eCE>kY<|4h>LC0|XQR2nYxOyuMqp4GIDSyuMqJ4HvU90>%OZyuMqr`ULI) z1H8Ullj{Z{fBRe8I@2inoWEoLLUX!#?GKeVcDM(_21+lh6k0BA*W$4AIEj-O5k z1QzVS{b)v4JGOzg>)qeer^J#*qtR$2&FC_E)k}j;;)j8ekih)A7PhawPEvE6!(E9MoMgnoCS?l_JSJM&dBA}7bPH1-zaB=RZwO+e|B$O)ETw_Y!Y8^m)A z_I)E|L?%acLN za=b@bO3yI=rig*JljV*(93r1h1u&!lk(Z=Vf3N^p9mii>47}+=kN65`LV;9h3Y24M zH(@gLgV}302}gdXm%g63!_;#U1=|N$jz7zOQK%Ep7E5<29a{l`k^wyx2SQ^sI!7-k zwEF_s@zb!JQrGB^+8!oi6V=GTB(58Yb@u(iD9fwr1Nk}FTo{D^@UXO!} ze?-)N7!Ex*;L%+X{V_;*)L29vg+U+VJfmYSPX|hzB{QW6EDvetN(PS%R@SKRC0Zw# z&vuzyJ(AdfOr$1r#r{353ojLlpJ*tt?yueP*bBO^tqk_ZDo{Ju8!LeuPJRfe1YgO4 zlZa)Qn#;36hQ#WIXIbt_IbEEQXOoege{eK*BX2M0o@Lmtb%H7~==im`XjDN2|VF~5Ae1;Z7HF&%yHiBb}23ID<;36Ea?Rj?u&NMQ=&J6tbHj#Wz=9B zJd>2J_fL}Y<{6~?mXT^~F1KGeQjLFZq#D0yqJDQ{?Q;jL@qcu{nlDWb zSg(g+w#9zW@Uc9i?Mag2!sW2_e@_)2R1{7JuUxVJfe~!^dX*M4-xzWXnS>n&zhm5iS(ZBq%qa{UZbg&mibG3~LFj6FB(y;o)x{UUrMx8*F7*L=ZsjBA{p5 z+#}uQ=J-0lfNxxYuj};rm-h>pyIIVS=5Dl1&A#EC5fIPZip+-xBay3Ge=&uz*X;kq z3X)hY5=%*doeW4yToRHN>5v{7k_nlTJ{gfN8I#wfO>W2?nUQ;PO>P~r%0%|~XRt}m z)gsfGSdel(BG#Bpav%V@J@Q^gp zmgR7@C&hral5$d;K@Q)bt-Wo^d@}!ZL^-`?Za-6nZT!>ROr?PZwoK)tW z7UZ4Dyr-{K`%TC z`>IC0m!V20AU}QpyRC+5F-vkcd`6N@}39!%Y&mGvFc;(V>}R zx_$vm>705aD3RQ}c>w}CjL+pCzNo{|#<&RlUKovz!j6l1v~D+gDXzVQPAcspR6(v< z^DW~AZhPo`^P zjxv5xv!$&4Enjc0q_9#26#3p1G!_ZN^QTWXcZc?IZJwAsvp~#t5DvpAU*z;z;&JZH zC`#{{@-ZuEe;lSCWm=gw%*T=2_w2XxfUM00p?6R6#-(W!Nou0z;Fn6PM4`mhZA|Aj zCFUuhwUMK<&%xwe{2T<`$em*Ujb(1%X{@d_8gx*FUz>RJcimbcG1bfl^n0~IQpc*> zD>iZI@5<&n2{GItE&Q#Mj-wuJ#E&=x(^G? z8JRdMuuWuQR~Z`fiFc3E_BiHWy#lbQ04uWLB9U0Mgye}tzaX(A60ZvqUyH<>g2c8+ z92O+HeIkk}WAK|$g~B!&fvW05#6NW2k=w*`pwX|r{1f;eIJ5VKt`=v1>Iw)bI;hi2L{z@|`E zvTOZBDMxxKXcjf>f^v?`=i1DhcH?fkHmLxgLpE2lf>dX+9U(1MOHO37bjZFWe`kZ7N>;h#t&DGzFS5Ee`6ipuChsIpi(E+d zG{}2N&j$G}N!}!XNSH49Ae+}BpJWv`$e)sh462Reau%B;cPz5{S=$ zMB=keyg)FuOJeaoaLGV?UsItI-=0NW@f~+bD87?T(h}bzDsSpRsnAJY zwaEur?mGD->+6y~#dpUdKP3Ha@|Ub{hkTXzH%Q`(_R`iB1OKT-TxvehdEvuu>>Jd~ zvo>1RRze0opR?%vv>ZdE1C!TBIYYuG$Z~=Sb^4XcuL%RDHV2#8{xm)re*@pt4~zLv z(o|49k{7{erZ`3dkCDYErDaP!|8KC2UOCPWI=5m8CO?(Mr_x+~1GD)(HWV<`2Uw92 zHG&dG21GJqBa!U*kE(3X2L*;5_d_EBxlI*xoM4k?k}LD_iZ9YetWpY7?B~w~M(kXm zM=df1HUKby8zTd5^liCENJNleA`R+i~5qWT)otv*kz%_7NS zi?x`>37oNjLKz}T*HQOjpF$skB1yCF-UpgUNY=qNyL z5YbLDj4~_fdZ{xEe2=Ki-dJraCd_EW*bA4&POY|RmU|UDQ?V{&e`B$CDz=TW*t;;? z!Em;9Zavv~K15nS@+^-t`+_YiuoJAPt~xwfsI5Rb@hO#%#ip72_{I7a@CsV_LquDd z(b3J(<>kV?T)3YL4{~8&hPA`8er7jf2tiNlO(Sc_>(}#HOn@<5ghCAPmKbATMRY?5 zys<^=V~7LBI*LR`f01Iq7J>|chL8je`3wWALI5DJCfXeW>!P_wG_WCB83LQ4iAS6j zWy6HMPS)3mWv!FV^()yRkc%x%vvnF&-kZT(=2h~>s&5jjL99BlDW1B(;jxlM3qqjQ z_5(M%L(2fpyYj|F+HKL4BgHWv1C~vE=kkh0U1JoiI*XVae~h6N%9tU>z=>)RGr|~J z0~r%wOo}yho35yrFsvxWm9J zOSH0<TWB5X z1|e!kse8Rpe_yWGMB9W~{}^GYE}A4%{UgMHE&5xi`o}E>Hbr;S0x?6dA-Y?r`b5gm zt%;@xRY#iYG|cprJBDvXGzFq)h_)DOX>AOxiN?S{L$n5j?A2A#9uQo$EYTvFV4nf6 z+15%!^am`bVb#|y(F}-w-KuYFh(fM2Mc%MHYYn?Df0zytZ#Eh$YvL zhz39~wz|h#0b|xyL^}uo+Y*hzumIw9(ImVuz`QD2hEufB5RJpQvL>1bf+~fbGh8XsfXj7}vU018N%stD>cDRkL+5ur8YERtZlJ1Dm3WAYj!+^I%9e z%`F?Re|V!{NH)r?CNM)5S`}@9p*7JA7+M!iaH|RRn1wb4_aP)&IbtC>^e}ESIAbhAhEn4B3Lw7-|SkV`xRN8bhms z*BDw8yvESF;5CLe1g|l)DR>Q`6)F9Z);UHje`E_@V@M7<7^(|iLuggZq ze>evUtt3S$OGN)gIjxKS3!x3o*y+w`EHTqqMn2I_3ylE`U{%y>h)T6NJ+NY~K-~Do ztGd*Y^jJ$n(4H$gWktXCNvgnZ&_V)WBFqm!Y>J)-=r#NG&R4siVBkYC?o+;U!04bl z&MyC@BhMxrh}f-}OSP@ql7vbib#XD;e{t&c?>3L%HvBFRUPf2i`8~vfYX(RT9sa9J_rFk|Idbsz1{Rg#p2HB3=Y+=)vx4yzQCY5EBPZj4@7(2fi7l(dFQ3aq))% zza|}36I!(6_@>ykqS24jfj{&R6OKA5!<;J2F4c1(#z`e+YVu#YSB$C%?Z%^K<;3b5wc~Ih9=jcHp%>DE$9Uwi#x6H1F5H6ap>044#*8Lf1s@loM~j|=n-98%RXh<#l)Ou_3r~tHgJr5^XHH1 zF|idV7`3f^nM#YJQvdJ(J3aYWvApFwPylPFrZ0&B{L zr(@qZc8^UhE!5Mjf7kW2v7Yt@62*7~@wEUhc5-b1BmAIO6B+?Vynz@+-N!ju4w)<; z`m~>^vz#~>0x@e|s>ywTG`vzcN=B8=|@D2catP_eW@CmH8f2(l-)*SdqkZjXH zQ$I`SW0!mH8_^qTA3neYK__B57$oc#+#~17C_9#3%#q(?qOIlx(ESyKWOsu$6VnPR`_?HOcdA$0Q;kYcb@>DpKF*u=aBaq@=reLE3h8` z_Gbn1zcf4%tk8a@eYk=S;*Y#m*Xz0IFyX-(sgvV`81ttm0MDbCwnubU(^bZ= zs72;#kVN?!bXg6)`lPGC0ssS8t|o*)q^2ua_C`iq=;d3>k8(9+i|yL}4FHTE9*nW` zs!m4E5$*etzSp1*3kr=byIK~RN^^^J%}uCn=(i!b^p^$?e|4prMY7iex>f|!T}J7M zBkleXwR>mkoZT%QC(OmggxbF|BQshIG-Bo57a#XJa7zdHN5eA%FmA#&0>uHp{7j(Q ztSPK@FEQ#cE62{tDrf`@$)!&xZYSRLp}Jc>uwtNCkvfCsz!^XqTUvDtdv$eDjwzl0Ae~EbxdqjbWgnSWt;(%?7iDi;a z)TH<-2?S6qh9DL)tCmsArq!(zWv}j_aT4rO$-1`gSZU@K2pdXJKa7R$`)U>|5>)G=^j z48;&_e*~FmEkg0br2RR{>_$$roG8&m1UbGU2bGb)>M?al(?)Uy^rIZE`6Isqd!(>O zY|!)^uGH_sFECP=n|!Zgx4z|ps~HRh3@Q*%DUTmer~$aUVNPQh6qwX7yM#R2r9f^o z!YZXpAszeTogIsj(PCp{YdaMKL&s?~TTTndf5?b7LEq@$H?^S6%g&X_dm7{rrU|vv zO`$;a95~6!Noe-Aong~tXwsz~MdMRF$2WSWNqSBXM<0=MLP?oy$4&DG6^P3Tq+Kn0 z*1#|y9w_f9hU9W`MG~H5l8G}}vMB<2FqHGXps7aHvcN95eb}|O0#Yat{OU)5%iVB4 ze-W$qCIVivgKZ;shNe-IiB3!`wz1kXP<}&{UzG0H8d3X-p&U3C8<(B9U|>dO(Ke%9 z0hpF9(eg~u0O>1-W|HR*OQp1%m(pOTPRFiohj%$HQg9KPMOjtwNLr8<>N(ZwM3QWH?rW?e}a>ayjSy5p(K47OPgHL6;p;p07jA9rt-$Q zMcbswT`v)hsymPtmKo+x#xcyNEqQSoGgYH((9on54V6AEW&$yIYn)0Xj86J7QAKzi z6y&*@0`dN~Bj;exfqO-MrWeE_-=%leWTeq9!9OTLcLtQss|-^<7#1{=*AdZ6e--8t zhSogwi;Ku+c_JXY?%kjYfBuFg1B5zRRQRzP-nP@Io5>chN$hwS>o6Y((N4DI%y#6t zH&js+wH)M{7S76VZ^v{bW1Yzl3>pVR813HMj?3+imJ>B2J~oMFV=~)9nWdZwoe(+m z7+l7%E(ZLiLmp=jBOA$x5OubZf11h{SVy))B-)|Fspz4q(sO=*FQy4){so=wmOt

zQQg4Cxrwgg?%db#d1Ij~%DO8!~btjM00x&&FCn z%#-;f;!_Eb1<=`Q;CQs&P58sckViJA_?Pu7%H29#LI6}DWrU^LujPaof6JIhU;)y< zY+cdMKa7aj<~D7emTbjz2U^QOo`W>H4kmLRGt@{Q9v&8LL|MUEO4(57^}&(Ir8uU} z6wwivj%!1CMvFpqlwIKptHRxpAfmzgiVq@0>;s zk}c2@MgAREV()557~1iCe|ZdhcYBQ3-}skZz}|JbvcX=QAvTr1nLJ{+Dw9 znzZTgjihu0>o6~#xpu_B^JYqkSfXPZRi}d;mrh-Es$r9RXCh>Iwo~6V?i}OBnQbGf z0n9T`>>nykajG;wn4DQ@3zZkt;aN1fa`kgBvX*2LGWDX+Khf5oVF>s&Xlo$Jh~ zw&zSPZ$&@avald1^9 z&!eNF*)oE^xHtn8F<~nR5sZC&Il&~aW{h~)6A;$vUsQhYd9+EV&R9DoI?J2#MEb?x zmH}6`3{TE-f58c>V00 zquGn*?C*hf-_p)W-RHJ>$}?W;8E^6#56UwR^^Bu@f5t<-#y7%3XZh}g@f*+%o0xbY z^~5#6e%JOYB5^&md6U`yy;DaW(D-1c^}q^@T2O=4I&r{m%=oPBYs@Wn+_1%tj}f`i z_A>zNI8p~$^Y;4ykC)_4c(!`mYiXz8dUNaEM><p?el3{4w0^>0;N3voF*%D zDr$^ae;D&9t;glpZsaF-RK?Zgb6=<9_9;3}=jhmfijLH-KZlODQN>ng*S4|^_(dC9 z3U@0*mV>uH2DsGSVnACk|0X+n;kIelwiPB11DbTdd+8F)2ekx)lGL+p;}xGXX?5k5 zwuO!x1Yxq!_E17=U~A{jJ^Q$LBM&rd2J(lje}Q}P)2W_3%MoxV!`eQK z8enGH0CSBew}taPc8r^?(5`w7QkUG(phg&wylCqK6a*TA3lLa=5vmraG5C`8x;2vd ze~!{1z=O%PAdE)tkbZPMw_CdstZS<_j95vlYuaYf+z2;gBi#Fl%(Ts-YS|y_vVWVG z{SQ!v;(IU0>OldkKfScO{Hd>4PB}UL@{G}<%lw~Nng0_va8LvoY=({>kb18*_8kL) z<3QTU>A&W?OMw14HE7~{*f3*&eztuE~60Z=d<3~5AAT4+f)-Qnt zrs;4|3EU{`dODm}2InPi0uDcP;J5_X?RIsrK?zu#wso+y1gz^%bTGG!!ZcIiumo%z zPIa(WIbU?JP6=2VjC8PG2^h7zbg*Fwn0Ko~P0ElZI@GkZNFAzQ0+odP{)4`fe_SR~ zVbF0iWp@i9b%-%QWOv@VVb=vMU0LFR+Jq09@(wt-^I;ioagOmXy(_qq#&_T4`jJ{* zh4P@+k`I2N;@tMcSWg0K!|R*rv;cW^#$zFQGQOk6_&x^YHdRNB@jeFRG5AhPp7g%K zz^a%rAh0H83<#`?83O_vV#a{LeacFsV|G!P4?BiZ>&F;~mjP{pEJ;6P)r z(N#>|5R2;wVBOc{S)xp|CFk-?^cxx1Np_wks4C$~X)OzKI)jK{bl#uqW6Cv7ku(-JW^BBtX> zjf2PZM9fIU3`I;JVkROc6fsi~GZry@5pyeIMj|E>F4SMJsJ9}3~h}7GN*Jv4x{nF z4ZQAx==RKZ7iYW9Jq_WR93Pvvx-N{!YiNmZxx^U#t|uL*KA(I$f25l_76KRh z^zY{j0Dt@O8+@NY{FjsO^zX&-XUKbU4%8eT)4vBN#|L{5{NpnecK8)iSTg-{et34y ze`whNzIOze&-XqafAP;#O5Q18dUtYqbaL{AeSJASgs*e@DYB?^it6YiB0e}eIlDN8 zlD_So?w!5|3VxiQ?%^kJTwEp0H}HYhtr7=x;A77;$+4%MIf(I^-A9;0r;r~vT4mIP zMX@tZ+LDbvN$znmki+hT3$q%Cr%a-?C7ZbpzsHZ4dSp*qe}>V^fjn9%xB6wlNWUy7 z_VL8jk(4AV`ceiVW}1BU*+c`ex)LMi80`Y%ogTQ?1Fn8?ugwD5I+FJstLMG4diFid z>bc|m_URb7nzwrPy^Pg!VHqyGfu)f6rSlvs~fn7e9OY#m_zlz;U5gsV~~lUUF&$#_1f>=}3K{K0P|hGv0Z0 z@W;x~uL*wn^lOS=6wjkX35{`)ZH#Zc%J1h7NzFKV&d#;mqEdOrdp)CTuV*t}c$vlK z_u1fgFDG&Hr+LJxzBtrF;uto3>~(aL0h8-jb>1hUf3p`5@F{`R%;A);Sx)@%tPUVb z1veCZzzl~3@i$QAVwYg$ChS-54!Lqa{6vitRcBaUqkNB5jrBSvai*+Kzg|aClAk$~ zl`H4ZUu?x(?EVmI)l*u*0W05 z*KAivf8tCq$Oe6QH{tJsvyBNWL+ny$%PW|}*ZhJ=9~_fR9;%1KHj|h)S+zr}rynNt zfSU8%xn*d!?38-W9i>nWPFrgc{u}>>3}UcZ*9RMoP4{^=rBKS5ruez`hOX|nc~D$h zX2H7H=g6jdw&s|nhXHZ7oB@i4)4+Tk>{7?Pliq5r&1k1U(Sy ze}ORuHS z7xryW7Yi+LlY<=Ui6cD_=z&lVjP<~+9*9^#Tds>W#VW8jRBMJ9(A0x&tb6~dZwc+% z9%MDWv269Ot!-m^dZ4EV`gSkJtX`JLf7h`-VbuOrTMCxwUu|730|4-K(!w+H+A@M9 zE48mPn3y4#Rfl0>HWC*F=}MsV%ky$Fbm`e~9VI z%@Y-)EhWTqZ6dV$Oi|b8%!4?0QMQ9niRiC=HL7_S@P*{{v#TVBlJYUjB<123!?NdO z6JtFw$t9*NQ8Q^}A${yFP}_4kVGMF(!$2P!w7?AuXeO}Ud)xL6O^p-jIjkchbgS*N z);n)_ROtT3A{-ZX(#W)Jre+;-N4JWXoaA?*98&p!9xQQncQZ1qH1zzMPVI&eK znOxpj#80*Op+E8ykucK|a7)Xq$?MpcibkzyEuV&4BU+>6N=T*V#_S#g!+>At3d9L! z3HZ!I%=`eeL`eo34mi+Eg|1-?@T|CgUYRRXuum&?71|iGt(EnajmFxFe^ja3x(?N4 z!MYrRwGHMT242ZASVumvwQXr%&vk8U+tN3-wkhzgDX|y;k>ntz28%h-ur}=1s@e zHgCGNwt3^}d3v_CdDFMGf6beLt!>`;wzhe5ZEKr1H+DyHV#o@W8bC+mM8HDglmH7g zVC|~r2CzeeCz4_FKcs))KqLS0d+>oEJ(oq(-jv<(>4ypALQo&~jlvF|Bw+hVL733L zm?`qco}1tYPSCJLF@F~{(--aL;vi+pKbW_e}CZ5))oZ4Fy4V* zwmZc>-I0eMY@=$2f%SIe7L=`R>D;pRSryKlcyL2V6bo(&k;0&Gn3M9L92Z#77E;B6 z4Ix%6xFQ6L1y_Y=vEZ5zF5CcFTNmQRf*V4>Sa4H_7zWp6_hmuZfmzTNg2sZv-4+k7 z2w`KvRUvLHxF!USe+Act$g!Ysu*HL$Lg+BKAvI4H6dnb6&=#%0f(_9MEVv?CfdyAZ zE3lyOrNx8mq7_(hL$m@5Zi-fbplW&17!YfyTH#sLH!6ql&UKG~a)eK5mv9*dvCJzW=AhFJg^)vFLt8nXv(P>= z3+*T-AGIZ8uHBrJ7-=Ee3G$R)Pw)Ghc@gP>SPvvD4=wmE79y9AndFRx*+{ri>Uv=f70UP$G=(ZR#ReP9gC-2qHN8#;v@hi75S^smSVuGZZ>$Tm>&iPvIpiP8nx>I0g)G{ za1dxKz)1Zn{)Mu;T$^p3TnF01t8wp_Xx@Wpfnfk^a|kP9*r zplv%ygxbE#et-v9BXHikFi@L zt9BD?f2y_9pl|N_OdJ$Z;9FKBYM`yV>!rGhv9e)q!*k%twnIa!>-zGz>UFaHoKvuV z$$o;@{7(`*@x;E8%o4X;z!g_^>s!!wef$=esNV$O@PHIJqV{cVx9nPPx*NUehPJk0 ze>t*q8*2{DyIMYAg96-bO6V9)GcQqk%pE78gLtU!L@G}zc%vB82;4f!!tpC8 zv{BZVG6=yGQ+JPP)4(1D=5*c$h6h()v_<=YzPPovf~#9|>kBO4(S8VeIXv~@-m6%>6z&COj-4`rT#%? zFQsRX6>uK|0m+@L(bnE&=EB1_v5qWZ$g~yt>dYhiR%H$_pk;0WYtG$5)^sY;dIN1W zig_$7fgA#sz2dY9q=ji=+EkTr&Fg<$jHRz2@2Y7TDae$wr37bppe-bI?06ole;B6Y zEJMc?ReD{K)~-mqsYtu4Xrx(1zWa)_>x#77inKk&-dPdLwAE3BEa0bW=iCII&DBrL zoQcpZwT^#K!HvU;w2#$&=+@Q_SVVU2fW`5ggbUfYZRMBIKM!(?#`Rr(>0`v4*erK8 zh3A?#7PziKS2X69yuhiiT^?0bf9a&6-|a)%=iD~Y=^(Epe`ZSZ{(yYeRBjy%Ocag% zUvgTSNRJdSo0t8f6EyIQXt#| zhB_nMU!_GtOP;nY&|vNXE~CK&sIlnr)O?2PzC_bbR@fytd7#}F7x_Jb6Yj!Ot? zR&cdSXMgbPNI&r|x?I?xfAc?EIpMfTi?(6MX))FbMVAL1=29oT>|AMjWGWArp5#vz z4(yyW$so=5?i1F$NlH#MwJ#O6w~rW!>B>p6&(jU2@4Izn&{E3fLpiy7CjUcEBZ zBBC!B5dqVhX_^lYC8>?d)Xh~hbJF%Cm8yNfT8os7e+&B+(sHV>_zkPdAbG1Ght-f@ z6l7Qp`AtDa)sXL?4&OAjWrB4EsZ**7i&GlKFm7EoY-#@;LGULL}ekld)P{|3n^Y z)2io2f1QC2(JqAWBB>8_asdC2Na$jM;%$$b9Luo>+C&mY`aF3tH!6JNzP0I;ry0!v zb}>IHFttRsE>}fz;W!sga^X~lHQO5se5Z*}id9DS4-v->KSvK@W0Z zZvighatWS92zC?N(ll~;X3Y$M-BK@M_`$>-fBM~pjyt9qyanzwfcw)+XfxT&j}b*b zqAVwGz)7tWDT_$FCU5GtI3CoC`iYSoS)2&eq`! zbUkU(==kA*Q_Ea>t!!i?c2?JSgXJO3_mN^HP~sLxw6Y-z{E`?ROg~FT^lz(<+byP9 zkoZ4UB1NMUOSm`8N6BJsSw^;kISscOOvuNOI2OtRnzJ{bvNK>Z369;#z@c-$aMp*f=0w|k zH`7IzaxV8|8DPu1+}|C%xx?0JXamMhs>^VgQ5Rs!-_`3^-zo!bNYLIBpbcAsfA*gO zRRj#4B49&;dIEF+7YSewGJ4~K%tLdrQFn21elYBT7oB9mU?<(^h}Ijr{n(V2IbwZd zkw0S)e7JVR+=c?*HHi2P?Q3-+TcU$4!4|t(yd^rkCAjBlj?rleoV^^*KePb!)g^OD{C-XFbtE72u%?m^Uyls_@*4+Bun^2 z5Z-TQ3&=BLgg8ftv(IskIL>|+XJ6p#=5YR@1xlGQ#)8IJP?r}p<^^?;8QsUnN7N zb_({6Qp6?(2d)`5_;%7%*BfCtPR+Q>i44`2}TB`zQry{Lafpb`qZ&Hy@*8lH6 z<$yhHXzt%o(U5*ZFyISy*TO*<6&kMO3O`U;kI@=Py97jAo&aj!Yr0?uv((-!E&RXY z@!2j$i5Db23@OFd8G zA)#ZNTOlu`Lr2xtL)iSGQPFW$%&iUw7}8;~_t0rF``;yet^@DHOjrAssGLK}FLP_? z@JCpvx-@whnnYyO7Y;DOs%r}eZhqkaBi8FV2z}we)fW!<_zopAu@yAXR(qghyk3Jw z4#&!Ru9Ve$DYRm$f0TYvDQgdXwpBD@slsBwKlN9Rv9>r8qkmEUhpu#F%wY{Q@6u|>?DUhRK8#K7i<(B(ReD{dzh>!en!YKMH$`fjrQSepTjdsIKishNyR!5< z@MGZ#Q`62abpdqNhQ2p7YA4(=Af3=4*Pa!QXKJ@lh%cpz}X^Vn6yx%mu-yrR4$@yqV`>x-OLsyzdiLviW z_cA=@t%ylQ%oh@fAT?3`2;D#b4LI| zzQza@QmBjbcNtjkw7M01zQ{Q`}_6@f&V~qa5|6RhfIyC*(L#n=^|2qJn83Y8e zh)o&{f9`XHaOcdO9)-IthU-vj-VejJJ7ne2d>qUobp_T_U>89*9gQ_c4T~5$rIAOW zOKV7tRteh2*bc2=EaOH+*~dPTFM(bc0o^d5ec@iPyq5Px*>73)gJBq_k@wo0d7U)z zUdKas)b3)@LyF6NX0;*AM} zJ7aZvTU7kJqR96Q169<$J}0WAtnWqHKkzESUBL4Cd@9QNwJ0)Ry-PmxD29fp0Jg=x!mWAKb7=91Je6BQA(E?J!89J241c(*HCuBdzBY=oq~) zE6}|tC(>sWi1PK5cUJ*)0GLo9aOA0gJfx6sJ=*aLi2hi_pCdj}p^v}UI9|LSrfv&v zij2y-qs0*Jm*lsy-jb(98kf4y!+?{!}QN>QVrRx^E5Kw-HGXiW#YfaVpW zp*F5l0pKLPFJjLhNN29}hK~4y&V-zRWd`v-8Q_KVr&=zHKZ;0s?SVK29vhcF6!*Wj zSCI40D;qY~^_t8|!8UZT`%Q605v9iBe?h=H zPf=|Tiz1I{x>0pc<|pRib-Gfp9&g66!)geQ~3t67nw!`Q3912g0vBjgDV3 z`7aNXl9(l7z4D1cEc5LJ-9ivwf6rglTOtma=~q8f^OEtUF-7LuCAM3|-R?;c*Wc`5DlDIBU6a?DrK_M@3xP2Uu@5$D~sZ><_(c z1H3K5@{JiB2Reoe5F#HgLQ;tj$j5-s6g-*=*9njM3)=K9@#37#A`FsbAk3MQG|}xD zf50+gSIk3DGm%Lx%Y90Re?Lw0j|MQMMVSQRu^chW@trc2Cva2)Jt13I%pg*r$c?=t zzx^6)2(C$2kBRP}LgmiPmthrTX7&$LP{7(5ox4PnK6V++R66&fekKRSQk3J|MOn^6 zQ$$5`cZ(9;+KcG`!&r5$f!P#Lm~#UVtl`k>Bz-q(yM3<;x<{eke}+AOSP8X92|b^N z&#cyv;#7+Mo?8esp+N7wWTelwWeBGOW=U3Yr_W)Ys>+DMeZe!t709{+91em?Mvp1b zsXO&e=vI#=EqnzRY@(*2TU7@tANfZ(8uvpPzMz1*qc={?Qj78Xr2K2 z2*V3w!b!xeKGAR93kOu^{0N;k@MMhrV>JTix=}__j{wY18a9RdRz=f^2547x%>6;p z#H8h}%KWZsV9gjz7ZkD+d2+femVwW6BP2&#)qCF$z!?yje@kpVtC%6*2ii+T<$U{N z08dl6Ng7wt`GG>AYc5Y;>$7A0`uD1LU)7WDg@f~hFh{!=vS#D9}=adQkN#K>wHJP?P zra20rKNmx{e<<`t;6`^RtPzfj!8$;Oufdftu}9(DHWQ3iF{&X2>3Dq6sRU*MFkvN{ zX$o&>^{YVo6r?u{`K((4G@?KepGZqUx)db#gDQ|QfZTF5qy*-53NN`-qG_k7-dBO# zK&9Y8BY^3Y%ytxpYW^Hi3DArJ!TU)SAooyKB=D3Be+SnTXyneSKyCqqGq6mb0+6uV ztDM-dse*1esv0lOBvkBq-729zDC%$@X(ZeOePXmYfl{cVgE$Zr(#4|noBwC{?T_a5rO4$(iszwbraKNUrO zO_?dyf2yJ;p|j$_z>O+_0+-qSRSo7-n0G#(O-t}Z0D~vas-Qdx^;WmRV;cQ_1UCz+ zG7kXiGeGU7m0c?ZKzMtt0>*X05)Z1X9RdiPx~T$cx!5(TDeq9AQ?GKw=po3&i{i?@ zGo)Z=)is;AupBq8CVMK#&TYH71;W;K(RimCf6x>1I|lm?Y=pciTxRmPFrx(>E;Hj| ztZf%`>8I@38wxe%nnxMToeSgBD4bN9elrRcht;LsyWlbMsq(HhepK=87T^YvSE0>h zM{~Dyy*jgza8M4HSxrAIhs!Lde=LW~tfwDQxWByUxeEa&E?d()^K(R_cL-NlJFlG}GQ>f_1btmBPksRM@V51Mp%@-Cb9!DVBtiwlun6s6(1x@WDI;0UaWWI5r)j+hgbY&leN*Zc7GTuU~aJkn()^BBS&+mqfv(=_~{JrXdc6J za1nfp6B^nB0x1SmJW-|b^D&~JSs}fVe{ZPMAPhs@B=|5;+uAe~8Cr1~u&hSM+AP4% z4){QI0YFt++yyJkk^%1OsHGDT3PI(DyEk@zXq3W}rI`hUs86^rk|ASQNJfB;vwil8f76JT z9hf>vK5xbVQb-_Nc|1+t6U6yB;=&wpdS)uz;QUMo5=w$88}_z1r+zsQDSF8CAxb<(F`{P9}sezPr94xPN|A{ zqu}@n{e%@Vw7^S#V7UfAf7(fdSgmARs}&7nbD27SS=M{Ohd|GukX_Q*#zViDiDNwq z*O4$}gAXMVYi(7)h%dBaiv`|AazpG#AdUw zt{E7;W$RiaIl-f-W;@Fb;TJ+AcMF)s@c~E&$HsPvW+@&QMkja)my7<*+8}!LxTV%#qHK zDRVd)&Xzu7%RQxnkNjP6H7}q!%6(v;`qDK-K54)k1K&btrKR9Rj(^OtEMP42Oz9X~ z(0`Y!zBWNYd0}Gscq@rr^%1UwunIm@NxwgN94@5%+AA$PPQxf{f&B z8Zb6>EcU{pD4|V zh0Fdb?PhthQI7*eaWUomj$;IbdW@(CYkS)leOEqZk5yS~6k^#OY}Fs$45)4^Zb$+r z1d3sT7bGWW?SH!Hh&7cBIN#jp-4bW)S6mdk)(EvNIzJXASY-)zSwiE=)C69%6*CLK z|0`AF@S?I0KHq6Q=s+o+>7X_NMG~<0IXr(4 zzaJzEv40P)O2m>572?2>r{0XVlcwokMpsTT z_q`=LycDy`Te4|VG0V_PN+H|4rTRm*HCRkZ5mrSJc4-knGp!<9*#n;~D{3*s7tJ;- zXf_gLEG@8RSE1Aq9q58k7bdGFDtpl4JhMjH+v0bHos zF1OHVI*znk6;dWgrXcU*KWkPi`9Z~At{Dax4zy?DB&A__@5Z5xlEG!1j#|5F2GID1 z>9-;hYb4Q+b@bY6E*hgF$KR>%&iNi@Xs@Bw2={q}!|ZmfZsU7R?!1vJ zixb*q2~nbS!R?i3Po5fAC;%!#9P`iFy_7@yPM~U zme#IF>r|w53)A?5B%LUk_d72{eLS><-Z8L z*%)8gYTqT`<8Wb^x}61ZZoL4@CU}v8FyDs`E+jFj!_uLRMz}5%6|N=i?9><68UpIB z6l!ge4oL#+z5;A*-KuYFD3q=hm%!SM#Z}7^aP3k!Yek3aRKeM6)DD+LcMCxc9hBP9 z4XeHmp8a?xuP_q|q>->OIe)Rnu*)ZM^hzjN{67j>!1haEALc;^#h{HvZf-`f`g|pz z{Sw4F?9R^0qGZnXvohE!!%YQa)>g7qDdr3-a#{99S+-Fwn=n^t528kBfcB}>cQZyR zx5;ZY1^d6ymd%2J{{F8^7F?+PYY7yBf7P!3MHL*O`7ZflG%e+fyki15{H!e`C2atS&Lencq27QuP0%lMIQ)_ca z2LkHeDmZt+*4J-Py}vF~?{BS`YV=Bn-BOyZ$bD@MDsv0Cit{3@6!sMF7JuzmWV_YT zCl&a^LUy%bbft`DdVk?9!X-sA#%8`mvzF+@32&MIg;QlmK7bx9`vZmTHiu0oFGO?# z($BC-TQq=Dn#mSe@6DzOi|+B%$8~g^_WB@u9hYiM^)0dg;|`S1GXQWbV#r<0gibDz zm52?&MC|4S^3wzttN4nfAh!w6r29eY!6%euZK)&(+gp6i9e<}yTKuD0?ALm!EzQ?~ zv_OKUqEn_3iHPq5-C~C*WG1L>x4xmOM@p)Oyx#jwyw(`q)MUi9Qp(>cNFGzH=m;Ve z-ash4T=PhoZKB>`WMfEOXwW*cd$C9eP9VAV5ThH&NU08p@-o(~Q$FoOE_oUtCljm~ zDHDi<@JFsXKYt?=RIi}@>UokeD3^@E6Ou7N$vFQfI!~jp^V}e#eCt{WTly02hyq5I z_AVBdV9OFPjSkz~QPb0C?OaD}Jg*}*e!3%`{r>(V-ln%EY7e-p2YMLDNhF;BCxX(6 z)=|)E;l96$A#nYoDK~89(qnDaRhX^va7C&fr7BqC5Pu5*%yT|lo4~h>NamyzAi0CG z78i@-X_axi?1xdD0*g2kElrqEsoI-Q<$)(A#RU?nNnn9ssTQ*M3*{`Zp~^fhHGLeukX2966}0 zkb%Y&lD?1_p)=*1jI9HR({Y%-LwobC))nNkDW>wxCXG35ZE#@GgDWScP0};sUtq#| z0TWyj>P%==j~7qW+5N3`4zHXR*4h1qI&T!zxl_^7OfEA`T-Gab`JW86-dI{^x46zM z`hN+g_I{nI9U9j&hNSlkjNB|>`qb8X!H3ghw$7_j30MU1;9xBoQbu74}z?ysC%TEMk&{VR;iYj(hjy%#a=oSgmB zj646WjN7|%&S>pR znH>GojQjjs8Fzf;94%i{#(n-3#uX{QCof{$J~{oT8Mpsi8FzB!oYKks#@PQA#^sgW ze7VnATUj2{k@gpeuz$w_5A2ow5)m(1=P4!PTD_9=Q$*yo!|bBRT!BQ%Mv=g2;-;a& z^&InWaVGWcT$PxtQCv61yzP&lZ-1;z**p3=jaiCtK$-K_Y?d(gExVG;mT{lSd`Zle zez7@ME-&$?+9R)YiuRa8W@HTqSoKp!8BAFcCf7~iy^7GrDaBaU;_?Q|L|uEG8_V2m zldu8IsW(k+%@;A~W0hRVF}K^B3~% zpB~4*{Q5ZlZ8@Ty;R~EH(vDW$|C8&mcHu&06)WG7i+`Gx?|z+?7s~-1sNVfYS(#UG zpJe5G^8KG?<@;Y}<##%X-Wc!yqpZxUyu~9woMka2T}8VW{}_RJ)e^s-y*7h@&!B#{ zl)$;h(&s`%{|l8XTI>9vNq<)p!SD}8j>m@W$^oZ`%zsU;gS7i!YHir|69QpZkmEf~&U}*n6MvL88msH|4Yh1h zNU2ppY44XPolk1~l)%|mW4){nff^myYOq$b`tKIQjr!*1#!3k#VL2t6|4G^0+*mE` zp5t;FH~yOl?8drX+S6~#$zT8PC&jJ{VHMgijcIxb8#JxD%GS#>wDy$h(c;$|r zpl~z$dig9Y3D3kZPk$SDQij6PMgxP;$ihpz5W&pn@rnsR(N5qeed5l{ixHc)`3$}I ziR6hz|-Bhms_>?@7xogCzX1JXSQ!6zkk&DtPwEIu}&R}i#5Z9 z(Ok`-Cz+!_i`epXEv+Xg(@v5;jm$1bR@E-g5mk+(QUS~h-^*IMXt)2*V!B!P{92O8 zI%wj2#r@#oiknU2D;+m(j5;+Z6SU?3G`AACEDB%JLN2f+lZwtSQ(wI3`3q)uqiDN7 zsF>e}7=Qh1!4LezcZUlTc=Bsul*Y+I+gorK_~R!g@k_8^1L&BB{>V>?Fhpe- z>>P$T@x}!R%9g-`1UIdt#H^U{9KWowpmZnt*~a>Xw#qNkW(=n)BUhUIKR>m;L}_}~ zQB5WW9<10rJd}2rCuseTc9r~Uq+oxk&Maq+w#J9@qJK3!bLYCzX@HkFe`rPGRz#P1 zMTmr_Mo2AQHOq|JB{QI;*qvK&otw<~#AV{8U$M&-CtCi3Nspw7V>Q!c+liB=si>t@ z=owzJlqT83!&<9D5|u-WAjPZ1SSF%UC03*C@o3*jlQ(e!+j9yXZis2Cj?~!0>{cPSxZBJM4<630!NF8tN6J!@pO%4^!fnhG}$$twpCKmNSn=GT5j zV|92P=5B^$ms#1-`d)(G0}gznBc8O!Y

oB*Vn%aEAb70@uT*i8D;ZR@x-lp3?S) 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⪙2vmf6MLTu$h<4Jiidn^IN^4 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�rWcxYES~ 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 cMhj%OZ6?RIq`ULI) z0~K~klj{Z{e`{CUO4A^^&hMBn#E0RLUOGIs%-skE2uau>kZ?(|H;3_(ZP^yslF`K% zHq387UDa2~l7J-pnRjIctGlbKtE;Q4tNQw;oA~Y63w$FczWH}0Xx+N)xMJJ!Y~%*r z1$R0M!Z=!5noAi5on+wdv7Z$VXZwb^T@g4HaL4U>f4;l4#C}(tVP}th8rL_p-0h-r z_xSI1CHDN;Ti5T=Je3nk%e{sKMl86HgH%Xs=-ffbEf3{r`@Xv6II0D%gY4Xp9PD9YJ&^BW8?`{wpP_%DX ziD$>ORM*%KLuY1qCh?QOz-;(CUV~LRf-)PC-7_$SgxCEWJ0iaAFV`NcPr$&HhkmnW zhflJUu3`R75d&|>D{W^mKt7uaU_b#vH%>x-e*v)Cwzst8yOV`3@f6UQ0;$jhD96(7 zf_UKh(?ur^hF-gyERLN);@Yu-?Ex&upJu-()b?qMC3}>PZJ$8NfS!s2p)neromUh( zdY3C-@~}jXqzjJr^Hz@Q;NXKfOf99|HNTMje2gZb%Ob9 z*YV90i44d@Dl%8(J1-|t+c*spbhGBT+CT3Ry7Abj$sYGzBN zO+8m4QzO1zf~@fZiYVp0v^cn+`qS^_FsNBZGE&Vhn}Jjh%@y~Rtup+%RvG?ZX_euBv{mLyJNDb5J9Pb6XBe|}ezi!j0!W-+f9yN= zA1n54NwNE#&OgB0;?|3$Xw~ZQd5n7PE(CurK#S$DXW8fpE!evQu|VcHTsV#tohQU!de^z z=@$Dv>SN`ewkL`63zur^pDH{oe<_?QuS~K30S&eitkGiT8$;@_d6Irhfv@NS8C6!& zG(W9GxKO;1po~KMM+gdEK+tbcYcb3d*!cJH@oyepaq`+5d}WwK5J0Uwpcnew9o^^V z_}agKZ(>gS+lv> zGr@p1lX8}yX~y7K;DKRKf0+(aGfU@k6nE-l#Lj8EFb+uNAnA79utF|Pa$%g1%KJg! z#4?f`K=c^}o5gM>_MB8c^#*@LnD^c|F;}Mbq^Or-#a5!E<={k|syUUVd*iG$?<^

lo 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%0Ay{idvDVq+tZTL8LBXmEU+# z>qLB)-a^DyAU+zdU}2v>bGz{Xnz+;DX0YRIS;?-OIF`h(X%IWHI&({T4IH;Wh<}M0FPyxa z&AlsCYfD%r2czu33&LnC8Uz!si>y5-io{tch?;+5`>ffvHt`js zOm*;)>R?E9FybFklH|zj=sPq4n9kktQn=uE$x=N8}Zj4Zone2+ejOwXTdLt^0cmR8CDu5 z^@Ay$FYv1F8no^jX3;*I*?crLs6jP|u$l6Yf-+DIb!i)qp)3_4nI|NiPma zdrleTrdfSA3&Utj45M!?W+i0%TwRe^uT>-~5W4%@{NxsXIpX%gCY}`r^Y#WPh zocA2R9}oDe=4=Q8&RZQBwljP;m-0NZhgRp?@cYiNHN*tiQw!DQ^#jO}d-twb`yoGz z_}Ta&K1$!&HWc(z?&qj=6=k>82#w1%QeALUH6UJGGVMe+4ii)63)-FJ2BLq0y4;?l z1T)YFU9_$$TK}CZvl5~=6m!1$-^F4EjAg-NqE* zp_NTi|6*poz=L&$xU(#wA$w7PdiC}==^3%>&eOazhw9&kPpR1m7K?9(iB>TyQq zko%VZrx=DbvCiY-jk&qpjUHVlL>)RdHSoRbC_7nhi^*9Nh z<=B1l)m6Yq0b>PhE1-XqV;_?`0f$G#@`3k94j z;7kFR3fNP?wE_+laHW7xIrcH(dZ&P61>7s(g96?w;8X!$6!2LAUls6C0dcG#Uqh~j z91VpUitr>~8zZ!}e1XPV8ft6E)=*DFo`$9xnrW!7p{|BT8XA9VXj?-a4GlFk*U*!O z9yIiFBc%?!PFK!R7Gpr11 zqr-0ApB&w0U_=eWEETqYdwrH+RnVj)=`$dzfkx?&tKGYs!}i|w;qGaM)j`9O=(|@p z?X$~$2ycMCCCT3a2Bd7_2rFT8eAvFb%HV(%23=Y#nIV73(cGjxxV*mr1Z3=qWb6Qf zAYTtU=>6q6#)o`8Cz-guzPxXr9b$%ykiEwghKm82+)agFpB%r(D3HtB6iP}1`MgQQ zygs?OZQtx)A08qOvb(QwCl@z|*TAa;xjodO2Zv{ew;*l_vU{RKFYe9@5C%EDpkYM_ zgRGv@uo8cSK~~RbSQ)|~lb1BC0%4HBJsMVpFv!_84XZ&Iaz(=$piPjI zPc*EV;TKaJB_#y`kcqoQV<7-?aGYoi1c3PWNr6BB$o?UzVF&=h-|K)Q2mq;1b-*zM zfXH7G4S)cU_j6MApymZUVxj^*KmbVkQ3rs=R!V zRW$rMql2z1Ct2myHqNeDE}3J5$<cH7O<;G8a0FzvCGgQcMwv- zu0w}>f{-$HAv)w9LMqsm=#bA4QpGMshk#kB*05{QAzvY+j$KSr8qjpw_a_&i^}-NU z8`yvGBssu_ViGj5KT0wLioSmevOQ!l5zL8rUJG!l6Obn%F(2!l6;r z3)opEdUSVodvbLK1yL_z-{N;6*grYnJ!@ZG zg3SSJ1v}aVd-Cbz0Gdv{ioI^qcAzxtHSB(qASlRs9sA)V2+FYDzz#VHg5s+;v1d+# zpyV0_?4pw(D6~cq`|2bJ%BxYrPCE&LqH2_}_fCSKlo}Q6#)+t)5sfN#=p+o}Z`6OV zYbRllfkquWd0O(S8){&mpOohQ_2t=_!ZmRekW|Z;_WtGh)gA9Cn*|&f7`WZD{kyZ> z+e^e2ajZae`}_pro?U`HXqIsBkXWyecTh(+C&!2?<7gr=eV6CwU?7_n99bk4w|fKT zt69ZCMq)z_uTL&PH<~pZaU@y4yuN?my*_B)oQX(v9EBvN=<4tSdTAIV9D;r{8#pjA zh7LMj6GtkETxXZOd*9{piiHA>UXr|?TpXVrwm;roVz*T+;KVJ#9)QBP_vL7#SSV4C z9=R0wA)-z+c$6ja;UP01F%~8sIBDFJxZk94ed0uu#tn&wOd9u0JYUkdN8*3ilE&>4 zuaz|Jmbjv%aVNytAdNdBJ_GF(Za|h&{4{bxkZxPA8;$sUGiKXuQvNXXBHR6K>S7Q? zSsy029h@)AH%t6{gx~pYRX#p7U->S-^C0iy zhuVvDKsH?M9bn*&{3|E?{MLWH9raEMNua1MN9OlVim38$i#ycpkf`eYlCjR&n~ZT8 zStRyyM!^(!UdR@8C`)EtIm9r%N3s0;qegyj`S}pPAhY&bti{X4uh>}`mNO-n_k=Fv zB5%!ifBeY0d5>pZ@(^F>0b+#mFaC~YZez+=+)E|rm!l_M9*Lekb3K0x+G?fF5@~~h zn6~-()6~i(Qp)wtHH(&f2br%|a>!V+?C=zv)VdSpJ4pCOimzB(;@tT1l6cLNt}xj` zjZ&*cl<(@ran6k|8F9#1HR5_gR>a#aoa)7VNx7GBv=ztpI~zE@Dze_U_V-rL@*)TK znG=S*J+yk7p$817lHq?WVK`L`y?0Z=aQ4kp484|@Fyw8vHRFw|zteBMkFt6d6fu3Z zF=r?1zp^o_EAe!#qX`FCAjxEWVb)72fv6^4Orw zY_jzkB-Gz*r0(I52R~%mjcjn*-7}}%JwELYM1R(9!=U@}ZvTIMkx#p=RA`A$y4$JH zGM{*(#KhC4y|L%B(^(9tk4qY95u}$!wh40DCi{KDG^m?|Mg0&riFV>9DG!c@^57_w zr#{0!P|UabeO$mNtvY!oH~eFaWO@ssL)~{e$#O9_HfkrA8&tXk-j_AhH*2WRYseF& z-i1=fnLE_ZGzou^6LXlpBw^>5pKy{*O1!(dWSwJhWlz-ZCz*JXiEU?MTNB&1ZF^5_ z+qUgwV%xTDPIB{q>%MhA+*7r?p4F#M_gTBnu2XyM)xV`6QegI`6)NT)IXC?4w+;EB z9no!f|35cM82@weF>2d%_02=|%dl}+2LE7B*CFnue3I+^-Q&0;kBoqx?Q6fYd>HnQ zuCDztexoB#M~?9|Cm@TDH!$S z{HC@5tAAY&Gjdt$ZL0g%?Ng!5_ggdUI4FaC;_th;2RJ71aN;ZWMep|pk57%cfX&fBPJ zD~wNyt*bJis&&6G?JCe>db<>suo0pC=zIjg~K|KM1U@ zsze8m9I`2LFrt6kd)i&YoX6^BF%{hC6-%bhT|SAEi89smVU)!*>9Hf_ql)@7C1t0F z#K9ILOE!BUQK8!JnY4?-8km)0HkHPe`x~HVfo`#_j(uMzLHOAYF;Fkw(`f?-T7IjC zAeG0Cf!i9j6v;>(kO!)H`xl>iWX91p*P0V<@D+`i^P3ySyFO0M9kTa4C#}~uPM)*Z z7kS_GO-?9VP>gE7+UQs&t=_|uO`Pt)=}q?=d(Qcpv`-5|PrDkGd%e=RUq?-=?b`p+F41Rq8L!n-?RW z|45;APnFTAKnV&+9J_mefuh6@s5P zcEvOuju+>&Rqo9{A=J|wZ*T^b3v?OS{_RYCS$G6O*aPpWOgddmBr$m zoz4u3VsWa@g~#%!&Q*l-o|!g<^In)1g&U~y^MY%|a$rWWpqQQJ7es~w$EstVUyP~D z%?jd%lV)L_lhYN{hKpooUYu?U;>5zTFssTXhvP9jRu_!MS_KxSD}!v98>({!;WEvR z1q6?VDivfRrH*5*44 z{_njeGxPMckf3i6HC!W$k!49Sp{$@H+ywLdlANj_FpE(%a6tB z{2&(=z^ObJ8}7pLSWb`}t8IF^HE5FAsWg`dPTTUBUr-h6wIG)mZo~XoP4EfpH7EB8 zi*sQb9nO1kS{2TFUJl1%V>+h%fA2M!nP=p32qgur;a0w7t_(Ke2i+Be2pR?(W9|MN zle5amSY8?TA?$;xP#a4wZz*IXPl1vHgjFhz#z@!I-6iB8aqm~8CzCc3Z9II6z)D_g-SOc>M3*n?fy^CagJ>NutC7ahP zbm&qODBk!7<{Sadf;><7Ti-_COnF3gCjTiw&+Rvg{(PeC;&km3QO^aD;C7)sa0C`y z!br8?OU(I^g@|IRu3u<^=Q9KH%=r7#K1+g&Utoa<&8aY!T(*Ap%u}f)vgLPwMi_L4{tevC0*rhM7;9=k|u5LU4|{FN{>gwtN& zf~Za;mQ8>N`KmR(M76%MB5n6Z>O^4DXwjvxFEjPCM>wRSPJ>DJaB?aakhDOzZv;a} z#K}9Y(3w<~SpV(8ZYio3eSSy@|=t&-5z`~(RbWC=34i%t{9Y4cL zqhqD=qqyem%zMwGy*5?1Da-@#QKK zZ(g7`lp$*7FFXF{m>tDeLBRH&?ATQyd}}lI>Dk}Z_aWT{%8_a{O4DtBP4Zpe@hUBx z_(y{%FW8%#)i9m z`iz~Y;EYkt6&qV-$-M*4V@^e==_^!j^&%|S!vmGr49-x_zJ~vXp3X{o`2`Y8z_CZx z|LewxiXEMBL0kC9HY^efEmnBiyJQB7PljGB<`^EHMZuEwR*&ySswaSeVZj8GIaHM* ziyDB!QP>Enl&cV~38@f>Oy;QbMJ7<#3#t5#iZY$EjR>|zs2sJ-Iq>*39~?y)C|}+- zBJ9yBSg530fSZi|X$)tz!;oEA79#TynlH<}zq3zHt}JEKAWz>8Py?duQpP|`5(|K>q%+u2NQBOymEBeYzKo) z&FFQF(Wi(y;U4*k(>O9OUpdqV84_~~-3TRqyKz&MEBuMNu}w~iSAu2dHS?DbnOjtF zM%mI?XzwIkvxVNRY$9IsIHl?*^~&`kzlIifj#hW zNcP842|KTizxYUBQ}nQW{dFe2=tm@`FpPSJHe3> zDSMaM_7qfBelGGC%)wBKo6134*>5iwyMj5*T~3Odu}<{M{8}{aYf+Crjn>H-=?o`w z=gFCA+{JV+{y<2{suBr1fcri~nx2wflXCYxqXcY-4fY+e$B{Y0I?R}1rFYLoi4*~T z@5TWW7V9VE%{{I%bQB%dv!~yY*)evx+=rXO!S}DOfU4S`8~E3M1*xw7b7bIe_J59i zE(e5yF>`RQ-v%mqexIQ)0EryUXDQvg1)YJ33LcRJH!;(51#bR~sg|MQY|&riLw`9_ zEaVC2&4%X}Dwu~F5Vm(xK1g00K2_>pcy2&Sqc~$;kH}KH43F0hz4A;Zio*7+TgmHm5?0Y-Ve{l@Tu0!RRfH; ziL`p=I?*O<+KWUR(2Y?s?$nN6**{#7+lsUQtRV0!fsq=y_3PnG_}1#+E$1xy<-RdI z=NkO}jA!VpHY7~pr5`&-2#BA4{kc;zoy~J?y&FsjyK@BCbrphi$)r9s{LT?mw%%hM z6JAH@)=zGI7mbnfe0uXFi@V_Q{cIJ%c*u#dZX;)=izAq-Ea3GO?0t63!y+7BHOl(# z-|WB27>(SmyS@_^_V-Ma$#~|Ia)rJ!OVn*Ra}IamZ|h^7h=q+Y>!1DL{9(KNVUSb{ zGU%5?>bfD|qzLMDSzO(Os!a1Np8ebqpHR6FZ2@HHit*TtQ{5Lxxn3++Ti!h zn0`$+yFy+yL%s+OaG^9;J&)*?rN~}V%$j9{0v6?c#3|m+e(}w5gP*xHbg%v@7Q;U~ zhySGE6HR1i$dgVDG}2w!aZV4_20lFJJ&Bec_4XKC6HOh??(!#0zWDe&t?8S6fvzVj zAA7-5N$ge;1(YM4(kI1pYul@shQB(d8=1}#jp4^THz<0XDGia?jtie!|JAilL~ez* z1MBg4_MlkRj^f-HE1?V9M)f#>fVzigU!)uF&{>t5ZZB?eIg=q`dDIyZr58eLI{~ zsxWX`ZNGYI@)gSdMj!$94eF&TH|XdkfZlPi9da_59z~cX1}cWa?b~b@x$14}sRXa< zjRfx{{IKVHzq?UR_2Jz@p{8~grtV6Bs5-2*IxKhfD;iTEkM*7DTUQfw>@;2(QT`?j z`k8tlchbLpz8LN0F*37Lk9lI;i#<-mmJLn2Xvz-D)@t4MD=&NdrL!f3?GB#{fd5-} zSNJnF=|})$Dr%QpUw{MAFV*E6_pbnilx4`CtiZ{LAuSaJz6Vw3t_UNXIh@!8#JfLx zFHe3fz7(38TH-W`mlgp@*6+^3KKgplYld;#z$-oXoN?%^1ft-4oA{0=w_7Tz z=OWQT1j}Df=I&L6+)@IOwH?Lk=|CY?tvVZUN7@f2`4NOm`6K zo-s6ulpOY(GG2WZs9lOA3lk)b6C@84B#{#&6OkkbdE&EL0t$>`c4h5iiasFH2jI*L z=+pBG%nPK<59rg(I{b6%Qi=@WH6j0cK&8uI!zFK(e|7&Ux&=);{b6Q72jqw!bhZe2 zmj$9v7mS%=O1F6>%@mA&ZSp^~aE6|6wN||;H1UjM*=5F#4BGD7nkpJPM}ye$=78e6 zs^!&2h}i%UQDeRKiF*{4ITmo-?i_+swyniKws#*neojlPVMGKs3Ni)=`q>*Ox9)h~*9 z7D*RAFrmAt=Q&a_$R1d#`p-E3MmufJ-43W_cPR_)ugITqT*|yB;mq|K3f5|QhYiyw z=w=bM!1Ws_hU0_VYkap~^q~59QN+Pi91}Bwrgjtp2|P;`cRM_qf6qwG z_P(pP^oinjmb>{#9~~9Qy2u(yf2y-si`>J~$-J9lFuC0KC8zQTT;+x_AZ!x5L+a zvk-oGIy+`OO;6R=8{!Yi1ux8edhSy6}b1L}XvZl5(IxP_fXzj~d_kg`xP5!axw^ zfPoYWM=^tm17Xae5}cv80$2yip&@@5>ne)kX%^7pXl4;2l<65YwPTEa$4od(|B*n7 z8CEVWI-o2bU}W;wf@#dYRckuz>LYI~+`5KO#i&+Y){K_okWZKBp1C8(J83O0dRUjW zi#A^;)QDra2n>1`^I*`eL_eL-5XS87n%AYjBJFhG2SCR-j4{OZNQ+gF#PpQ;3JXEk zpr=H!O5B2&C29|t{o{Z`+DN6 zxWH*>S87oy--9b#3LCV2YMFN;)E%mVtWAa`b)RHLH6x#wDuf@3hO|M9C8`v8j3G~( zr!15if``~hs3DNxM*&*uqi|ACCJr8NLCPXd2}IAMml7+`70@1^v6BDr->Aho$Mdj~ zf@nw2y3rG*s7Tx8ln&x%_#{XlKXNKz&b=uj!b_D-_pgwoWnStH_>tnC_XVKn^~sk@y($2JdnIROTT36 zfhxBrN$?efeY>mgn9~D)_Ungk3^4|GsV%WTCD6YKGi)Qe^k0jCbNY>$#Z9ckR#YL| ztn`?jdnBcRm%2*#v87gi?tWH%`oc?Z4k+G*C3H8ZX)me4w|cVdOv?V<8rncE^H4;YeKwHU1-cKIa+m`@NNS)*%f z0^5iLJTN}v!5G_|6^*}5(krXbYfT20ot9Khk8F~4jT$Pwtov5h3t{f!$J{+v!1oQe zmw-q|E@s`{S2CMDtxe^!f)q6w^ecv^zMSn0-i7T`Z*AXQ7%WG)39}KPf?NbE;R^$XMS|G=mZ9& zK9wSXbzcm?3gj9r$@})A6~jEb0NOz5`uf$HjvzjPu#Q4!3ZqQ6$}WJzLzBq z@Kx`vpDo${#b=;O#DpQ~AFst*K8D=n^wi72cbhx^BJ*rt)Ilbl__B@S0n8_mn?#<| zS%_HQ_U+9;r$Yom_<4h=|Fje}uU0%c2DX47LaL{{`&>sXY{5&85k4&ucM*}iCI8^o(0Rm& zkm5bOvKQPc4-Aqw0l2>5M!sywjg!%1%Dl`aWXFyDOXyGRF(TAG8=76}d`m3u=l}T( z>CCQ)&ruXhelonnjLD8QgUf?Y4)5QNdQ1QO{WFJ6OnRwfiL<(36BNG!{Vn%aYA9o> zl;)4KxU{fR9coR~Y9*SKg{1`+I7=QavhU!#U}VWlFqZrsJg_2ZKcL!)vP8HbDg7LL zURd2Luvl;ti%lKHxmYLF)Y0KbR$b{j$MZfvy!(9D@t3&8e7Ipx_!wD&B67;K5y*! z$K4}V6MA}`q-2Jg?|H{+u=DCc)|gk}^xq z0tlJt!QpZ_ryj`itb)~US%cb1Bc}*oA5G#&5GFqNU zZmjiba6T0G)}ejkrfK$f7*cWw9>b}tz(DarW#p1LW$E)1E`ChEn7Ca?x*wK z;+<_zI1gVn1|fK1r9sNB!0NU>s)2VY`XAVSG_R!hM)$e~@ymmdf+v7H(=Oj@x`8mG z-PX*G%iKr_DAm@1oH2|j(#<_}pII_^R%;N{yhG{iuynWSj8si9bNI4Uf=Ey2u}VOTBfTQqwNHLBnrU8w4vWDitu$e7OV4)dgNiVU^7yq^Sfo5YSW z$Up4oYnp3)VjS5DuWqJqW+-@4IExDWE#l*gOx%rxlN8`j{`N>loAAobj*tyrp^Lua zUHlPk`2P43oThmV&(ge&FC+=bpnFI(){A-8i`|cAnxpJK8 zj4$M^r+rhtt^1c_QCU4UH8yC4rW_ol1jzwrPBQEI5}Y4I5GnME_etOxtveUSm8&3A zn80|1CQH<~{Cn|cwxb13rK1H=rGpGrA#q)a!rt^fA9?$9WZnx*F{8x(d?mVnc^m$~I>5OipgT*xR`4OaFHkU#|HvJ)`I+65&gGxGd<$ z+riG;N)Ii;@t9!%I68Yfc)HzvAY`{tA1xb(b^8vrKPf!d_sItD=AN%PjgN78#kGla z>I8lswvi{*%s0UG^`-;yO}hoL@L-rlu~T4}g|X4|fOC_9C(oF;ZC}Q+0TAe0t!rsY zYN17Gq{3JhqaLbDSRa?8Aj9l6&UbugQ!lJYZ!T?Ahdhvx0^Th!E+9u}qOV10vQzt| z)d)=p%Mj`jR258qzphbU89ER(rSl?M%Fq76OTiBR?r6kf4kTH4(UJlP`(+XSB$9Za zc1jG}qLtT20e#un9g^^_{U1>|Q|%Uzqel#S;|RMvc1AqrMOM1Ee--p!Fom535MedQ z&yIAuCpm33%+9XQ*qq`^bGuLT$bZ8x*k-r2ttfllRVeg~`4^D(|M5zs{x&g-&GP1u zU&LnkCIl3V0ml<{9tE;X z@O5(QnLB1Av6TB@vhqnsFKnke>;f}C%}@F>S~BQV!WK+Qt2{ViD-I+h9ctxC!C7=D zN(9yA@-ewcz#A)>corRaW*(V~FHY1OiZe;zRSK&pfr}||Bl~Iy!ZQ-1Zc?iS4~pGm zMHO6{1llX2gr`U9i=a%!G=F$B6QU(oMhR#7fEt_+qOn|~7xr3#f%!ds(mLk5a4F&* z=AYVQSDsX)JZ+9qYmE-fFYxM!^H7=-aZKQP8dDQ7dC5^KEjDAMN3A zdnDc_M=rUo8N-KlT!!QYt?T0vKOpuypDc>%qnD|9;kI+={IYB;Hfec({e_>p#e~9p zC$q##XimW%d`&}yjG&W2oPiqqm3LQ#TK0=53qTcBr3~Jp_EUFT@N>6&x4y=;s*64v z7?`)ZhJn9|DU4LVRZwQDAtxS+zH>QNt93l)cut&v4a3YF*dREo9|zu=KVJbGZ)h?A zCX;5YDU+fXJi=|;DzdVxZ;91kyu;XfB12|BK#_cXv~6;&5-;TXaSGV1%d2cZtJm@Y z&K4hzju$?Q-Ka92$A}J_tGFRENAs6qq?7Dx268K(nvYDm56s4H+ZFO?*fs^|TE&5H zwM9usE)4R7!vs-71R>~uG~oOwCav|87+dBnBZs24HiBnQcfHvTm2Qkoq$u8GI)sQKlz-I-Zd7ShM#euh@NM?^$*1^>sn!BmnO^XV{4I9Rt zB{TxZFNPZVozFq>-wbrU%D9%=<7;jbO?eL z`|U>Y9zONk)pQzN0e@;jLGL{2;S0&uMm7*Kbc2Pj?D*AQs|nhZm^FByZM7!K zBd(|`jZ}1bu0{59Tncxl_NYPv@3+@3zR|gRGp(q<#p$okJ?DA-v{xUIMQeqYFSHMy z?oGHAqwPaPmngdIbssuidqdR0FMOFVTFO+7?e(2D#t5MeY%mT*UOII))YC9ZB7ji; zmZiqO%9!MK|EET2Pd3w?yrvhp+(8-NkH*&(P`7jgbvzz_@~^7Tr>!(YOtM9TVSqKR1K4?hO{_e(MrY{2Uzr&gwX6B3EiU1Ifg}cOD9f-`X*k zlng)mYz6Vn@S975T{HoZF;HX`q*6NN-(SD0_>V>hEnD2OP)BK3Fb=oExCB{es#^Dx z_u=@VSTu;^aWBHxmxS7Yp-<=O7^6&B0QLpR$N@Og;+ z5p2_S)HBcEbhx)w!F1F^;!rY4f^Prnjv+8a|JT@{=SPu1ioF*=DZ@Sai`F?}6V7Em z$}wbtCOaa2A?g)*nr*U%lGeZC&BL$QgX}bNjeYB2fHMGM_&m~Mx(|)+;V+uU_DK#M zLVyQ7%YDuecOIl-9%TKZ((!NnKj2K8CQOT}{-fD+r3Hv+r@eoPFF%nf#Zfh*`4ZA9 zgbmv9jHJg7_jPCiZwslNPbQfLKhD5&2aLf zR#HM6lOrfMLP=Q?0qOJneaS&bI*ZM}rzg;2E1mi9WrT*#7?qUZ8*!p5IguP!H)qXxcWdk&m zA?OQB=%Tv^R4_Yx)xy07{DKcZgi);ZcTKNW()8AasMJm{|FTQ*iE&pp)97q6_}?r`#)D2taOZj7qB=i#6mE* zuGA0dX^A3)ID!aM%psJ9WjLVXk8#%)M>M8Qjvz5Rbh9+DZB>|@&aa6VF@MvSB`7&pHPW}ktTFm6sQTDln)A1{iji6 zpbM+9g#YU)DxvURKxmAZRfUruqv$OCZJf|$A|iBRX(IH0g-FvF1>ilQ#Fx-zW7Hlo zyA)}aEdSaTdjTV%%Z7?xSdG0>m2>Yb`1+q+Q2qbQE&Bg@;qF{;61w!obcIi_4<}eU zDzRo&jX6h<5KGaH5TKNJ8xLfxN}x?9-(9AQ6F>ffASa8l;})MYtNm2+8M-Duz3wOH-6C< z|MuFeAcFPFZu+uGiSgmGqT^ztA*Mt}hDH6qKAR4g1wUuQ+Uiwg!1mRc{MT6g*Vz2m zIIs!h8}H|jc>bz~P3y>J9Q!sO3yC)Imk3^|a2nO}hb`akgtx`DfLGpY(3KG%rg^&o zGe36$#mRS4To{D|w7&pf#Mmq3zX4>bK~(hj^)Lq<5jrfb*j~&Wt=O>5MhFXGi#Tox zI`Tgs%_C2^kUko|T7kclOMW~2Nph3x0eh)dtOI1OU`Q0#+4%;%NPcK_bul{(Mc1Vw zK-|zT=A*A;*Jdvb9v)>*(rlfkbFa2#7@@+3tRa7@?HQXtsa^s(p$b#zFauj!6lO=R z8FG*D#ozW#$Mm&3s*NWhGlmF1M9Cjbz%BGu@j22^mT(J4U#U?pk2wyHJn4TOSXw83 zh4{%ngmDhyCS&s$%YEO`5yJ);L7f9-Q2!Evb@uVKWg4^k@G>^ z8m0*2ym~LWHi;&k*@|YdoI24wBoBRHjE0a@S=NsG&|_)xCMX2$RD2g8wj>=&%&-cn zw{|XWv8V^!z1>|s9qe1QW9~Bwf=TxDxG~AWgeA5Kec=G6c6vezdA}%>bB)c^nlW!= z#&h*y9+v$@;ln6i-kezsC{FcJp0n5Kv(z>bQ*zTe#<@h-n0_2eVvhk`Y5tTU zBr@Xt?!CaRh-zR#%UDB8HVDx7;Fhmm91RM$>LYW#SwzjSFM8U;_01a1fK(5 z4!kQNr|T>jUYOokR7-}R1n>R$vb#@7TMseOO6>qKe+Fj;$QyxQ(;Btoiu*U=Rv1v( zdY83fP?MLg1JZOFGQu^Ra1p463=vF^0i$Uh6)|gJpS?$4E>shk64~{z1m^e^1#u*8 z-LS6a2&tdG$JEDT?VfShNHA=Up{MQE*G8aEf(Dp8rDyWse9}f~T^UVk> z%3T7K5=&RM1f9yEwniTL6l_czLv0~~SK}9UqcIA*;pAzzH8klT6MwPDDZM~?WDH;z zNt~k;2zMabm~!s?J|OIAeMcec(XIBIAro>N+{QIVuCXiyQvb3zK~iMZO_q;Tt*-jm zP_7VUo2``YQk(Kg%!(BEMSds5wrxF zatl29U2G!Rl6BCbh>rli>q(V``RJ zhTxtEK@e-fTW7ciojK?`L1%N(w8{3wfFSV?CB)kNQ(p045~nFP>1u*K+Xh03 zQ5Q<;$Kv$HPd@qEDvg*RmwXkNvDlHR@s6Nji(p02(Mt?U58glOG;TVm8#1*|5BGwH zy4fGeLN#|jPZdBMXo0X0rE#lV%>F*&R6wL@lL4B!9*dFv%Hk{YDU-Wq_hk!sEsHb404Z4CYbHpz(-qr^4Zt?D$=Kdt-w%* zSIeD?+9yS|PdF`JN!ru66O?qtkwfAnQ>)lO7gv~wjbmiIH>pP$$_)Q?D!Z6|-<^M8 zL}bj$637m$AIum4QW#cYNDL@MIrmFIk&HQnV%8Y5wEwJB(U?nqS^`PR?F7903#$(H zVN3^VWG0m*Wtr0X=nN+dgwAY^Y;A&UEk{NvIE8*MDk#gc(8ISvl#}7!!q*qptplF( z2R+ILT&pz$a=Sg=X_R`>P;r+C@1~Eq`Bw=;fUt7rwjlzbX}{s4sGR(g|H@vzRPcd0 z=IcjC#bArayMRFZ7&0T)#6(>{+}MQ=VPoGxDJI;tgG4fT)~X8vL_CH^Ysto)pZXh= z&wWwD`sRVOzP_f%75?DK>({aUb1RA$&1x^<`C`?dz& z{{bF{#b-0RD$Qlm(16a=%UO^~L+HPuf#+3^w|X#FE`03rR{vC-4C)9lGN!H~5G0Z} zF%swxrfb(|FwE8*S}Gx6g|k#t28FpTHow_7#qixDS+Mact6;ljx_mK-*m)|mp(^i>i0tx+LA(h zStcz`*L?8)?`XJHsKtm=DN!u#1C5to<+a8RIp~AL@?Ah0v3umG?BQFoXxJ4|BJIaO zkl1DEeIubl8LV0bn&21bM2$%Q4f8U_*->#lgt)KWi0?JcXQ|;u&sX4#HD%9%A zIh2L<@#78^Z0`cSP55CJ$BA{a#vU&>T7~vgE~}7x>3ODH-#uyK09Q_jZgkh#v303h z_uuDwr@G6UMBTR*)Ku96NHv5Bd7w^s=hZDM_-sYBufmJMmqG?-b^n}R3R*s$27;#-XZ@4Z86@P1>$kJTJa5p+a?8IX_x{`z1=-wBWh z>LtOneW0scW&YJwk_Lf`BrU?*-LHm^=ZOB>BQi9rOY-ohU=N51;Y--mF{|_ECV?=~ zYH~B9B8hd+|Lyyo2enuKS;cNrTK4@C*nEz4epZvC-C?3jDAz=zUQGC(qS739(`l_I3b#-aL5D-0l=(=M~Y(Jur#-4 z_mA#159vY8p~RPZaB*hg&`Ok3l4f-rv?X+4nF|8DHi0g4WN{vwqehMtN72CVTMN|PfB1c5mW)w~ea5IMi2h{eNK zZP~`_`8Z~iYS`$QO@POu4MzmaP{i#Ff}(oB1jW2-#%hD13k-{8x$@1@3+qUcKV0_a zcaFU00QmQ=<>NoK)K{jq7|%k=vR2OpQF<13iZ?Y*9svgk^@QINH2%VNU`PB~&pMA7 zW&$Ia`$t&PLV>B{6kVV2fn8@?3i7l}MW0|81ibxqy1E@sfdjlI9Y~Goq!pmF;ctYK ztlaTB75DWS)Dji^v+$7-YU*gI^{jgGSuQD+ee7=V#!Sp;M1#_V2r^m!>`~!s~@qV7KZf@TlTOyP81n|FuGWjv)1(G{di>ddJFxJ-C zax~XUE{X8c!EJ16W}O|PN18i2tfo=5v-5PNk#a_SWI6&SVeG${ zK#D>46?s3P65~&DL9~o6$=L_P{T2Qe@ppk4iq$O+IKp`e8Hk?ilwjGV0C1%I$haNeI`N zXS_w8@;1=m|JNxD%tV2Z{);8{3n3+iMnHBS{1B-;nlaw3z{y^nFw%^z5Gv336T)|7 z`UBcry7k{ck|6yz&=qK&OyMw z5Wzar8|$a1DlKZd0(F&-1Hu|O33drddKn2eeJ#K~5mIDslVluRq&PjvNrk5Rg6WgX z+Rdw(nU0>?MAy``L1X3_j~br*(sWgBZ97RjHSva7>jqe^iGo`L;}T8qFHQJm)&TdL zoel4}SX1zVb#j5EwJ!DG)U4iW>#Q}J=5B$I#;q7)3Xf0`t1>0sJWYuEUS3A!^CL=+H(=+}oNm?EIuYZ(lJZd~BWT;KfbEV>Z*GbAtK~1b;NXUSPRx9S}+kzLBWTW-{&cfAUo6k`JW%COAh~5UfYQl5ff<^$? zjxT3|gX`@9M!e!qn*Oax)>yhVs*cYjGr(mmMpwQ_is%U@a@Iekj_Zm*J(Vf*U45RrlR{?o ztxV7L7LT|qjO+e`yQFk|qIO$bVsdfePnlk8M^WvXT9H#_j3~&%X;q_7dTgb^Za_u! zH8GVYcxPtIWYtuD>Cg9XkCtHp&{-(g*R7AEZsk-4jg?tMjZuLT{OPUB<^{9b{4)fp zL7+D88CGWK6}*wiK6al3?I>Mr*n`A(An^Q8ANPn{1Ar+nyC<;eY1@UKdmw$c@pN@{ znrt_CLriL+iJQngaTX&YbiMOu1BklCKnGtR{nnL*MF#r4@MLrH8$5@dYx9F77`g&I zOl+2iltP~+N~>GHd&iJIm@ zd|2C@GN}w$Z);Y8`$Xc=zN3p!oObobxJP9Illgt>R9Ty&uLp{8+SFF}5rSF_z*o$# z54TSe@F?WF=&2w}pZt&KFHj+w>j)@l%Ctb3YJx4v0x1t7cTk`0@ygvvA)_!K%E>oe z@2opz$izxyB1-HGQDfwTu_+jY+Hch*E6#UVuIc73@;lTcmLAqcJ-S7#iZ2{R8HtEtsPz0+g}yE#uU3QqnO4 z&pQWA{vUz8F=IqQ=Ly;7&IOE(%bA42dVGZwuzSw8nw>J(u7wt;6XrBl_+!MOo2#+?PSGjwo_dssD*0XI4nh@SnBB}F2)mlz?_c86(X@{p&^PInJu5|m?imh!%NsxbWs42?_~4?UPN z=eq?IcXf?O=q%JIz~YVDcSn*2O2))k-E?I&wtPTNK6YREsz<{dA4$NqUM`s5ND<>C%rzI@DQh$?o1O z{g0{qF;IRQ0ImC%O(?jU5z=71i_WLtfuQ-|o!9_D!SRtTndD6C?2?l9QYO?5p2`u@g**a^0cZE(gQ zQ#BxPgfaU5V|hJr;Yj&;{VgGIaoMK+sf>B$y@=Xlz`U}F5ZekhM;@AYf||)MV$K+M zQeuD7e#h<$(1kLuv#r*AjFE;pV&YzYBM4J%p<8LP+C);mM|<+yWGQAuR`nAzmFzKm zI;YF5>yi;}TE=KEtreN(o`*q|u1p)93KuaAtROS1kHmxI6dKm#if?_65RJOqFo?XO1q(%6rlv|6ixBqB(1OFAr zp{fUeG4inXL@%z9!7wf5@oA7YzIhbz;lH=WW^E{zhL`@Yt^7o7i3vScM6f8@8H=l( zjT;v^K(5G5k2zFV&=CsNhn@i*9nD4MtpUg+S zN9HHdsi)AXPkQgO?9_mC>Z$QWH{O#@eU_d2V!k(CkOrQaU$9dzWv8C;PQ5sN#yj=$ z>;>!83-g8SRDhj&iH(0VzM7Lr6aQOA+L=IONYJSD2SE_my~L`O%@a|6gyn4v7Jt55 z4O_M__a`-Y9;vSzQ{8x@8()|-qZTktN%^@*`(LpqJlMWm0#)HVCbWrlMXX{dex#dN z6r9dcsprg)p6eP{^o^oRzY3P6youSKeDx{Um{ODv(FU;A>BB-llp+~X+u|})_$b%>P7}Q zOdFYaR)F|9(YAzhC54_t5u3gt8i)7Abf%HbBW*@jeTdDr7bWv~5XO6f?|-fLNSQsw zp+2hVY(nI5W^gmOvQ&Z}b%-p=;FL-Vhw0@{4b#h_VR~6GOpC(Czx`C>--;UlR?zse zsBx}^;LS2P%@BRz2(FT4d+_vyAq(->F5LVS7dTjp7H*NY94R~kz^kEqB4h_dm0N z^Fvr6)lti*{avC^D%uZ#NP1}T1GG-M!f}xlBXoZs@{{>499p)yLOF!rAb#@&=(YR; zTHq#=taOwq?PtL`1qCR$WdXRvTt(nlOdn`YZr)7bndX1dCvZp>k$<|bc>|ux32xpD z;K3Z`gKgeu2zg9Lh`sR_-H7>w-v#^xf@BqTAfVR(#oQ$OI@ z2vR4C4Tngh1muK1DSxZDHQzu(N+OOkS7kh#``%{qng4GuM^ysar(ZX3O0+OlQgc)} zI)18L`RD|xa(1Uvxy9_c=qXc}l=jmhLEac2cXu`zLq<_y#(l7JroL57}tA@zY z8s8<#oQp?4#l@p7Ts$h|Vqfs9uW)f7QUfJ*E>h=8>ZM4%R8m8c8Y-!gNR0$b%_?Wd zAXTn>b_`SHDrUzhRd5?G<4Z)6nFl#$9v1TFD8-4h?VLEM;>022tQ=pBRPLGm6!*-w zaL=redj?`W2Y<>a4@K%wNgat)IRx{{v7e;Mm5;rXDpxV~ZmM8~WV}cftdNY;RKacB z1R+kfRg-hcL~xTxa(L3J#gkl7N+ewrGTk)Abo1>@H>qMer$o%TCFvJsOgdGWbpBIJ zI^V*i^Fk(_2*#Tz?C6M8M@e->s;i`4h|~)ubt+ON7k}*Uzy<8VGL5}eBnS0K8NU6J z;bR?R%LmpG<*!fJ{VjyuFC;9s&d9>?nBu0cP^ss>QO8$}*)rW0vxPL64c8N9W426x z#m!SQ6}LrP5nXnU(N67nS9?Wjl9_e1$-rCh0#Ch1FSt;Wrmx5SwC{@aE{U+U!A2>$ zvsrxFWq$>Y3@?Qebc|=*R{+;Jsp?Iazih6Q%3tXp36v-mtqZ#r5T{}S5q7Yu zC5y&Jpc{RYEpsr;iG*vxbrjQB08WB%hJVJ`^bc&j{}n}jV@$?hMZptMKcMOmt1gTs zt2&WIePgK`BkoxNC@du0i7^r;=>TUTXk>NnmK>YPo}c-)2;VK@tIu%W`hO3m z&fkTNhN$5d*I+wQQud7L`*%t1xu|xLsg^qYA45F@j@2P3rV_l;PSI~lVBWXLc*hV9 z69QDmMo6ZO8B+SefqUwJ{UKh96*g?x2H|hRF$k*~g!v4@YKCVJt}zH77&BvT>>C4P zYOIZwabawXOXI%r(fD9IG#(qzjej@BYvYyi)_7pNHy#=9jL*gs;o*6HV zZ^l>SFXK-mCfq{StJtt(^CQF+31bsOv2X`#IMXISNYBF9Aj@G~aH;yyvFX-x&yDu{ zAl|d~-ambCpQTyRo*VCx&C6cxz~^^qHIg}-2fppcQSAp0PjJ>g=YqQ-ZhzXN*u2aC zGn|;POalJ|u_?#Yupp@)n}I;wickA7yAT;d#+enLlT_1+#fAGgHj}tVz>Q^^2fvI( zY?4KO7@sxH$+(lh&2uA!zpZm3b%uZ`1O$WZ#Kc@8P$1L7UJx;|2;9+L!x-|9G5_%R z$AW(>`NxERjQGclf6V#EK7aoh@Q*3~So4n+|G3~E8~$<0KkoC7kNo2U|9Hqh9`ldq z{NoM(c+Edv@sGFs;{pG8&p#gVk9YjzGyizPKR)q~r~Km!|9HVap7D>D{No${_{u;2 z;vawVk2vOEzW8#*muJ3;G#5hLlD`f_5ql76t#0?`+eq`!;70ylfPY;8{C*#4OZ|}i zJJI2yb;e-K8H|0U&WzLi|S1{O!m4v@Yf*&&|ecnE5nH8^#D0i{YV^Zi+EyT;*(2ly@ zwop>%AaHe2B`jLMl#;!)f_E2o{UFqRem8R$@0>x{yVBUn=f+O) zsn2h}dp7Lu&VS-_(>BN=p_n^i>#k@u&Z$kZ*qPEQ(-q82k}rvnWFV!KR314}0S2*h z1Ysaf&}+88qHR0pI4w+R%LqGbJXLjN-vet zuTdSd%FhfZ9SirfFe+TfrD+=+mK4j4Fypdgp`C_kAj~u%?Yiyi?2juJ*%t(ERcjKu0Cm(Df6soNF#^Z)Yb`hGA zg9<+w^61Q3BG;QBI}nkGfl5K(9)n0m(S88Y^M~1LjtE~$tKn`$-L4H`yGC&An;4R` z|3|L$_wU|mw&5JU3o|piwhRC@W;}RTWA6kk&3`9Ec*DMMVlL|ojFG>rvw-T8Q*)$` z0v4STjCm&q!sLYTtv16U`muCe&(>x)Oi~;-82`#K+=AjZuVAo-(I{rHd9I85=3Hg4 zgrGwDKv--aWYQ18QOowCY)O#hiFFm$g1};SQxleOS4O_0BaunK67;Ubf&@+>r8vK( z#eZDM@yh~^S9e=1FfMGlvfM;C+$)$Bi#%g4C1Z|_1q^g_s4Wl2D1*sxj}Io_LBG$j z=3KHS+2`p{!`RQwDxy;g_@1#3I;C@{4GujDe{FgP)9(!)F;kgzM3ofq$=*?i8bqzs z?1P9@Jp`mKO)Wfd;1>a*j?$_F2cb){?|+2-=A7(1fnFLtGa*yY%9+YC7V0a!H{>R> zKzF(dDbi@YWo(Q-+tP`hwCR(H`!u}QID!4T%YVS>hs}Qw5N61Kz`0RGe@N~*fo0lJ zQju#;z>^@k0jWezkv(3(z6mC#MN7Z2P6$@?TVsovRmfI^LNJ%~lcCv%LiM5Ld4Iw* zx1hM7%BEwLote>*@!?-A{uXcCiijxns>o~{`gm?;gL=?1BH)>Xq{5L{V1_g`(eZ$c zY^>pOms`Y5QEae-S4)KDnbGf|$<~`Ybh+v4J?pgJlP`=|WU_d-WtH!^|NVyqjVEG@ z+iF5@Y(}T%^5)Iusp;T?F}Zn@h=0l89xST*3E5_!dFSRB21PO1hsx$qP$eo`@`38~ z^usY5r*LV=4$83kUWCUVj-i2G8J1a=ulBUsfqhWZ@u(vX_69cjU%a$!qGaz`{%Egu z5K@Q-wLQ&V4ZUP!k90Wwpl6a4g#b|SZ{B2wa7f}_f+z$=S|ws^kjG^WxPQdexcC%w z2A3a93NxH6ic{Zo*|7@W1mMv1EJUks6zFw%q+-Y3v!ckI`1WXT?yhWa&$sOn;x`O@ zcnfF`%FrzMX~ozN+8ADi|IifVKs+mltg#TyNMy7UR!&dHu-Y!w3ciRB?(quZ*p^gS z8WZWFG=dqhfN3!_WE(nPbAK4~&rCR|af!HwirPONun90V=V$xpy?w^vXY$)5Uq8_hllCvigtr8y9M;X7RZZ!-u0Rvqd70b1sS6h2 zT}&jAd~4lv6@pRGRW_U z>TyKR(p;(^NzUeK9e-pp2OVj^`{3R z)F`feX?}{dbkcqE5_dNr$zQg+xqoVYMzR_6mz zzCMZ_$_>*}c+>DfP#W$5(1)_i!#qBZ&4-B3bMlwr^Z3+!&hdF;KJGoHUWSIk=obfX zzH`>67{1{sy&)()CxV&&f{|dKFpz@12N`kw8}nS^cD1V-`xcMM z%8weThUu!zsecY#?(uWVMa-RyC$roVob+%DD+vJJNkp^yf0upUnB;1;BvO zqVG!5cYjYL%2X>M|t{Ujx7MOZ*WFqXio^s3Cfpk<|mg zTr!;XsLYn{@OYpCw;6>y7H%CFBTH1V+YCd%;q&Drd zre}S$I4OjxjDu6b#+1;M_~)XATTx?FSR>A0u7B3BX$@I8sVF?o7G7M9CUZ)Y`4*Zi zuSMx?P*>>*Ple_;;d(Hnk}}5im25Eh`s$yWE?-}5)9-O1sLQ;13zKd$5>|A7q*o=X)KaNFc=S# zM)ufByqKpUHK_|Ht{Lg}*s?W5pKbihS38=7e?{$be+(~GuG}9Z4X?r+{xd!f-;(|{ z*h0#`W=2z(RXo5ecWU?=X%b4_bC72vNPq5-01&TlH&1F;+RZQeX}kFwH(shZ8a~7I z=1rM1V>vUqo-X@vPFk@1?kT~Ia5__802B!+y@6j$ET~N9*AmKoYXUjcX3X^Y`~`bO zcB9ITxCUIw8Gv#?XRu3VFcBQe+Ctlzs*SoD?k>`obu=qz6%{mW(VJCP!GY2-;C~`) z{RXP<^*$0TT}K9=iE--t%G7tk4TOsofa~f%{)!Z&3 zRv495&<0Rr<`>nn+Uv?%^IWYBsWog~6tD@XfDUF#-CfohsdduJhusTZ*O&}}os=m|`)$Ms3mSi$kveQFgj4?eIGbyT|b$n7V(M+<@)-clWfx)l1ga zkcEFItK6A;-cvJ02)95X;Fu85W*YVV--|}5pfOR<_*jZY(7!GkWSpTg!GDD-z=_g2 z(Z;keb**jFp!naC4k>af}Q^GTROc` zI_><=clseLbg52DBMWR=_)83+sd;Eekv*!RHNj<{9m5-HE?LuQ_Wf*j93(@B=4}e| zIN*438NxOSGS0W z!QpALs~A(hpi6*}%=)}Z2TvJAS67J6rl8B|2;r1$iq@(I+bR59%TM%vmp`f7yZnu| zv=9~v-?8LqwS=KYIa*;3tq6jmNwgw~RwU7i(r85)wBq`P%!w95sDI57YUdgwIyM%? zI2pVaSj*yP8xP&_vxCO>_}SG}{KO&Ixh_U-Q#5itu1V7YWcoCHS=%iEBWUaQ%6XLx$qD8fPMV+? z-iGg?(xa6c3<))nP*aeqi1nsm0Z|m2!WDSbv0+ofB~C(0-e_bk*K8S0$c7(e;jnSd zJkmfO?ptJko(&R90SmmYssO$&R{)EIi=XOUA{Ib6sP@UwLx23U3EoErjuslV8VjjL z|EH0)#>ltil1kwJ%BWF0!#lu}+5yqzra;o~-+i*!-X%QYlhJgvn(ulw{e=EGsGZ|g zWO}Qbr{2WUBBS+f?@>V{JXH> z>=4Lt3mwc=4}aa+33utpJ@03|x?%?`nKJD@fZcw%?w>H^Z9M82rTkz@*#J%o$#_m7 z>~V-67=8&pS}@JwqYWzqe00(@OA2TDZ$A1tI*l_`mCFrQd7P~b9?MYu-PLvlEMx`M&fjE}cQ0Ui`>Slu zFz}njvJKoHKzsQ5vQ>Peks>As8OZ9QpJPX{QaRS~F z#fh4I0v9m5XSk);d}>db(o)p_eeUagXGdfPz<)}XU}M1Wt&Kx#X7>llcx;C?BLZ_3 z+hEpGfT(#lebXb;U4Z4b!psy0vx{9oZoqZFc&ZzA2{-(8wKZhu zxpOL-zh%Yt$c-JCMv(b3w-i_&&3TbqUC0y+Et>f(f1=dKAi6aBOAczpvp(grCOqqD zu0=1RIZv{y%VfOTd2Qik>B{ow7QR|>zJIdW*iAIpp*ez!{;U@6ML--01TKW}ubToI z4~qs@nsUGZ6RqmGr@^(k!>(0rSRSFxhFy1$=v7#FYDWAj%)y5R7O<&pa)0~n zrK33pg~a+5=UCjUSG*Z=ze z{@?$5O@e#L!O59I%2XGC$8xFx{C{uhM!pu7sV*=Imi`tH|HuECZsuEInd$-|o|RU^ z_`m*_bUV)q%TyQe>~UOOA|g}9R*JmH7qR^qWUVOjR4KwH;?!P8JI_N=m`=lJcy&b? z>g;%~wv>YG0yogEI9=mGJd_-6Z-z>@j8%^%XOMgMFQNATq zXM=;q8P=q>sm{%tH=>^I)B|Xci02EmS5EE`I1TXJMH{wqfOznEFFbL@btOfeY+AEQ zuv0*$RL?_%K2Uoe%AUKd=M8!L6sq+kR!SlzFd+)NW1tSnVco|@q+uJFpeCHCMxeT1 zBp}8xn7at3?)vD&DZ4zV=zsE6xhbhw2x4}`yoPf z@fs(GK{;jcAU{i+9BH;t1{TwR62zvIaX4iNbKvW)ff?Rr=TvDz^nX~O|FIX4$r!*< z3RSrX5fdZ|_o4$dx6y(6{D5VCaI{44S&C9eD9>LUpyIEu|0^*2 z@_B)PUYodP@Pn!+u77NASaLu&HibQW0x0txqofEW`c z7WxVf|Di#YsFTczgmt|U?GFLSc*|Pk4ynKq_c}9fII#6BvX=pYY{10bFfZi~N^!Daml&Gf4m+xit&_A6xl%I<@qk0I-0SkcGg z-M6yLZtrJqnZ3*`vzQ!h>!(xMPp71xnf*SImbA}KMW3@r^*B@T!ua$^m$MDdqJzwA z6H|v?({d!lg?})|M%*g%BX@Dl&d=V(Ej~w_B^>dDWLNqJCby$OLMM#=7E2Cja(98@o0;qv>a}$DYM5Du1k8Rv64^R+7z%1DX-!FtHal zJDQ4ynd6|DHQ#vy#mmzD)2Mveipd-zwEDwr&}DFgW?mOV4g3qH{B?t2@o5k<(q$lg z`WM0jNjD@+I(1o=eL@kMSBo}o_BQBva7ES%MLwB_sHVXajR=yr#G-aamthQH${ecl zG7H`3%{e7SCa09JRR%)L^H*DUx7_)@0Or z28*EfC)GhTCh##0!!440qFMdX;C;iEovsGc2(!?4j3~x-eG2qpu{jl$!Z+O?(v+4q zIzhZ5Gujk+KLb=W(u3YkaRqIq|YL_SMKLB8x`BkZdGu>P)*!ea>SFlsT)fti)|KY z!jmM>fG4GaT0A)oG-sUao@&lPfKib&7kq8?KO6|uswD>&O{Ff&emhiedBwB3 zXMd~v9JaE;#Ds8lD+me51Le{ZK6BqE{bD6TG1|0*%TFX(zJq*mm}-UW!u-P&RI(v+ z4^vQ#vFQ!91~`X$^s5gsbnt5kF4xRv#*wwH8A>fDm;@S8Wji z1T6UDwc1r6%y)%=b;xp}^m_lwb+dgRTz{{11^?;K;Gn=+n-lo4#D8eeTb=%z8`fcy z{vJb6Oj&LMdlraR(#Ig`2*8~4{S#v~NIBc?-1KtLtjKQ5aqbgROQ<5N;|2A=rf#T7QdV zG^@~ORvd$@Iy3aF8M~mHW%EW6yAhigAQMAGnzQ{A%A!lizSmNP0)Dm4$Ti@d-t<@S(=jcQ3=Ch5JaX~ z6d!D`<7T%rBLV<|XY);k5<L_uc;heJf{j@ zVU?=zWqXB-RD~DUIDdapzIUa!FZUR8oItdNzlPl1&gcHA_{oNH0XBE(y(!tfe*aE* zq~mM3QGIp|e4kwl-;Km~vlG5nC&=Ub@*4QQycWKrPQdZS&#m}gcG`J-zg4si=8ij9 zjZ0|=W|{FARDVJmd|KP)TYtJKqIl8N=%cq0JA#(}+)<__6cpgQiPPaqEwlVam1}ENQnqa+$I#{-X|gRI}wiYOfG+bLl3evqa6iN zFf+dLOtu!6YM-P9YJYL5&PiH|7MJRtq(x_OsiTwhB9SYVb?XP;yCuYA5TindvtZKg zJKO>qeY?f;;_RgcKeqjNFBoIEy=WMOHay&5&*t&EzW31b|2u|4L=}tSl#f_TI?l`_WJb!ZX01g;yvFoo7=^H|6 z6#tv&{5L?Kx#(QD2ZwRk?%0juJuvr8^`XA^JW|lI_7;}sj_9v@H5pLCHlIT4XSKcB zIlV_?hTk?f{I zuh{H=%hd);Nyzz{Jz$TnU~d_v>@CCb|DZpxxPM|3$BC%~ewdg_6i10H6;6&-S793d z^4B^H3pbYx-cb?WQ5oLCRaC)PcocUkJc{K#Uixw{$X*Uw*~`JcDcbF_cB@>Dqw$tA zg+XVoo+&{2tDPw%<4Ol78{m_@ebE1P&UX-A3>0NJVFu{Ism0AniQe1`%s>Wyq4+GR zI)5&_Li$DsW?hvfcyvqvm2eYNXsSom@X#2WSOicQo{l*RWDV^N&EYl_Y{T1v0+0F$ zfINu;G}X%yQjE2q^=up?z!SE8s+K01h!-a!xBZ4bMOgt<~ zq$LlFO7g^n1{yT1)5blBG_ENvBQ6A~1J)PB_e3L;1{n>D7nMI$(hzle7M=n_6@Ma1 zCzcNHYA4WK!U}V`k-q@}0VqRF37%0EVfKPQ%*L;wk?8OrNTWlopnnGp9Y!NT)@#s6 zfXQC)3UjaDHIuAgHT*8hL!%5|vl?=c(XO4hH|GW_48WdNs& zCB90_@N)}zj7vPO;6^{AKa_X*8h?v-|N4vfxK!jQF)f9WnlG%=T%pbq31A!S_HRxN z(10NvqPDgVao`=~%v00q>9Sl-)d?w!g6)7%ib_fz?p%_>Jlq-PE+w(u2qABSxpPSh z^KfUFTS~^FN4rrqSAGi}Vu8tS)X0_R`1gs#?VEj+xE+u$M@+IPiBL~JXn!_nYQXh0%@sbc<=KCYGKK6C}m9@J9xUFM5$Q`xgxEI2MGXz(3i_S}}< zM}j?CSq+2l6>|r$*%=L1n(FPt=SZ{RVI7#md$f1FXN8lfruZT9U4Sij0ioOlL~S3-R|@bH)_4zWE3oh0#*4 zPZhZ_el)>8uTK@Zg@37y(Ie|{h<^ylZj%(Brua0)SelxbE9GTNO-%X?&)`wdEPVE` z=+#3+aBfm)2dhZaW)je?g^rKomEb}iE*wIW6_D} zPF-EI9vUmt6J1@Ou6S23GB37l%(3jug>3E?yb^6(s$IQMx_>&|(p9iZyO3Q41WFiv z@^8xMR_Bs3I^auq_)PH$Rj%Ka?@;+x;{*r#IXBP%QUwrCm^8IPg9n@s@RT96(pOq3 zgXSpTNp&kjY^Bdy!N>3-dGj+?8Y=@@*42W>JZx;7kIylx9^j**0Y2LMnGqIad8G3v zIxqVy9_XU!Xn)7XjV2DMi2qowlNnsaIOk`)1Qe$T$USv z5XlFT6UJgfdT>KaUx-a;$pw*e?g2er@budXOrikLMP(uj;Js*3p`L;xsKP^#v62Or zB||+qTz+qq@?wrE3tf5wjEtFSBVJJ%;&WNxDu|CtrhntCWIE0dXQ@sUAU+~`V@k;v z?FBjel-boTS7oFyZ=AVV3>G}BOi+|HW`081JQ=bqDavBi`q{jp8xHv;=b|{1RUKz@ z`MoU5UzX+5>`69z5?UkI=CRa9k&F$jygAFAEYdUj^J@04^Oo(OU{{=CBo*$D6n*n3(~`Y<@#!kp`PSf`&Pic66} zqlQn%SGP-?797B(!c!!GpRl74LGT(UoPaJR3xAITA(ygs9v$?HHvH7e8Z+rcd-8XF zGN}dYt&i(%tgCkd>+*>}I9x^1rTgE%6CoQBa&rh(JMF1RWjEzlMj=8J!W;^fVNeU^ z#!8tRWhc_B%!#zH5m*s!YDoX!mPp|a!flblEekp#g_{<1X$ttbAN7?`-$y(>qUqew z;D1=BA)T8t{`Vb`lnKl#JFGg>*f?yJiB?4!yob;<++C@X1T{H;U0WTO@%h2>S71|EX;sL-9SU)HU=9>C{NtB z@OaJt#}Jw68IE#*x1sj=0gsbH=RFb8$7LCz8(7 z>#Q~)vsT$G84z!f%MtJ^(((SfGU0jZAxt;l+dQOA4y znIo$c_M3l*N32Um-Zo|7p8O;lG2aV>rh8^fr+y4m&K#64cg2nGmN4)UyeN{HE`KUM zetinY+UOLVk9j3a76@)t9kJF5D7u^ZG`FpMw-fX!6$wdnaOQt(21ZIfN=G?x~6^4x(VF$h*CLqAb>gjP!cZxvOFDcf6e|Wr3SkDL0<6IV7uK0RAt=(oBqr39n-> zIiF5WM~qKr#@tL2ZD~vpGCTG)tVEl$?b*JNrSoPb4pJq}(4 zOFMjMMK;*A1L!sQ1aiCeDSw!8vlx~G9Xx_*UoPlQ>!Kc|Hd@@6orO!G^)@=g;j*yN z6*PKD8l}@}Wo~-==1LyJ+%K%P54G+?EhzI5qIK?zV4^c~9cdp0NHCj_^!Z>sEQI(0 zAU@=se+&>mi1?of@v+gA5J^tEt)H6nn>XjDCX_p74LmpA6gKc28h?1h8+Z*3JU1v9 z*1&6{m1^K_Q*GexkuFW`iyC+Z4ZP(IJb(sX859g_;DOOjHPCFOy3lO#Cf*y53Y&Nj zO+4aFyn`m*8w?O@s^q;hEk6LAc=3naf2ov-67r2DMFKPc3}SCg9nWA%8Gk5EHoff@iqR8!Vdd zDFiFB86UKCMq(cxfK3G`dAp+`&Gc8I7E#UiaaOYp=aw6?C_~S)ne$LQUGOHGH?zYD zJE{AS&9mlnn>*(}%x02A_Hvrk!09_BxMY<+13X4nu{+10lI3DTZQ2{L(WQg zSi1KG%PqY;Kz~<~KzMsoCvsT()nQHrv6}%#J^4vr8SSw>6DEkygL4V zmaiqhsq1{jJo+}q`}zpe^7ew9*|1pD0iRH|S9y26y?@H*QbiM+SO6w;r#Pj@4nDo^ z4)LQ!Z9AsQn`HtsF;pxF$3e(~aVRleSx%G+)A9NG7KNWnHOF*yQYL#~W3U(4pZqq0 z9F`K~Finsr*C)u6pC`ztzndUgI^1G(IAFcM#d|NBzh>t@{e0)2mUZ56Q{68z>_vZe zhsRgDWq+rq0q?au&zC{n9Pj}H3i%R?YtrE9_0B!NTzk;@pt_kswMD==+0Rh)zHtNY za7w4j?I=G5P64liwdi<$y zywz>i9--ezlU}p%mES~BYrHvum`w-6J+T_9>wstfbHWr#RSCN#SN4}aajYZSFw??%|u9WotihqZ&qpr;3a;<+{U zP&Dc2`n|}EVA`Az2;!Q{Ha|I}ANQOS=b%=v9k|l`l*m^qW@Km@*um=fFrqJF)fBv? zkh()dMCvj8Yfcg^n`S5p3I4n3#579zh|M%~Y@uarBfjd-Pzj@PU$N8dzELX;Xvk`f_0Quru z45xyVif$LJ1(Q;LW$yw#mq!V7y{w6oBHjFKCI}9i6=$>H{T`WZdzt<1a`#AgOEt`$ z<-tR8lfvtRQ?uT^mv~z1R?OX-$$x<9w_7KesKtkTL(DR?hG}Xt;U6usy4*W#owW3W zrf4k=K483~JO|e1!LoKB>r$uTe6!M zN;jJ)P2SDnRvg|YF+<`)ATcgLg3Yj7qeQTu)}(=Dhaf+69$#}@-6V!Wp?^Lp1+Bo- zWz1TkS??YDTN)!oroJUtZjSCLT%R|#*xndWlX@(alMvS!;AlRh zn}?cz%WUbl{0w1nKjR{0{X>&4v-#q(u&o3-T~?#Z%pa-Qc`3Hd!#GEOY>ClivP&a; z2u9^ZF(?^GFJ-^>R3ZofTYp;SQevGrSQ`6Kx-YNS)XAzBExwh$Gz&^!!f8&ReW-qQ-Y*q#-|?vPStUPcwX==;O0 z-@U67yk*3wD!RmsF0qQWZ!v*N9%IVy!B2rw5&T1<C}Hn;+Byr*qrA zWs^C6+msN<974+s3lnyvk z1a4_Ov@#*f0W6`1@;5L6uB=9R@q<+H1IBP4w)QV8qy8J5^nI@3k@v}A23d+{g*o) z+2g&ZulkQa{D0HmBmd1qd+0_4$e!a)ocZ3E?2h8zKmGr*{gFHVr~gmiiV0GKB)0b! z_OQJ-4j~vMxfW2-RFaCfKtkT8}gYXYd5xPb`e^QiW*?2BN7Uta?c4!z&7MJ_)VKLk0k= zQEIId7IR(Uk162~I0!OwX?7~jgS1qNi=|colgQougg<5zno6MwR_jrFfLWr|KKT&Q zaW4)abbsq~FLKB}JS2k@OhRjRviIM$gYcmC-!=V*0%VqJ+a@V)F2!a6g;fOB!2dlZ zVbES`7YUpUrs@xQ@&^97M7}D@zF(dF5&rp5n*C5@Gs{vusRfP{{x@xd?5)ZF*xz&U zKp6#fne9(V5*`ECB-LcZlLrahxH)WfGoFja1Ai54fP-1%^RAX^A|{!E(K6luyc_tg zSE{W!)1<`AEoSL%6eW_k_&N2iyXy&fPk*h^{1P%{?fuAO*4|1J3(^D)@1?M+4c;f{ z`EMwxLr8^dw-A4hu?I#;Wxu-eq@?nq)45io%PsXLd2(B1Fdt-xP;gaD^s{BZSvJ1! z;SadaG>k{;*!sH+X-xD^5Ir?qmSJ2QIn3TwV0M|qY)PPgCYj%#WUH-64t*RkU4LUl zz;C6zM)#Zj)q@dScmKB_)3Qo%ldZ~i5@}_5*f@x)xDbw(BcPt7` zI_)xO^AxnGlfsXh2;%jpr^$XBvS)_G-H_OE<23OZ@TYK@?oA)SDj#T__38XCZrjH56_aw0}EKG2RMRB`dG&e1&TN)SB6^;KfL7VTYisn&K>+ zv~f@~_Rvv=r%rilyq?=U(c_6e0mc(&A~Bf_?C|aQ6}*rc@ob-Gd!uQL2=JVM=IAwn zzGFqs!(e3R$3xOU&rQbL;4=GnrHF`a)e#=!Nx-0Xx?3Hl{oP35UmntJ1g zLJf)|JlcTWW_4zw&P;*ii&Q@aDM&-2Tu;r$2o-|%aoH?PKnjV1etVoB?I)fF(PWll zw9mePz`}pN75sx4@!9b?`G4mQ{B!sGT(mG(QAt}TBPwKa-cXNg;O>+8#j}8?4Hnb` zW2iy$nEvtTp9TH11c&mr1>1;;+5?1b<1##sug!ruAEQ zNN0G~9g;<;=uw1-7PAmpcS+XWb7O&7-DV3<&iC*z%kAkbMxRZJuaOWmOy6Pi#06V; zJiqF(z?YIgf1M=>?KbCM^Yn%_Oi(^AbpI>{4O%|AXVr?Oh^ z&Ph4R)pB=FD(Fwk@qg%nbPxPB0kZ=(<(Bme%9CF_E#={DK)gS~yv&%bdhvKQil=n( za7XaS@z}LPF2={53o76f-@Q!i=d^&#pYVLKwm3XxZHh}_mV$x&<;uiTX(WHSG_m9X zJ%Ny`6H6Z^Q5?*kxVATnYeM354C!2-n#ASsGg z8Kg)-x?7TdQIbB*r}MVGg0|g2lf)^>^Lbt_Ctx{(Lf2pVUTj(VUKB2UNN-%4@QW>2 z6OlSmQXP@%D50HOFT;el90qIh3~4 zwz7ITU5MrMS$}>x&8?oLODO(h2bz8^U{x%fi|q?1{z6tSYMcuHzTTl3WPinig&Lv=l~s@AhXYJK{;)B1!x ztXiLvf?W{LTa@jPmL(gnRZ04~Bz;qoZm~5jxBd*&_2=tPtv_G4tUq51*PmEyjbdfP zl!(+sNq=34)P<6|6sb!kbtO_)O6ppqu9eh{NZlx@mROan?5Z?iE6hNyFz!OH&zzD? z_t*h z%S0(lT|{-A1y^LtGl29NNLmpsF8i+U#x)W8aesx!Flfmt>#nHYJ{DXG}bDD-0D?sWlgz`*zM^bDPC5iB`pByc(dh1GU7_CAi-Ay1?9K| z-*jAa!sKizpc0f~KS0`Eo}`VG^38s5C=@Y|!rDgY#uUbwwS-};;O)(!(vBzE@pA1f z)OMEnb|wtQlKE$_b|!ZGA*Ov=)NQ4$iD+w*Yip#oHOsd(XE0_I#*DQU$+ifCjp`$% zxw(I6Zmu@RZPQjDYh8BvLILmQ~&p9K7A+x=cnv<>QZ zdnq2@&Z6}rvqWT`3|3Kn7V-x+j<+lno%;|BUIpE19E~$6dizqs~=|y{zgSV+hNx5p2Y~kR9a&Ytu)#?rH zG!;*4ynD|G-HkG0R%dfPZ5M%*>lCG9LL1yRCd$OY3h78N{`c=bi_j}V!u;vMdC^Ye z=a!G3yJh@bI)2Wt7{3m4bYvm~R6&2fNhRW7!!f#mPr3%HgX+-=OiWyJP!UMoVS`GM zAS)wZAu2~%ncD5L!Jq9k_*H<~`RUr(Z70*Y{!S+O6~oPz_XW~;0>cTRiTF;I?ko8F zDq`?y=|Ohzm&)L;t~>ZkipiB{^lGO;<&Cbhof&33vsOB@De6q6P8cgduF`)QrqOM3 zo%wwlov&zg=%6h%I=5J(WBf}ANi{n6_iJ=^xkhJinP4`ZV8P$7(W$zZ+ii$FPR=8m z?r}mp3X*VWM>T1qe9@Kr99Jkpt|4Kj50Nm19U_UUS3N{RRIfe>X@h^es$-Wgl{*ft zwWzcp3xH`w!3qnqd8%NAVc36Vs$hkwS&}NaDzf>a@(n}Li71A#91A~!w>2o^+#eF= zA>5;&SYVPy507F|sKO*|okDM{7F2^CgHQWH22PPa@i1*n7-_?0iy3gEOXis-k+dto z+Sdm=?sRgo9w<8j;7|fKTqPcc1Z^vz?KJ3%6vk@k-iU)$q9sa@z5;*JPlF6Ah~QkG z2L(U9jTc2}4<4VySsckr&z!6hUOHdB#6|I3tAg8=4|(@gPaZn)GZhS7IPb zz?obwe<<>);|l-p5IcXNrqmAjDJ?ypJ*fSYxj~I#l)H^W=Ajk34eg4YgD{;8$dp_F zn5sJPn%_W)$AAC!)wHFoD@}D}O>nvDFT|S36Ig^JaWId`gAK-obs&f~{TK^bKO=sWW|40a_XA7_$_1UEx5+h zI6r%Sw5ewZtJS^d9rOjlLonF zar0&^LSbAZU0Baya>tpuJ^2+|(G*L_{U8n=nX_zCHZeF5_;IW{j9=D}_$$ZMFCWt# z_wGP2GHj(Yb;5tTvXqRyqAab9GWJu<$=Pq2lOu-MwA&J1EbvLDV5?}x(M%8jWi#%< zzx|Ax;|f|lI&5}adB)ARub?eC2XZMj0WaZ0v}SI9Q5knR7Z`MSo@ z=~S(d-K);m_4XCAleG!XOxX3`KElmbPe#;x#0}kGunuas`@>*{&dPRuP8Mt35W)%v z6V0e>a~ywZ!$@-tcsT)s2$sdvvmp$q3cq#`F&A{J+abtIBJ_wC7KEJ7QhJ}EL4 zTMU#I;q5R7Uua2siP;z4z(aUowy*abf(bC&srqODGn@zaLCZH{}&N?!{ zjyN=bh(BHkuhS9!mgNBN)C|k>KAeimy3j>-!h(M_xFwlHca9>||zw5ai!;9;9%W;c+T2|oU2 zHfVvw&MTM}`Rj%wIW2;sY0+%t7-ufq2>7Jv(SQLGA+fus=q;rO|0O06;jv_xg~d}z z>=@?Ru{jn@A6|759T!caI~jOam_$+0B)Wf_YxWN1otXAiu*}5VcceWZb`xVOARkRA z`^?Mhc^*5(vP>XW0b_3z&YgyYuw zj}iGZ(0_2KD|2LAP#7C?g)lY>j7xKaFfQw!Mqpf!%9o5s6YSdsKdnHrz~j;CAS!sr%Y|gLPk-&wJ0!S7HTx3-w+xDYl?90i+ndRQ%R>oO`Kw?r5*!o#G!V z@5tJf9CVkNSIRn3R=6z{;Wkr++cJMUf%0OY$rPEDgpVMwqYv1n298aC(M$a@AEb!+ zo;$ripzW=3anRx=#L5VD&K~XbfTR8cLn_4tX6VKvQ%YSNnMcaVyfYsmJHDsx@MrJp zGZ=t#^POPm&!+4b*8i;3e`0=S_0cu{>`8q{>pu}1z#0ki9{l^$3WhxNNU(nk{Lo`9 zhH@8$yg(ywZd1uWvEXqK!WMeYGaKxT%cIg!mS4fZgQgEyh2_iV$ zU&uOkIqU3r9lzOfys{A|yIm>O#pjjDs1Pv4jz~KpP452|&bee=yOfB{aj2tgLYz%V zvI&c9!ZMq%$|kHS5wZe^W`_7L6F~3(?FG;WGGIaXxLg3uyT?}*Kp%g$37`OAs>eWY zvd2IlehVM*t+Lxa7BPO{Q{5`lgeaR3W4KLzTy%kH%H=6fFx}MUse{Sv@-$g;3#6%R z-;5={TUb5)`JWSh`l0!&qC zJIjpFev+GNFtOxBqccpIe!wg|*1a^w6BCU)Ya)jyc>3gY+FF0@{o@aBKfQnWxc}t- z!;f#@f2$cwu`#-Xhc(F2ERuJuXL(w%G|TuQuwPY->=R)KBBp0TC#FK?1*8bs^9i;4 za*(s@G0UfI%(7OQBIQ4I=>@MT!uVELbdly$q zRN^~#_zHiQDgJ*~VTq?W*^5bs@0*FG>u!b*usy*CU%()?0?y!ieDGx(A9!qJY4Dz3 zaN+mj=P&$T{2DGukP9k>##G!t-@Ufbc(LWg=7kVUSq@pGIOG{h^l}clxE_Z*+r}YF zl|x>l1T075{`HV}xebYxio`b*S5}p{vaZUe-?ob@E6snV)*{2E-+m37PP*1MHvK4s zjCE}`{f2_9n5Zza-+1T_Xv2`rWn`MAaO_ueciqK!bN~UdPmghpIiGf`H1mFCHYexAX|0TqmXfE4w#+pZEp+7|C zH*6ym)v$l5&#bA;!cH$Gtspg>Jki#1Gl~xqz=#j;|4=G5)mB)`8|9)NYTg*s5Pd5D%Yj&J2pymxUIAUCGlB zFj6!Mj%LY=xgqLTSu`V^L&rB&7ur4;npLe#Kqh~?xCxgo-Oz+|>kv)ZKNK`|c19tn zFR8Weq?g9j)5&jC=Mh3cdK%1afjjION~tZI-}_iR5dNK2|5FEKTy2(wAu@a-~VWQo6!P=0lM9qio=89FSb#Y>%g= zV`Q^LnC>$6XgeQbJK%}bSB59gX)+7<2H0+im5s=i#mYt;%K~AyD?)+h^CZ&g7~7(N z*7z=az@xQ62d*EjjnuA;)+SCLdb#<-;&*?xmH3@J)l*VuB6UVn)!3bQY08M9gu@0B zDB-Z%GO+esK$EPWR8RI<=SV47G1>i8!HUTqqzYC{_IU~5xQSl$1WJri-h%*=jDHLJawr0KQ&bSEko5W94c1~m75)^3pP}=XKK!r zxTI7DuD29$ zR*}}}G#iauvChLEIs{G(w&A&lxLok+K(a=sE`P(xF{2)P?Y>9j5Dk}F!*G8-T`0s*v<4frKb4A?^1i>B;IDC^xWi zhx%Y(V-Q9Q8v|Q?Xp9WOIMRPYv`)mARxX;Fj&^5`Vt1Ah+B;}d2-fv(6V2;`x<@{G ziMft6%TU_#kdgY}wNoEy2@S(FG*^K}c3@+etAx$S(hcH(j5Amq=a^%x8w>MOM24Px zEzLz8u6HNoFMm_w)SPgh8JWx8l3MHvg3Qc@F*k>@J9FBd*?~ESjv#;TXQT6;2akZw zZV!P1gmyUd7(0z_n4}TTAEcKaNE4f|A{~__XcC!GkpuD)Pg2a7O;DQ}sTTT3^q7|f z6V-o3q>)J4xH_f{!6gZaE|;1ZUKw26L5O_?;?V5lXpK#)XPM&^WjwF~Me+{W61$|R z0d)b;L;*B1Cundus?UGOpz7bhFUg3GBx*BrX@Fs`LSY)X&lpfT8&h)tdKvjzL-gOK zHr08Y3DaClf~`nbE=+|jjE%X7G|CMZI=kduonCOu-rl8|7@M=zxp`@<%$0Z!_P)94 z`Sr`THZ|^pwekHQ7^QsQT=(|RymNE#aFgrxF_TYJ+c@rHTO17!9r;VT+g2fjHyE#cxEoiq`L^d5c$nF;T%h)|Q zH7(BWWajk(Gf*5`9I`nF!<#YrvdB1r9m#<3$gLrfk6@@W02|S<0d_%T6d8N>342?# z2OhMIiwKqW2AF^OFOW4nj>6*9Tyhj9nV0rPrhhg$B)`s$8GN4iB4K1d7ya5NECE1) zH5kzSQ**$9PR;$^K7Bf`NA17udW604p##RqVEr;?y4tUGre9OiuL1utAwQOxMPUMq zLg|hIfO2Pn0Y9+APv)~AU|g!~kyaM5rmy_yDPU9+KB|AAVTsf(1Pf9V8M@IJkp`o} zl?VWZ>;VEL=8r`sz9XU>HclcDqgIrnj1!2kw9S)*@E!eS(?T|aa&;x}Y~#dYj{zyA zI1kd~AptcM5oASsD<}jb{}RM$1_EXh{X~6}eqr`+BS}I^B(r&lZ?(@{Ut1VWF?aj7 z#s|)=@K%3-)Y^x=TY7lXyN+Z2xH~C0$jESB@)XMsQe_v#W#^zg9MxNQ+RZy%A{;2n zmZ&;_!<$T1MHN`!SaA*zZ_zVRG^pO%4!c98m5R;sNEDo26P-UAWK<6&j0&u#sm7|# z>qNozE?7a7YXzf&rv48xb==c>_g?3gd)Pc_A9jD(!{6&_Jfl?e6?n#?;HnhQ)~)BT zjL*87eh9wK+_!2(mb7}KMYPJ>P4YK2)iKv}jds0z%cW1q<2)e$dj00@S3^ywpQ7!G z-V6YkC|J>(p(uEpO{B8~2l zVd#Ibj%uPrs2_^&NY`&42^1IFtoaB~#~Z{1QD>QDlxKq*YMRDn_?3SL%= zq)n<|7I#*%At9CHW_4`^QUz`UQSd$#>}2n^(b10Ghi!Vqj}&*_D6p_MYcfK8YJVf9oER^HJIDJR(tyRV~rb1 z+PFU<|Ki&Vq=b*>%x@KoQyZ`5NM2<7BO=zd*nCBLUtf%_5}a3N{T^e|NB?1i^6c^b zM>T$XTQVvSmh|QH|FEHWhkAltAbimBeR+*2W&m>CIWAOFs6ex|SQcG%ir%h5JJ^5g zwEhHIFYM4L7$!5@kL$zGwqpCSXTvY8HnjYO6=Bo>Up*0f_VM+rhnUBT-t(z_031wA z?D!!WJbOg|v_>`9M%ij*TJb$$1se`7S=rX3dp12}bL;fAA*9F>nFZZ*F9>Z*xn(W6<!&ki9n;+t4e*5iOvZYmbKdbjo zN0mlOmC3Fu4GcNJjn80?p;xONcCi5cE8eAe#)zOdr|0v*cXOqLwKLJkTq$(^+(IKL zLzfFp%Y`m#3e7VCgcwQ85bVqls2TonYF&ys!e@Z@m8;Z9gn4T%Uj~1XD!s?PQn+|t zy=i5^8W#qsICjobU~s9{|j6pyjp^0%uBA?;PN9SzcBN%tG2`NlG13!8 zkM5NbN37;T#C&Ch(3^|1ZF8{%m(+BolzF9OHbjGya)TvpKuZ~ME_`}QU`tBpp!GA(^C_ly?eN zS`hl!a$MJ2M$yU(;Q_4k7#TCkIvEu@DeW)>&A~6GgH#Wnm_VgW0O)W7e9VW$$o4Z| zLBVTlOW4v|%X)wAer7Cl>wadauy9s~B*n8jSjc}USZUB(P=(PK0z()$|6AjdB5rPL z293trnQM8+45?G{Fn;YVq@B?-C^D3HqRPzO_{hix%u*DslVt#=?C-fRB`5!b`G3y? z*RwXv3R_#H$wih;c4qI$^?YfUz2V=<^)Kgk(V+#G7>R!_UnLFlIk@JR1!*wnx-ntk zjUZ`|`xUS&nKsg>aZMV2gViWNI=rUFG$Kj(_q34^a+7f2WW8ENF=oDgXgq*aXk0^O z35h$6PfLP?!lI8OxZl92fFJ~}mqdVJdb~!CA&t3zgC0AtuG19jqrpfuNrmS4ykv)S zBar(BH*A0BSJ~-Cs?sAyB*10PohFUIyf6ZHK{$=>z=xy`<*P8bp~C9t7}}&w=E4Y< z3#d7I-TCJD7*tSH9Ad==_&%V~>AwBWHU8!$MU@1}-FIPwA>e9Xz_=3dbA)RFu>^PL z+*Zpk8r0}cnACF~a#2Fx!?v8iZ_D|ovJt#Ei!FbKc0D(Ifk4965X5^{lJDGAl|+wq z;pr5SfzNhed^KtOzB!dM9CQnRMkzjC4eiXm-y$lIl(&iUHdEe~%G<5-cBj0}mA9$# zcB8zll((14+qLrcRe5_*-tLvRKb5y{%G)dD?Thkup}f6O-hPF*s5|rixyHADC~u$W zF7$t)_bC!?YW^0`K`CxK;~V67%)S}*UY?%V8~9v!It5bU&pZF%bYK zOR(p|InxDy_@HVgaj;6MaK}>p2C9X$5rsslG4X~T>~B+- z_GyUxYdzbp5z+jSaaGFyEsAa+x7dHNah2u1(o6d_ig|CMbwZlBBS^XD_e-Q;8_^@;NXY>Jm(Gnxz zHp+!D%lDw8Q(pw-M31okF4%w6zovWsq4gH@?C#(|D}p5H!;-*vkbp@PyNwXU*Qm)3 ze}aM0@mDJlTyGY^a;kk`4FBFZ_mU;JdLP*qHf7RM?38=WHcx)`KGMByKfy2G+xGdy z`$_C=`{aEdefBOS zR?xY+)knXue?;ci`dyH4N-tTnh91T0;YroQm*iIzyKmMBeFR6ZAj>+cHU;BQapH>=3CY}2>~ z?f(hqP+Z3`4ZN9dxyF{b&d@Z11U%38?|ypcLM8n16ZGffI$f>Pgz`%{y_D>>mE0E( z$=iGP1s4Aqv_X80&oO-xZSM38oS^2PEd+hDh~jmEpc8-kBzn`sZ*MHi!cRDjhHV9O zeGOKx$vg-{z)7C;Hk{IT(^y2y>BsOlf4L@Z-!X3d`%lsG0h@}CB%X-ZAo)0(ErXC` z6AQdJ82X>$^$k7E`4Jkr^l9CQ(Q`m|IC-FZ`(k0rHtCQy*(rl1NgE+EBc-v^`Qd%> zE=_$BTt|OQyvs57=Hp;KC$aY!Bp;%bd||KHF`TG(H6*c(f%Dkn8PC0a43)RpECY&BJo`aOmOQjd0k63B6z6(zl{P~#OMVZAE@%|x3$_};rLf-H)7*q?m$E+12<6Od;bx0Kp| z?KVbLBF{US05xM1y|&mc9bT~U5$niO)e^aR9n;E)EA`A#dSVSmX{)6xjqI$}$wH&} zw#I)zUEm*f>|&9v7eI@i|;wV z=P~g_BUsg<1+3l?CdZ@xRi4rSLG!Rz$pP7iXv+*_JbKhTXn1{4d)G zHyehgg+SAi#H-)^Tf!Vz*4lvCu!VICemsJ}V3=dE3WEC*JdfytP6*HmIk86s$b^5F z7MDvS)Y-Zu;{tsJl)U20bnGSYhn@||N+Cx<298J55~wE0t67w*N$578%cQy*o(~Xv z7#jh@Sqh%(1Zgb6-LsbdUj)6nc7UfnfCLXUs~zdBH57RmjTYEWe}n&JRK1q31IW}Y zpZOmZm9II<+E8R0Je-7St6&n*B|LvXJU3G06}_h?o(SUbYmmyHSZ#cgnci5BSE};p zlT@ew;s@aeJmD!ra&G~@i8WOfx-*A|4wW;WqFy?(r7+3{UoJcGZ&pk48On!|iBCOe zNV;eE$Bii|9UKH5FpWX}L_tEBpvm7o`6D}oP|a+3x+6YB9IoLn0XbTr0GoeN0Aa$b z;_#!MjSPWN-bO!x2W{YzU=$)r*to}?N9C6qUx8%4U98;jwnkm!}bwqdIaR?mM9Uj#U-o$5yc&cqz8jfJPhCmpkUW`dP_r~y&H%fSIn zv(D^8k|#SX*|E>Sq?14N*oS|f10QVuB_EZ;4&Ot*itaShhH?#u57mMXQxSjL$Et>; z%OhAQ7Kc&fy^WS&_{-oM$y8qUZC|!8WvJ(T+1@U; zL|Lvbm04Stl1-IB)nchw5ABt*FwX53wD*4^V0P6Zfqv8!_`PvPp+A2nlVAxZVpKW6 z`Byd9`7C-~HCZR1oA8829v_{KY4>W1mIo0myy|9mW^|?&ZL z8;X%I6hjc6`O-^%Pt1Q6e1MW~qhQ*=#Sd z%fhy86}+@mogV4ra~xoQE{G34y_8k}rhXj2(ch;hoG~f-cd38$QgqHq>rDUI)o^LgrQmVuVis!AoLGD%g5q*R^+Mt3bM)k-O4Fj4^GC839f69DTZ zyE}&t>Z34Z#JJ*nv?QHnG}oGZBVq$QWYRR!c9N{#+ zha)a+$22Uv5B~AhMMKdM~F7@AmcNnK4B83qPeTjdUb_WcE3O@0|+I{LlD}s~cGE4tC ziqbKi=o_J#nWev3$0I666=+Bu!>~xNUY_M2U?-g^Z(gB#S1RgLOj_M>5yFrlSjyN7 z%84y&jGLxQ$@bVI70Gfv&}Kt!M5zVE%$_s423PItraG5W9wJ0V7u3yy;gm<>tS}4} z=x~2kbee{e;Xj7FwpD=@!D_dH)!1SH@-3ALO#1__sO`tCIBs`WrcOkvMY@M+?kBVT zQ@O=REuf3_jkwQtQhX0n@rX@&ljrwB!AGod=t^XBwW2~AKq^~YL#vgUCv=aI?3N{2 z^ZEH#rN?xBf9)y#HGEI$DefDRdt~q^8vGH$)3z2Nh4cV1%5DVjnVJ)^6Z zch_DUla@Dc`^MV4g9_(7&(ynWPf#QfVP{c{OpPhXDAPR4(=+?41z({oJoDgAPk;&l zY~o$HWyn(#gj+ee?R8AEdw6SO zvAT*MXzT35@&~Xx-?TUKh?X$269?b}oI zp|REy<~^%t>Q$BAj-;iT)Vpn$fks7?mq98JaAHyV`i`839?t#hZdG&BBYRVUY|ApM zvFhO$eN#cb7Nrm%?FvF|d%cR(Q(%9-Y66B2RWyKc$_ogvfTu0Ju=)iie_{DcOj2ZP zvzN)ZLj%-u5koqXHz?M{M(dM>Sk7DL1t#9&ay`aCcAhsotCEp0=(!84h!^<_i_96F zddwxpq^Bn=^WY#lO>($a%$%|4L`rNIFmZ%9qdJxr8|2;`%}Y9&^UQm6>QR55E^?_D zlLDIUs^KWHEm}W8hi~zCddgqmCQbtYz~ao$Hu(8gx(n03pY1XTD!hAX;W}ff8@6==8Y!nHH#7XD z?6oMcm(}O|wK$0de=TzUN7_NsARX{vj(O0HUxO^_hDFo$(Hj1Gv#b}3c3fCO^y&1*`Z7h6G`WQG zpc8dowEBq*975&DMky!5%d1v6*6V9epIv)) zuuq=2OpPnUHzvlcMD{>f-eNNYm#@NlP6~GOx?nN;1Q$x%XpT%k}_-6*ui`Y zScHP7i@{Bi6g2 z)t&c9#zVHhmxp%H@!A`Pn@vS2s3SM|bdl^q=9`?v&S8I3tq5N;()6U~r>8h0%rhyy zm9+B@U=GB&*@QbGaom)BxVbv2TDBUsm7-6?Mnv5IB9gVVB>}a;!k{u}BqR<+E~Cqw z3F0Uc=%++Yzt7o_Xue($`%?M9U+CNL&9P!GBioHB5+vT?pm>--TX@p2uMH7SBR8U? zcDak(mZE=spv@PV7r=vfQZu6S0@~i~*GGjmL_gRDgK#n|bsUrNSQFni3SU7M@nN~b zMhJ(WGr(;}Ow%mz2&)e08Et9WRaMinBCoJ*xsaNdgj6neOgaym37JPWk18`;m{D|L zPlq&D6;}BNDUx3Hfu3%V0g)p@*(}I&=BEOJ%W!|}nJj0ffmzO6^<=w@%S&WGv^q8l zixR9J10{*}Bdc3{34ty>At`{!+{oHPS=g6}&S!_|N?ZuwOhhJTVca$lGm&V4iQ>QG}xQ9#e4e|ILo z;MQQi1>H2k*tG|Efxtr9!i1GA<()$_BTx##eXseO$`XPRp%p31PAeIOr)*;8g(c(! z-_i@NECzjHUevl3=_6h@j1}$RD<=7nWq^NE+*w|bG1-leTV~C1H3Q`vcV3$DJWZH; zY=r5-n0zN<_Fx+p^Z^6mbyf)S^wdAr+wcz$W}Yo71H-tBs?B7p4AU1N%SiMI2_QbJ zN|cHyKxN+_SAOU|s%R2NIyT13!l)Y8#bFN5v?&Wk1Gd0a*}N$2@pS=+UNV-_pQnGP zW)g&8Wlq5iP1m8=(S{`yH>J%Dj^E?{Vi>X( zCuyA#lORRh)&s~qIOsbs*ki^gXX+~wGlp+=DN7a)zSB!$%44Yqrxws`;9>YTERN$R zU^@k*TpT_#oNlxL#tE~aLG?ZY%in)%(vWJxzkM4ROQe)is+BZ^Qd^_Ef+ATWi|(rvy8rj>%a`LC`1*UV)&*S zk+7nb76zYQ@S^J(5(_#}{Xh^9SFlIoHImG{zAs&BJh<}zL zzA;>|1y<{z- z=nJ+PumLp^b(9`r$L9)hC|;HvS5qm4s@n(So+&_){!%wyW-r$uN56m1=|bIT`hpJ9 zO*CCEX$pFf(rY$FZex(TJUxFCMyIB(KR$Sss^-2Z?IrS;Yg8)yPOg>}eLWA{SE_Z( zJe(gnj(I4!xw8Dcjc1jZz^Yv{tAmMGspyB2Zt6pt7?yiLSN0-l8$Fx6mP~JUN)-_o z^CwL_ssqN-)WIswrLaBqMo=|agbh|)sIN3gL>VL^4N_P;NO9dD1vP)RS1gT9tQO0f zbyn)I7?VIAlemtTXvAUh5>{fKoe4%vO!$)~9#zbl?zIa<7ai6Kfde#HSL~T^VyOT-}$n6d`NfYop{0Sdwpe zLyz23do1;&k$T(!6&#y~X&z_z-pg*b2o9N|`}FR}8k*E!f1rDKzIp6Qj!BeM0Oi%L z$}_3VYXI|=F2JS63yfdN{_1?gm)a3s+T5Rs$*_~-hhBmw@PdEWXmw=FQ0hU?7phpp zpAnCyNcZR{{%9y3$3RZVP#E|jrqL02#6`&C(uY3#v3l&+cK9z(cldA5%T0k3z!>mBlT4xJnu z-~+@Zd~}8~I=TWKJUefV=q#^;e-ppFYFhwvXq$uE9L^SSyop_bO5T+&hwE~2vsjK-qsFN11<@Mp3$G$~bZaj(C2a z-4ZC{&9nqv^Xj`iy~}fV1!ah4i0Vb@JblQ^Kjz<$c{#@%4aXe*nAdmQ%bK6YfgjG7 zTX;YmxG&JihV!|`SO|9@a7R8XQl#P4s0&=8LAlWm`4)$ciP928hM6tfmj#72KC;Xz zS8Rm3Rt7BZOlnW(qtage1`XV+ji*F@LF9_OQ)oGH~K*GlUpsYkSNxqUQjwe#y`8T&mEF{PO1oN0vH_z+=7?4T{b%yFM5YSZnwYO!)`~T{oiP@dmKxnY$Iu{`@pX9S%Wt#Re_gJXI1##LhUZDU4`U6 z#rRfiabB#mj*^qQ^*}HOlG?>Wov&J%#teV=%J7iwTyZ@r<`QT^^}Kr@+)#x{vg7i` z1pW?;NSWXPDqGht4&V|ahM18c>NuhYkS!=5BYMJ*Vnqulz;vtIHlR)GiKZ0=-Voam z?UHO*dr#lio36QcZ)`Iw5WA!JNSWbXFvEnwEqtC{U3X0j`-_NIJ(23}TYK~#i%fs0 z0@yZ~J+oz-hk}sW4l?_`gImr?s{`a%3T}im;#Bt?1Jz9^F(PHl8T(r^bZeC%c44R1 zgT{9CQkB9dEqc z-;a0U+4XCBi_vQ)^zV<#gYEp_m?nQva!%F#{rSP^Rb;JXh`#-Oo!p1(nTYCc?WFw- znb*q-M48uBx*^=O8ovI^y0d-Apf~NVjQ8%|Lk7JoXRRDEF*h~n?U3L9)~@0vYG;_Y zx7Vj#EjD&oqh#u&)BcQW>s%|ZOVcMcd^y;+=l0f~_eq!cRMoq~8hKIM)xCdpLr-S{ zeea&`ErGT(XWmnV*}64~r(^f)bk6?6YC0AhSZAx{*X`~tH>i<_*Nf{vEX!;*?6!i9 z8VyyifIHp2kx}bq(?Sry+{dftZQov$y?0T^Y=n+02y&am7@88Izu$=yB&L%rRZctZW3Y8X011DOuiE$M&I&3@&n&m&WDBwK2k4t?)=UaohvAXE2VDUi zv^d@}Wd~mk>RC|xYRiDiO#@NkI>(gDi=DCS*iN)~2Zpm2M>|`bOR9~Stlu#N;EyJH z(Iu^I36AwJ58LR}4hEBVHN=JA3g??rdcJAbWSj-+wjJt6DYPRzN)LZKyXS2&Oe18{ z!j`48jPTewKGu2mosOH`tEhBWE_-XGqkV+T?pg#Gkm>N5k|@(_Lz!Bnm8Wb%sNa*= z&$eCY+GsmPsX2O(!+r*dskz;bg_0=TD!O-1;@WiRx@br2f%=f%gz`L$%FVXTZl~*7 zPOsCm_tnvIe(TtDt!{sxo1oP^)a}?RgB2wL$b%t{u%!%ezLZ$)RQ`xj+OZ01cDu%4 zglj&Na{B`bPfiyQW%jm+n%zk1Q#KeVhHSsi=dMG~UPL$)it>5rQKkdUqOU%vaWCqc zYIXL}k*o=Q)`b49CgfWHl(jv8oOpS7>47Ed@d2v%XN|m^-*$h@p=-m?*N?m@>lk)~ zW8fTy^bp4mxoRW1w=}wtdNkVQg^#DdGk?1skE*ts^#$rhFes zwbSue5WdB1Klp#$N|5~=X+zU=`{ow&-rU2^V_t~a+iK_`fFT?)#SfFV)NJEJ)Tn_s z80L*1^i0Ly4ffSz0n@a)Aysg2uusm;@nOKo?)x!F%}y1ETbWk&fVPi{vlEWl z7|vmLFT1TQ0PMQi>>r)RHcdWLWZFAcANHS#9OjI&4}5>N^i<;rv6-N~9L=irEBl$| z%wIGCVf|GT5L6DT^AFXm4-f`5Az(P|9co$H2$Crj`?#P`%z+UXQu{7WY%B_?pcE|2 z@YPg{UcGdsCZfgf7|RkQ*b%pCVi#Nk=B~ z5OSlWqj_)lw(6z%z7lK7kg>0@iuW&du^;FS!{5FQxcU(_h!g#iBHij1FLs0VS=09r z&-A*`D_N^`OKSoZR^r}F!Iievs~5_$l~?WYb@zXm+3Q-)7GuuZ!}+%Cigg3qEgNQ~ zT?Shx{kuPAVmizqu=;yyTeHh&{NX|ANjKY7xMO&&!E?qJr;4^K-QLdewZ!;#rCC^Q z>!Rh>!QM60Y^1>)&|R&pl9hdV!`E z)?b=~D@cZVgTF>>=wj1XJyHhUZ7X=a-AaFoWIgXVLl(J2$LmGkdsSUYp3 zx3a6*GlqTHS?Ibl`_`g!INX<2hyAULYVSn7(mrrT=yIi!*mJ8+nN)Bl&vDd0KD7A; z43M4jg&y*O&Z;|AF-{_=Szb*CGZD3p@~eVVe>|;)SE|q;~TxMm;^#iq}%f zk$7r9F=}+TZOp}Bl2AO0f1*)_p;R%!TYQ!mlLeWsmt;!GC&9aps*j^uMx1@xqEK}j z(Vx|n$57l=CA9BHYpu?Y-=qQhij98(RA8VbdR#k?KZUO=KjbG^MN}dsqMn}ZEawq} zM0_Y3z)-$N^??Oa=fU}ash*yc5M?X{11r#{@2E0~aB^E?@s8M;& z0L(E`tS|#)0bNIU-vm91J6lGO5VSPX4)h~CKfzwCITTH!2snv#0t{=hDB3hYa(Wu; zBC@d;wk&$z<0)`A03RHL?KXGpHk-VaATm5~-RaSQQ?Pc`cz82@S`fTSMseZK)St9*^NI#pX^x6Q?q$ zh4&jFFm~X^5B)jbFKpSEL%Lc`&S4uC*ttNePK#BYjmzcOD8ymQL)m|wSp(PV7YzGE zzL+${&cs5%8mYL(g2u;F@3g@4T*`GDc(t~2--ZN$H+@L2cqItF(zxtUc4oYER$gF; zJLEiKWFg=ZFE-MARQ{|R6(}Ja7f}u+1W}Gb`?A0Q$1EPaS-^)pN(?nXe}e(Ln)~T# z=+LK@1<#hnUu=9a8BBkxJLde^dM-eJIxV}SGIL2XgMuuNCOy6M`s|| zn8@%wjCzNAC;2%a41mx0GdM}vbu%pb-R-WR)U0@18TM!lYQN=0NIe*tdXqIsoFl@H zo}N1V9MR50+mE*tHCe~vORINq3+U~XuHV5JmMNHVfzhSZt89N2lMXL`SCKX?(pHM> zxl*5ahiq{^-p0egI}z8i@E;u;5N&|HQ*Ur^V4=^*hF*H1d$D^C7NCE)jdri+KIX^;e&Fccc7|I$Rx4K0)sx#p$CZ!Z3|t?jcG0W(8m!&| zvcfrDnJmlhc2w9AUKvF*lO1@^dL8ORiuyj7anvNZeSKw6oz1r9#$AKE1b5fqZoz%y z9^8H7F2UX19ReE&?k>TCyK8X5@SV9c=iFOU(?7aa_51YG{dTpjTHUMpDWdSV+GvhU zo_mV@*a10nr*1FdG03{^@n86NacCegJYN#5X_k1De}g%KD`_8Wij)>m)DyMXM>pAZgorE92J0zAO=ep`RQ#@80%SJ{;{Y4`bo4yS@MWU zBiZQij7=lJHzdb^y7`Se8OxcUJku$7zPC!qdb453eikQ<*UwnN2RiSvmoJELqa26nd;@9nzR@9lW(o=!n6Q=f zmt9uRK5Woe$oG0pCDmmT+WO+8!>NDSk}!$Y85(4*aN4G@aGTiP*|+?5mgA4yBhITM zRv=G%`O9b0l;L7lE`PNK1^Z&J-#W0#DL}X}>E4nenE$9b-X>9tryeb<;o>3`GdO$4 zZPf$76&}|(iUp$T49UodlADSAy(%z`f;s*+mVtd$4V^mf^cl`dz1cqU?2nk*vuE!C z!*}@H2bfi&$jU;swSvpmA`849OGKqJMT-}jCe^cclX@wcaJ*jaV12royVf0-CzZaS z;Kpmwg*!)8c^U88u#JNz)MGmO5_f^6D2D=IK9(e9uL#Hj3(s)_lLt5Dhz%VYX8~Os zQILk~ZQ1$K!!%+z^mka!3#Miq_<|H1eL#-ZhW#epepK*M6BH8{zy5K-aop8Vqg3xA zt|EfmN$Ti#pIELt z6Y-By!4)Bq&)EjCR?fUnC+l{N>&xr>C(~Lfi(-&ns}C@Q%|n|}qfsT;dt0RQyD4GW zR;Up=Ztr#0L8n0Q9;A`IJ~zjW4FThjGY2W1=O`DTlhr*OZYX=w$qnFd!+B_jn!>Hu zJV~AiT?A0K$sj_!p2Jsm(-9Ma`6O+Iz(GYS=k6ym{u`Sm4KxTnN+-=DiXwZz={V`O;BEvHv>@8$+6)rU6S;B!ysz*6F%Xf=vN?XXZTC$3naH=rq zwuCh`k0W&&Z@erf)VLo;H&OtiSgAXxeGGJw12y~w95+Qph)nF-GTJ3GDjDP0;Q|?a z4|B6yVzz?<@7c$koXGsp3)V<2QSW@>I%o9D<;-##0jtu3`2q7s*rY`Ex-yg-itB^4 zjEUSoF=zDfD}Ertw)=L2PD zpjg3ce8kMhoz=3WE7jGJ@lV-|Wcg0p;cCLU-1WGzc~IqTbRXAe*61B9wxE1Z6<+rf zrw5J`N9G$M8>}cSo?IBL++VJbQXtb{vQ7RlH&!^X;n#n+#EZCtG`tywO%x`K_MOV! zyM;%}n2Qi}ssA1kw>Ry@-}TPn0}8uiCr@k>GZdFqJ&WE5i8zISphVBb!k zeK@>Tv;FtMe5D`ff~rpgr+EmUult&sj096E``SCGO(@`kA`u#nz<80~Kp z-8q7V9-0%CDgxS3gVsd0CFjvwtJ)|B{rI+1ng0T%@{L{v1GFyMUqH={RcuOFf&?}A zh-H6c<8v(ayC7}Jv+majz=-wpcVYGKs>_3CxooJy8d<|X?Th8pZyU8V%yF45rV0#G z6Ve<+$GNkdwoaWnjCcqB(0LUYA}Nm4dMBv-RTkqbOqs7r4Fv8PJ(mvXHH+|bL(ezK zhK6H9__$Knrhwu`6RD2f(Yg=;!}tM(g}oeb=>HJI$*@Iv=(7%CAOGGFI9Fu50ehOcqd4G6#xnfDM57UkX1 z>9Vj}A@Mt{a_wl%x#f>AykZ?|jj$09CCRnNJN|Iw-JmN9w&WuinC}i5)pviF4J3_! zY8XINibN1Hsho+-CR=Vg3b2<+P|5KXQbCE@mh-S3ED@QjOb!PSh-)Sfb+elH<+jB;F!t_IEydO$PkMhX^K5m^^S8uOBCkRh`B_ihba<|q zE5qtF>ZX`lP=MO$h0daeZ=UJ}Xx*T^mFbrkI|Nx?6=uUeb{jCJdYEKqK=;$&vxQ@k zcS+|S2-$OIG@y{CXUa<8K>eN0h57;-bysvR&E0Y}GpP>Z464UC5v73~Rk-}pGn_2s z-}yIKLG>!mLR3a*&}e0d?qY{(h!UY7i_ISBXqXO5wlJ6)w8~BfE)O|098@7FK)+;s z-2?3cY2|iw=knnkL=nZSdM?abw*UM}r^@7FCb6$A+V6#UIWL}-B!C+F`FQ(`lWH6* z&8_&$H(o8GxP3OZV`8$3A<>aF0Y$4V-yze^t#^CoYG~ly#r3XDO02Hk_p(k?d9p5V z`U_cDI5({%ZR0K6SnA?Cl(IY=d==e3qz;x66yWzI5ZG~jieSLJ|&BjL!pNKL~j8tr>Dt@e@-M<7kCmZLp2leWdMxh;_ zi2h0eidu?d18L-O*!$^0uslUZv_U^vXjLvR@2-Jepu>|l2J^Sdjio!MnvKn)-7N3T z7=)Nawm?y5>TH_FTEs(B$TBm9t>hSlY|KC1kqFs|={A^bT^X3XRBDiA5?zNMv6R&_|7D6^Z^EmCxwf^F zP&Ev}+Fl8o%rnWm3Ie=o!0dD8)2$e3BCB5z9XIuKd_P!;?}t!X9l;p`gYHm#UYW<2 zcB)H_6AY>CERE|@CyY65N}7%8^Y4`|so=(BFTZ$ah$oPop#88%sc2*Md{<{(QYhS! zzgl&@3h<(Mst(n<%a;=-2eyXT0e<KB;knaNpY?_t5Q4M^33yg00UmSjr< z7xksXSbfwxF7$nXLT#EvzZj1XE34Q)CY60sOw7rq0wItKrhyRWEb+|X7LV4}3$o>w zAaeuO0u~em*1P3Vee{4%sTJUj`cmkh>{axbQyYMYUN_m^YRUfKwqSU1~ z$Zw)4FQD;9xtfhP$Inq2<1~+}S$kkllF9AK&SUignOuERJVHuTH=TI#2csP9#o!Xj(j6khU`0QID6WYn znKoHnO*4$jKy7T4Vm9Iu*O=k_3X}3qzm8Au*XTC+6>FP_NdgB}oI|iI=Ik%%>N*j)g=gods5^^g(vvS1{N7UX#kjWRM$hYwwaM(sPdxkHsoqnj z8*7AusE_1B-ap(RX}X5WCfaCCG;AmBJ37!O)X3-NRp3p4Nab3{T>YoFRj@1UFeeD~ z4JGxJb)2z-;}|}c!8-1hRUJi=-=uZ@sgjrT8~u#FaBK8&kpd~nw-!NuAw6a^xsol* zI;3yvyAn^u;qgPX@jT( z5_N#*A`It!CELV9^j1!#?e=u9{P|bE8EcXuC%6|HmR2@%sje!Xxr;dzO=H1&^YwHj zO{b&l+Ak9OH|_qoq80OK$T$cDZ_~6k7E2IM=xNV1kHklR$wB8g?`x|n%7iwNS1IhNK(_$XiPIZ*hzSW84Ny^>F-w-w85QWJUPdNw>l564gO|h_G>OU zXQjG4J{Ba+AThXQz5gopO&SDV_iOD_c~t&h`_}47($_6SYU4- z;U~G8d(chYFOOZsHk~19jxa$ZGYea}S@(-ql;mRsiT1+|pIX6OVmzqO0io04KG|qrYkOC-rfO^ z_dt?iY!+_h;`!0FSz-_ix1h&P($@IztirDg$y!$g627js^~Z4 z^oGs-+1ujIvMJly-uxepH1M~Ef=`ckiUv!z8Pddf1`tSj#*L+M&fCGjE|Hbb7peHz zWAoK|N4($H5vc{=k-NfKXyfoIZoWI3k#ojx>YhAroCq}?hxJ@Fz=)}IN##PkNG8^O z7kFGEv=Q=zG#miokrbH6-PZKSf``IevNExt;X;}l(Y#p;)l{Hq<*WG3EbX-0Q5=ss zh@EpU^Rj~R@OEf|jzeaja3D`z1>Z``J{(e0>fFf~iHmzw#!!+nm_klm!^;$z7Wr@U zxkh^jd5^SH=!Ay%_Au}Nqj)`tM9@U5ji{JTIgprIt&0B ziU7O)HpO|Dw3f2c5(l}n9@D%Op`n%Tl)3)dHm4@Gz6eJoc@=R!Yo;RErE9xU-X-sl zj_u5SoM&FQWL$BNkb7#y+r!svPJHf}Jty@jaeK}Zy^Sa-7q-DKQmu>;sKb|Qj)Htr z6SU>rZ9br8v#;6v&r#61nSA*^rlt!7(_7`w=R$q`rqJv2?S$b6mS4R$es2el36CAJ zZrb5c^Gkjfy>M{LI6$)^T*!kjU;XTc_quPGFJBtU*0)rZA|pYagx&fio(e;tBB)o8 zNl^oRRl>VfL&C-OP3;D$60NDh{jir7U1h=IS~L~ZxRKJXF&2I}wBFmB$j~&>G7yYK z=N2>I0HdlZ_Zhd}YDlDegrD8agEDsb0x2M%aSg|o+`3MPZ!H=p-{&2I)XiDA`}R5P zKu+}M&uzLngD-|tgxCpDS`Hmrs zR!+MnmhFIgox#!`TQ5B}3`=i2>}eBY6^=i%MyXEWSV^08Wmpf;ucP$`&cA#rA{*HV zv=@kl``JUm)v^lL^VBXga1%(aTO>iEx6k9T zx_*(x1?h46BXq&dZlR(aHP#{Xn8-{o^ur$SxNCoL|IsK|K2$$sWB?$O9q>OC3Xl^N z%6};o&QL_48vJh#Yus005KMweKsJ44PN`0Z`^yZ(8%%#UmL!?HI)!=ya-=&W^tr<( zalC^{T$82<=CP;X#!D|JFoEaH#o#9QZ8R4LITxz4M)iq*b!oT*>*1>1VE*At-Q@)g zz#a?I;a0I7~x*It?i|A#Yz5Q2!My zINJlF@l0~?gvztDv^o7DxnqefS7Bt%?40Jip87ihtY*7;(Ham5t^(>sbbR|HOGSm6 zCU@n0?bl#cP5-WOBj`0px0<<@vVLbxBe9fg6L8uCAVBBn0dAhRLfE3WFQX)~f`1q> z+{1yY#>1M>Y*FggN%Xg&z#&USpEq1o;YG51IkUp-41*1dS7XND-`$H!*!UUT{igL2 z8ttZ|Bj)~&^3WjuM9gt8aNUKin{M9GgV6tB5noYA#g_cx7NYs}T2n@;suTZ*`TM0k zT(TV?6cvxRhlSH&AvutV&;Y?)`DvXJXvYp}KhlkoVB=mpQ4-_i;B{q7{;vC0Cclu|~nt?b+PY_jm?=+1FBf|X@^zWf(ewomBPN*P+ zcgu8jB^UNQC|rXblqRlyIuqIwWChOCs7{u7Y-wsZ>I*N1rR!^qnR!>p`OmaH!eV$+ zm#-9Fk8&&Fv__bGanEMI)&<2(JmoveM}AriI-gi0aeAs77H3v0V=T?&^hf4id#MT< z9^oa^GX^;$zmB+~fFxz2b;?vagS0@%Zleyz3wvzlTNFiy-{MywCcTZk^w^)GzAs&6 z&2a^hHeujOJ+Wa<(K^wFzSsn-^Pkh5wPR~HKn`hdaPlLjR-eVl&Kh&%+!ydZqSDBk zwbG}#mLd^(mu6FZwSEd(>4?FGk6Dyv=>rd!{=O0(m%yjD*1!3j>Non zrA3x8kKn!(j-U!TCW|!B#eQP!J?_|hi`u;|R@0twaKpxf)?oXVL}BwuhUF8xYN^_h zzPIZ^y`~BpJaMhP^O>odCTy^gEPJ2Bmfz?G zo57BHi9m^oSa?6dqVedR)*;NsQDNy2n%{1_On4uNeNRC+WUAeW7{V>s_< z%rNmz1yg3J9>*9erp{LpI(O4^X4Wh@=NW**D-&!^0|SZrv0=i@Pm!g z2QMSnE};X2RdMvd^T*4KjR2yzb!9@+B+!EW>zhojWw_F|KVT za3;AL$#;+wJiqmwOd;xnO-iN~ z+|wJPa^K!O_5BBB!Xeg=XY;p3s}Th@&hk1n_lDe7A)l@!DM_v1mt8uErsOlf6fYT) z@Ruj(xUzGAGLSsoxC|52g;R)=(DX67w%z)@8v{$Y6`%RD zQK8f(Z;igLKiiFKi&Hgk?4oiuk{Q9kk8XhBvC*P`3-kSXv=dkiN8)}HyIFdfcJO?jW#kg`z zBD2r-HlLH*rrOp1|EZRCRIWuVaG*|p}}u+}@H=wusjxLa;!++Lk$Qkn*wiMcz+ zT~{t145o5jo4P%}IBed2@YB+SuPjyZ!Hbb$3ziukipBxkBQJ)4PftQ^>Qt*}PafEI z*$x@T?F|uJn<`Y$#!Q}J`sy9+{A2N#L26fiK}4DusHoF(UHF*44-6eax@%s)BF;S> z(~@PWG<)s1hu21xAmX-I;o9|x_RpgFhp}3h01g1aB>5kUsy5(1!Uq80V&Tc`Xm7c$ z_QbP>fc{P)xys*G%grfhxvuws%^7WrrjA`T;OBaJ1d_9s`xHr1MW=y1tAX)lMpH*} z?lZ+)l)zEJiI<%%aY0a?K(W0wxrA}NR4kqt^hcS=n%qMwEFmxu>Rbxl4-ZJ?YTE`?gyYK#8`l1V zVn%^v1XlOAzhqg@K#bw&Isg65`E!AjRrQ&EN|GWWkn-!p_jyD-T{`d|w6uxKZs2+! z6G)Z&A|Z{+YSH~DKlb6t9K$6Z!>P%H3p z9d5|yI9=lssRG+0h&=x<1UqbN7q-&rCMKG|Kqd=Qf--0fXTBdh%iD7a5Tc+!%Jx&LI3)r;L!Ha0yZy`w7_bQoP-C24rE| zu#a{3NZh@7-f*q}kgxs(O`l z0Grs}{-j_JZ1?>lXhV^gq<}nf6~U{T(!!mk4j(lqmX|J4u1cpV-l3gB{q zw|SKSbIQ(hDO8#bZlI+e^!8sApczV`Y}^uoIXf+jIRaAa$c$_kXR!hkWx)ZD3xgH3ZXMISudys7OUaEDeSjE(@NxW;UFGqadvPRgVVYU+0>?FEQAE!@S z)~@L9(+PI@`D9)e6Y$cgT+ey-|N6;mAZqU%d5V7@!eN(=p{;qnZ|AEHj9OqSPemYI zQ8-RiLq#5s`ZZ`8ibRcjC@nF8Tv602G(?|oUqtB~P8jV~xaCnO8wG0I|72=*+2l8` z{!%sYEJ3xhN$1jR${sNPm-UgK+(Pwq7J1$-Vu{Yr>mt3?PrjA)Ik2fn;O%-#jxC_D zVx>`a))aa{WY7C_E2^w$QOJCg9sP<_NEG*hhr!Z%CwTftWzXCQ-n@{0!8CMG@0h!9 zPzo=LxmjHq2_vg)?lI`orL81}PUSf57lk4HxI35n#RwLsLjIFvO+4F(HmKOXfo|iF zZwSx1B|GC-bFvIH74^+_U$xkH>DhtN62FtGwcH~Qv>c}5KSkq7u@{6o7Z;XI*C8@C z(2BB1(FMWJA@}!XA@84wWv67%{jK~N(Ar|03XhK`*S-`P`Emmy+X7J)utxr_nN{%w z(@DDUNWD5E8e9^GzW+;)dVR3_*$4vw0Ac@sQ$FIyly7ZsX70&sNSMa_!u{>uXNR!?34k}p%pBz?5q^z+!v5V)l1 zKucm_2tqW_8jqv_XwXgiA!9`&$?%LLoTO?&eO1vcW`erd9sc}FUohQsltG)CYMl~A zR(m*amcaikz+%R`X~TGD^4W7^$)f4fNbRpg%q7DWTR3iQiAKh}2fi}u`3oEG`Zq6K zsKWK(VTWB)kUEb5bx^ZF&r$pDtG?k@V-t0e4BQ<3c{jG_MNYT2!3evx#QvuE*uib( z5%E0L(ykfKJMu@F++W-Mlk}pQ_hYnN4b@C-zRFb4N>#w9w8GUQx4mpi`KR~Ei<8N~ zrl!|<=iCwCouzD1|H(Er`RO;Yzq-x7Oqu|qxh4k|&^*)R@IukBa9S>)Vt>b^qq&f#TF3hkw@nOtSI4Q3wFw2mX4&VQNbWd4r;3WwrG`!LvP|I4cPzm0ln1L06iWd9_pFl`y&eQ*gu z0s#MXn|}uvjWmo1C_K%7Q2(jE!~YxdA@yrQ0W6K}%$aT7jQ>YnwCj-m*sOeDkUzK) z{#z~>(=<>76t2!c-2b_YLHchfY%?f;hqaldxvR_ni~c{y!atjwe+R2?X_paD*kb?C l|7T3CS diff --git a/tiny-cli/src/jvmMain/resources/sfx/widgets.lua b/tiny-cli/src/jvmMain/resources/sfx/widgets.lua index 9e50803b..55603962 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/widgets.lua +++ b/tiny-cli/src/jvmMain/resources/sfx/widgets.lua @@ -6,7 +6,7 @@ local Fader = { enabled = true, min_value = 0, max_value = 10, - value = nil, + value = 0, tip_color = 9, disabled_color = 7, label = "", @@ -45,9 +45,13 @@ local Tab = { } local TabManager = { + x = 0, + y = 0, + width = 0, + height = 0, on_new_tab = nil, - tags = {}, - active_tab = 0 + tabs = {}, + active_tab = nil } local Counter = { @@ -117,7 +121,10 @@ local envelops = {} local checkboxes = {} local knobs = {} -local factory = {} +local factory = { + tabs = {}, + widgets = {} +} function inside_widget(w, x, y) return w.x <= x and x <= w.x + w.width and w.y <= y and y <= w.y + w.height @@ -137,19 +144,98 @@ factory.createTab = function(value) return result end +Tab._init = function(self) + self.index = #self.parent.tabs + self.x = self.parent.x + self.index * 32 + self.y = self.parent.y + self.width = #self.label * 4 + 12 + + if self.index > 1 then + local prev = self.parent.tabs[self.index - 1] + self.x = prev.x + prev.width + else + self.x = 0 + end +end + +--[[ + Draw tab header +]] +Tab._draw_header = function(self) + local offset = self.status * 8 + + -- body + -- number of body repetition + local time = math.floor(self.width / 16) + local rest = self.width % 16 + for i = 0, time - 1 do + spr.sdraw(self.x + (i) * 16, 0, 80, offset, 16, 8) + end + + spr.sdraw(self.x + (time) * 16, 0, 80, offset, rest, 8) + + -- right + spr.sdraw(self.x + self.width, 0, 96, offset, 8, 8) + + local center = self.width * 0.5 - #self.label * 0.5 * 4 + + print(self.label, self.x + center, self.y + 2) + + -- left + if self.status == 1 then + spr.sdraw(self.x - 8, 0, 64, 8, 8, 8) + end +end + +--[[ + Draw tab content +]] +Tab._draw = function(self) + +end + +TabManager._init = function(self) + self.new_tab = new(Tab, { + label = "+" + }) + self.new_tab.parent = self + self.new_tab.index = 0 + self.new_tab:_init() +end + TabManager._update = function(self) - + end TabManager._draw = function(self) - + -- draw new tab header + self.new_tab:_draw_header() + + -- draw tab headers + for i, tab in rpairs(self.tabs) do + tab:_draw_header() + end + -- draw current header + if self.active_tab ~= nil then + self.active_tab:_draw_header() + -- draw current tab content + self.active_tab:_draw() + end end +TabManager.create_tab = function(self, data) + local new_tab = new(Tab, data) + table.insert(self.tabs, new_tab) + new_tab.parent = self + new_tab:_init() -factory.createButton = function(value) + self.new_tab.x = new_tab.x + new_tab.width + return new_tab +end + +factory.create_button = function(self, value) local result = new(Button, value) - table.insert(widgets, result) - table.insert(buttons, result) + result.help = result.customFields.Help return result end @@ -157,10 +243,18 @@ Button._update = function(self) if self.status == 2 then return end - + local pos = ctrl.touch() + if inside_widget(self, pos.x, pos.y) then self.status = 1 + if self.on_hover ~= nil then + self:on_hover() + end + local touched = ctrl.touched(0) + if touched and self.on_changed ~= nil then + self:on_changed() + end else self.status = 0 end @@ -173,38 +267,25 @@ Button._draw = function(self) background = 1 end - spr.draw(background, self.x, self.y) + spr.draw(28 + background, self.x, self.y) if self.overlay ~= nil then spr.draw(self.overlay, self.x, self.y) end end ---[[ - @deprecated -]] -function draw_button(button) - button:_draw() -end - -factory.createFader = function(value) +factory.create_fader = function(self, value) local result = new(Fader, value) - table.insert(widgets, result) - table.insert(faders, result) - - result.index = #faders - + result.help = result.customFields.Help + result.label = result.customFields.Label return result end -factory.createEnvelop = function(value) - local result = new(Envelop, value) +factory.create_envelop = function(self, data) + local result = new(Envelop, data) result.attack_start_x = result.x result.attack_start_y = result.y + result.height - table.insert(widgets, result) - table.insert(envelops, result) - return result end @@ -216,24 +297,30 @@ factory.createCheckbox = function(value) return result end -factory.createKnob = function(value) +factory.create_knob = function(self, value) local result = new(Knob, value) - - table.insert(widgets, result) - table.insert(knobs, result) + result.label = result.customFields.Label + result.help = result.customFields.Help return result +end +factory.create_tabs = function(self) + local tabs = new(TabManager) + tabs:_init() + table.insert(self.tabs, tabs) + table.insert(self.widgets, tabs) + return tabs end Knob._draw = function(self) local angle = (1.8 * math.pi) * self.value + math.pi * 0.6 - local target_x = math.cos(angle) * 6 + self.x + 8 - local target_y = math.sin(angle) * 6 + self.y + 8 + local target_x = math.cos(angle) * 3 + self.x + 4 + local target_y = math.sin(angle) * 3 + self.y + 3 - spr.sdraw(self.x, self.y, 0, 64, 16, 16) - shape.line(self.x + 8, self.y + 8, target_x, target_y, 9) - print(self.label, self.x, self.y + 18) + spr.draw(30, self.x, self.y) + shape.line(self.x + 4, self.y + 3, target_x, target_y, 9) + print(self.label, self.x - 1, self.y + 10) end Knob._update = function(self) @@ -244,329 +331,247 @@ Knob._update = function(self) if touching ~= nil and inside_widget(self, touching.x, touching.y) then local touch = ctrl.touch() - local dst = self.y + 8 - touch.y + local dst = self.y + 4 - touch.y local percent = math.max(math.min(1, dst / 32), 0) self.value = percent if self.on_update ~= nil then - self.on_update(self) - end - end -end - -factory.on_update = function(x, y) - for f in all(buttons) do - f:_update() - end - - for c in all(counters) do - -- inside the widgets - local left = { - width = 8, - height = 8, - x = c.x, - y = c.y + 8 - } - - local right = { - width = 8, - height = 8, - x = c.x + 8, - y = c.y + 8 - } - if inside_widget(left, x, y) then - c.status = 1 - elseif inside_widget(right, x, y) then - c.status = 2 - else - c.status = 0 + self:on_update(self.value) end end - for e in all(envelops) do - if e.enabled then - e.attack_end_x = e.attack_start_x + e.width * e.attack - e.attack_end_y = e.attack_start_y - e.height - - e.decay_end_x = e.attack_end_x + e.width * e.decay - e.decay_end_y = e.y + (1 - e.sustain) * e.height - - e.release_start_x = e.x + e.width - e.width * e.release - e.release_start_y = e.y + (1 - e.sustain) * e.height + local pos = ctrl.touch() + if inside_widget(self, pos.x, pos.y) then + if self.on_hover ~= nil then + self:on_hover() end end +end - for k in all(knobs) do - k:_update() - end -end +factory._init = function(self) -factory.on_click = function(x, y) - -- on click faders - for f in all(faders) do - local box = { - x = f.x, - y = f.y, - width = f.width, - height = f.height + 12 - } - if f.enabled and inside_widget(box, x, y) then - local percent = math.max(0.0, 1.0 - ((y - f.y) / f.height)) - local value = percent * (f.max_value - f.min_value) + f.min_value - f.on_value_update(f, value) - end - end end -factory.on_clicked = function(x, y) - -- on click buttons - local prec = nil - local current = nil - for f in all(buttons) do - if f.status == 2 then - prec = f - elseif f.status == 1 and inside_widget(f, x, y) then - current = f - end - end - -- active the current button and deactive the previous activated - if current ~= nil and current.enabled and current.grouped then - if prec ~= nil then - prec.status = 0 - end - current.status = 2 - end +factory._update = function(mouse) - if current ~= nil and current.enabled then - current.on_active_button(current, prec) - end +end - -- on click tab - local new_active = nil - local current_active = nil - for t in all(tabs) do - if t.status == 1 then - current_active = t - elseif inside_widget(t, x, y) and t.status == 0 then - new_active = t +Fader._update = function(self) + local pos = ctrl.touch() + if inside_widget(self, pos.x, pos.y) then + if self.on_hover ~= nil then + self:on_hover() end - end + if ctrl.touching(0) then + local percent = math.max(0.0, 1.0 - ((pos.y - self.y) / self.height)) + self.value = percent - if new_active ~= nil then - -- create a new tab. - if new_active.new_tab then - new_active.width = 2 * 16 + 8 - new_active.label = "" - new_active.new_tab = false - - if #tabs < 12 then - factory.createTab({ - width = 24, - new_tab = true, - x = new_active.x + new_active.width, - on_active_tab = new_active.on_active_tab, - on_new_tab = new_active.on_new_tab - }) + if self.on_value_update then + self:on_value_update(self.value) end - - new_active.on_new_tab(new_active) - end - current_active.status = 0 - new_active.status = 1 - if new_active.on_active_tab ~= nil then - new_active.on_active_tab(new_active, current_active) end end +end - for c in all(counters) do - if c.enabled and c.status == 1 then - c.on_left(c) - elseif c.enabled and c.status == 2 then - c.on_right(c) - end - end +Fader._draw = function(self) + local color = self.disabled_color - for c in all(checkboxes) do - if c.enabled and inside_widget(c, x, y) then - c.value = not c.value - if c.on_update ~= nil then - c.on_update(c) - end - end + if self.value ~= nil and self.value > 0 then + color = self.tip_color end + local y = self.height - self.value * self.height + local tipy = self.y + y + shape.rectf(self.x + 1, tipy, self.width - 2, 2, self.tip_color) end -factory._update = function(mouse) +function draw_counter(counter) + spr.draw(counter.spr + counter.status, counter.x, counter.y) + print(counter.label, counter.x + 1, counter.y - 4) + print(string.sub(counter.value, 1, 4), counter.x + 3, counter.y + 2) end -function draw_tabs() - local active_tab = tabs[1] - for index = #tabs, 1, -1 do - local v = tabs[index] - if v.status == 0 then - draw_tab(v) - else - active_tab = v - end - end +Envelop._update = function(self) - draw_tab(active_tab) -end - -function draw_tab(tab) - if tab == nil then - return - end - local offset = tab.status * 8 + self.decay = math.min(self.decay, 1 - self.attack) + self.release = math.min(self.release, 1 - (self.decay + self.attack)) - -- body - local time = math.floor(tab.width / 16) - local rest = tab.width % 16 - for i = 0, time - 1 do - spr.sdraw(tab.x + (i) * 16, 0, 80, offset, 16, 8) + self.attack_end_x = self.x + self.attack * self.width + self.attack_end_y = self.y - end + self.decay_end_x = self.attack_end_x + self.decay * self.width + self.decay_end_y = self.y + self.height * (1 - self.sustain) - spr.sdraw(tab.x + (time) * 16, 0, 80, offset, rest, 8) + self.release_start_x = self.x + self.width - self.release * self.width + self.release_start_y = self.y + self.height * (1 - self.sustain) - -- right - spr.sdraw(tab.x + tab.width, 0, 96, offset, 8, 8) + self.attack_fader.value = self.attack + self.decay_fader.value = self.decay + self.release_fader.value = self.release +end - local center = tab.width * 0.5 - #tab.label * 0.5 * 4 +Envelop._draw = function(self) + shape.rect(self.x, self.y, self.width + 1, self.height + 1, 9) - print(tab.label, tab.x + center, tab.y + 2) + -- attack + shape.line(self.x, self.y + self.height, self.attack_end_x, self.attack_end_y, 8) + shape.circle(self.attack_end_x, self.attack_end_y, 2, 8) - -- left - if tab.status == 1 then - spr.sdraw(tab.x - 8, 0, 64, 8, 8, 8) - end + -- decay + shape.line(self.attack_end_x, self.attack_end_y, self.decay_end_x, self.decay_end_y, 10) + shape.circle(self.decay_end_x, self.decay_end_y, 2, 10) -end + -- release + shape.line(self.release_start_x, self.release_start_y, self.x + self.width, self.y + self.height, 9) + shape.circle(self.release_start_x, self.release_start_y, 2, 9) -function draw_fader(f) - if f.value ~= nil and f.value > 0 then - local y = f.height - ((f.value - f.min_value) / (f.max_value - f.min_value) * f.height) - local tipy = f.y + y - shape.rectf(f.x, tipy, f.width, 4, f.tip_color) - else - -- fader value = 0 - local y = f.height - (0 / (f.max_value - f.min_value) * f.height) - local tipy = f.y + y - shape.rectf(f.x, tipy, f.width, 4, f.disabled_color) - end + shape.line(self.decay_end_x, self.decay_end_y, self.release_start_x, self.release_start_y, 9) - print(f.label, f.x, f.y + f.height + 5) + -- sustain + local width = 8 + local height = 4 + shape.rect(self.decay_end_x + (self.release_start_x - self.decay_end_x - width) * 0.5, self.y + (1 - self.sustain) * self.height - height * 0.5, width, height, 8) end -function draw_counter(counter) - - spr.draw(counter.spr + counter.status, counter.x, counter.y) - - print(counter.label, counter.x + 1, counter.y - 4) - print(string.sub(counter.value, 1, 4), counter.x + 3, counter.y + 2) +factory.create_checkbox = function(self, data) + local result = new(Checkbox, data) + result.help = result.customFields.Help + result.label = result.customFields.Label + return result end -function draw_envelop(envelop) - - shape.rect(envelop.x, envelop.y, envelop.width, envelop.height, 9) - - -- attack - print("attack", envelop.attack_end_x, envelop.attack_end_y - 8) - shape.line(envelop.x, envelop.y + envelop.height, envelop.attack_end_x, envelop.attack_end_y, 9) - if envelop.is_over_attack then - shape.circlef(envelop.attack_end_x, envelop.attack_end_y, 2, 9) - else - shape.circle(envelop.attack_end_x, envelop.attack_end_y, 2, 9) +Checkbox._update = function(self) + local pos = ctrl.touched(0) + if pos ~= nil then + local w = { + x = self.x, + y = self.y, + height = self.height, + width = self.width + #self.label * 4 + } + if inside_widget(w, pos.x, pos.y) then + self.value = not self.value + if self.on_change then + self:on_changed(self.value) + end + end end - print("decay", envelop.decay_end_x, envelop.decay_end_y - 8) - shape.line(envelop.attack_end_x, envelop.attack_end_y, envelop.decay_end_x, envelop.decay_end_y, 9) - if envelop.is_over_decay then - shape.circlef(envelop.decay_end_x, envelop.decay_end_y, 2, 9) - else - shape.circle(envelop.decay_end_x, envelop.decay_end_y, 2, 9) + pos = ctrl.touch() + if self.on_hover and inside_widget(self, pos.x, pos.y) then + self:on_hover() end +end - print("release", envelop.release_start_x, envelop.release_start_y - 8) - shape.line(envelop.release_start_x, envelop.release_start_y, envelop.x + envelop.width, envelop.y + envelop.height, - 9) - if envelop.is_over_release then - shape.circlef(envelop.release_start_x, envelop.release_start_y, 2, 9) +Checkbox._draw = function(self) + if self.value then + spr.sdraw(self.x, self.y, 8, 48, 8, 8) else - shape.circle(envelop.release_start_x, envelop.release_start_y, 2, 9) + spr.sdraw(self.x, self.y, 0, 48, 8, 8) end + print(self.label, self.x + 10, self.y + 2) +end + +local Help = { + _type = "Help", + label = "" +} + +Help._update = function(self) - shape.line(envelop.decay_end_x, envelop.decay_end_y, envelop.release_start_x, envelop.release_start_y, 9) - local width = 8 - local height = 4 - if envelop.is_over_sustain then - shape.rectf(envelop.decay_end_x + (envelop.release_start_x - envelop.decay_end_x - width) * 0.5, - envelop.y + (1 - envelop.sustain) * envelop.height - height * 0.5, width, height, 8) - else - shape.rect(envelop.decay_end_x + (envelop.release_start_x - envelop.decay_end_x - width) * 0.5, - envelop.y + (1 - envelop.sustain) * envelop.height - height * 0.5, width, height, 8) - end end -function draw_checkbox(c) - if c.value then - spr.sdraw(c.x, c.y, 8, 48, 8, 8) - else - spr.sdraw(c.x, c.y, 0, 48, 8, 8) - end - print(c.label, c.x + 10, c.y + 2) +Help._draw = function(self) + print(self.label, self.x, self.y + 2) + shape.rect(self.x, self.y, self.width, self.height) end ---[[ - @deprecated -]] -function draw_knob(k) - k:_draw() +factory.create_help = function(self, data) + local help = new(Help, data) + return help end -factory._draw = function() - for c in all(counters) do - if c.enabled then - draw_counter(c) - end +local MenuItem = { + _type = "MenuItem", + spr = nil, + hold = false, + status = 0, + active = 0, + help = "", + on_click = function() + end, + on_hover = function() end +} - for f in all(faders) do - if f.enabled then - draw_fader(f) - end - end +local menuItems = {} - for b in all(buttons) do - if b.enabled then - draw_button(b) - end +MenuItem._update = function(self) + local pos = ctrl.touch() + if not self.hold then + self.active = 0 end - for e in all(envelops) do - if e.is_over_attack then - + if inside_widget(self, pos.x, pos.y) then + if self.active == 0 then + self.status = 1 end - if e.enabled then - draw_envelop(e) + if ctrl.touched(0) then + self:on_click() + if self.hold then + for i in all(menuItems) do + i.active = 0 + end + end + self.active = 1 + self.status = 0 end + self:on_hover() + else + self.status = 0 end - for c in all(checkboxes) do - if c.enabled then - draw_checkbox(c) - end - end +end - for k in all(knobs) do - if k.enabled then - draw_knob(k) - end +MenuItem._draw = function(self) + if self.spr ~= nil then + spr.draw(self.spr + self.status * 128 + self.active * (128 + 32), self.x, self.y) end +end - draw_tabs() +factory.create_menu_item = function(self, data) + local menu = new(MenuItem, data) + + local item = data.customFields.Item + -- todo: move outside the widgets factory this configuration + if item == "Wave" then + menu.spr = 14 + menu.hold = true + elseif item == "Fx" then + menu.spr = 15 + menu.hold = true + elseif item == "Music" then + menu.spr = 16 + menu.hold = true + elseif item == "Save" then + menu.spr = 17 + elseif item == "Prev" then + menu.spr = 21 + elseif item == "Next" then + menu.spr = 22 + end + menu.item = item + menu.help = data.customFields.Help + + table.insert(menuItems, menu) + return menu +end + +factory._draw = function(self) + for w in all(self.widgets) do + w:_draw() + end end return factory diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameEngine.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameEngine.kt index 0dde6b88..2f0f1179 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameEngine.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameEngine.kt @@ -14,7 +14,6 @@ import com.github.minigdx.tiny.resources.GameLevel import com.github.minigdx.tiny.resources.GameResource import com.github.minigdx.tiny.resources.GameScript import com.github.minigdx.tiny.resources.ResourceFactory -import com.github.minigdx.tiny.resources.ResourceType import com.github.minigdx.tiny.resources.ResourceType.BOOT_GAMESCRIPT import com.github.minigdx.tiny.resources.ResourceType.BOOT_SPRITESHEET import com.github.minigdx.tiny.resources.ResourceType.ENGINE_GAMESCRIPT @@ -29,7 +28,6 @@ import com.github.minigdx.tiny.sound.SoundManager import com.github.minigdx.tiny.sound.WaveGenerator import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.flow.FlowCollector import kotlinx.coroutines.flow.asFlow import kotlinx.coroutines.flow.flatMapMerge import kotlinx.coroutines.launch @@ -39,45 +37,6 @@ import org.luaj.vm2.LuaValue.Companion.valueOf import kotlin.math.max import kotlin.math.min -class ScriptsCollector(private val events: MutableList) : FlowCollector { - - private var bootscriptLoaded = false - - private val waitingList: MutableList = mutableListOf() - - private val loadedResources: MutableMap> = mutableMapOf() - - override suspend fun emit(value: GameResource) { - // The application has not yet booted. - // But the boot script just got loaded - if (value.type == BOOT_GAMESCRIPT && !bootscriptLoaded) { - events.add(value) - waitingList.forEach { - val toReload = loadedResources[it.type]?.containsKey(it.index) == true - if (!toReload) { - loadedResources.getOrPut(it.type) { mutableMapOf() }[it.index] = it - } - } - events.addAll(waitingList) - waitingList.clear() - bootscriptLoaded = true - } else if (!bootscriptLoaded) { - waitingList.add(value) - } else { - // Check if the resources is loading or reloaded - val toReload = loadedResources[value.type]?.containsKey(value.index) == true - if (!toReload) { - loadedResources.getOrPut(value.type) { mutableMapOf() }[value.index] = value - } - events.add( - value.apply { - reload = toReload - }, - ) - } - } -} - @OptIn(ExperimentalCoroutinesApi::class) class GameEngine( val gameOptions: GameOptions, @@ -459,6 +418,16 @@ class GameEngine( return spriteSheets[protected] } + override fun spritesheet(name: String): Int? { + return spriteSheets + .indexOfFirst { it?.name == name } + .takeIf { it >= 0 } + } + + override fun newSpritesheetIndex(): Int { + return spriteSheets.size + } + override fun spritesheet(sheet: SpriteSheet) { if (sheet.index < 0) { // The index is negative. Let's copy it at the last place. diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameResourceAccess.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameResourceAccess.kt index 70277d20..271647c2 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameResourceAccess.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/GameResourceAccess.kt @@ -36,6 +36,13 @@ interface GameResourceAccess { */ fun spritesheet(index: Int): SpriteSheet? + /** + * Find a sprite sheet by its name + */ + fun spritesheet(name: String): Int? + + fun newSpritesheetIndex(): Int + fun spritesheet(sheet: SpriteSheet) /** diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/ScriptsCollector.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/ScriptsCollector.kt new file mode 100644 index 00000000..95f24bf1 --- /dev/null +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/engine/ScriptsCollector.kt @@ -0,0 +1,44 @@ +package com.github.minigdx.tiny.engine + +import com.github.minigdx.tiny.resources.GameResource +import com.github.minigdx.tiny.resources.ResourceType +import kotlinx.coroutines.flow.FlowCollector + +class ScriptsCollector(private val events: MutableList) : FlowCollector { + + private var bootscriptLoaded = false + + private val waitingList: MutableList = mutableListOf() + + private val loadedResources: MutableMap> = mutableMapOf() + + override suspend fun emit(value: GameResource) { + // The application has not yet booted. + // But the boot script just got loaded + if (value.type == ResourceType.BOOT_GAMESCRIPT && !bootscriptLoaded) { + events.add(value) + waitingList.forEach { + val toReload = loadedResources[it.type]?.containsKey(it.index) == true + if (!toReload) { + loadedResources.getOrPut(it.type) { mutableMapOf() }[it.index] = it + } + } + events.addAll(waitingList) + waitingList.clear() + bootscriptLoaded = true + } else if (!bootscriptLoaded) { + waitingList.add(value) + } else { + // Check if the resources is loading or reloaded + val toReload = loadedResources[value.type]?.containsKey(value.index) == true + if (!toReload) { + loadedResources.getOrPut(value.type) { mutableMapOf() }[value.index] = value + } + events.add( + value.apply { + reload = toReload + }, + ) + } + } +} diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/graphic/FrameBuffer.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/graphic/FrameBuffer.kt index 7f459fdc..c292c3fb 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/graphic/FrameBuffer.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/graphic/FrameBuffer.kt @@ -133,7 +133,8 @@ class FrameBuffer( fun clear(clearIndx: Int) { val clearIndex = gamePalette.check(clearIndx) - colorIndexBuffer.reset(clearIndex, camera.x, camera.y, camera.x + width, camera.y + height) + // colorIndexBuffer.reset(clearIndex, camera.x, camera.y, camera.x + width, camera.y + height) + colorIndexBuffer.reset(clearIndex) } fun copyFrom( diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/GfxLib.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/GfxLib.kt index f4d72fcc..ddb6e226 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/GfxLib.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/GfxLib.kt @@ -88,10 +88,18 @@ class GfxLib(private val resourceAccess: GameResourceAccess) : TwoArgFunction() val copy = PixelArray(frameBuffer.width, frameBuffer.height).apply { copyFrom(frameBuffer.colorIndexBuffer) { index, _, _ -> index } } + + val (index, name) = if (arg.isstring()) { + val index = resourceAccess.spritesheet(arg.tojstring()) ?: resourceAccess.newSpritesheetIndex() + index to arg.tojstring() + } else { + val spriteSheet = resourceAccess.spritesheet(arg.checkint()) + arg.toint() to (spriteSheet?.name ?: "frame_buffer_${arg.toint()}") + } val sheet = SpriteSheet( 0, - arg.checkint(), - "frame_buffer", + index, + name, ResourceType.GAME_SPRITESHEET, copy, copy.width, diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SprLib.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SprLib.kt index f17039c2..e078eda2 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SprLib.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/SprLib.kt @@ -99,6 +99,8 @@ class SprLib(val gameOptions: GameOptions, val resourceAccess: GameResourceAcces val previousSpriteSheet = currentSpritesheet currentSpritesheet = if (arg.isnil()) { 0 + } else if (arg.isstring()) { + resourceAccess.spritesheet(arg.tojstring()) ?: 0 } else { arg.checkint() } diff --git a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/StdLib.kt b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/StdLib.kt index bcb657ae..b9891517 100644 --- a/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/StdLib.kt +++ b/tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/StdLib.kt @@ -46,7 +46,12 @@ class StdLib( @TinyCall("Create new instance of class using default values.") override fun call(@TinyArg("class") arg1: LuaValue, @TinyArg("default") arg2: LuaValue): LuaValue { val default = if (arg2.istable()) { - arg2.checktable()!! + val result = LuaTable() + val toCopy = arg2.checktable()!! + toCopy.keys().forEach { key -> + result.set(key, toCopy.get(key)) + } + result } else { LuaTable() } diff --git a/tiny-engine/src/jvmMain/kotlin/com/github/minigdx/tiny/platform/glfw/GlfwPlatform.kt b/tiny-engine/src/jvmMain/kotlin/com/github/minigdx/tiny/platform/glfw/GlfwPlatform.kt index a12c4b93..ca5510b3 100644 --- a/tiny-engine/src/jvmMain/kotlin/com/github/minigdx/tiny/platform/glfw/GlfwPlatform.kt +++ b/tiny-engine/src/jvmMain/kotlin/com/github/minigdx/tiny/platform/glfw/GlfwPlatform.kt @@ -261,6 +261,10 @@ class GlfwPlatform( } override fun screenshot() { + // FIXME: it doesn't play well with camera + // FIXME: improve SFX editor (use real object code...) + // FIXME: battle test the change of sprite sheets with name. + // FIXME: debug and camera doesn't play well also. val buffer = lastBuffer ?: return recordScope.launch { From 2c782325e7d2565d5fbb0f00c375b47e05657fee Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Sat, 16 Mar 2024 13:47:45 +0100 Subject: [PATCH 34/46] Start File selector implementation --- tiny-cli/src/jvmMain/resources/sfx/_tiny.json | 47 +-- .../src/jvmMain/resources/sfx/editor.ldtk | 340 +++++++++++++++++- .../sfx/editor/simplified/Level_0/data.json | 32 ++ .../sfx/editor/simplified/Music/Tiles.png | Bin 0 -> 449 bytes .../sfx/editor/simplified/Music/_bg.png | Bin 0 -> 322 bytes .../editor/simplified/Music/_composite.png | Bin 0 -> 494 bytes .../sfx/editor/simplified/Music/data.json | 15 + .../src/jvmMain/resources/sfx/test-game.lua | 73 ++-- .../src/jvmMain/resources/sfx/widgets.lua | 115 +----- 9 files changed, 438 insertions(+), 184 deletions(-) create mode 100644 tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Music/Tiles.png create mode 100644 tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Music/_bg.png create mode 100644 tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Music/_composite.png create mode 100644 tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Music/data.json diff --git a/tiny-cli/src/jvmMain/resources/sfx/_tiny.json b/tiny-cli/src/jvmMain/resources/sfx/_tiny.json index 691e3daf..cee855c9 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/_tiny.json +++ b/tiny-cli/src/jvmMain/resources/sfx/_tiny.json @@ -1,46 +1 @@ -{ - "version": "V1", - "name": "Tiny SFX Sequencer", - "resolution": { - "width": 192, - "height": 128 - }, - "sprites": { - "width": 8, - "height": 8 - }, - "zoom": 4, - "colors": [ - "#000000", - "#1D2B53", - "#7E2553", - "#008751", - "#AB5236", - "#5F574F", - "#C2C3C7", - "#FFF1E8", - "#FF004D", - "#FFA300", - "#FFEC27", - "#00E436", - "#29ADFF", - "#83769C", - "#FF77A8", - "#FFCCAA" - ], - "scripts": [ - "test-game.lua", - "game.lua", - "mouse.lua", - "widgets.lua" - ], - "spritesheets": [ - "sfx.png" - ], - "levels": [ - "editor/simplified/Level_0", - "editor/simplified/Score", - "editor/simplified/Fx" - ], - "hideMouseCursor": true -} \ No newline at end of file +{"version":"V1","name":"Tiny SFX Sequencer","resolution":{"width":192,"height":128},"sprites":{"width":8,"height":8},"zoom":4,"colors":["#000000","#1D2B53","#7E2553","#008751","#AB5236","#5F574F","#C2C3C7","#FFF1E8","#FF004D","#FFA300","#FFEC27","#00E436","#29ADFF","#83769C","#FF77A8","#FFCCAA"],"scripts":["test-game.lua","game.lua","mouse.lua","widgets.lua"],"spritesheets":["sfx.png"],"levels":["editor/simplified/Level_0","editor/simplified/Score","editor/simplified/Fx","editor/simplified/Music"],"hideMouseCursor":true} \ No newline at end of file diff --git a/tiny-cli/src/jvmMain/resources/sfx/editor.ldtk b/tiny-cli/src/jvmMain/resources/sfx/editor.ldtk index 0da20e61..651353ef 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/editor.ldtk +++ b/tiny-cli/src/jvmMain/resources/sfx/editor.ldtk @@ -11,14 +11,14 @@ "iid": "d3199780-d7b0-11ee-9c45-618e61de5acd", "jsonVersion": "1.5.3", "appBuildId": 473703, - "nextUid": 55, + "nextUid": 60, "identifierStyle": "Capitalize", "toc": [], "worldLayout": "Free", "worldGridWidth": 256, "worldGridHeight": 256, - "defaultLevelWidth": 256, - "defaultLevelHeight": 256, + "defaultLevelWidth": 176, + "defaultLevelHeight": 128, "defaultPivotX": 0, "defaultPivotY": 0, "defaultGridSize": 16, @@ -1660,6 +1660,153 @@ "tilesetUid": null } ] + }, + { + "identifier": "FilesSelector", + "uid": 55, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": false, + "doc": null, + "width": 8, + "height": 8, + "resizableX": false, + "resizableY": false, + "minWidth": null, + "maxWidth": null, + "minHeight": null, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 1, + "lineOpacity": 1, + "hollow": false, + "color": "#0099DB", + "renderMode": "Rectangle", + "showName": true, + "tilesetId": null, + "tileRenderMode": "FitInside", + "tileRect": null, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0, + "pivotY": 0, + "fieldDefs": [ + { + "identifier": "Previous", + "doc": null, + "__type": "EntityRef", + "uid": 56, + "type": "F_EntityRef", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "RefLinkBetweenCenters", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": false, + "allowOutOfLevelRef": false, + "allowedRefs": "OnlySpecificEntity", + "allowedRefsEntityUid": 2, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Next", + "doc": null, + "__type": "EntityRef", + "uid": 57, + "type": "F_EntityRef", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "RefLinkBetweenCenters", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": false, + "allowOutOfLevelRef": false, + "allowedRefs": "OnlySpecificEntity", + "allowedRefsEntityUid": 2, + "allowedRefTags": [], + "tilesetUid": null + }, + { + "identifier": "Screen", + "doc": null, + "__type": "EntityRef", + "uid": 58, + "type": "F_EntityRef", + "isArray": false, + "canBeNull": false, + "arrayMinLength": null, + "arrayMaxLength": null, + "editorDisplayMode": "RefLinkBetweenCenters", + "editorDisplayScale": 1, + "editorDisplayPos": "Above", + "editorLinkStyle": "CurvedArrow", + "editorDisplayColor": null, + "editorAlwaysShow": false, + "editorShowInWorld": true, + "editorCutLongValues": true, + "editorTextSuffix": null, + "editorTextPrefix": null, + "useForSmartColor": false, + "exportToToc": false, + "searchable": false, + "min": null, + "max": null, + "regex": null, + "acceptFileTypes": null, + "defaultOverride": null, + "textLanguageMode": null, + "symmetricalRef": false, + "autoChainRef": false, + "allowOutOfLevelRef": false, + "allowedRefs": "OnlySpecificEntity", + "allowedRefsEntityUid": 2, + "allowedRefTags": [], + "tilesetUid": null + } + ] } ], "tilesets": [ { @@ -1946,6 +2093,50 @@ ], "__worldX": 104, "__worldY": 0 + }, + { + "__identifier": "FilesSelector", + "__grid": [8,2], + "__pivot": [0,0], + "__tags": [], + "__tile": null, + "__smartColor": "#0099DB", + "iid": "34029630-d7b0-11ee-9c45-c74f5e3eabe3", + "width": 8, + "height": 8, + "defUid": 55, + "px": [64,16], + "fieldInstances": [ + { "__identifier": "Previous", "__type": "EntityRef", "__value": { + "entityIid": "fce7b3d0-d7b0-11ee-9c45-9dddf90ef7e1", + "layerIid": "8a2f1940-d7b0-11ee-9c45-cd8bc568018a", + "levelIid": "d319e5a0-d7b0-11ee-9c45-898e2a016ceb", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, "__tile": null, "defUid": 56, "realEditorValues": [{ + "id": "V_String", + "params": ["fce7b3d0-d7b0-11ee-9c45-9dddf90ef7e1"] + }] }, + { "__identifier": "Next", "__type": "EntityRef", "__value": { + "entityIid": "04f9be10-d7b0-11ee-9c45-5153c382042a", + "layerIid": "8a2f1940-d7b0-11ee-9c45-cd8bc568018a", + "levelIid": "d319e5a0-d7b0-11ee-9c45-898e2a016ceb", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, "__tile": null, "defUid": 57, "realEditorValues": [{ + "id": "V_String", + "params": ["04f9be10-d7b0-11ee-9c45-5153c382042a"] + }] }, + { "__identifier": "Screen", "__type": "EntityRef", "__value": { + "entityIid": "f0987fa0-d7b0-11ee-9c45-4bfc6d23b807", + "layerIid": "8a2f1940-d7b0-11ee-9c45-cd8bc568018a", + "levelIid": "d319e5a0-d7b0-11ee-9c45-898e2a016ceb", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, "__tile": null, "defUid": 58, "realEditorValues": [{ + "id": "V_String", + "params": ["f0987fa0-d7b0-11ee-9c45-4bfc6d23b807"] + }] } + ], + "__worldX": 64, + "__worldY": 16 } ] }, @@ -4970,6 +5161,149 @@ } ], "__neighbours": [] + }, + { + "identifier": "Music", + "iid": "db58e2f0-d7b0-11ee-9c45-b50aaf7f2761", + "uid": 59, + "worldX": -184, + "worldY": 272, + "worldDepth": 0, + "pxWid": 176, + "pxHei": 128, + "__bgColor": "#696A79", + "bgColor": null, + "useAutoIdentifier": false, + "bgRelPath": null, + "bgPos": null, + "bgPivotX": 0.5, + "bgPivotY": 0.5, + "__smartColor": "#ADADB5", + "__bgPos": null, + "externalRelPath": null, + "fieldInstances": [], + "layerInstances": [ + { + "__identifier": "Entities", + "__type": "Entities", + "__cWid": 22, + "__cHei": 16, + "__gridSize": 8, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": null, + "__tilesetRelPath": null, + "iid": "db58e2f1-d7b0-11ee-9c45-01e111c31e96", + "levelId": 59, + "layerDefUid": 7, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 6821577, + "overrideTilesetUid": null, + "gridTiles": [], + "entityInstances": [] + }, + { + "__identifier": "Tiles", + "__type": "Tiles", + "__cWid": 22, + "__cHei": 16, + "__gridSize": 8, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": 1, + "__tilesetRelPath": "sfx.png", + "iid": "db58e2f2-d7b0-11ee-9c45-b5cc72e8138a", + "levelId": 59, + "layerDefUid": 8, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 1476034, + "overrideTilesetUid": null, + "gridTiles": [ + { "px": [8,16], "src": [208,24], "f": 0, "t": 122, "d": [45], "a": 1 }, + { "px": [56,16], "src": [208,24], "f": 0, "t": 122, "d": [51], "a": 1 }, + { "px": [72,16], "src": [208,24], "f": 0, "t": 122, "d": [53], "a": 1 }, + { "px": [80,16], "src": [208,24], "f": 0, "t": 122, "d": [54], "a": 1 }, + { "px": [88,16], "src": [208,24], "f": 0, "t": 122, "d": [55], "a": 1 }, + { "px": [96,16], "src": [208,24], "f": 0, "t": 122, "d": [56], "a": 1 }, + { "px": [104,16], "src": [208,24], "f": 0, "t": 122, "d": [57], "a": 1 }, + { "px": [120,16], "src": [208,24], "f": 0, "t": 122, "d": [59], "a": 1 }, + { "px": [128,16], "src": [208,24], "f": 0, "t": 122, "d": [60], "a": 1 }, + { "px": [136,16], "src": [208,24], "f": 0, "t": 122, "d": [61], "a": 1 }, + { "px": [144,16], "src": [208,24], "f": 0, "t": 122, "d": [62], "a": 1 }, + { "px": [152,16], "src": [208,24], "f": 0, "t": 122, "d": [63], "a": 1 }, + { "px": [8,24], "src": [208,24], "f": 0, "t": 122, "d": [67], "a": 1 }, + { "px": [56,24], "src": [208,24], "f": 0, "t": 122, "d": [73], "a": 1 }, + { "px": [88,24], "src": [208,24], "f": 0, "t": 122, "d": [77], "a": 1 }, + { "px": [120,24], "src": [208,24], "f": 0, "t": 122, "d": [81], "a": 1 }, + { "px": [152,24], "src": [208,24], "f": 0, "t": 122, "d": [85], "a": 1 }, + { "px": [8,32], "src": [208,24], "f": 0, "t": 122, "d": [89], "a": 1 }, + { "px": [56,32], "src": [208,24], "f": 0, "t": 122, "d": [95], "a": 1 }, + { "px": [88,32], "src": [208,24], "f": 0, "t": 122, "d": [99], "a": 1 }, + { "px": [120,32], "src": [208,24], "f": 0, "t": 122, "d": [103], "a": 1 }, + { "px": [152,32], "src": [208,24], "f": 0, "t": 122, "d": [107], "a": 1 }, + { "px": [8,40], "src": [208,24], "f": 0, "t": 122, "d": [111], "a": 1 }, + { "px": [56,40], "src": [208,24], "f": 0, "t": 122, "d": [117], "a": 1 }, + { "px": [88,40], "src": [208,24], "f": 0, "t": 122, "d": [121], "a": 1 }, + { "px": [120,40], "src": [208,24], "f": 0, "t": 122, "d": [125], "a": 1 }, + { "px": [152,40], "src": [208,24], "f": 0, "t": 122, "d": [129], "a": 1 }, + { "px": [8,48], "src": [208,24], "f": 0, "t": 122, "d": [133], "a": 1 }, + { "px": [56,48], "src": [208,24], "f": 0, "t": 122, "d": [139], "a": 1 }, + { "px": [88,48], "src": [208,24], "f": 0, "t": 122, "d": [143], "a": 1 }, + { "px": [120,48], "src": [208,24], "f": 0, "t": 122, "d": [147], "a": 1 }, + { "px": [128,48], "src": [208,24], "f": 0, "t": 122, "d": [148], "a": 1 }, + { "px": [136,48], "src": [208,24], "f": 0, "t": 122, "d": [149], "a": 1 }, + { "px": [144,48], "src": [208,24], "f": 0, "t": 122, "d": [150], "a": 1 }, + { "px": [152,48], "src": [208,24], "f": 0, "t": 122, "d": [151], "a": 1 }, + { "px": [8,56], "src": [208,24], "f": 0, "t": 122, "d": [155], "a": 1 }, + { "px": [32,56], "src": [208,24], "f": 0, "t": 122, "d": [158], "a": 1 }, + { "px": [56,56], "src": [208,24], "f": 0, "t": 122, "d": [161], "a": 1 }, + { "px": [88,56], "src": [208,24], "f": 0, "t": 122, "d": [165], "a": 1 }, + { "px": [120,56], "src": [208,24], "f": 0, "t": 122, "d": [169], "a": 1 }, + { "px": [8,64], "src": [208,24], "f": 0, "t": 122, "d": [177], "a": 1 }, + { "px": [32,64], "src": [208,24], "f": 0, "t": 122, "d": [180], "a": 1 }, + { "px": [56,64], "src": [208,24], "f": 0, "t": 122, "d": [183], "a": 1 }, + { "px": [88,64], "src": [208,24], "f": 0, "t": 122, "d": [187], "a": 1 }, + { "px": [120,64], "src": [208,24], "f": 0, "t": 122, "d": [191], "a": 1 }, + { "px": [8,72], "src": [208,24], "f": 0, "t": 122, "d": [199], "a": 1 }, + { "px": [32,72], "src": [208,24], "f": 0, "t": 122, "d": [202], "a": 1 }, + { "px": [56,72], "src": [208,24], "f": 0, "t": 122, "d": [205], "a": 1 }, + { "px": [88,72], "src": [208,24], "f": 0, "t": 122, "d": [209], "a": 1 }, + { "px": [120,72], "src": [208,24], "f": 0, "t": 122, "d": [213], "a": 1 }, + { "px": [8,80], "src": [208,24], "f": 0, "t": 122, "d": [221], "a": 1 }, + { "px": [32,80], "src": [208,24], "f": 0, "t": 122, "d": [224], "a": 1 }, + { "px": [56,80], "src": [208,24], "f": 0, "t": 122, "d": [227], "a": 1 }, + { "px": [88,80], "src": [208,24], "f": 0, "t": 122, "d": [231], "a": 1 }, + { "px": [120,80], "src": [208,24], "f": 0, "t": 122, "d": [235], "a": 1 }, + { "px": [8,88], "src": [208,24], "f": 0, "t": 122, "d": [243], "a": 1 }, + { "px": [16,88], "src": [208,24], "f": 0, "t": 122, "d": [244], "a": 1 }, + { "px": [24,88], "src": [208,24], "f": 0, "t": 122, "d": [245], "a": 1 }, + { "px": [32,88], "src": [208,24], "f": 0, "t": 122, "d": [246], "a": 1 }, + { "px": [40,88], "src": [208,24], "f": 0, "t": 122, "d": [247], "a": 1 }, + { "px": [48,88], "src": [208,24], "f": 0, "t": 122, "d": [248], "a": 1 }, + { "px": [56,88], "src": [208,24], "f": 0, "t": 122, "d": [249], "a": 1 }, + { "px": [72,88], "src": [208,24], "f": 0, "t": 122, "d": [251], "a": 1 }, + { "px": [80,88], "src": [208,24], "f": 0, "t": 122, "d": [252], "a": 1 }, + { "px": [88,88], "src": [208,24], "f": 0, "t": 122, "d": [253], "a": 1 }, + { "px": [96,88], "src": [208,24], "f": 0, "t": 122, "d": [254], "a": 1 }, + { "px": [104,88], "src": [208,24], "f": 0, "t": 122, "d": [255], "a": 1 }, + { "px": [120,88], "src": [208,24], "f": 0, "t": 122, "d": [257], "a": 1 } + ], + "entityInstances": [] + } + ], + "__neighbours": [] } ], "worlds": [], diff --git a/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Level_0/data.json b/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Level_0/data.json index 04de43ed..4a5adc0c 100644 --- a/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Level_0/data.json +++ b/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Level_0/data.json @@ -125,6 +125,38 @@ "Help": "" } } + ], + "FilesSelector": [ + { + "id": "FilesSelector", + "iid": "34029630-d7b0-11ee-9c45-c74f5e3eabe3", + "layer": "Entities", + "x": 64, + "y": 16, + "width": 8, + "height": 8, + "color": 39387, + "customFields": { + "Previous": { + "entityIid": "fce7b3d0-d7b0-11ee-9c45-9dddf90ef7e1", + "layerIid": "8a2f1940-d7b0-11ee-9c45-cd8bc568018a", + "levelIid": "d319e5a0-d7b0-11ee-9c45-898e2a016ceb", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + "Next": { + "entityIid": "04f9be10-d7b0-11ee-9c45-5153c382042a", + "layerIid": "8a2f1940-d7b0-11ee-9c45-cd8bc568018a", + "levelIid": "d319e5a0-d7b0-11ee-9c45-898e2a016ceb", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + }, + "Screen": { + "entityIid": "f0987fa0-d7b0-11ee-9c45-4bfc6d23b807", + "layerIid": "8a2f1940-d7b0-11ee-9c45-cd8bc568018a", + "levelIid": "d319e5a0-d7b0-11ee-9c45-898e2a016ceb", + "worldIid": "d3199781-d7b0-11ee-9c45-11db300be03a" + } + } + } ] } } \ No newline at end of file diff --git a/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Music/Tiles.png b/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Music/Tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..6e90c47e5021b7b44bd6919b7420cd05e8d93b83 GIT binary patch literal 449 zcmeAS@N?(olHy`uVBq!ia0vp^8-TchgAGWoKKuAH0|R4+r;B4q#jUq@4(1*);Bj>{ zd&Cvf_iO#pR|nX5IFwdaHuRq?KXg#e+-Z`ECo&4Uy{_6O-~apf|G$3T1ybx12@Q;F zScr4~{(WOCbNJ1`%wllh8zb8dy90a~@(B$LFc$k3{tdMajNAA(FyCUo!T6Rr2PpfN z`Aq{*F$ajn1C*A%V0VCl5ys;Ck$zu%HUp2r0S0DFVs-q2U+=fq|4^3zNee*K01X2< zjtTBU2n*;MkP!|Lb8bU?0kjpQ8t7z@;f!z_AS{scfYJ&O?*g4?aA5X7#;fyR)!Rd? of@ni_*app>+v_@ux4HGSJ3CLj2SyEpr>mdKI;Vst0C+EzhX4Qo literal 0 HcmV?d00001 diff --git a/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Music/_bg.png b/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Music/_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..da36e498ca5416bf7999fd64c3f22e9603aa8592 GIT binary patch literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^8-TchgAGWoKKuAH0|O(cr;B4q#jUrO40#zCI1U)R zX=1)|xRqm)oaqLgO;rz83otS_Hy%77A;H7L#>SkSU|;}b_5ei^5_oi2fI`iUh9Dsx zwqrmckStF11_n5l0}aD49;zH_H;U6R#@c RN`Ya+;OXk;vd$@?2>``TUmO4c literal 0 HcmV?d00001 diff --git a/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Music/_composite.png b/tiny-cli/src/jvmMain/resources/sfx/editor/simplified/Music/_composite.png new file mode 100644 index 0000000000000000000000000000000000000000..9841bf93c671bd549d1f5559dac07f6901fc7a60 GIT binary patch literal 494 zcmeAS@N?(olHy`uVBq!ia0vp^8-TchgAGWoKKuAH0|Vn$PZ!6Kid%2*929I(5O8%A zGGsbr$aS{ig(9;}f~fJW_VU|z`!7A$y?%Gsl&z0cITAR5kWmK$8&tuNbps0!GR&)c zu;Tfa7yLV_{w;t1{@v^6>=FqLjBHqlzPh^K47(kEGcdCl9Qek_cEj#~-UYh@42(P* zY8zq~)HX0ONhAPebL11mGvpH*7(gl*ZnNKDy~Qq}(7?EjAEd3U5vY|Tq2Vp_8>Y9+ zJQM8A7_ry|vR|3$+`r%7zOxw|0GkPN6wnlq3{W3P5J&*c0_g@?43q&`2NZMw%K$9~ z3j(bIsR6nRq6g?!upS1mMv$9;G6F#2PxyhGr~mzdse@X8;I2jqH( 1 then - local prev = self.parent.tabs[self.index - 1] - self.x = prev.x + prev.width - else - self.x = 0 - end -end - ---[[ - Draw tab header -]] -Tab._draw_header = function(self) - local offset = self.status * 8 - - -- body - -- number of body repetition - local time = math.floor(self.width / 16) - local rest = self.width % 16 - for i = 0, time - 1 do - spr.sdraw(self.x + (i) * 16, 0, 80, offset, 16, 8) - end - - spr.sdraw(self.x + (time) * 16, 0, 80, offset, rest, 8) - - -- right - spr.sdraw(self.x + self.width, 0, 96, offset, 8, 8) - - local center = self.width * 0.5 - #self.label * 0.5 * 4 - - print(self.label, self.x + center, self.y + 2) - - -- left - if self.status == 1 then - spr.sdraw(self.x - 8, 0, 64, 8, 8, 8) - end -end - ---[[ - Draw tab content -]] -Tab._draw = function(self) - -end - -TabManager._init = function(self) - self.new_tab = new(Tab, { - label = "+" - }) - self.new_tab.parent = self - self.new_tab.index = 0 - self.new_tab:_init() -end - -TabManager._update = function(self) - -end - -TabManager._draw = function(self) - -- draw new tab header - self.new_tab:_draw_header() - - -- draw tab headers - for i, tab in rpairs(self.tabs) do - tab:_draw_header() - end - -- draw current header - if self.active_tab ~= nil then - self.active_tab:_draw_header() - -- draw current tab content - self.active_tab:_draw() - end -end - -TabManager.create_tab = function(self, data) - local new_tab = new(Tab, data) - table.insert(self.tabs, new_tab) - new_tab.parent = self - new_tab:_init() - - self.new_tab.x = new_tab.x + new_tab.width - return new_tab -end - factory.create_button = function(self, value) local result = new(Button, value) result.help = result.customFields.Help @@ -289,14 +186,6 @@ factory.create_envelop = function(self, data) return result end -factory.createCheckbox = function(value) - local result = new(Checkbox, value) - result.width = 12 + #result.label * 4 - table.insert(widgets, result) - table.insert(checkboxes, result) - return result -end - factory.create_knob = function(self, value) local result = new(Knob, value) result.label = result.customFields.Label @@ -538,6 +427,10 @@ MenuItem._draw = function(self) if self.spr ~= nil then spr.draw(self.spr + self.status * 128 + self.active * (128 + 32), self.x, self.y) end + + if self.label ~= nil then + print(self.label, self.x + 5, self.y + 2) + end end factory.create_menu_item = function(self, data) From 500970f91da27395496301bdcf7dfe493c0d4ef6 Mon Sep 17 00:00:00 2001 From: David Wursteisen Date: Sun, 17 Mar 2024 10:23:02 +0100 Subject: [PATCH 35/46] Load Score screen; --- .gitignore | 7 +- .idea/.gitignore | 8 - .idea/.name | 1 - .idea/artifacts/test_luak_js_1_0_SNAPSHOT.xml | 8 - .../artifacts/test_luak_jvm_1_0_SNAPSHOT.xml | 8 - .idea/artifacts/tiny_cli_js_DEV_SNAPSHOT.xml | 4 +- .idea/artifacts/tiny_cli_jvm_DEV_SNAPSHOT.xml | 4 +- .../tiny_doc_annotations_js_DEV_SNAPSHOT.xml | 4 +- .../tiny_doc_annotations_jvm_DEV_SNAPSHOT.xml | 4 +- .../tiny_doc_generator_js_DEV_SNAPSHOT.xml | 4 +- .../tiny_doc_generator_jvm_DEV_SNAPSHOT.xml | 4 +- .idea/artifacts/tiny_doc_js_DEV_SNAPSHOT.xml | 8 - .idea/artifacts/tiny_doc_jvm_DEV_SNAPSHOT.xml | 8 - .../artifacts/tiny_engine_js_1_0_SNAPSHOT.xml | 8 - .../artifacts/tiny_engine_js_DEV_SNAPSHOT.xml | 4 +- .../tiny_engine_jvm_1_0_SNAPSHOT.xml | 8 - .../tiny_engine_jvm_DEV_SNAPSHOT.xml | 4 +- .../tiny_web_editor_js_DEV_SNAPSHOT.xml | 4 +- .../tiny_web_editor_jvm_DEV_SNAPSHOT.xml | 4 +- .idea/codeStyles/Project.xml | 18 --- .idea/codeStyles/codeStyleConfig.xml | 5 - .idea/gradle.xml | 2 + .idea/inspectionProfiles/Project_Default.xml | 23 --- .idea/kotlinc.xml | 6 - .idea/misc.xml | 11 +- .idea/vcs.xml | 2 +- .../src/jvmMain/resources/sfx/data/sfx-0.sfx | 10 +- .../src/jvmMain/resources/sfx/editor.ldtk | 140 +++++++++++++++++- .../sfx/editor/simplified/Level_0/data.json | 6 + .../sfx/editor/simplified/Score/data.json | 12 ++ .../src/jvmMain/resources/sfx/test-game.lua | 107 +++++++++++-- .../src/jvmMain/resources/sfx/widgets.lua | 11 +- .../com/github/minigdx/tiny/lua/SfxLib.kt | 109 ++++++++++---- .../com/github/minigdx/tiny/sound/Effect.kt | 14 +- .../com/github/minigdx/tiny/sound/Song.kt | 48 ++---- .../github/minigdx/tiny/sound/SoundManager.kt | 14 -- .../minigdx/tiny/sound/WaveGenerator.kt | 16 +- .../com/github/minigdx/tiny/lua/GfxLibTest.kt | 3 + .../com/github/minigdx/tiny/lua/SfxLibTest.kt | 37 ++--- .../com/github/minigdx/tiny/lua/StdLibTest.kt | 4 + .../tiny/platform/webgl/WebGlPlatform.kt | 4 +- 41 files changed, 424 insertions(+), 282 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/.name delete mode 100644 .idea/artifacts/test_luak_js_1_0_SNAPSHOT.xml delete mode 100644 .idea/artifacts/test_luak_jvm_1_0_SNAPSHOT.xml delete mode 100644 .idea/artifacts/tiny_doc_js_DEV_SNAPSHOT.xml delete mode 100644 .idea/artifacts/tiny_doc_jvm_DEV_SNAPSHOT.xml delete mode 100644 .idea/artifacts/tiny_engine_js_1_0_SNAPSHOT.xml delete mode 100644 .idea/artifacts/tiny_engine_jvm_1_0_SNAPSHOT.xml delete mode 100644 .idea/codeStyles/Project.xml delete mode 100644 .idea/codeStyles/codeStyleConfig.xml delete mode 100644 .idea/inspectionProfiles/Project_Default.xml delete mode 100644 .idea/kotlinc.xml diff --git a/.gitignore b/.gitignore index 4c3d5029..8b26355e 100644 --- a/.gitignore +++ b/.gitignore @@ -5,17 +5,14 @@ build/ !**/src/test/**/build/ ### IntelliJ IDEA ### -.idea/modules.xml -.idea/jarRepositories.xml -.idea/compiler.xml -.idea/libraries/ +.idea/** +.idea/ *.iws *.iml *.ipr out/ !**/src/main/**/out/ !**/src/test/**/out/ -.idea ### Eclipse ### .apt_generated diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 13566b81..00000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index 18a34fb3..00000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -tiny \ No newline at end of file diff --git a/.idea/artifacts/test_luak_js_1_0_SNAPSHOT.xml b/.idea/artifacts/test_luak_js_1_0_SNAPSHOT.xml deleted file mode 100644 index c51cd986..00000000 --- a/.idea/artifacts/test_luak_js_1_0_SNAPSHOT.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - $PROJECT_DIR$/build/libs - - - - - \ No newline at end of file diff --git a/.idea/artifacts/test_luak_jvm_1_0_SNAPSHOT.xml b/.idea/artifacts/test_luak_jvm_1_0_SNAPSHOT.xml deleted file mode 100644 index b42dd507..00000000 --- a/.idea/artifacts/test_luak_jvm_1_0_SNAPSHOT.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - $PROJECT_DIR$/build/libs - - - - - \ No newline at end of file diff --git a/.idea/artifacts/tiny_cli_js_DEV_SNAPSHOT.xml b/.idea/artifacts/tiny_cli_js_DEV_SNAPSHOT.xml index 383cb117..8fd50080 100644 --- a/.idea/artifacts/tiny_cli_js_DEV_SNAPSHOT.xml +++ b/.idea/artifacts/tiny_cli_js_DEV_SNAPSHOT.xml @@ -1,8 +1,6 @@ $PROJECT_DIR$/tiny-cli/build/libs - - - + \ No newline at end of file diff --git a/.idea/artifacts/tiny_cli_jvm_DEV_SNAPSHOT.xml b/.idea/artifacts/tiny_cli_jvm_DEV_SNAPSHOT.xml index 9335c2e9..5d70a08e 100644 --- a/.idea/artifacts/tiny_cli_jvm_DEV_SNAPSHOT.xml +++ b/.idea/artifacts/tiny_cli_jvm_DEV_SNAPSHOT.xml @@ -1,8 +1,6 @@ $PROJECT_DIR$/tiny-cli/build/libs - - - + \ No newline at end of file diff --git a/.idea/artifacts/tiny_doc_annotations_js_DEV_SNAPSHOT.xml b/.idea/artifacts/tiny_doc_annotations_js_DEV_SNAPSHOT.xml index 7e7d67e4..296595ef 100644 --- a/.idea/artifacts/tiny_doc_annotations_js_DEV_SNAPSHOT.xml +++ b/.idea/artifacts/tiny_doc_annotations_js_DEV_SNAPSHOT.xml @@ -1,8 +1,6 @@ $PROJECT_DIR$/tiny-doc-annotations/build/libs - - - + \ No newline at end of file diff --git a/.idea/artifacts/tiny_doc_annotations_jvm_DEV_SNAPSHOT.xml b/.idea/artifacts/tiny_doc_annotations_jvm_DEV_SNAPSHOT.xml index 6ef44cdc..cb421545 100644 --- a/.idea/artifacts/tiny_doc_annotations_jvm_DEV_SNAPSHOT.xml +++ b/.idea/artifacts/tiny_doc_annotations_jvm_DEV_SNAPSHOT.xml @@ -1,8 +1,6 @@ $PROJECT_DIR$/tiny-doc-annotations/build/libs - - - + \ No newline at end of file diff --git a/.idea/artifacts/tiny_doc_generator_js_DEV_SNAPSHOT.xml b/.idea/artifacts/tiny_doc_generator_js_DEV_SNAPSHOT.xml index 027ed3d6..499dd4a2 100644 --- a/.idea/artifacts/tiny_doc_generator_js_DEV_SNAPSHOT.xml +++ b/.idea/artifacts/tiny_doc_generator_js_DEV_SNAPSHOT.xml @@ -1,8 +1,6 @@ $PROJECT_DIR$/tiny-doc-generator/build/libs - - - + \ No newline at end of file diff --git a/.idea/artifacts/tiny_doc_generator_jvm_DEV_SNAPSHOT.xml b/.idea/artifacts/tiny_doc_generator_jvm_DEV_SNAPSHOT.xml index 56ddddff..61acb0ea 100644 --- a/.idea/artifacts/tiny_doc_generator_jvm_DEV_SNAPSHOT.xml +++ b/.idea/artifacts/tiny_doc_generator_jvm_DEV_SNAPSHOT.xml @@ -1,8 +1,6 @@ $PROJECT_DIR$/tiny-doc-generator/build/libs - - - + \ No newline at end of file diff --git a/.idea/artifacts/tiny_doc_js_DEV_SNAPSHOT.xml b/.idea/artifacts/tiny_doc_js_DEV_SNAPSHOT.xml deleted file mode 100644 index c93805c6..00000000 --- a/.idea/artifacts/tiny_doc_js_DEV_SNAPSHOT.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - $PROJECT_DIR$/tiny-doc/build/libs - - - - - \ No newline at end of file diff --git a/.idea/artifacts/tiny_doc_jvm_DEV_SNAPSHOT.xml b/.idea/artifacts/tiny_doc_jvm_DEV_SNAPSHOT.xml deleted file mode 100644 index 975b1177..00000000 --- a/.idea/artifacts/tiny_doc_jvm_DEV_SNAPSHOT.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - $PROJECT_DIR$/tiny-doc/build/libs - - - - - \ No newline at end of file diff --git a/.idea/artifacts/tiny_engine_js_1_0_SNAPSHOT.xml b/.idea/artifacts/tiny_engine_js_1_0_SNAPSHOT.xml deleted file mode 100644 index 9bf8115a..00000000 --- a/.idea/artifacts/tiny_engine_js_1_0_SNAPSHOT.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - $PROJECT_DIR$/tiny-engine/build/libs - - - - - \ No newline at end of file diff --git a/.idea/artifacts/tiny_engine_js_DEV_SNAPSHOT.xml b/.idea/artifacts/tiny_engine_js_DEV_SNAPSHOT.xml index ae061d86..95757cd2 100644 --- a/.idea/artifacts/tiny_engine_js_DEV_SNAPSHOT.xml +++ b/.idea/artifacts/tiny_engine_js_DEV_SNAPSHOT.xml @@ -1,8 +1,6 @@ $PROJECT_DIR$/tiny-engine/build/libs - - - + \ No newline at end of file diff --git a/.idea/artifacts/tiny_engine_jvm_1_0_SNAPSHOT.xml b/.idea/artifacts/tiny_engine_jvm_1_0_SNAPSHOT.xml deleted file mode 100644 index f4ebc43b..00000000 --- a/.idea/artifacts/tiny_engine_jvm_1_0_SNAPSHOT.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - $PROJECT_DIR$/tiny-engine/build/libs - - - - - \ No newline at end of file diff --git a/.idea/artifacts/tiny_engine_jvm_DEV_SNAPSHOT.xml b/.idea/artifacts/tiny_engine_jvm_DEV_SNAPSHOT.xml index 81bd4b18..594823a2 100644 --- a/.idea/artifacts/tiny_engine_jvm_DEV_SNAPSHOT.xml +++ b/.idea/artifacts/tiny_engine_jvm_DEV_SNAPSHOT.xml @@ -1,8 +1,6 @@ $PROJECT_DIR$/tiny-engine/build/libs - - - + \ No newline at end of file diff --git a/.idea/artifacts/tiny_web_editor_js_DEV_SNAPSHOT.xml b/.idea/artifacts/tiny_web_editor_js_DEV_SNAPSHOT.xml index ab61da67..bd1a1072 100644 --- a/.idea/artifacts/tiny_web_editor_js_DEV_SNAPSHOT.xml +++ b/.idea/artifacts/tiny_web_editor_js_DEV_SNAPSHOT.xml @@ -1,8 +1,6 @@ $PROJECT_DIR$/tiny-web-editor/build/libs - - - + \ No newline at end of file diff --git a/.idea/artifacts/tiny_web_editor_jvm_DEV_SNAPSHOT.xml b/.idea/artifacts/tiny_web_editor_jvm_DEV_SNAPSHOT.xml index f40eb118..e6a035d4 100644 --- a/.idea/artifacts/tiny_web_editor_jvm_DEV_SNAPSHOT.xml +++ b/.idea/artifacts/tiny_web_editor_jvm_DEV_SNAPSHOT.xml @@ -1,8 +1,6 @@ $PROJECT_DIR$/tiny-web-editor/build/libs - - - + \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml deleted file mode 100644 index 4dd73203..00000000 --- a/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml deleted file mode 100644 index 79ee123c..00000000 --- a/.idea/codeStyles/codeStyleConfig.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 18e83f08..2440b9f7 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -5,6 +5,7 @@