mirror of
https://github.com/notwa/mm
synced 2024-11-04 22:39:02 -08:00
split most menus into files
This commit is contained in:
parent
5590ffaa77
commit
b392d2134f
4 changed files with 130 additions and 147 deletions
|
@ -6,13 +6,11 @@ require "menu classes"
|
|||
require "messages"
|
||||
require "flag manager"
|
||||
|
||||
local warp_menu = require "warp menu"
|
||||
|
||||
-- TODO: make OoT versions for most of these menus
|
||||
|
||||
local dummy = Callbacks()
|
||||
dummy = Callbacks()
|
||||
|
||||
local function Setter(t)
|
||||
function Setter(t)
|
||||
local cb = Callbacks()
|
||||
function cb:on()
|
||||
for addr, value in pairs(t) do
|
||||
|
@ -73,42 +71,6 @@ function escape_cutscene:on()
|
|||
addrs.cutscene_status_2(3)
|
||||
end
|
||||
|
||||
local playas_child = Passive()
|
||||
function playas_child:tick_on()
|
||||
addrs.age_modifier_global(1)
|
||||
end
|
||||
local playas_adult = Passive()
|
||||
function playas_adult:tick_on()
|
||||
addrs.age_modifier_global(0)
|
||||
end
|
||||
|
||||
local PassiveResetMask = Class(Passive)
|
||||
function PassiveResetMask:on()
|
||||
Passive.on(self)
|
||||
addrs.mask_worn(0)
|
||||
end
|
||||
|
||||
local playas_human = PassiveResetMask()
|
||||
function playas_human:tick_on()
|
||||
addrs.transformation(4)
|
||||
end
|
||||
local playas_deku = PassiveResetMask()
|
||||
function playas_deku:tick_on()
|
||||
addrs.transformation(3)
|
||||
end
|
||||
local playas_goron = PassiveResetMask()
|
||||
function playas_goron:tick_on()
|
||||
addrs.transformation(1)
|
||||
end
|
||||
local playas_zora = PassiveResetMask()
|
||||
function playas_zora:tick_on()
|
||||
addrs.transformation(2)
|
||||
end
|
||||
local playas_fd = PassiveResetMask()
|
||||
function playas_fd:tick_on()
|
||||
addrs.transformation(0)
|
||||
end
|
||||
|
||||
local soft_reset = Callbacks()
|
||||
function soft_reset:on()
|
||||
addrs.warp_begin(0x14)
|
||||
|
@ -141,7 +103,7 @@ function load_pos:on()
|
|||
la.sword_active(pos.isg)
|
||||
end
|
||||
|
||||
local reload_scene = Callbacks()
|
||||
reload_scene = Callbacks()
|
||||
function reload_scene:on()
|
||||
local ev = addrs.exit_value()
|
||||
addrs.warp_begin(0x14)
|
||||
|
@ -160,112 +122,6 @@ function load_scene:on()
|
|||
addrs.warp_destination(saved_scene)
|
||||
end
|
||||
|
||||
local first_cycle = Callbacks()
|
||||
function first_cycle:on()
|
||||
addrs.warp_begin(0x14)
|
||||
addrs.warp_destination(0xC000)
|
||||
addrs.transformation(3) -- deku
|
||||
addrs.day(0)
|
||||
addrs.days_elapsed(0)
|
||||
addrs.time(0x3FD2) -- default time
|
||||
addrs.day_night(1)
|
||||
addrs.time_speed(0)
|
||||
addrs.intro_completed(0)
|
||||
addrs.have_tatl(1)
|
||||
addrs.sot_count(0)
|
||||
-- remove ocarina so time passes at first-cycle speed, among other things.
|
||||
-- if really you need your ocarina, just put it on a C button beforehand.
|
||||
addrs.inventory.ocarina(0xFF)
|
||||
|
||||
-- happy mask salesman talking at door
|
||||
scene_flag_reset(0x63, 1, 0)
|
||||
-- bombers ladder balloon
|
||||
scene_flag_reset(0x29, 1, 1)
|
||||
-- other things to consider resetting:
|
||||
-- skull kid stuff
|
||||
-- deed trading quest entirely
|
||||
-- bombers stuff (they don't let you do it twice)
|
||||
-- ability to learn song of healing + get deku mask <--
|
||||
-- "oh no! the great fairy!"
|
||||
|
||||
-- moon's tear has landed
|
||||
event_flag_reset(74, 5)
|
||||
event_flag_reset(74, 7)
|
||||
-- moon's tear acquired
|
||||
event_flag_reset(74, 6)
|
||||
-- skullkid jumped off clock tower thru telescope
|
||||
event_flag_reset(12, 2)
|
||||
-- clock town fairy acquired
|
||||
event_flag_reset(8, 7)
|
||||
-- deku merchant has landed)
|
||||
event_flag_reset(73, 2)
|
||||
-- Talked to Town Scrub once as Deku
|
||||
event_flag_reset(86, 2)
|
||||
-- similar to above?
|
||||
event_flag_reset(17, 5)
|
||||
-- Obtained Land Title Deed
|
||||
event_flag_reset(17, 7)
|
||||
-- Tatl talks about clock tower entrance
|
||||
event_flag_reset(79, 4)
|
||||
-- Clock Tower is open?
|
||||
event_flag_reset( 8, 6)
|
||||
-- Tatl telling Link to hurry at Clock Tower
|
||||
event_flag_reset(88, 5)
|
||||
end
|
||||
|
||||
local playas_group = {}
|
||||
local playas_mm_group = {}
|
||||
local playas_menu = oot and Menu{
|
||||
Screen{
|
||||
Text("Play as..."),
|
||||
Radio("Default", playas_group, dummy),
|
||||
Radio("Child Link", playas_group, playas_child),
|
||||
Radio("Adult Link", playas_group, playas_adult),
|
||||
Text(""),
|
||||
Oneshot("Reload Scene", reload_scene),
|
||||
Back(),
|
||||
},
|
||||
} or Menu{
|
||||
Screen{
|
||||
Text("Play as..."),
|
||||
Radio("Default", playas_mm_group, dummy),
|
||||
Radio("Human Link", playas_mm_group, playas_human),
|
||||
Radio("Deku Link", playas_mm_group, playas_deku),
|
||||
Radio("Goron Link", playas_mm_group, playas_goron),
|
||||
Radio("Zora Link", playas_mm_group, playas_zora),
|
||||
Radio("Fierce Deity", playas_mm_group, playas_fd),
|
||||
Text(""),
|
||||
Oneshot("Reload Scene", reload_scene),
|
||||
Back(),
|
||||
},
|
||||
}
|
||||
|
||||
local progress_menu = Menu{
|
||||
Screen{
|
||||
Text("Progress Menu #1/1"),
|
||||
Oneshot("Setup First Cycle", first_cycle),
|
||||
Text(""),
|
||||
Back(),
|
||||
},
|
||||
}
|
||||
|
||||
local function gen_set_day(x)
|
||||
local cb = Callbacks()
|
||||
function cb:on()
|
||||
addrs.day(x)
|
||||
addrs.days_elapsed(x)
|
||||
end
|
||||
return cb
|
||||
end
|
||||
|
||||
local function gen_set_time(x)
|
||||
local cb = Callbacks()
|
||||
function cb:on()
|
||||
addrs.time(x)
|
||||
end
|
||||
return cb
|
||||
end
|
||||
|
||||
local time_menu = Menu{
|
||||
Screen{
|
||||
Text("Day/Time Menu #1/1"),
|
||||
|
@ -292,6 +148,10 @@ local time_menu = Menu{
|
|||
},
|
||||
}
|
||||
|
||||
local warp_menu = require "menus.warp"
|
||||
local progress_menu = require "menus.progress"
|
||||
local playas_menu = require "menus.playas"
|
||||
|
||||
local main_menu = Menu{
|
||||
-- TODO: seperator item that's just a few underscores with half height
|
||||
Screen{
|
||||
|
|
62
Lua/menus/playas.lua
Normal file
62
Lua/menus/playas.lua
Normal file
|
@ -0,0 +1,62 @@
|
|||
local playas_child = Passive()
|
||||
function playas_child:tick_on()
|
||||
addrs.age_modifier_global(1)
|
||||
end
|
||||
local playas_adult = Passive()
|
||||
function playas_adult:tick_on()
|
||||
addrs.age_modifier_global(0)
|
||||
end
|
||||
|
||||
local PassiveResetMask = Class(Passive)
|
||||
function PassiveResetMask:on()
|
||||
Passive.on(self)
|
||||
addrs.mask_worn(0)
|
||||
end
|
||||
|
||||
local playas_human = PassiveResetMask()
|
||||
function playas_human:tick_on()
|
||||
addrs.transformation(4)
|
||||
end
|
||||
local playas_deku = PassiveResetMask()
|
||||
function playas_deku:tick_on()
|
||||
addrs.transformation(3)
|
||||
end
|
||||
local playas_goron = PassiveResetMask()
|
||||
function playas_goron:tick_on()
|
||||
addrs.transformation(1)
|
||||
end
|
||||
local playas_zora = PassiveResetMask()
|
||||
function playas_zora:tick_on()
|
||||
addrs.transformation(2)
|
||||
end
|
||||
local playas_fd = PassiveResetMask()
|
||||
function playas_fd:tick_on()
|
||||
addrs.transformation(0)
|
||||
end
|
||||
|
||||
local playas_group = {}
|
||||
local playas_mm_group = {}
|
||||
return oot and Menu{
|
||||
Screen{
|
||||
Text("Play as..."),
|
||||
Radio("Default", playas_group, dummy),
|
||||
Radio("Child Link", playas_group, playas_child),
|
||||
Radio("Adult Link", playas_group, playas_adult),
|
||||
Text(""),
|
||||
Oneshot("Reload Scene", reload_scene),
|
||||
Back(),
|
||||
},
|
||||
} or Menu{
|
||||
Screen{
|
||||
Text("Play as..."),
|
||||
Radio("Default", playas_mm_group, dummy),
|
||||
Radio("Human Link", playas_mm_group, playas_human),
|
||||
Radio("Deku Link", playas_mm_group, playas_deku),
|
||||
Radio("Goron Link", playas_mm_group, playas_goron),
|
||||
Radio("Zora Link", playas_mm_group, playas_zora),
|
||||
Radio("Fierce Deity", playas_mm_group, playas_fd),
|
||||
Text(""),
|
||||
Oneshot("Reload Scene", reload_scene),
|
||||
Back(),
|
||||
},
|
||||
}
|
61
Lua/menus/progress.lua
Normal file
61
Lua/menus/progress.lua
Normal file
|
@ -0,0 +1,61 @@
|
|||
local first_cycle = Callbacks()
|
||||
function first_cycle:on()
|
||||
addrs.warp_begin(0x14)
|
||||
addrs.warp_destination(0xC000)
|
||||
addrs.transformation(3) -- deku
|
||||
addrs.day(0)
|
||||
addrs.days_elapsed(0)
|
||||
addrs.time(0x3FD2) -- default time
|
||||
addrs.day_night(1)
|
||||
addrs.time_speed(0)
|
||||
addrs.intro_completed(0)
|
||||
addrs.have_tatl(1)
|
||||
addrs.sot_count(0)
|
||||
-- remove ocarina so time passes at first-cycle speed, among other things.
|
||||
-- if really you need your ocarina, just put it on a C button beforehand.
|
||||
addrs.inventory.ocarina(0xFF)
|
||||
|
||||
-- happy mask salesman talking at door
|
||||
scene_flag_reset(0x63, 1, 0)
|
||||
-- bombers ladder balloon
|
||||
scene_flag_reset(0x29, 1, 1)
|
||||
-- other things to consider resetting:
|
||||
-- skull kid stuff
|
||||
-- deed trading quest entirely
|
||||
-- bombers stuff (they don't let you do it twice)
|
||||
-- ability to learn song of healing + get deku mask <--
|
||||
-- "oh no! the great fairy!"
|
||||
|
||||
-- moon's tear has landed
|
||||
event_flag_reset(74, 5)
|
||||
event_flag_reset(74, 7)
|
||||
-- moon's tear acquired
|
||||
event_flag_reset(74, 6)
|
||||
-- skullkid jumped off clock tower thru telescope
|
||||
event_flag_reset(12, 2)
|
||||
-- clock town fairy acquired
|
||||
event_flag_reset(8, 7)
|
||||
-- deku merchant has landed)
|
||||
event_flag_reset(73, 2)
|
||||
-- Talked to Town Scrub once as Deku
|
||||
event_flag_reset(86, 2)
|
||||
-- similar to above?
|
||||
event_flag_reset(17, 5)
|
||||
-- Obtained Land Title Deed
|
||||
event_flag_reset(17, 7)
|
||||
-- Tatl talks about clock tower entrance
|
||||
event_flag_reset(79, 4)
|
||||
-- Clock Tower is open?
|
||||
event_flag_reset( 8, 6)
|
||||
-- Tatl telling Link to hurry at Clock Tower
|
||||
event_flag_reset(88, 5)
|
||||
end
|
||||
|
||||
return Menu{
|
||||
Screen{
|
||||
Text("Progress Menu #1/1"),
|
||||
Oneshot("Setup First Cycle", first_cycle),
|
||||
Text(""),
|
||||
Back(),
|
||||
},
|
||||
}
|
Loading…
Reference in a new issue