Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- =begin
- #==============================================================================
- # Game_Event
- #==============================================================================
- class Game_Event < Game_Character
- #--------------------------------------------------------------------------
- # name
- #--------------------------------------------------------------------------
- def name
- return @event.name
- end
- end
- #==============================================================================
- # Map_Base
- #------------------------------------------------------------------------------
- # @Base class for mini maps
- #==============================================================================
- class Map_Base
- MP_VERSION = 5
- #--------------------------------------------------------------------------
- # Initialize
- #--------------------------------------------------------------------------
- def initialize(corner, use_windowskin)
- @tileset_name = $game_map.tileset_name
- @bg = Window_Base.new(0, 0, 144, 112)
- @bg.z = 9000
- if no_display?
- @bg.windowskin = nil
- else
- unless use_windowskin
- @bg.dispose
- @bg = Window_Base.new(0, 0, 160, 128)
- @bg.contents = Bitmap.new(128, 96)
- @bg.windowskin = nil
- @bg.z = 9015
- end
- end
- @map = Sprite.new
- @map.bitmap = Bitmap.new(map_width, map_height)
- @map.z = 9005
- @event = Sprite.new
- @event.bitmap = Bitmap.new(map_width, map_height)
- @event.z = 9010
- self.back_opacity = 175
- self.opacity = 175
- case corner
- when 1
- self.x = 16
- self.y = 16
- when 2
- self.x = 640 - width - 16
- self.y = 16
- when 3
- self.x = 16
- self.y = 480 - height - 16
- when 4
- self.x = 640 - width# - 16
- self.y = 480 - height# - 16
- else
- self.x = 16
- self.y = 16
- end
- end
- #--------------------------------------------------------------------------
- # œ display_map?
- #--------------------------------------------------------------------------
- def no_map_display?
- for event in $game_map.events.values
- if event.name.include?("[no map]")
- return true
- end
- end
- return false
- end
- #--------------------------------------------------------------------------
- # œ display_map?
- #--------------------------------------------------------------------------
- def no_event_display?
- for event in $game_map.events.values
- if event.name.include?("[no event]")
- return true
- end
- end
- return false
- end
- #--------------------------------------------------------------------------
- # œ display_map?
- #--------------------------------------------------------------------------
- def no_display?
- for event in $game_map.events.values
- if event.name.include?("[no map]") and event.name.include?("[no event]")
- return true
- end
- end
- return false
- end
- #--------------------------------------------------------------------------
- # œ dispose
- #--------------------------------------------------------------------------
- def dispose
- @bg.dispose
- @map.bitmap.dispose
- @map.dispose
- @event.bitmap.dispose
- @event.dispose
- end
- #--------------------------------------------------------------------------
- # œ map
- #--------------------------------------------------------------------------
- def map
- return @map
- end
- #--------------------------------------------------------------------------
- # œ event
- #--------------------------------------------------------------------------
- def event
- return @event
- end
- #--------------------------------------------------------------------------
- # œ width
- #--------------------------------------------------------------------------
- def width
- return 161
- end
- #--------------------------------------------------------------------------
- # œ opacity=
- #--------------------------------------------------------------------------
- def height
- return 97
- end
- #--------------------------------------------------------------------------
- # œ opacity=
- #--------------------------------------------------------------------------
- def visible=(bool)
- @bg.visible = bool
- @event.visible = bool
- @map.visible = bool
- end
- #--------------------------------------------------------------------------
- # œ opacity
- #--------------------------------------------------------------------------
- def visible
- return @bg.visible
- end
- #--------------------------------------------------------------------------
- # œ opacity=
- #--------------------------------------------------------------------------
- def opacity=(opacity)
- @event.opacity = opacity
- @map.opacity = opacity
- end
- #--------------------------------------------------------------------------
- # œ opacity
- #--------------------------------------------------------------------------
- def opacity
- return @event.opacity
- end
- #--------------------------------------------------------------------------
- # œ back_opacity=
- #--------------------------------------------------------------------------
- def back_opacity=(opacity)
- @bg.opacity = opacity
- @bg.contents_opacity = opacity if @bg.contents != nil
- end
- #--------------------------------------------------------------------------
- # œ back_opacity
- #--------------------------------------------------------------------------
- def back_opacity
- return @bg.opacity
- end
- #--------------------------------------------------------------------------
- # œ x=
- #--------------------------------------------------------------------------
- def x=(x)
- @bg.x = x - (@bg.width - 128) / 2
- @event.x = x + 8
- @map.x = x + 8
- end
- #--------------------------------------------------------------------------
- # œ x
- #--------------------------------------------------------------------------
- def x
- return @bg.x
- end
- #--------------------------------------------------------------------------
- # œ y=
- #--------------------------------------------------------------------------
- def y=(y)
- @bg.y = y - (@bg.height - 96) / 2
- @event.y = y + 8
- @map.y = y + 8
- end
- #--------------------------------------------------------------------------
- # œ y
- #--------------------------------------------------------------------------
- def y
- return @bg.y
- end
- #--------------------------------------------------------------------------
- # œ map_width
- #--------------------------------------------------------------------------
- def map_width
- return $game_map.width * 112/20
- end
- #--------------------------------------------------------------------------
- # œ map_height
- #--------------------------------------------------------------------------
- def map_height
- return $game_map.height * 80/15
- end
- #--------------------------------------------------------------------------
- # œ display_x
- #--------------------------------------------------------------------------
- def display_x
- return $game_map.display_x / 128 * 112/20
- end
- #--------------------------------------------------------------------------
- # œ map_height
- #--------------------------------------------------------------------------
- def display_y
- return $game_map.display_y / 128 * 80/15
- end
- end
- #==============================================================================
- # ¡ Map_Mini
- #------------------------------------------------------------------------------
- # @Base class for mini maps
- #
- # made by squall // squall@loeher.zzn.com
- #==============================================================================
- class Map_Mini < Map_Base
- #--------------------------------------------------------------------------
- # œ initialize
- #--------------------------------------------------------------------------
- def initialize(corner, use_windowskin)
- super(corner, use_windowskin)
- unless no_map_display?
- draw_map
- end
- end
- #--------------------------------------------------------------------------
- # œ update
- #--------------------------------------------------------------------------
- def update
- map.src_rect.set(display_x, display_y, width - 16, height - 16)
- if @tileset_name != $game_map.tileset_name
- @tileset_name = $game_map.tileset_name
- unless no_map_display?
- map.bitmap.clear
- draw_map
- end
- end
- end
- #--------------------------------------------------------------------------
- # œ draw_map
- #--------------------------------------------------------------------------
- def draw_map
- bitmap = Bitmap.new($game_map.width * 32, $game_map.height * 32)
- for i in 0...($game_map.width * $game_map.height)
- x = i % $game_map.width
- y = i / $game_map.width
- for level in 0...3
- tile_id = $game_map.data[x, y, level]
- if tile_id >= 384
- tileset_bitmap = RPG::Cache.tile($game_map.tileset_name, tile_id, 0)
- src_rect = Rect.new(0, 0, 32, 32)
- bitmap.blt(x * 32, y * 32, tileset_bitmap, src_rect)
- end
- if tile_id >= 48 and tile_id < 384
- id = tile_id / 48 - 1
- tileset_bitmap = RPG::Cache.autotile($game_map.autotile_names[id])
- src_rect = Rect.new(32, 64, 32, 32)
- bitmap.blt(x * 32, y * 32, tileset_bitmap, src_rect)
- end
- end
- end
- d_rect = Rect.new(0, 0, map_width, map_height)
- s_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
- map.bitmap.stretch_blt(d_rect, bitmap, s_rect)
- bitmap.clear
- bitmap.dispose
- end
- end
- #==============================================================================
- # ¡ Map_Event
- #------------------------------------------------------------------------------
- # @draw the events and hero position
- #==============================================================================
- class Map_Event < Map_Mini
- #--------------------------------------------------------------------------
- # œ initialize
- #--------------------------------------------------------------------------
- def initialize(corner = 4, windowskin = true)
- super(corner, windowskin)
- @dots = []
- end
- #--------------------------------------------------------------------------
- # œ refresh_dots
- #--------------------------------------------------------------------------
- def refresh_event_dots
- for event in $game_map.events.values
- bitmap = nil
- x = event.x * map_width / $game_map.width
- y = event.y * map_height / $game_map.height
- next if event.list == nil
- for i in 0...event.list.size
- if event.list[i].parameters[0].is_a?(String)
- if event.list[i].parameters[0] == "event"
- bitmap = RPG::Cache.picture(event.list[i].parameters[0])
- break
- elsif event.list[i].parameters[0] == "enemy"
- bitmap = RPG::Cache.picture(event.list[i].parameters[0])
- break
- elsif event.list[i].parameters[0].include?("teleport")
- bitmap = RPG::Cache.picture("teleport")
- break
- elsif event.list[i].parameters[0] == "chest"
- bitmap = RPG::Cache.picture(event.list[i].parameters[0])
- break
- elsif event.list[i].parameters[0] == "npc"
- bitmap = RPG::Cache.picture(event.list[i].parameters[0])
- break
- elsif event.list[i].parameters[0] == "savepoint"
- bitmap = RPG::Cache.picture(event.list[i].parameters[0])
- break
- else
- bitmap = nil
- end
- end
- end
- @dots.push([x, y, bitmap])
- end
- end
- #--------------------------------------------------------------------------
- # œ refresh_dots
- #--------------------------------------------------------------------------
- def refresh_player_dot
- x = $game_player.x * map_width / $game_map.width
- y = $game_player.y * map_height / $game_map.height
- bitmap = RPG::Cache.picture("Gold")
- @dots.push([x, y, bitmap])
- end
- #--------------------------------------------------------------------------
- # œ update
- #--------------------------------------------------------------------------
- def update
- super
- @dots.clear
- event.bitmap.clear
- refresh_event_dots unless no_event_display?
- refresh_player_dot unless no_display?
- for dot in @dots
- unless dot[2] == nil
- event.bitmap.blt(dot[0], dot[1], dot[2], Rect.new(0, 0, 4, 4))
- end
- end
- event.src_rect.set(display_x, display_y, width - 16, height - 16)
- end
- end
- #==============================================================================
- # ¡ Map_Full
- #==============================================================================
- class Map_Full
- #--------------------------------------------------------------------------
- # œ Initialize
- #--------------------------------------------------------------------------
- def initialize
- @dots = []
- @teleport_sprites = []
- if $game_map.width > $game_map.height
- @map_width = 640
- @map_height = $game_map.height * @map_width / $game_map.width
- if @map_height > 480
- @map_height = 480
- end
- else
- @map_height = 480
- @map_width = $game_map.width * @map_height / $game_map.height
- if @map_width > 640
- @map_width = 640
- end
- end
- @map = Sprite.new
- @event = Sprite.new
- @map.bitmap = Bitmap.new(width, height)
- @event.bitmap = Bitmap.new(width, height)
- @map.x = @event.x = 320 - width / 2
- @map.y = @event.y = 240 - height / 2
- draw_map unless no_map_display?
- draw_event_dots unless no_event_display?
- draw_player_dot unless no_display?
- if no_display?
- @message = Window_Base.new(0, 208, 640, 64)
- message = "the map is not available"
- @message.contents = Bitmap.new(608, 32)
- @message.contents.font.name = "Arial"
- @message.contents.font.size = 32
- @message.contents.font.color.set(255, 255, 255, 100)
- @message.contents.draw_text(-1, -1, 608, 32, message, 1)
- @message.contents.draw_text(-1, 1, 608, 32, message, 1)
- @message.contents.draw_text(1, -1, 608, 32, message, 1)
- @message.contents.draw_text(1, 1, 608, 32, message, 1)
- @message.contents.font.color.set(255, 255, 255, 50)
- @message.contents.draw_text(-2, -2, 608, 32, message, 1)
- @message.contents.draw_text(-2, 2, 608, 32, message, 1)
- @message.contents.draw_text(2, -2, 608, 32, message, 1)
- @message.contents.draw_text(2, 2, 608, 32, message, 1)
- @message.contents.font.color.set(255, 255, 255)
- @message.contents.draw_text(0, 0, 608, 32, message, 1)
- @message.windowskin = nil
- end
- end
- #--------------------------------------------------------------------------
- # œ display_map?
- #--------------------------------------------------------------------------
- def no_map_display?
- for event in $game_map.events.values
- if event.name.include?("[full]")
- return false
- end
- if event.name.include?("[no map]")
- return true
- end
- end
- return false
- end
- #--------------------------------------------------------------------------
- # œ display_map?
- #--------------------------------------------------------------------------
- def no_event_display?
- for event in $game_map.events.values
- if event.name.include?("[full]")
- return false
- end
- if event.name.include?("[no event]")
- return true
- end
- end
- return false
- end
- #--------------------------------------------------------------------------
- # œ display_map?
- #--------------------------------------------------------------------------
- def no_display?
- for event in $game_map.events.values
- if event.name.include?("[full]")
- return false
- end
- if event.name.include?("[no map]") and event.name.include?("[no event]")
- return true
- end
- end
- return false
- end
- #--------------------------------------------------------------------------
- # œ dispose
- #--------------------------------------------------------------------------
- def dispose
- for sprite in @teleport_sprites
- sprite.dispose
- end
- @message.dispose if no_display?
- @map.bitmap.dispose
- @map.dispose
- @event.bitmap.dispose
- @event.dispose
- end
- #--------------------------------------------------------------------------
- # œ width
- #--------------------------------------------------------------------------
- def width
- return @map_width
- end
- #--------------------------------------------------------------------------
- # œ opacity=
- #--------------------------------------------------------------------------
- def height
- return @map_height
- end
- #--------------------------------------------------------------------------
- # œ draw_map
- #--------------------------------------------------------------------------
- def draw_map
- bitmap = Bitmap.new($game_map.width * 32, $game_map.height * 32)
- for i in 0...($game_map.width * $game_map.height)
- x = i % $game_map.width
- y = i / $game_map.width
- for level in 0...3
- tile_id = $game_map.data[x, y, level]
- if tile_id >= 384
- tileset_bitmap = RPG::Cache.tile($game_map.tileset_name, tile_id, 0)
- src_rect = Rect.new(0, 0, 32, 32)
- bitmap.blt(x * 32, y * 32, tileset_bitmap, src_rect)
- end
- if tile_id >= 48 and tile_id < 384
- id = tile_id / 48 - 1
- tileset_bitmap = RPG::Cache.autotile($game_map.autotile_names[id])
- src_rect = Rect.new(32, 64, 32, 32)
- bitmap.blt(x * 32, y * 32, tileset_bitmap, src_rect)
- end
- end
- end
- d_rect = Rect.new(0, 0, width, height)
- s_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
- @map.bitmap.stretch_blt(d_rect, bitmap, s_rect)
- bitmap.clear
- bitmap.dispose
- end
- #--------------------------------------------------------------------------
- # œ refresh_dots
- #--------------------------------------------------------------------------
- def draw_event_dots
- for event in $game_map.events.values
- bitmap = nil
- x = event.x * width / $game_map.width
- y = event.y * height / $game_map.height
- next if event.list == nil
- for i in 0...event.list.size
- if event.list[i].parameters[0].is_a?(String)
- if event.list[i].parameters[0] == "event"
- bitmap = RPG::Cache.picture(event.list[i].parameters[0])
- break
- elsif event.list[i].parameters[0] == "enemy"
- bitmap = RPG::Cache.picture(event.list[i].parameters[0])
- break
- elsif event.list[i].parameters[0].include?("teleport")
- bitmap = RPG::Cache.picture("teleport")
- name = event.list[i].parameters[0].dup
- name.slice!("teleport, ")
- @teleport_sprites.push(new_name_sprite(name, x, y))
- break
- elsif event.list[i].parameters[0] == "chest"
- bitmap = RPG::Cache.picture(event.list[i].parameters[0])
- break
- elsif event.list[i].parameters[0] == "npc"
- bitmap = RPG::Cache.picture(event.list[i].parameters[0])
- break
- elsif event.list[i].parameters[0] == "savepoint"
- bitmap = RPG::Cache.picture(event.list[i].parameters[0])
- break
- else
- bitmap = nil
- end
- end
- end
- @dots.push([x, y, bitmap])
- end
- for dot in @dots
- unless dot[2] == nil
- @event.bitmap.blt(dot[0], dot[1], dot[2], Rect.new(0, 0, 4, 4))
- end
- end
- end
- #--------------------------------------------------------------------------
- # œ new_name_sprite
- #--------------------------------------------------------------------------
- def new_name_sprite(name, x, y)
- sprite = Sprite.new
- sprite.y = y + 240 - height / 2
- x + 128 > 640 ? sprite.x = 512 : sprite.x = x + 320 - width / 2
- bitmap = Bitmap.new(128, 32)
- bitmap.font.name, bitmap.font.size = "Arial", 20
- bitmap.font.color.set(255, 255, 255)
- bitmap.draw_text(0, 0, 128, 32, name)
- sprite.bitmap = bitmap
- return sprite
- end
- #--------------------------------------------------------------------------
- # œ refresh_dots
- #--------------------------------------------------------------------------
- def draw_player_dot
- x = $game_player.x * width / $game_map.width
- y = $game_player.y * height / $game_map.height
- bitmap = RPG::Cache.picture("Gold")
- @event.bitmap.blt(x, y, bitmap, Rect.new(0, 0, 4, 4))
- end
- end
- #==============================================================================
- # ¡ Scene_MiniMap
- #------------------------------------------------------------------------------
- # @draw the map full screen
- #==============================================================================
- class Scene_MiniMap
- #--------------------------------------------------------------------------
- # œ main
- #--------------------------------------------------------------------------
- def main
- @map = Map_Full.new
- Graphics.transition
- loop do
- Graphics.update
- Input.update
- update
- if $scene != self
- break
- end
- end
- Graphics.freeze
- @map.dispose
- end
- #--------------------------------------------------------------------------
- # œ Update the contents of all five windows on the main menu
- #--------------------------------------------------------------------------
- def update
- if Input.trigger?(Input::B) | Input.trigger?(Input::CTRL)
- $game_system.se_play($data_system.cancel_se)
- $scene = Scene_Map.new
- return
- end
- end
- end
- #==============================================================================
- # ¡ Scene_Map
- #==============================================================================
- class Scene_Map
- alias main_minimap main
- alias update_minimap update
- alias transfer_minimap transfer_player
- #--------------------------------------------------------------------------
- # œ initialize
- #--------------------------------------------------------------------------
- def initialize
- @corner = 4 # 1 or 2 or 3 or 4
- @use_windowskin = true # true or false
- end
- #--------------------------------------------------------------------------
- # œ main
- #--------------------------------------------------------------------------
- def main
- @event_map = Map_Event.new(@corner, @use_windowskin)
- main_minimap
- @event_map.dispose
- end
- #--------------------------------------------------------------------------
- # œ update
- #--------------------------------------------------------------------------
- def update
- @event_map.update
- if $game_switches[PIE::Enable_HUD] == false or $game_switches[PIE::Enable_MAPHUD] == false
- @event_map.visible = false
- else
- @event_map.visible = true
- end
- if Input.trigger?(Input::CTRL)
- $game_system.se_play($data_system.decision_se)
- $scene = Scene_MiniMap.new
- return
- end
- update_minimap
- end
- #--------------------------------------------------------------------------
- # œ transfer_player
- #--------------------------------------------------------------------------
- def transfer_player
- transfer_minimap
- @event_map.dispose
- @event_map = Map_Event.new(@corner, @use_windowskin)
- end
- end
- =end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement