local TuningScene = Scene:extend() TuningScene.title = "Tuning Settings" require 'load.save' require 'libs.simple-slider' TuningScene.options = { -- Serves as a reference for the options available in the menu. Format: {name in config, name as displayed if applicable, slider name} {"das", "DAS", "dasSlider"}, {"arr", "ARR", "arrSlider"}, {"dcd", "DCD", "dcdSlider"}, } local optioncount = #TuningScene.options function TuningScene:new() DiscordRPC:update({ details = "In settings", state = "Changing tuning settings", }) self.highlight = 1 self.dasSlider = newSlider(290, 225, 400, config.das, 0, 20, function(v) config.das = math.floor(v) end, {width=20, knob="circle", track="roundrect"}) self.arrSlider = newSlider(290, 300, 400, config.arr, 0, 6, function(v) config.arr = math.floor(v) end, {width=20, knob="circle", track="roundrect"}) self.dcdSlider = newSlider(290, 375, 400, config.dcd, 0, 6, function(v) config.dcd = math.floor(v) end, {width=20, knob="circle", track="roundrect"}) end function TuningScene:update() self.dasSlider:update() self.arrSlider:update() self.dcdSlider:update() end function TuningScene:render() love.graphics.setColor(1, 1, 1, 1) love.graphics.draw( backgrounds["game_config"], 0, 0, 0, 0.5, 0.5 ) love.graphics.setColor(1, 1, 1, 0.5) love.graphics.rectangle("fill", 75, 98 + self.highlight * 75, 400, 33) love.graphics.setColor(1, 1, 1, 1) love.graphics.setFont(font_3x5_4) love.graphics.print("TUNING SETTINGS", 80, 40) love.graphics.setFont(font_3x5_2) love.graphics.print("These settings will only apply to modes\nthat do not use their own tunings.", 80, 90) love.graphics.setFont(font_3x5_3) love.graphics.print("Delayed Auto-Shift (DAS): " .. math.floor(self.dasSlider:getValue()) .. "F", 80, 175) love.graphics.print("Auto-Repeat Rate (ARR): " .. math.floor(self.arrSlider:getValue()) .. "F", 80, 250) love.graphics.print("DAS Cut Delay (DCD): " .. math.floor(self.dcdSlider:getValue()) .. "F", 80, 325) love.graphics.setColor(1, 1, 1, 0.75) self.dasSlider:draw() self.arrSlider:draw() self.dcdSlider:draw() end function TuningScene:onInputPress(e) if e.input == "menu_decide" then playSE("mode_decide") saveConfig() scene = SettingsScene() elseif e.input == "menu_up" then playSE("cursor") self.highlight = Mod1(self.highlight-1, optioncount) elseif e.input == "menu_down" then playSE("cursor") self.highlight = Mod1(self.highlight+1, optioncount) elseif e.input == "menu_left" then playSE("cursor") sld = self[self.options[self.highlight][3]] sld.value = math.max(sld.min, math.min(sld.max, (sld:getValue() - 1) / (sld.max - sld.min))) elseif e.input == "menu_right" then playSE("cursor") sld = self[self.options[self.highlight][3]] sld.value = math.max(sld.min, math.min(sld.max, (sld:getValue() + 1) / (sld.max - sld.min))) elseif e.input == "menu_back" then loadSave() scene = SettingsScene() end end return TuningScene