mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-08 13:44:59 +00:00
Refactoring and tidying
This commit is contained in:
185
Data/Scripts/021_Debug/001_Debug menus/001_Debug_Menus.rb
Normal file
185
Data/Scripts/021_Debug/001_Debug menus/001_Debug_Menus.rb
Normal file
@@ -0,0 +1,185 @@
|
||||
#===============================================================================
|
||||
#
|
||||
#===============================================================================
|
||||
class CommandMenuList
|
||||
attr_accessor :currentList
|
||||
|
||||
def initialize
|
||||
@commands = []
|
||||
@currentList = "main"
|
||||
end
|
||||
|
||||
def add(option, hash)
|
||||
@commands.push([option, hash["parent"], hash["name"], hash["description"]])
|
||||
end
|
||||
|
||||
def list
|
||||
ret = []
|
||||
@commands.each { |cmd| ret.push(cmd[2]) if cmd[1] == @currentList }
|
||||
return ret
|
||||
end
|
||||
|
||||
def getCommand(index)
|
||||
count = 0
|
||||
@commands.each do |cmd|
|
||||
next if cmd[1] != @currentList
|
||||
return cmd[0] if count == index
|
||||
count += 1
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
def getDesc(index)
|
||||
count = 0
|
||||
@commands.each do |cmd|
|
||||
next if cmd[1] != @currentList
|
||||
return cmd[3] if count == index && cmd[3]
|
||||
break if count == index
|
||||
count += 1
|
||||
end
|
||||
return "<No description available>"
|
||||
end
|
||||
|
||||
def hasSubMenu?(check_cmd)
|
||||
@commands.each { |cmd| return true if cmd[1] == check_cmd }
|
||||
return false
|
||||
end
|
||||
|
||||
def getParent
|
||||
ret = nil
|
||||
@commands.each do |cmd|
|
||||
next if cmd[0] != @currentList
|
||||
ret = cmd[1]
|
||||
break
|
||||
end
|
||||
return nil if !ret
|
||||
count = 0
|
||||
@commands.each do |cmd|
|
||||
next if cmd[1] != ret
|
||||
return [ret, count] if cmd[0] == @currentList
|
||||
count += 1
|
||||
end
|
||||
return [ret, 0]
|
||||
end
|
||||
end
|
||||
|
||||
#===============================================================================
|
||||
#
|
||||
#===============================================================================
|
||||
def pbDebugMenu(show_all = true)
|
||||
commands = CommandMenuList.new
|
||||
DebugMenuCommands.each do |option, hash|
|
||||
commands.add(option, hash) if show_all || hash["always_show"]
|
||||
end
|
||||
viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
|
||||
viewport.z = 99999
|
||||
sprites = {}
|
||||
sprites["textbox"] = pbCreateMessageWindow
|
||||
sprites["textbox"].letterbyletter = false
|
||||
sprites["cmdwindow"] = Window_CommandPokemonEx.new(commands.list)
|
||||
cmdwindow = sprites["cmdwindow"]
|
||||
cmdwindow.x = 0
|
||||
cmdwindow.y = 0
|
||||
cmdwindow.width = Graphics.width
|
||||
cmdwindow.height = Graphics.height - sprites["textbox"].height
|
||||
cmdwindow.viewport = viewport
|
||||
cmdwindow.visible = true
|
||||
sprites["textbox"].text = commands.getDesc(cmdwindow.index)
|
||||
pbFadeInAndShow(sprites)
|
||||
ret = -1
|
||||
refresh = true
|
||||
loop do
|
||||
loop do
|
||||
oldindex = cmdwindow.index
|
||||
cmdwindow.update
|
||||
if refresh || cmdwindow.index != oldindex
|
||||
sprites["textbox"].text = commands.getDesc(cmdwindow.index)
|
||||
refresh = false
|
||||
end
|
||||
Graphics.update
|
||||
Input.update
|
||||
if Input.trigger?(Input::B)
|
||||
parent = commands.getParent
|
||||
if parent
|
||||
pbPlayCancelSE
|
||||
commands.currentList = parent[0]
|
||||
cmdwindow.commands = commands.list
|
||||
cmdwindow.index = parent[1]
|
||||
refresh = true
|
||||
else
|
||||
ret = -1
|
||||
break
|
||||
end
|
||||
elsif Input.trigger?(Input::C)
|
||||
pbPlayDecisionSE
|
||||
ret = cmdwindow.index
|
||||
break
|
||||
end
|
||||
end
|
||||
break if ret < 0
|
||||
cmd = commands.getCommand(ret)
|
||||
if commands.hasSubMenu?(cmd)
|
||||
commands.currentList = cmd
|
||||
cmdwindow.commands = commands.list
|
||||
cmdwindow.index = 0
|
||||
refresh = true
|
||||
elsif cmd == "warp"
|
||||
return if DebugMenuCommands.call("effect", cmd, sprites, viewport)
|
||||
else
|
||||
return if DebugMenuCommands.call("effect", cmd)
|
||||
end
|
||||
end
|
||||
pbPlayCloseMenuSE
|
||||
pbFadeOutAndHide(sprites)
|
||||
pbDisposeMessageWindow(sprites["textbox"])
|
||||
pbDisposeSpriteHash(sprites)
|
||||
viewport.dispose
|
||||
end
|
||||
|
||||
#===============================================================================
|
||||
#
|
||||
#===============================================================================
|
||||
module PokemonDebugMixin
|
||||
def pbPokemonDebug(pkmn, pkmnid, heldpoke = nil, settingUpBattle = false)
|
||||
command = 0
|
||||
commands = CommandMenuList.new
|
||||
PokemonDebugMenuCommands.each do |option, hash|
|
||||
commands.add(option, hash) if !settingUpBattle || hash["always_show"]
|
||||
end
|
||||
loop do
|
||||
command = pbShowCommands(_INTL("Do what with {1}?", pkmn.name), commands.list, command)
|
||||
if command < 0
|
||||
parent = commands.getParent
|
||||
if parent
|
||||
commands.currentList = parent[0]
|
||||
command = parent[1]
|
||||
else
|
||||
break
|
||||
end
|
||||
else
|
||||
cmd = commands.getCommand(command)
|
||||
if commands.hasSubMenu?(cmd)
|
||||
commands.currentList = cmd
|
||||
command = 0
|
||||
elsif PokemonDebugMenuCommands.call("effect", cmd, pkmn, pkmnid, heldpoke, settingUpBattle, self)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
#===============================================================================
|
||||
#
|
||||
#===============================================================================
|
||||
class PokemonPartyScreen
|
||||
include PokemonDebugMixin
|
||||
end
|
||||
|
||||
class PokemonStorageScreen
|
||||
include PokemonDebugMixin
|
||||
end
|
||||
|
||||
class PokemonDebugPartyScreen
|
||||
include PokemonDebugMixin
|
||||
end
|
||||
Reference in New Issue
Block a user