Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Scene_Menu
- #--------------------------------------------------------------------------
- # * Object Initialization
- # menu_index : command cursor's initial position
- #--------------------------------------------------------------------------
- def initialize(menu_index = 0)
- @menu_index = menu_index
- end
- #--------------------------------------------------------------------------
- # * Main Processing
- #--------------------------------------------------------------------------
- def main
- # Make command window
- s1 = $data_system.words.item
- s2 = $data_system.words.skill
- s3 = $data_system.words.equip
- s4 = "Status"
- s5 = "Save"
- s6 = "End Game"
- @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
- @command_window.x = -160
- @command_window.y = 0
- @command_window.index = @menu_index
- # If number of party members is 0
- if $game_party.actors.size == 0
- # Disable items, skills, equipment, and status
- @command_window.disable_item(0)
- @command_window.disable_item(1)
- @command_window.disable_item(2)
- @command_window.disable_item(3)
- end
- # If save is forbidden
- if $game_system.save_disabled
- # Disable save
- @command_window.disable_item(4)
- end
- # Make gold window
- @gold_window = Window_Gold.new
- @gold_window.x = 0
- @gold_window.y = 480
- # Make status window
- @status_window = Window_MenuStatus.new
- @status_window.x = 160
- @status_window.y = -480
- @gold_window.start(0, 416)
- @command_window.start(0, 0)
- # Execute transition
- Graphics.transition
- # Main loop
- loop do
- # Update game screen
- Graphics.update
- # Update input information
- Input.update
- # Frame update
- update
- # Abort loop if screen is changed
- if $scene != self
- break
- end
- end
- # Prepare for transition
- Graphics.freeze
- # Dispose of windows
- @command_window.dispose
- @gold_window.dispose
- @status_window.dispose
- end
- #--------------------------------------------------------------------------
- # * Frame Update
- #--------------------------------------------------------------------------
- def update
- # Update windows
- @command_window.update
- @gold_window.update
- @status_window.update
- # If command window is active: call update_command
- if @command_window.active
- update_command
- return
- end
- # If status window is active: call update_status
- if @status_window.active
- update_status
- return
- end
- end
- #--------------------------------------------------------------------------
- # * Frame Update (when command window is active)
- #--------------------------------------------------------------------------
- def update_command
- # If B button was pressed
- if Input.trigger?(Input::B)
- # Move both the command window and gold window back
- @command_window.start(-160,0)
- @gold_window.start(0, 480)
- # Play cancel SE
- $game_system.se_play($data_system.cancel_se)
- # Switch to map screen
- $scene = Scene_Map.new
- return
- end
- # If C button was pressed
- if Input.trigger?(Input::C)
- # If command other than save or end game, and party members = 0
- if $game_party.actors.size == 0 and @command_window.index < 4
- # Play buzzer SE
- $game_system.se_play($data_system.buzzer_se)
- return
- end
- # Branch by command window cursor position
- case @command_window.index
- when 0 # item
- @command_window.start(-160, 0)
- # Play decision SE
- $game_system.se_play($data_system.decision_se)
- # Switch to item screen
- $scene = Scene_Item.new
- when 1 # skill
- # Play decision SE
- $game_system.se_play($data_system.decision_se)
- # Make status window active
- @command_window.active = false
- @status_window.start(160,0)
- @status_window.active = true
- @status_window.index = 0
- when 2 # equipment
- # Play decision SE
- $game_system.se_play($data_system.decision_se)
- # Make status window active
- @command_window.active = false
- @status_window.start(160,0)
- @status_window.active = true
- @status_window.index = 0
- when 3 # status
- # Play decision SE
- $game_system.se_play($data_system.decision_se)
- # Make status window active
- @command_window.active = false
- @status_window.start(160,0)
- @status_window.active = true
- @status_window.index = 0
- when 4 # save
- # If saving is forbidden
- if $game_system.save_disabled
- # Play buzzer SE
- $game_system.se_play($data_system.buzzer_se)
- return
- end
- # Play decision SE
- $game_system.se_play($data_system.decision_se)
- # Switch to save screen
- $scene = Scene_Save.new
- when 5 # end game
- # Play decision SE
- $game_system.se_play($data_system.decision_se)
- # Switch to end game screen
- $scene = Scene_End.new
- end
- return
- end
- end
- #--------------------------------------------------------------------------
- # * Frame Update (when status window is active)
- #--------------------------------------------------------------------------
- def update_status
- # If B button was pressed
- if Input.trigger?(Input::B)
- # Play cancel SE
- $game_system.se_play($data_system.cancel_se)
- # Make command window active & move status window
- @status_window.start(160,-480)
- @command_window.active = true
- @status_window.active = false
- @status_window.index = -1
- return
- end
- # If C button was pressed
- if Input.trigger?(Input::C)
- # Branch by command window cursor position
- case @command_window.index
- when 1 # skill
- # If this actor's action limit is 2 or more
- if $game_party.actors[@status_window.index].restriction >= 2
- # Play buzzer SE
- $game_system.se_play($data_system.buzzer_se)
- return
- end
- # Play decision SE
- $game_system.se_play($data_system.decision_se)
- # Switch to skill screen
- $scene = Scene_Skill.new(@status_window.index)
- when 2 # equipment
- # Play decision SE
- $game_system.se_play($data_system.decision_se)
- # Switch to equipment screen
- $scene = Scene_Equip.new(@status_window.index)
- when 3 # status
- # Play decision SE
- $game_system.se_play($data_system.decision_se)
- # Switch to status screen
- $scene = Scene_Status.new(@status_window.index)
- end
- return
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement