From d576f7e27584f1dcb4dd2f73f1acb38de1960e5f Mon Sep 17 00:00:00 2001 From: duncathan Date: Mon, 26 Jul 2021 20:32:39 -0600 Subject: [PATCH] adds completable logic to UI, adjusts settings UI --- src/database/music.lua | 2 ++ src/randomizer.lua | 9 ++++-- src/settings.lua | 6 +++- src/ui/draw.lua | 52 +++++++++++++++++---------------- src/ui/music.lua | 65 ++++++++++++++++++++++++++++++++---------- src/ui/settings.lua | 21 ++------------ 6 files changed, 95 insertions(+), 60 deletions(-) diff --git a/src/database/music.lua b/src/database/music.lua index fb5f0a3..73f85fc 100644 --- a/src/database/music.lua +++ b/src/database/music.lua @@ -179,7 +179,9 @@ local cues = { local music = Class:extend() function music:new() + self.vanillaEnabled = true self.betaEnabled = false + self.secretEnabled = false self.songs = songs self.cues = cues self.flavor = "Shuffle" diff --git a/src/randomizer.lua b/src/randomizer.lua index 4deddce..d145179 100644 --- a/src/randomizer.lua +++ b/src/randomizer.lua @@ -429,13 +429,14 @@ function C:_updateSettings() end function C:_updateSharecode(seed) - local settings = 0 -- 0b00000000 + local settings = 0 -- 0b0000000000000000 -- P: single bit used for puppysanity -- O: three bits used for objective -- S: three bits used for spawn location -- B: single bit used for sequence breaks -- F: single bit used for falling blocks in Hell - -- 0bFBSSSOOOP + -- C: single bit used for completeable logic + -- 0b000000CFBSSSOOOP -- bitshift intervals local obj = 1 @@ -443,6 +444,7 @@ function C:_updateSharecode(seed) local spn = 4 local brk = 7 local nfb = 8 + local cpl = 9 if self.obj == "objBadEnd" then settings = bit.bor(settings, bit.blshift(1, obj)) @@ -479,6 +481,9 @@ function C:_updateSharecode(seed) if self.worldGraph.noFallingBlocks then settings = bit.bor(settings, bit.blshift(1, nfb)) end + if self.completableLogic then + settings = bit.bor(settings, bit.blshift(1, cpl)) + end if #seed < 20 then seed = seed .. (" "):rep(20-#seed) diff --git a/src/settings.lua b/src/settings.lua index b4cfcd2..57d641d 100644 --- a/src/settings.lua +++ b/src/settings.lua @@ -37,10 +37,12 @@ function C:getDefaults() rocket = true }, musicShuffle = false, + musicVanilla = true, musicBeta = false, + musicSecret = false, musicFlavor = "Shuffle", noFallingBlocks = false, - completableLogic = true, --TODO: MAKE FALSE BY DEFAULT AFTER TESTING + completableLogic = false, csversion = 0 } end @@ -69,7 +71,9 @@ function C:serialize() line = line .. tab .. ("seqbreaks = %s,\r\n"):format(self.settings.seqbreaks) line = line .. tab .. ("dboosts = %s,\r\n"):format(dboost) line = line .. tab .. ("musicShuffle = %s,\r\n"):format(self.settings.musicShuffle) + line = line .. tab .. ("musicVanilla = %s,\r\n"):format(self.settings.musicVanilla) line = line .. tab .. ("musicBeta = %s,\r\n"):format(self.settings.musicBeta) + line = line .. tab .. ("musicSecret = %s,\r\n"):format(self.settings.musicSecret) line = line .. tab .. ("musicFlavor = %q,\r\n"):format(self.settings.musicFlavor) line = line .. tab .. ("noFallingBlocks = %s,\r\n"):format(self.settings.noFallingBlocks) line = line .. tab .. ("completableLogic = %s,\r\n"):format(self.settings.completableLogic) diff --git a/src/ui/draw.lua b/src/ui/draw.lua index 32b8e2b..4fa5996 100644 --- a/src/ui/draw.lua +++ b/src/ui/draw.lua @@ -28,8 +28,9 @@ function C:setup() self:loadMyChar(Settings.settings.mychar) self:loadSpawn(Settings.settings.spawn) self:loadSeqSettings(Settings.settings.seqbreaks, Settings.settings.dboosts) - self:loadMusicSettings(Settings.settings.musicShuffle, Settings.settings.musicBeta, Settings.settings.musicFlavor) + self:loadMusicSettings(Settings.settings.musicShuffle, Settings.settings.musicFlavor, Settings.settings.musicVanilla, Settings.settings.musicBeta, Settings.settings.musicSecret) self:loadNoFallingBlocks(Settings.settings.noFallingBlocks) + self:loadCompleteableLogic(Settings.settings.completableLogic) background = lg.newImage('assets/background.png') self:draw() @@ -86,28 +87,29 @@ function C:loadSeed(seed) end function C:loadMyChar(mychar) + local mc = music.mychar if type(mychar) == "number" then - settings.mychar.index = mychar + mc.index = mychar elseif mychar == "assets/myChar/Quote.bmp" then - settings.mychar.index = 1 + mc.index = 1 elseif mychar == "assets/myChar/Curly.bmp" then - settings.mychar.index = 2 + mc.index = 2 elseif mychar == "assets/myChar/Sue.bmp" then - settings.mychar.index = 3 + mc.index = 3 elseif mychar == "assets/myChar/Toroko.bmp" then - settings.mychar.index = 4 + mc.index = 4 elseif mychar == "assets/myChar/King.bmp" then - settings.mychar.index = 5 + mc.index = 5 elseif mychar == "assets/myChar/Chaco.bmp" then - settings.mychar.index = 6 + mc.index = 6 elseif mychar == "assets/myChar/Kanpachi.bmp" then - settings.mychar.index = 7 + mc.index = 7 elseif mychar == "assets/myChar/Misery.bmp" then - settings.mychar.index = 8 + mc.index = 8 elseif mychar == "assets/myChar/Frog.bmp" then - settings.mychar.index = 9 + mc.index = 9 end - settings.mychar.value = "override" + mc.value = "override" end function C:loadSpawn(spawn) @@ -135,9 +137,11 @@ function C:loadSeqSettings(breaks, seq) end end -function C:loadMusicSettings(shuffle, beta, flavor) - settings.music.value = shuffle +function C:loadMusicSettings(shuffle, flavor, cs, beta, secret) + music.music.value = shuffle + music.cavestory.value = cs music.beta.value = beta + --music.secret.value = secret if flavor == "Shuffle" or flavor == 1 then music.shuffle.value = true music.random.value = false @@ -159,6 +163,10 @@ function C:loadNoFallingBlocks(noFallingBlocks) settings.noFallingBlocks.value = noFallingBlocks end +function C:loadCompleteableLogic(completableLogic) + settings.completable.value = not completableLogic +end + layout.version.text = 'Cave Story Randomizer v' .. VERSION layout.author.text = 'by duncathan' layout.twitter.text = '(@duncathan_salt)' @@ -178,14 +186,6 @@ end) layout.footershru.text = 'Original randomizer by @shruuu' -music.panel.text = [[Shuffle: remap every song to a new song. For example, all instances of Mischievous Robot become Pulse. Songs may remap to themselves. - -Random: remap every cue to a new song. For example, entering the Egg Corridor by any means plays Meltdown 2. - -Chaos: remap every