RMXP SDK와 RMVX Scene_Base를 참조하여 다시 써 본 것입니다. 모든 Scene class의 상위 class가 될 수 있습니다.
class Scene_Base #-------------------------------------------------------------------------- # * Main Processing #-------------------------------------------------------------------------- def main main_start main_transition # Main Transition Initialization main_post_start loop do # Scene Loop main_loop # Main Loop break if $scene != self # Break If Breakloop Test end # End Scene Loop main_pre_terminate Graphics.freeze # Prepare for transition main_dispose # Main Dispose main_end # Main End end #-------------------------------------------------------------------------- # * Start processing #-------------------------------------------------------------------------- def main_start main_variable # Main Variable Initialization main_spriteset # Main Spriteset Initialization main_sprite # Main Sprite Initialization main_window # Main Window Initialization main_audio # Main Audio Initialization end #-------------------------------------------------------------------------- # * Main Processing : Variable Initialization #-------------------------------------------------------------------------- def main_variable ; end #-------------------------------------------------------------------------- # * Main Processing : Spriteset Initialization #-------------------------------------------------------------------------- def main_spriteset ; end #-------------------------------------------------------------------------- # * Main Processing : Sprite Initialization #-------------------------------------------------------------------------- def main_sprite ; end #-------------------------------------------------------------------------- # * Main Processing : Window Initialization #-------------------------------------------------------------------------- def main_window ; end #-------------------------------------------------------------------------- # * Main Processing : Audio Initialization #-------------------------------------------------------------------------- def main_audio ; end #-------------------------------------------------------------------------- # * Main Processing : Additional method before transition initialization #-------------------------------------------------------------------------- def main_post_start ; end #-------------------------------------------------------------------------- # * Main Processing : Transition #-------------------------------------------------------------------------- def main_transition Graphics.transition end #-------------------------------------------------------------------------- # * Main Processing : Loop #-------------------------------------------------------------------------- def main_loop Graphics.update # Update game screen Input.update # Update input information update # Update Processing end #-------------------------------------------------------------------------- # * Main Processing : Additional method before transition #-------------------------------------------------------------------------- def main_pre_terminate ; end #-------------------------------------------------------------------------- # * Main Processing : Dispose objects #-------------------------------------------------------------------------- def main_dispose ; end #-------------------------------------------------------------------------- # * Main Processing : Ending #-------------------------------------------------------------------------- def main_end ; end end
**예제: Scene_Title을 위의 Scene_Base를 물려받도록 편집한 것입니다(일부 편집은 RMXP SDK와 RMVX에 기반):
#============================================================================== # ** Scene_Title #------------------------------------------------------------------------------ # This class performs title screen processing. #============================================================================== class Scene_Title < Scene_Base #-------------------------------------------------------------------------- # * Main Processing #-------------------------------------------------------------------------- def main # If battle test if $BTEST battle_test else super end end #-------------------------------------------------------------------------- # * Start processing #-------------------------------------------------------------------------- def main_start main_database # Main Database Initialization super end #-------------------------------------------------------------------------- # * Main Processing : Database Initialization #-------------------------------------------------------------------------- def main_database # Load database $data_actors = load_data("Data/Actors.rxdata") $data_classes = load_data("Data/Classes.rxdata") $data_skills = load_data("Data/Skills.rxdata") $data_items = load_data("Data/Items.rxdata") $data_weapons = load_data("Data/Weapons.rxdata") $data_armors = load_data("Data/Armors.rxdata") $data_enemies = load_data("Data/Enemies.rxdata") $data_troops = load_data("Data/Troops.rxdata") $data_states = load_data("Data/States.rxdata") $data_animations = load_data("Data/Animations.rxdata") $data_tilesets = load_data("Data/Tilesets.rxdata") $data_common_events = load_data("Data/CommonEvents.rxdata") $data_system = load_data("Data/System.rxdata") # Make system object $game_system = Game_System.new end #-------------------------------------------------------------------------- # * Main Processing : Sprite Initialization #-------------------------------------------------------------------------- def main_sprite # Make title graphic @sprite = Sprite.new @sprite.bitmap = RPG::Cache.title($data_system.title_name) end #-------------------------------------------------------------------------- # * Main Processing : Window Initialization #-------------------------------------------------------------------------- def main_window # Make command window s1 = "New Game" s2 = "Continue" s3 = "Shutdown" @command_window = Window_Command.new(192, [s1, s2, s3]) @command_window.back_opacity = 160 @command_window.x = 320 - @command_window.width / 2 @command_window.y = 288 main_test_continue # If continue is enabled, move cursor to "Continue" # If disabled, display "Continue" text in gray if @continue_enabled @command_window.index = 1 else @command_window.disable_item(1) end end #-------------------------------------------------------------------------- # * Main Test Initialization #-------------------------------------------------------------------------- def main_test_continue # Continue enabled determinant # Check if at least one save file exists # If enabled, make @continue_enabled true; if disabled, make it false @continue_enabled = (Dir.glob('Save*.rxdata').size > 0) end #-------------------------------------------------------------------------- # * Main Processing : Audio Initialization #-------------------------------------------------------------------------- def main_audio # Play title BGM $game_system.bgm_play($data_system.title_bgm) # Stop playing ME and BGS Audio.me_stop Audio.bgs_stop end #-------------------------------------------------------------------------- # * Main Dispose #-------------------------------------------------------------------------- def main_dispose # Dispose of command window @command_window.dispose # Dispose of title graphic @sprite.bitmap.dispose @sprite.dispose end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update # Update command window @command_window.update # If C button was pressed if Input.trigger?(Input::C) # Branch by command window cursor position case @command_window.index when 0 # New game command_new_game when 1 # Continue command_continue when 2 # Shutdown command_shutdown end end end #-------------------------------------------------------------------------- # * Command: New Game #-------------------------------------------------------------------------- def command_new_game confirm_player_location # Play decision SE $game_system.se_play($data_system.decision_se) # Stop BGM Audio.bgm_stop commandnewgame_gamedata commandnewgame_partysetup commandnewgame_mapsetup # Switch to map screen $scene = Scene_Map.new end #-------------------------------------------------------------------------- # * Check Player Start Location Existence #-------------------------------------------------------------------------- def confirm_player_location if $data_system.start_map_id == 0 print "Player start location not set." exit end end #-------------------------------------------------------------------------- # * Command: New Game : Game Data Setup #-------------------------------------------------------------------------- def commandnewgame_gamedata # Reset frame count for measuring play time Graphics.frame_count = 0 # Make each type of game object $game_temp = Game_Temp.new $game_system = Game_System.new $game_switches = Game_Switches.new $game_variables = Game_Variables.new $game_self_switches = Game_SelfSwitches.new $game_screen = Game_Screen.new $game_actors = Game_Actors.new $game_party = Game_Party.new $game_troop = Game_Troop.new $game_map = Game_Map.new $game_player = Game_Player.new end #-------------------------------------------------------------------------- # * Command: New Game : Party Setup #-------------------------------------------------------------------------- def commandnewgame_partysetup # Set up initial party $game_party.setup_starting_members end #-------------------------------------------------------------------------- # * Command: New Game : Map Setup #-------------------------------------------------------------------------- def commandnewgame_mapsetup # Set up initial map position $game_map.setup($data_system.start_map_id) # Move player to initial position $game_player.moveto($data_system.start_x, $data_system.start_y) # Refresh player $game_player.refresh # Run automatic change for BGM and BGS set with map $game_map.autoplay # Update map (run parallel process event) $game_map.update end #-------------------------------------------------------------------------- # * Command: Continue #-------------------------------------------------------------------------- def command_continue # If continue is disabled unless @continue_enabled # 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 load screen $scene = Scene_Load.new end #-------------------------------------------------------------------------- # * Command: Shutdown #-------------------------------------------------------------------------- def command_shutdown # Play decision SE $game_system.se_play($data_system.decision_se) # Fade out BGM, BGS, and ME Audio.bgm_fade(800) Audio.bgs_fade(800) Audio.me_fade(800) # Shutdown $scene = nil end #-------------------------------------------------------------------------- # * Battle Test #-------------------------------------------------------------------------- def battle_test battletest_database commandnewgame_gamedata # Set up party for battle test $game_party.setup_battle_test_members # Set troop ID, can escape flag, and battleback $game_temp.battle_troop_id = $data_system.test_troop_id $game_temp.battle_can_escape = true $game_map.battleback_name = $data_system.battleback_name # Play battle start SE $game_system.se_play($data_system.battle_start_se) # Play battle BGM $game_system.bgm_play($game_system.battle_bgm) # Switch to battle screen $scene = Scene_Battle.new end #-------------------------------------------------------------------------- # * Battle Test : Load Database #-------------------------------------------------------------------------- def battletest_database # Load database (for battle test) $data_actors = load_data("Data/BT_Actors.rxdata") $data_classes = load_data("Data/BT_Classes.rxdata") $data_skills = load_data("Data/BT_Skills.rxdata") $data_items = load_data("Data/BT_Items.rxdata") $data_weapons = load_data("Data/BT_Weapons.rxdata") $data_armors = load_data("Data/BT_Armors.rxdata") $data_enemies = load_data("Data/BT_Enemies.rxdata") $data_troops = load_data("Data/BT_Troops.rxdata") $data_states = load_data("Data/BT_States.rxdata") $data_animations = load_data("Data/BT_Animations.rxdata") $data_tilesets = load_data("Data/BT_Tilesets.rxdata") $data_common_events = load_data("Data/BT_CommonEvents.rxdata") $data_system = load_data("Data/BT_System.rxdata") end end