cambridge/scene/title.lua

192 lines
4.4 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,
2021-11-13 22:18:55 -06:00
ChallengeSelectScene,
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",
2021-09-26 20:55:42 -05:00
"Preparing for their next game",
"Who are those people on that boat?",
"Welcome to Cambridge!",
"who even reads these",
"Made with love in LOVE!",
"This is probably the longest RPC string out of every possible RPC string that can be displayed."
}
2020-10-09 17:43:22 -05:00
2021-10-22 00:39:39 -05:00
local menusplash = {
"Welcome to Cambridge!",
"Get ready to put the block!",
"Also try Master of Blocks!",
"Also try Shiromino!",
"1 year in the making!",
"haileyjunk!",
"WOOOOAAAAAHHH!!!!!"
}
local currentSplash = menusplash[math.random(#menusplash)]
local now = os.date("t")
showDebugKeys = false
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-10-22 00:04:28 -05:00
largeImageKey = "1year",
largeImageText = version.." | Thanks for 1 year!"
})
2021-10-22 00:39:39 -05:00
if now.month == 12 then
DiscordRPC:update({
largeImageKey = "snow"
})
end
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_4)
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.draw(
backgrounds["title_night"],
0, 0, 0,
0.5, 0.5
)
love.graphics.draw(
misc_graphics["icon"],
460, 170, 0,
2, 2
)
2021-10-22 00:39:39 -05:00
love.graphics.printf(currentSplash, 390, 280, 320, "center", 0, 0.75, 0.75)
2019-05-22 22:57:34 -05:00
love.graphics.setFont(font_3x5_2)
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-10-22 00:39:39 -05:00
if showDebugKeys then
love.graphics.print("DEBUG KEYS\n\nF3+S: Get new splash message\nF3+R: Restart\nF3+I: Toggle this")
end
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
2021-10-22 00:39:39 -05:00
function TitleScene:onInputPress(e)
2021-10-22 00:39:39 -05:00
local debugkey = love.keyboard.isDown("f3")
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")
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")
elseif e.input == "menu_back" or e.scancode == "backspace" or e.scancode == "delete" then
love.event.quit()
2021-10-22 00:39:39 -05:00
-- small debug feature, press f3+s to get a new splash message
elseif e.scancode == "s" then
if debugkey then
currentSplash = menusplash[math.random(#menusplash)]
playSE("main_decide")
end
elseif e.scancode == "r" then
if debugkey then
love.event.quit("restart")
end
elseif e.scancode == "i" then
if debugkey then
if showDebugKeys then
showDebugKeys = false
else
showDebugKeys = true
end
end
-- no winter easter egg for now
--[[
else
self.text = self.text .. (e.scancode or "")
if self.text == "ffffff" then
self.text_flag = true
2021-09-26 22:12:05 -05:00
DiscordRPC:update({
largeImageKey = "snow"
})
end
]]
2019-05-22 22:57:34 -05:00
end
end
return TitleScene