cambridge/scene/title.lua

128 lines
3.1 KiB
Lua
Raw Normal View History

2019-05-22 22:57:34 -05:00
local TitleScene = Scene:extend()
2020-12-19 19:31:14 -06:00
TitleScene.title = "Title"
2020-12-19 19:44:24 -06:00
TitleScene.restart_message = false
2020-12-19 19:31:14 -06:00
2019-05-22 22:57:34 -05:00
local main_menu_screens = {
ModeSelectScene,
2020-12-20 08:45:49 -06:00
SettingsScene,
2020-12-20 09:28:34 -06:00
CreditsScene,
ExitScene,
2019-05-22 22:57:34 -05:00
}
local mainmenuidle = {
"Idle",
"On title screen",
"On main menu screen",
"Twiddling their thumbs",
"Admiring the main menu's BG",
"Waiting for spring to come",
"Actually not playing",
"Contemplating collecting stars",
"Preparing to put the block!!",
"Having a nap",
"In menus",
"Bottom text",
2021-09-25 18:33:04 -05:00
"Trying to see all the funny rpc messages (maybe)",
"Not not not playing",
"AFK",
"Preparing for their next game"
}
2020-10-09 17:43:22 -05:00
2019-05-22 22:57:34 -05:00
function TitleScene:new()
self.main_menu_state = 1
self.frames = 0
self.snow_bg_opacity = 0
self.y_offset = 0
self.text = ""
self.text_flag = false
DiscordRPC:update({
details = "In menus",
2020-11-08 15:19:01 -06:00
state = mainmenuidle[math.random(#mainmenuidle)],
2021-09-25 18:33:04 -05:00
largeImageKey = "icon2",
})
2019-05-22 22:57:34 -05:00
end
function TitleScene:update()
if self.text_flag then
self.frames = self.frames + 1
self.snow_bg_opacity = self.snow_bg_opacity + 0.01
end
if self.frames < 125 then self.y_offset = self.frames
elseif self.frames < 185 then self.y_offset = 125
else self.y_offset = 310 - self.frames end
2019-05-22 22:57:34 -05:00
end
function TitleScene:render()
love.graphics.setFont(font_3x5_2)
love.graphics.setColor(1, 1, 1, 1 - self.snow_bg_opacity)
2019-05-22 22:57:34 -05:00
love.graphics.draw(
backgrounds["title"],
0, 0, 0,
0.5, 0.5
)
love.graphics.setColor(1, 1, 1, self.snow_bg_opacity)
love.graphics.draw(
backgrounds["snow"],
0, 0, 0,
0.5, 0.5
)
love.graphics.draw(
misc_graphics["santa"],
400, -205 + self.y_offset,
0, 0.5, 0.5
)
love.graphics.print("Happy Holidays!", 320, -100 + self.y_offset)
2021-01-08 19:33:44 -06:00
love.graphics.setColor(1, 1, 1, 1)
2020-12-19 19:44:24 -06:00
love.graphics.print(self.restart_message and "Restart Cambridge..." or "", 0, 0)
2019-05-22 22:57:34 -05:00
love.graphics.setColor(1, 1, 1, 0.5)
love.graphics.rectangle("fill", 20, 278 + 20 * self.main_menu_state, 160, 22)
love.graphics.setColor(1, 1, 1, 1)
for i, screen in pairs(main_menu_screens) do
love.graphics.printf(screen.title, 40, 280 + 20 * i, 120, "left")
end
2021-03-03 09:33:10 -06:00
love.graphics.printf(version, 0, 460, love.graphics.getWidth() - 5, "right")
2019-05-22 22:57:34 -05:00
end
function TitleScene:changeOption(rel)
local len = table.getn(main_menu_screens)
self.main_menu_state = (self.main_menu_state + len + rel - 1) % len + 1
end
function TitleScene:onInputPress(e)
2020-11-10 20:26:19 -06:00
if e.input == "menu_decide" or e.scancode == "return" then
2020-10-09 16:50:05 -05:00
playSE("main_decide")
2019-05-22 22:57:34 -05:00
scene = main_menu_screens[self.main_menu_state]()
elseif e.input == "up" or e.scancode == "up" then
2019-05-22 22:57:34 -05:00
self:changeOption(-1)
2020-10-09 16:50:05 -05:00
playSE("cursor")
2021-09-25 23:30:12 -05:00
elseif e.scancode == "kp5" then
DiscordRPC:update({
details = "Pressed the cool button",
state = "You found the cool easter egg!",
largeImageKey = "transbridge",
})
playSE("mystery")
--now you've just spoiled the fun for yourself.
elseif e.input == "down" or e.scancode == "down" then
2019-05-22 22:57:34 -05:00
self:changeOption(1)
2020-10-09 16:50:05 -05:00
playSE("cursor")
2020-11-10 20:26:19 -06:00
elseif e.input == "menu_back" or e.scancode == "backspace" or e.scancode == "delete" then
love.event.quit()
else
self.text = self.text .. (e.scancode ~= nil and e.scancode or "")
if self.text == "ffffff" then
self.text_flag = true
end
2019-05-22 22:57:34 -05:00
end
end
return TitleScene