#============================================================================
# ** Map Location Popup
#----------------------------------------------------------------------------
# Yeyinde
# 1.0.0
# 06/07/07
#============================================================================
#==============================================================================
# ** Location_Popup
#------------------------------------------------------------------------------
# Customization module
#==============================================================================
module Location_Popup
# Display Type (0:text 1:image)
DISPLAY_TYPE = 0
# Show Type (0:fade 1:scroll)
SHOW_TYPE = 1
# Showing Duration (Excludes transition time) - Units: Frames
SHOW_TIME = 100
# Transition Duration (For one transition) - Units: Frames
TRANSITION_TIME = 10
# Image Type (0:MapID 1:MapName)
IMAGE_TYPE = 0
# Image Prefix (For DISPLAY_TYPE 1)
IMAGE_PREFIX = 'Location_'
# Image Sufix (For DISPLAY_TYPE 1)
IMAGE_SUFFIX = ''
# Popup exemptions (Syntax: [map_id1, mapid2, etc.] EX. [1, 5, 6])
NO_POPUP_MAPS = []
end
#==============================================================================
# ** Game_Temp
#------------------------------------------------------------------------------
# This class handles temporary data that is not included with save data.
# Refer to "$game_temp" for the instance of this class.
#==============================================================================
class Game_Temp
#---------------------------------------------------------------------------
# * Aliasing
#---------------------------------------------------------------------------
alias_method :map_name_popup_int, :initialize
#---------------------------------------------------------------------------
# * Public Instance Variables
#---------------------------------------------------------------------------
attr_accessor :new_location_name
attr_accessor :location_popup_show
#---------------------------------------------------------------------------
# * Object Initialization
#---------------------------------------------------------------------------
def initialize
# Call aliased method
map_name_popup_int
# Crate new variables
@new_location_name = ''
@location_popup_show = false
end
end
#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
# This class handles the map. It includes scrolling and passable determining
# functions. Refer to "$game_map" for the instance of this class.
#==============================================================================
class Game_Map
#---------------------------------------------------------------------------
# * Aliasing
#---------------------------------------------------------------------------
alias_method :map_name_popup_setup, :setup
#--------------------------------------------------------------------------
# * Setup
# map_id : map ID
#--------------------------------------------------------------------------
def setup(map_id)
# Call aliased method
map_name_popup_setup(map_id)
# Set temporary variable
if Location_Popup::DISPLAY_TYPE == 0 ||
(Location_Popup::DISPLAY_TYPE == 1 && Location_Popup::IMAGE_TYPE == 1)
location_text = $data_mapinfos[@map_id].name
else
location_text = @map_id.to_s
end
$game_temp.new_location_name = location_text
$game_temp.location_popup_show = true
end
end
#==============================================================================
# ** Sprite_LocationPopup
#------------------------------------------------------------------------------
# This sprite is used to display the current location when it is entered. It
# observes $game_temp.new_location_name to know when to refresh
#==============================================================================
class Sprite_LocationPopup < Sprite
#---------------------------------------------------------------------------
# * Object Initialization
#---------------------------------------------------------------------------
def initialize
# Call superclass method
super()
# Set co-ordinates
self.x = 640
self.y = 16
self.z = 999999
# Set some variables to save space
@show_time = Location_Popup::SHOW_TIME
@transition_time = [Location_Popup::TRANSITION_TIME, 1].max
# Refresh
refresh
end
#---------------------------------------------------------------------------
# * Reset Variables
#---------------------------------------------------------------------------
def reset_variables
@current_location = $game_temp.new_location_name
@frames_remaining = @show_time + @transition_time * 2
end
#---------------------------------------------------------------------------
# * Refresh
#---------------------------------------------------------------------------
def refresh
# Clear existing bitmap
if self.bitmap != nil
self.bitmap.dispose
self.bitmap = nil
end
# Reset variables
reset_variables
# Stop if the location is not to be displayed on this map
if Location_Popup::NO_POPUP_MAPS.include?($game_map.map_id) ||
!$game_temp.location_popup_show
@frames_remaining = 0
return
end
$game_temp.location_popup_show = false
# Branch for text display
if Location_Popup::DISPLAY_TYPE == 0
text = @current_location
bitmap = Bitmap.new(32, 32)
width = bitmap.text_size(text).width + 8
bitmap.dispose
self.bitmap = Bitmap.new(width, 32)
self.bitmap.draw_text(0, 0, width, 32, text)
else # Branch for image display
name = Location_Popup::IMAGE_PREFIX + @current_location +
Location_Popup::IMAGE_SUFFIX
self.bitmap = RPG::Cache.picture(name)
end
# Reset x co-ordinates
self.x = Location_Popup::SHOW_TYPE == 0 ? 640 - 16 - self.bitmap.width : 640
# Set opacity if fade type
self.opacity = 0 if Location_Popup::SHOW_TYPE == 0
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# Call superclass method
super
# Refresh if location was changed
refresh if @current_location != $game_temp.new_location_name
# If there is still a frame remaining
if @frames_remaining > 1
# Branch per frames remaining
case @frames_remaining
when (@show_time + @transition_time )...(@show_time +
@transition_time * 2)
# Branch per showing type
if Location_Popup::SHOW_TYPE == 0
self.opacity += 256 / @transition_time
else
self.x -= (self.bitmap.width + 16) / @transition_time
end
when 1..(@transition_time + 1)
# Branch per showing type
if Location_Popup::SHOW_TYPE == 0
self.opacity -= 256 / @transition_time
else
self.x += (self.bitmap.width + 16) / @transition_time
end
end
# Remove one frame
@frames_remaining -= 1
end
end
end
#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
# This class performs title screen processing.
#==============================================================================
class Scene_Title
#---------------------------------------------------------------------------
# * Aliasing
#---------------------------------------------------------------------------
alias_method :map_name_popup_database, :main
#--------------------------------------------------------------------------
# * Main Processing : Database Initialization
#--------------------------------------------------------------------------
def main
if $data_mapinfos.nil? && Location_Popup::DISPLAY_TYPE == 0 ||
(Location_Popup::DISPLAY_TYPE == 1 && Location_Popup::IMAGE_TYPE == 1)
# Load Mapinfos data
$data_mapinfos = load_data('Data/MapInfos.rxdata')
end
# Call aliased method
map_name_popup_database
# If global variable $data_mapinfos has not yet been defined
# and if the setup is to use the map name in some way (Text/Mapname image)
end
end
#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
# This class performs map screen processing.
#==============================================================================
class Scene_Map
#---------------------------------------------------------------------------
# * Aliasing
#---------------------------------------------------------------------------
alias_method :map_name_popup_sprite, :main
#--------------------------------------------------------------------------
# * Main Processing : Sprite Initialization
#--------------------------------------------------------------------------
def main
@location_popup_sprite = Sprite_LocationPopup.new
map_name_popup_sprite
@location_popup_sprite.dispose
end
end