Compare commits
5 Commits
feature/da
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| cd41cb3312 | |||
| ecd094e2d7 | |||
| 5b4f3052a6 | |||
| 83301a1a8e | |||
| 77bd76f6f9 |
8
.vscode/tasks.json
vendored
8
.vscode/tasks.json
vendored
@@ -11,17 +11,19 @@
|
|||||||
{
|
{
|
||||||
"label": "Build & Run TIC80",
|
"label": "Build & Run TIC80",
|
||||||
"type": "shell",
|
"type": "shell",
|
||||||
"command": "make build && tic80 --fs=. impostor.lua"
|
"command": "make build && tic80 --fs=. impostor.lua",
|
||||||
|
"problemMatcher": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "Export assets",
|
"label": "Export assets",
|
||||||
"type": "shell",
|
"type": "shell",
|
||||||
"command": "make export_assets"
|
"command": "make export_assets",
|
||||||
|
"problemMatcher": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "Make build",
|
"label": "Make build",
|
||||||
"type": "shell",
|
"type": "shell",
|
||||||
"command": "make build"
|
"command": "make build"
|
||||||
},
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
2
Makefile
2
Makefile
@@ -164,6 +164,8 @@ export_assets:
|
|||||||
@$(call f_export_asset_awk,MAP,$(OUTPUT),$(ASSETS_LUA))
|
@$(call f_export_asset_awk,MAP,$(OUTPUT),$(ASSETS_LUA))
|
||||||
@$(call f_export_asset_awk,SFX,$(OUTPUT),$(ASSETS_LUA))
|
@$(call f_export_asset_awk,SFX,$(OUTPUT),$(ASSETS_LUA))
|
||||||
@$(call f_export_asset_awk,WAVES,$(OUTPUT),$(ASSETS_LUA))
|
@$(call f_export_asset_awk,WAVES,$(OUTPUT),$(ASSETS_LUA))
|
||||||
|
@$(call f_export_asset_awk,PATTERNS,$(OUTPUT),$(ASSETS_LUA))
|
||||||
|
@$(call f_export_asset_awk,TRACKS,$(OUTPUT),$(ASSETS_LUA))
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@rm -f $(PROJECT)-*.tic $(PROJECT)-*.html.zip $(PROJECT)-*-docs.zip $(PROJECT)-docs.zip $(OUTPUT) $(OUTPUT_ORIGINAL)
|
@rm -f $(PROJECT)-*.tic $(PROJECT)-*.html.zip $(PROJECT)-*-docs.zip $(PROJECT)-docs.zip $(OUTPUT) $(OUTPUT_ORIGINAL)
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ function Audio.music_play_room_street_2() end
|
|||||||
function Audio.music_play_room_() end
|
function Audio.music_play_room_() end
|
||||||
--- Plays room work music.
|
--- Plays room work music.
|
||||||
--- @within Audio
|
--- @within Audio
|
||||||
function Audio.music_play_room_work() end
|
function Audio.music_play_room_work() music(0) end
|
||||||
|
|
||||||
--- Plays select sound effect.
|
--- Plays select sound effect.
|
||||||
--- @within Audio
|
--- @within Audio
|
||||||
|
|||||||
@@ -20,7 +20,8 @@ function Config.initial_data()
|
|||||||
meter_bg = 1
|
meter_bg = 1
|
||||||
},
|
},
|
||||||
timing = {
|
timing = {
|
||||||
splash_duration = 120
|
splash_duration = 120,
|
||||||
|
minigame_win_duration = 180
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -78,7 +78,8 @@ function Minigame.get_default_ddr()
|
|||||||
current_song = nil,
|
current_song = nil,
|
||||||
pattern_index = 1,
|
pattern_index = 1,
|
||||||
use_pattern = false,
|
use_pattern = false,
|
||||||
return_window = nil
|
return_window = nil,
|
||||||
|
win_timer = 0
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -101,6 +102,7 @@ end
|
|||||||
--- * button_x (number) Button indicator X position.<br/>
|
--- * button_x (number) Button indicator X position.<br/>
|
||||||
--- * button_y (number) Button indicator Y position.<br/>
|
--- * button_y (number) Button indicator Y position.<br/>
|
||||||
--- * button_size (number) Button indicator size.<br/>
|
--- * button_size (number) Button indicator size.<br/>
|
||||||
|
--- * win_timer (number) Timer for the win message overlay.<br/>
|
||||||
function Minigame.get_default_button_mash()
|
function Minigame.get_default_button_mash()
|
||||||
return {
|
return {
|
||||||
bar_fill = 0,
|
bar_fill = 0,
|
||||||
@@ -120,7 +122,8 @@ function Minigame.get_default_button_mash()
|
|||||||
button_size = 12,
|
button_size = 12,
|
||||||
focus_center_x = nil,
|
focus_center_x = nil,
|
||||||
focus_center_y = nil,
|
focus_center_y = nil,
|
||||||
focus_initial_radius = 0
|
focus_initial_radius = 0,
|
||||||
|
win_timer = 0
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -150,6 +153,7 @@ end
|
|||||||
--- * button_size (number) Button indicator size.<br/>
|
--- * button_size (number) Button indicator size.<br/>
|
||||||
--- * press_cooldown (number) Current cooldown timer.<br/>
|
--- * press_cooldown (number) Current cooldown timer.<br/>
|
||||||
--- * press_cooldown_duration (number) Frames of press cooldown.<br/>
|
--- * press_cooldown_duration (number) Frames of press cooldown.<br/>
|
||||||
|
--- * win_timer (number) Timer for the win message overlay.<br/>
|
||||||
function Minigame.get_default_rhythm()
|
function Minigame.get_default_rhythm()
|
||||||
return {
|
return {
|
||||||
line_position = 0,
|
line_position = 0,
|
||||||
@@ -176,10 +180,28 @@ function Minigame.get_default_rhythm()
|
|||||||
press_cooldown_duration = 15,
|
press_cooldown_duration = 15,
|
||||||
focus_center_x = nil,
|
focus_center_x = nil,
|
||||||
focus_center_y = nil,
|
focus_center_y = nil,
|
||||||
focus_initial_radius = 0
|
focus_initial_radius = 0,
|
||||||
|
win_timer = 0
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Draws a unified win message overlay.
|
||||||
|
--- @within Minigame
|
||||||
|
function Minigame.draw_win_overlay()
|
||||||
|
local text = "WELL DONE!"
|
||||||
|
local tw = #text * 4
|
||||||
|
local th = 6
|
||||||
|
local padding = 4
|
||||||
|
local box_w = tw + padding * 2
|
||||||
|
local box_h = th + padding * 2
|
||||||
|
local box_x = (Config.screen.width - box_w) / 2
|
||||||
|
local box_y = (Config.screen.height - box_h) / 2
|
||||||
|
|
||||||
|
rect(box_x, box_y, box_w, box_h, Config.colors.dark_grey)
|
||||||
|
rectb(box_x, box_y, box_w, box_h, Config.colors.white)
|
||||||
|
Print.text_center(text, Config.screen.width / 2, box_y + padding, Config.colors.white)
|
||||||
|
end
|
||||||
|
|
||||||
--- Configures DDR minigame.
|
--- Configures DDR minigame.
|
||||||
--- @within Minigame
|
--- @within Minigame
|
||||||
--- @param params table Optional parameters to override defaults (see Minigame.get_default_ddr).
|
--- @param params table Optional parameters to override defaults (see Minigame.get_default_ddr).
|
||||||
|
|||||||
@@ -305,13 +305,15 @@
|
|||||||
-- 033:000000010002000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d40000000004
|
-- 033:000000010002000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d40000000004
|
||||||
-- 044:0600f6000620f6000600f6000610f600f600f6000600f600f600f600f6000600060006000600060006000600060006000600060006000600060006004600000f0f00
|
-- 044:0600f6000620f6000600f6000610f600f600f6000600f600f600f600f6000600060006000600060006000600060006000600060006000600060006004600000f0f00
|
||||||
-- 045:0000f0000020f0000000f0000010f000f000f0000000f000f000f000f0000000000000000000000000000000000000000000000000000000000000004600000f0f00
|
-- 045:0000f0000020f0000000f0000010f000f000f0000000f000f000f000f0000000000000000000000000000000000000000000000000000000000000004600000f0f00
|
||||||
-- 057:000000010002000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d40000000004
|
-- 048:090009000900090009000900090009000900090009000900090009000900090009000900090009000900090009000900090009000900090009000900400000000000
|
||||||
-- 058:41004110410041104100411041004110c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100100000080800
|
-- 056:4100510061406140717081709100b100c100d100e100e100e100f100f100f100f100f100f100f100f100f100f100f100f100f100f100f100f100f100580000000600
|
||||||
-- 059:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000
|
-- 057:000000010002000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c40000000004
|
||||||
|
-- 058:41004110410041104100411041004110c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100c100400000080800
|
||||||
|
-- 059:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000
|
||||||
-- 060:220022002200820082008200820082008200820082008200820082008200820082008200820082008200820082008200820082008200820082008200100000000000
|
-- 060:220022002200820082008200820082008200820082008200820082008200820082008200820082008200820082008200820082008200820082008200100000000000
|
||||||
-- 061:9f009f00bf00df00df00ef00ef00ef00ef00ef00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00400000000000
|
-- 061:9f009f00bf00df00df00ef00ef00ef00ef00ef00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00400000000000
|
||||||
-- 062:00000100010001000100510081008100910091009100a100a100a100a100a100b100b100b100b100c100c100c100d100d100d100e100e100e100f100484000000000
|
-- 062:00000100010001000100510081008100910091009100a100a100a100a100a100b100b100b100b100c100c100c100d100d100d100e100e100e100f100484000000000
|
||||||
-- 063:00b000100000000000000000100060009000b000c000d000d000e000e000e000f000f000f000f000f000f000f000f000f000f000f000f000f000f000405000000000
|
-- 063:00b000100000000000000000100060009000b000c000d000d000e000e000e000f000f000f000f000f000f000f000f000f000f000f000f000f000f000200000000000
|
||||||
-- </SFX>
|
-- </SFX>
|
||||||
-- <WAVES>
|
-- <WAVES>
|
||||||
-- 000:bcceefceedddddc84333121268abaa99
|
-- 000:bcceefceedddddc84333121268abaa99
|
||||||
@@ -325,3 +327,11 @@
|
|||||||
-- 008:0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
|
-- 008:0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
|
||||||
-- 009:fff000fff000fff000fff000fff000ff
|
-- 009:fff000fff000fff000fff000fff000ff
|
||||||
-- </WAVES>
|
-- </WAVES>
|
||||||
|
-- <PATTERNS>
|
||||||
|
-- 000:4008b50000000000000000001008c10000004008b50000001008c1000000000000000000e008b30000004008b50000001008c10000000008c10000000008c10000000000000000000000000000000000000000000000000000000000000000004008b50000000000000000001008c10000004008b50000001008c10000000008c1000000e008b30000004008b50000001008c10000000008c10000000008c10000000008c10000000008c10000000008c1000000000000000000000000000000
|
||||||
|
-- 001:4008b50000000000000000001008c10000004008b50000001008c1000000000000000000e008b30000004008b50000001008c10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007008b50000007008b50000001008c10000007008b50000001008c10000000008c10000007008b50000009008b50000001008c10000009008b50000001008c10000009008b50000009008b50000001008c10000009008b50000001008c1000000
|
||||||
|
-- 003:4008d30000000000000000000000000000000000000000004008d90000000000000000000000000000000000000000004008d30000000000000000000000000000004008d30000004008d90000000000000000000000000000000000000000004008d30000000000000000000000000000000000000000004008d90000000000000000000000000000000000000000004008d30000000000000000000000000000004008d30000004008d9000000000000000000000000000000000000000000
|
||||||
|
-- </PATTERNS>
|
||||||
|
-- <TRACKS>
|
||||||
|
-- 000:100001200001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
-- </TRACKS>
|
||||||
|
|||||||
@@ -1,11 +1,9 @@
|
|||||||
--- @section AudioTestWindow
|
--- @section AudioTestWindow
|
||||||
AudioTestWindow = {
|
AudioTestWindow.index_menu = 1
|
||||||
index_menu = 1,
|
AudioTestWindow.index_func = 1
|
||||||
index_func = 1,
|
AudioTestWindow.list_func = {}
|
||||||
list_func = {},
|
AudioTestWindow.menuitems = {}
|
||||||
menuitems = {},
|
AudioTestWindow.last_pressed = false
|
||||||
last_pressed = false
|
|
||||||
}
|
|
||||||
|
|
||||||
--- Generates menu items for audio test.
|
--- Generates menu items for audio test.
|
||||||
--- @within AudioTestWindow
|
--- @within AudioTestWindow
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
--- @section ConfigurationWindow
|
--- @section ConfigurationWindow
|
||||||
ConfigurationWindow = {
|
ConfigurationWindow.controls = {}
|
||||||
controls = {},
|
ConfigurationWindow.selected_control = 1
|
||||||
selected_control = 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
--- Initializes configuration window.
|
--- Initializes configuration window.
|
||||||
--- @within ConfigurationWindow
|
--- @within ConfigurationWindow
|
||||||
|
|||||||
@@ -108,18 +108,25 @@ end
|
|||||||
--- @within MinigameDDRWindow
|
--- @within MinigameDDRWindow
|
||||||
function MinigameDDRWindow.update()
|
function MinigameDDRWindow.update()
|
||||||
local mg = Context.minigame_ddr
|
local mg = Context.minigame_ddr
|
||||||
if mg.bar_fill >= mg.max_fill then
|
|
||||||
|
if mg.win_timer > 0 then
|
||||||
|
mg.win_timer = mg.win_timer - 1
|
||||||
|
if mg.win_timer == 0 then
|
||||||
Meter.on_minigame_complete()
|
Meter.on_minigame_complete()
|
||||||
Meter.show()
|
Meter.show()
|
||||||
Window.set_current(mg.return_window)
|
Window.set_current(mg.return_window)
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if mg.bar_fill >= mg.max_fill then
|
||||||
|
mg.win_timer = Config.timing.minigame_win_duration
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
mg.frame_counter = mg.frame_counter + 1
|
mg.frame_counter = mg.frame_counter + 1
|
||||||
if mg.use_pattern and mg.current_song and mg.current_song.end_frame then
|
if mg.use_pattern and mg.current_song and mg.current_song.end_frame then
|
||||||
if mg.frame_counter > mg.current_song.end_frame and #mg.arrows == 0 then
|
if mg.frame_counter > mg.current_song.end_frame and #mg.arrows == 0 then
|
||||||
Meter.on_minigame_complete()
|
mg.win_timer = Config.timing.minigame_win_duration
|
||||||
Meter.show()
|
|
||||||
Window.set_current(mg.return_window)
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -265,4 +272,7 @@ function MinigameDDRWindow.draw()
|
|||||||
else
|
else
|
||||||
Print.text_center("RANDOM MODE", Config.screen.width / 2, debug_y, Config.colors.blue)
|
Print.text_center("RANDOM MODE", Config.screen.width / 2, debug_y, Config.colors.blue)
|
||||||
end
|
end
|
||||||
|
if mg.win_timer > 0 then
|
||||||
|
Minigame.draw_win_overlay()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
@@ -25,6 +25,18 @@ end
|
|||||||
--- @within MinigameButtonMashWindow
|
--- @within MinigameButtonMashWindow
|
||||||
function MinigameButtonMashWindow.update()
|
function MinigameButtonMashWindow.update()
|
||||||
local mg = Context.minigame_button_mash
|
local mg = Context.minigame_button_mash
|
||||||
|
|
||||||
|
if mg.win_timer > 0 then
|
||||||
|
mg.win_timer = mg.win_timer - 1
|
||||||
|
if mg.win_timer == 0 then
|
||||||
|
Meter.on_minigame_complete()
|
||||||
|
Meter.show()
|
||||||
|
if mg.focus_center_x then Focus.stop() end
|
||||||
|
Window.set_current(mg.return_window)
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
if Input.select() then
|
if Input.select() then
|
||||||
mg.bar_fill = mg.bar_fill + mg.fill_per_press
|
mg.bar_fill = mg.bar_fill + mg.fill_per_press
|
||||||
mg.button_pressed_timer = mg.button_press_duration
|
mg.button_pressed_timer = mg.button_press_duration
|
||||||
@@ -33,10 +45,7 @@ function MinigameButtonMashWindow.update()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
if mg.bar_fill >= mg.max_fill then
|
if mg.bar_fill >= mg.max_fill then
|
||||||
Meter.on_minigame_complete()
|
mg.win_timer = Config.timing.minigame_win_duration
|
||||||
Meter.show()
|
|
||||||
if mg.focus_center_x then Focus.stop() end
|
|
||||||
Window.set_current(mg.return_window)
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local degradation = mg.base_degradation + (mg.bar_fill * mg.degradation_multiplier)
|
local degradation = mg.base_degradation + (mg.bar_fill * mg.degradation_multiplier)
|
||||||
@@ -86,4 +95,8 @@ function MinigameButtonMashWindow.draw()
|
|||||||
Print.text_center("MASH Z!", Config.screen.width / 2, mg.bar_y + mg.bar_height + 10, Config.colors.light_grey)
|
Print.text_center("MASH Z!", Config.screen.width / 2, mg.bar_y + mg.bar_height + 10, Config.colors.light_grey)
|
||||||
local percentage = math.floor((mg.bar_fill / mg.max_fill) * 100)
|
local percentage = math.floor((mg.bar_fill / mg.max_fill) * 100)
|
||||||
Print.text_center(percentage .. "%", mg.bar_x + mg.bar_width / 2, mg.bar_y + 2, Config.colors.black)
|
Print.text_center(percentage .. "%", mg.bar_x + mg.bar_width / 2, mg.bar_y + 2, Config.colors.black)
|
||||||
|
|
||||||
|
if mg.win_timer > 0 then
|
||||||
|
Minigame.draw_win_overlay()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -27,6 +27,18 @@ end
|
|||||||
--- @within MinigameRhythmWindow
|
--- @within MinigameRhythmWindow
|
||||||
function MinigameRhythmWindow.update()
|
function MinigameRhythmWindow.update()
|
||||||
local mg = Context.minigame_rhythm
|
local mg = Context.minigame_rhythm
|
||||||
|
|
||||||
|
if mg.win_timer > 0 then
|
||||||
|
mg.win_timer = mg.win_timer - 1
|
||||||
|
if mg.win_timer == 0 then
|
||||||
|
Meter.on_minigame_complete()
|
||||||
|
Meter.show()
|
||||||
|
if mg.focus_center_x then Focus.stop() end
|
||||||
|
Window.set_current(mg.return_window)
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
mg.line_position = mg.line_position + (mg.line_speed * mg.line_direction)
|
mg.line_position = mg.line_position + (mg.line_speed * mg.line_direction)
|
||||||
if mg.line_position > 1 then
|
if mg.line_position > 1 then
|
||||||
mg.line_position = 1
|
mg.line_position = 1
|
||||||
@@ -57,10 +69,7 @@ function MinigameRhythmWindow.update()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
if mg.score >= mg.max_score then
|
if mg.score >= mg.max_score then
|
||||||
Meter.on_minigame_complete()
|
mg.win_timer = Config.timing.minigame_win_duration
|
||||||
Meter.show()
|
|
||||||
if mg.focus_center_x then Focus.stop() end
|
|
||||||
Window.set_current(mg.return_window)
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
if mg.button_pressed_timer > 0 then
|
if mg.button_pressed_timer > 0 then
|
||||||
@@ -107,4 +116,8 @@ function MinigameRhythmWindow.draw()
|
|||||||
circ(mg.button_x, mg.button_y, mg.button_size - 2, button_color)
|
circ(mg.button_x, mg.button_y, mg.button_size - 2, button_color)
|
||||||
end
|
end
|
||||||
Print.text_center("Z", mg.button_x - 2, mg.button_y - 3, button_color)
|
Print.text_center("Z", mg.button_x - 2, mg.button_y - 3, button_color)
|
||||||
|
|
||||||
|
if mg.win_timer > 0 then
|
||||||
|
Minigame.draw_win_overlay()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user