Compare commits
1 Commits
bugfix/suc
...
24757e8cca
| Author | SHA1 | Date | |
|---|---|---|---|
| 24757e8cca |
@@ -24,6 +24,7 @@ decision/decision.go_to_home.lua
|
|||||||
decision/decision.go_to_toilet.lua
|
decision/decision.go_to_toilet.lua
|
||||||
decision/decision.go_to_walking_to_office.lua
|
decision/decision.go_to_walking_to_office.lua
|
||||||
decision/decision.go_to_office.lua
|
decision/decision.go_to_office.lua
|
||||||
|
decision/decision.go_to_end.lua
|
||||||
decision/decision.go_to_walking_to_home.lua
|
decision/decision.go_to_walking_to_home.lua
|
||||||
decision/decision.go_to_sleep.lua
|
decision/decision.go_to_sleep.lua
|
||||||
decision/decision.do_work.lua
|
decision/decision.do_work.lua
|
||||||
@@ -40,6 +41,7 @@ screen/screen.walking_to_home.lua
|
|||||||
screen/screen.work.lua
|
screen/screen.work.lua
|
||||||
window/window.manager.lua
|
window/window.manager.lua
|
||||||
window/window.register.lua
|
window/window.register.lua
|
||||||
|
window/window.end.lua
|
||||||
window/window.splash.lua
|
window/window.splash.lua
|
||||||
window/window.intro.lua
|
window/window.intro.lua
|
||||||
window/window.menu.lua
|
window/window.menu.lua
|
||||||
|
|||||||
7
inc/decision/decision.go_to_end.lua
Normal file
7
inc/decision/decision.go_to_end.lua
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Decision.register({
|
||||||
|
id = "go_to_end",
|
||||||
|
label = "Break the cycle",
|
||||||
|
handle = function()
|
||||||
|
Window.set_current("end")
|
||||||
|
end,
|
||||||
|
})
|
||||||
@@ -10,11 +10,11 @@ local _decisions = {}
|
|||||||
--- @param[opt] decision.handle function Called when the decision is selected. Defaults to noop.
|
--- @param[opt] decision.handle function Called when the decision is selected. Defaults to noop.
|
||||||
function Decision.register(decision)
|
function Decision.register(decision)
|
||||||
if not decision or not decision.id then
|
if not decision or not decision.id then
|
||||||
PopupWindow.show({"Error: Invalid decision object registered (missing id)!"})
|
trace("Error: Invalid decision object registered (missing id)!")
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
if not decision.label then
|
if not decision.label then
|
||||||
PopupWindow.show({"Error: Invalid decision object registered (missing label)!"})
|
trace("Error: Invalid decision object registered (missing label)!")
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ end
|
|||||||
function Decision.filter_available(decisions_list)
|
function Decision.filter_available(decisions_list)
|
||||||
local available = {}
|
local available = {}
|
||||||
for _, decision in ipairs(decisions_list) do
|
for _, decision in ipairs(decisions_list) do
|
||||||
if decision and decision.condition() then
|
if decision and (not decision.condition or decision.condition()) then
|
||||||
table.insert(available, decision)
|
table.insert(available, decision)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -42,6 +42,10 @@ function Context.initial_data()
|
|||||||
current_situation = nil,
|
current_situation = nil,
|
||||||
},
|
},
|
||||||
day_count = 1,
|
day_count = 1,
|
||||||
|
_end = {
|
||||||
|
state = "choice",
|
||||||
|
selection = 1,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ Screen.register({
|
|||||||
"go_to_toilet",
|
"go_to_toilet",
|
||||||
"go_to_walking_to_office",
|
"go_to_walking_to_office",
|
||||||
"go_to_sleep",
|
"go_to_sleep",
|
||||||
|
"go_to_end",
|
||||||
},
|
},
|
||||||
background = "bedroom"
|
background = "bedroom"
|
||||||
})
|
})
|
||||||
|
|||||||
77
inc/window/window.end.lua
Normal file
77
inc/window/window.end.lua
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
EndWindow = {}
|
||||||
|
|
||||||
|
--- Draws the end screen window.
|
||||||
|
--- @within EndWindow
|
||||||
|
function EndWindow.draw()
|
||||||
|
cls(Config.colors.black)
|
||||||
|
|
||||||
|
if Context._end.state == "choice" then
|
||||||
|
local lines = {
|
||||||
|
"This is not a workplace.",
|
||||||
|
"This is a cycle.",
|
||||||
|
"And if it is a cycle...",
|
||||||
|
"it can be broken."
|
||||||
|
}
|
||||||
|
|
||||||
|
local y = 40
|
||||||
|
for _, line in ipairs(lines) do
|
||||||
|
Print.text_center(line, Config.screen.width / 2, y, Config.colors.white)
|
||||||
|
y = y + 10
|
||||||
|
end
|
||||||
|
|
||||||
|
y = y + 20
|
||||||
|
local yes_color = Context._end.selection == 1 and Config.colors.light_blue or Config.colors.white
|
||||||
|
local no_color = Context._end.selection == 2 and Config.colors.light_blue or Config.colors.white
|
||||||
|
|
||||||
|
local yes_text = (Context._end.selection == 1 and "> YES" or " YES")
|
||||||
|
local no_text = (Context._end.selection == 2 and "> NO" or " NO")
|
||||||
|
|
||||||
|
local centerX = Config.screen.width / 2
|
||||||
|
Print.text(yes_text, centerX - 40, y, yes_color)
|
||||||
|
Print.text(no_text, centerX + 10, y, no_color)
|
||||||
|
elseif Context._end.state == "ending" then
|
||||||
|
Print.text_center("Game over -- good ending.", Config.screen.width / 2, 50, Config.colors.light_blue)
|
||||||
|
Print.text_center("Congratulations!", Config.screen.width / 2, 70, Config.colors.white)
|
||||||
|
Print.text_center("Press Z to return to menu", Config.screen.width / 2, 110, Config.colors.light_grey)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Updates the end screen logic.
|
||||||
|
--- @within EndWindow
|
||||||
|
function EndWindow.update()
|
||||||
|
if Context._end.state == "choice" then
|
||||||
|
if Input.left() or Input.up() then
|
||||||
|
if Context._end.selection == 2 then
|
||||||
|
Audio.sfx_beep()
|
||||||
|
Context._end.selection = 1
|
||||||
|
end
|
||||||
|
elseif Input.right() or Input.down() then
|
||||||
|
if Context._end.selection == 1 then
|
||||||
|
Audio.sfx_beep()
|
||||||
|
Context._end.selection = 2
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if Input.menu_confirm() then
|
||||||
|
Audio.sfx_select()
|
||||||
|
if Context._end.selection == 1 then
|
||||||
|
Context._end.state = "ending"
|
||||||
|
else
|
||||||
|
-- NO: increment day and go home
|
||||||
|
Day.increase()
|
||||||
|
Context.game.current_screen = "home"
|
||||||
|
Window.set_current("game")
|
||||||
|
-- Initialize home screen
|
||||||
|
local home_screen = Screen.get_by_id("home")
|
||||||
|
if home_screen and home_screen.init then
|
||||||
|
home_screen.init()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
elseif Context._end.state == "ending" then
|
||||||
|
if Input.menu_confirm() then
|
||||||
|
Window.set_current("menu")
|
||||||
|
MenuWindow.refresh_menu_items()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -30,3 +30,6 @@ Window.register("minigame_ddr", MinigameDDRWindow)
|
|||||||
|
|
||||||
MysteriousManWindow = {}
|
MysteriousManWindow = {}
|
||||||
Window.register("mysterious_man", MysteriousManWindow)
|
Window.register("mysterious_man", MysteriousManWindow)
|
||||||
|
|
||||||
|
EndWindow = {}
|
||||||
|
Window.register("end", EndWindow)
|
||||||
|
|||||||
Reference in New Issue
Block a user