#=============================================================================== # ** Modified Scene_Map class for Pokémon. #------------------------------------------------------------------------------- # #=============================================================================== class Scene_Map attr_reader :spritesetGlobal attr_reader :map_renderer def spriteset(map_id = -1) return @spritesets[map_id] if map_id > 0 && @spritesets[map_id] for i in @spritesets.values return i if i.map==$game_map end return @spritesets.values[0] end def createSpritesets @map_renderer = TilemapRenderer.new(Spriteset_Map.viewport) @spritesetGlobal = Spriteset_Global.new @spritesets = {} for map in $map_factory.maps @spritesets[map.map_id] = Spriteset_Map.new(map) end $map_factory.setSceneStarted(self) updateSpritesets end def createSingleSpriteset(map) temp = $scene.spriteset.getAnimations @spritesets[map] = Spriteset_Map.new($map_factory.maps[map]) $scene.spriteset.restoreAnimations(temp) $map_factory.setSceneStarted(self) updateSpritesets end def disposeSpritesets return if !@spritesets for i in @spritesets.keys next if !@spritesets[i] @spritesets[i].dispose @spritesets[i] = nil end @spritesets.clear @spritesets = {} @spritesetGlobal.dispose @spritesetGlobal = nil @map_renderer.dispose @map_renderer = nil end def autofade(mapid) playingBGM = $game_system.playing_bgm playingBGS = $game_system.playing_bgs return if !playingBGM && !playingBGS map = load_data(sprintf("Data/Map%03d.rxdata", mapid)) if playingBGM && map.autoplay_bgm if (PBDayNight.isNight? rescue false) pbBGMFade(0.8) if playingBGM.name!=map.bgm.name && playingBGM.name!=map.bgm.name+"_n" else pbBGMFade(0.8) if playingBGM.name!=map.bgm.name end end if playingBGS && map.autoplay_bgs pbBGMFade(0.8) if playingBGS.name!=map.bgs.name end Graphics.frame_reset end def transfer_player(cancelVehicles=true) $game_temp.player_transferring = false pbCancelVehicles($game_temp.player_new_map_id) if cancelVehicles autofade($game_temp.player_new_map_id) pbBridgeOff @spritesetGlobal.playersprite.clearShadows if $game_map.map_id!=$game_temp.player_new_map_id $map_factory.setup($game_temp.player_new_map_id) end $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y) case $game_temp.player_new_direction when 2 then $game_player.turn_down when 4 then $game_player.turn_left when 6 then $game_player.turn_right when 8 then $game_player.turn_up end $game_player.straighten $game_temp.followers.map_transfer_followers $game_map.update disposeSpritesets RPG::Cache.clear createSpritesets if $game_temp.transition_processing $game_temp.transition_processing = false Graphics.transition end $game_map.autoplay Graphics.frame_reset Input.update end def call_menu $game_temp.menu_calling = false $game_temp.in_menu = true $game_player.straighten $game_map.update sscene = PokemonPauseMenu_Scene.new sscreen = PokemonPauseMenu.new(sscene) sscreen.pbStartPokemonMenu $game_temp.in_menu = false end def call_debug $game_temp.debug_calling = false pbPlayDecisionSE $game_player.straighten pbFadeOutIn { pbDebugMenu } end def miniupdate $game_temp.in_mini_update = true loop do $game_player.update updateMaps $game_system.update $game_screen.update break unless $game_temp.player_transferring transfer_player break if $game_temp.transition_processing end updateSpritesets $game_temp.in_mini_update = false end def updateMaps for map in $map_factory.maps map.update end $map_factory.updateMaps(self) end def updateSpritesets @spritesets = {} if !@spritesets keys = @spritesets.keys.clone for i in keys if !$map_factory.hasMap?(i) @spritesets[i].dispose if @spritesets[i] @spritesets[i] = nil @spritesets.delete(i) else @spritesets[i].update end end @spritesetGlobal.update for map in $map_factory.maps @spritesets[map.map_id] = Spriteset_Map.new(map) if !@spritesets[map.map_id] end pbDayNightTint(@map_renderer) @map_renderer.update Events.onMapUpdate.trigger(self) end def update loop do pbMapInterpreter.update $game_player.update updateMaps $game_system.update $game_screen.update break unless $game_temp.player_transferring transfer_player break if $game_temp.transition_processing end updateSpritesets if $game_temp.title_screen_calling $game_temp.title_screen_calling = false SaveData.mark_values_as_unloaded $scene = pbCallTitle return end if $game_temp.transition_processing $game_temp.transition_processing = false if $game_temp.transition_name == "" Graphics.transition else Graphics.transition(40, "Graphics/Transitions/" + $game_temp.transition_name) end end return if $game_temp.message_window_showing if !pbMapInterpreterRunning? if Input.trigger?(Input::USE) $game_temp.interact_calling = true elsif Input.trigger?(Input::ACTION) unless $game_system.menu_disabled || $game_player.moving? $game_temp.menu_calling = true $game_temp.menu_beep = true end elsif Input.trigger?(Input::SPECIAL) unless $game_player.moving? $game_temp.ready_menu_calling = true end elsif Input.press?(Input::F9) $game_temp.debug_calling = true if $DEBUG end end unless $game_player.moving? if $game_temp.menu_calling call_menu elsif $game_temp.debug_calling call_debug elsif $game_temp.ready_menu_calling $game_temp.ready_menu_calling = false $game_player.straighten pbUseKeyItem elsif $game_temp.interact_calling $game_temp.interact_calling = false $game_player.straighten Events.onAction.trigger(self) end end end def main createSpritesets Graphics.transition loop do Graphics.update Input.update update break if $scene != self end Graphics.freeze disposeSpritesets if $game_temp.title_screen_calling Graphics.transition Graphics.freeze end end end