Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #===============================================================================
- # * Main Menu Evo II
- # * Successor to Main Menu EVO
- # * By Crazyninjaguy
- # * http://www.planetdev.co.uk
- # * Part of CNG Engine Evolution
- #===============================================================================
- $imported = {} if $imported == nil
- $imported["CEE-MainMenuEvoII"] = true
- module CngEvo
- module Menu
- #===========================================================================
- # * Load System data to prevent errors when loading Vocab terms
- #===========================================================================
- $data_system = load_data("Data/System.rvdata")
- #===========================================================================
- # * Menu Commands, seperate each value with a comma.
- # * To add new commands, either use a Vocab entry (See the Vocab Module),
- # Or use a text string in quotes, example: "Quests"
- #===========================================================================
- COMMANDS = [
- Vocab::item,
- Vocab::skill,
- Vocab::equip,
- Vocab::status,
- Vocab::save,
- Vocab::game_end]
- #===========================================================================
- # * These are the icons that display next to the command option in the menu.
- # * The best way to find the number of the icon is to use Yanfly's
- # YEM IconView Melody, and look for the ID number.
- # * Seperate each number with a comma.
- #===========================================================================
- ICONS = [
- 144,
- 128,
- 32,
- 106,
- 141,
- 142]
- #===========================================================================
- # * These are the scenes to call for each menu command.
- # * Copy the existing examples to add new ones.
- # * The last value (True/False) is whether or not you need to select an
- # an actor to continue onto that scene.
- # * True = Select an Actor.
- # * False = Don't select one.
- #===========================================================================
- SCENES = [
- [Scene_Item, false],
- [Scene_Skill, true],
- [Scene_Equip, true],
- [Scene_Status, true],
- [Scene_File, false],
- [Scene_End, false]]
- #===========================================================================
- # * These are the Playtime, Steps, Map Name and Gold icons.
- # * As with the others, seperate with a comma
- #===========================================================================
- INFO_ICONS = [
- 188,
- 48,
- 153,
- 205]
- end # Menu
- end # CngEvo
- #===============================================================================
- # * Scene_Menu Class, Processes the main menu.
- #===============================================================================
- class Scene_Menu < Scene_Base
- #=============================================================================
- # * Include the Menu module and initialize the command_window index
- #=============================================================================
- include CngEvo::Menu
- def initialize(menu_index = 0)
- @menu_index = menu_index
- end # initialize
- #=============================================================================
- # * Start the scene by creating windows etc
- #=============================================================================
- def start
- super
- create_menu_background
- create_command_window
- @status_window = Window_MenuEvoStatus.new
- @menuinfo = Window_MenuInfo.new
- end # start
- #=============================================================================
- # * End the scene and dispose windows etc
- #=============================================================================
- def terminate
- super
- dispose_menu_background
- @menudummy.dispose
- @command_window.dispose
- @status_window.dispose
- @menuinfo.dispose
- end # terminate
- #=============================================================================
- # * Update the scene's windows
- #=============================================================================
- def update
- super
- @menuinfo.update
- if @command_window.active
- @command_window.update
- update_command
- elsif @status_window.active
- @status_window.update
- update_actor_selection
- end
- end # update
- #=============================================================================
- # * Create the main command window
- #=============================================================================
- def create_command_window
- @menudummy = Window_MenuDummy.new
- @command_window = Window_Command.new(140, COMMANDS)
- @command_window.index = @menu_index
- @command_window.x = 24
- @command_window.opacity = 0
- end # create_command_window
- #=============================================================================
- # * Update the command window, and process choices
- #=============================================================================
- def update_command
- if Input.trigger?(Input::C)
- Sound.play_decision
- if SCENES[@command_window.index][1] == false
- $scene = SCENES[@command_window.index][0].new
- else
- start_actor_selection
- end
- elsif Input.trigger?(Input::B)
- Sound.play_cancel
- $scene = Scene_Map.new
- end
- end # update_command
- end # Scene_Menu
- #===============================================================================
- # * Window_MenuDummy, this window draws the menu icons.
- #===============================================================================
- class Window_MenuDummy < Window_Base
- #=============================================================================
- # * Include the Menu module, and setup window size
- #=============================================================================
- include CngEvo::Menu
- def initialize
- super(0, 0, 164, ((24 * COMMANDS.size) + 32))
- refresh
- end # initialize
- #=============================================================================
- # * Draw the icons
- #=============================================================================
- def refresh
- for i in 0...ICONS.size
- draw_icon(ICONS[i], -2, (i * 24)) # Items
- end
- end # refresh
- end # Window_MenuDummy
- #===============================================================================
- # * Window_MenuEvoStatus, this window is a Window_MenuStatus Replacement
- #===============================================================================
- class Window_MenuEvoStatus < Window_Selectable
- #=============================================================================
- # * Initialize the window, ans setup values
- #=============================================================================
- def initialize
- super(0, (416 - 192), 544, 192)
- refresh
- self.active = false
- self.index = -1
- end # initialize
- #=============================================================================
- # * Draw window contents
- #=============================================================================
- def refresh
- self.contents.clear
- @item_max = $game_party.members.size
- @facesprites = []
- for actor in $game_party.members
- x = actor.index * 128 + 16
- draw_actor_evoface(actor, x, 64)
- draw_actor_graphic(actor, x + 14, 158)
- draw_actor_name(actor, x, 0)
- draw_actor_level(actor, x, 32)
- draw_actor_state(actor, x + 80, 0)
- draw_actor_hp(actor, x - 12, 64)
- draw_actor_mp(actor, x - 12, 96)
- end
- end # refresh
- #=============================================================================
- # * Update cursor
- #=============================================================================
- def update_cursor
- if @index < 0 # No cursor
- self.cursor_rect.empty
- elsif @index < @item_max # Normal
- self.cursor_rect.set((@index * 128), 0, 128, 160)
- elsif @index >= 100 # Self
- self.cursor_rect.set((@index * 128), 0, 128, 160)
- else # All
- self.cursor_rect.set(0, 0, contents.width, 160)
- end
- end # update_cursor
- #=============================================================================
- # * Add support for horizontal scrolling
- #=============================================================================
- def update
- super
- if cursor_movable?
- last_index = @index
- if Input.repeat?(Input::RIGHT)
- if @index == 0
- if $game_party.members.size > 1
- @index = 1
- end
- elsif @index == 1
- if $game_party.members.size > 2
- @index = 2
- end
- elsif @index == 2
- if $game_party.members.size > 3
- @index = 3
- end
- elsif @index == 3
- if $game_party.members.size >= 4
- @index = 0
- end
- end
- elsif Input.repeat?(Input::LEFT)
- if @index == 0
- if $game_party.members.size >= 4
- @index = 3
- end
- elsif @index == 1
- @index = 0
- elsif @index == 2
- @index = 1
- elsif @index == 3
- @index = 2
- end
- end
- if @index != last_index
- Sound.play_cursor
- end
- end
- update_cursor
- call_update_help
- end # update
- end # Window_MenuEvoStatus
- #===============================================================================
- # * Window_MenuInfo class, this window draws Playtime, Steps etc.
- #===============================================================================
- class Window_MenuInfo < Window_Base
- #=============================================================================
- # * Include the Menu module and setup window size
- #=============================================================================
- include CngEvo::Menu
- def initialize
- super((544 - 260), 0, 260, 128)
- refresh
- end # initialize
- #=============================================================================
- # * Draw Window contents
- #=============================================================================
- def refresh
- self.contents.clear
- draw_icon(INFO_ICONS[1], 0, 24) # Steps
- draw_icon(INFO_ICONS[2], 0, 48) # Map Name
- draw_icon(INFO_ICONS[3], 0, 72) # Area
- draw_time
- self.contents.draw_text(0, 24, width - 32, WLH, $game_party.steps, 2)
- @map_name = load_data("Data/MapInfos.rvdata")[$game_map.map_id].name
- self.contents.draw_text(0, 48, width - 32, WLH, @map_name, 2)
- self.contents.draw_text(0, 72, width - 32, WLH, $game_party.gold, 2)
- end # refresh
- #=============================================================================
- # * Check if Playtime is different from last check
- #=============================================================================
- def update
- if @text != (Graphics.frame_count / Graphics.frame_rate)
- draw_time
- end
- super
- end # update
- #=============================================================================
- # * Draw playtime info
- #=============================================================================
- def draw_time
- self.contents.clear_rect(Rect.new(0, 0, (260 - 32), 24))
- draw_icon(INFO_ICONS[0], 0, 0) # Playtime
- @total_sec = Graphics.frame_count / Graphics.frame_rate
- @hour = @total_sec / 60 / 60
- @min = @total_sec / 60 % 60
- @sec = @total_sec % 60
- @text = sprintf("%02d:%02d:%02d", @hour, @min, @sec)
- self.contents.draw_text(0, 0, width - 32, WLH, @text, 2)
- end # draw_time
- end # Window_MenuInfo
- #===============================================================================
- # * Window_Base Edits to allow for face opacity changing
- #===============================================================================
- class Window_Base < Window
- #=============================================================================
- # * Draw the character's face graphic
- #=============================================================================
- def draw_evoface(face_name, face_index, x, y, size = 96)
- opacity = 100
- bitmap = Cache.face(face_name)
- rect = Rect.new(0, 0, 0, 0)
- rect.x = face_index % 4 * 96 + (96 - size) / 2
- rect.y = face_index / 4 * 96 + (96 - size) / 2
- rect.width = size
- rect.height = size
- self.contents.blt(x, y, bitmap, rect, opacity)
- bitmap.dispose
- end # draw_evoface
- #=============================================================================
- # * Call the draw_evoface method with the relevant arguments
- #=============================================================================
- def draw_actor_evoface(actor, x, y, size = 96)
- draw_evoface(actor.face_name, actor.face_index, x, y, size)
- end # draw_actor_evoface
- end # Window_Base
Advertisement
Add Comment
Please, Sign In to add comment