Initial import
This commit is contained in:
274
Scripts/RPG/Spriteset_Map.rb
Normal file
274
Scripts/RPG/Spriteset_Map.rb
Normal file
@@ -0,0 +1,274 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#==============================================================================
|
||||
# ** Spriteset_Map
|
||||
#------------------------------------------------------------------------------
|
||||
# This class brings together map screen sprites, tilemaps, etc. It's used
|
||||
# within the Scene_Map class.
|
||||
#==============================================================================
|
||||
|
||||
class Spriteset_Map
|
||||
#--------------------------------------------------------------------------
|
||||
# * Object Initialization
|
||||
#--------------------------------------------------------------------------
|
||||
def initialize
|
||||
create_viewports
|
||||
create_tilemap
|
||||
create_parallax
|
||||
create_characters
|
||||
create_shadow
|
||||
create_weather
|
||||
create_pictures
|
||||
create_timer
|
||||
update
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Create Viewport
|
||||
#--------------------------------------------------------------------------
|
||||
def create_viewports
|
||||
@viewport1 = Viewport.new
|
||||
@viewport2 = Viewport.new
|
||||
@viewport3 = Viewport.new
|
||||
@viewport2.z = 50
|
||||
@viewport3.z = 100
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Create Tilemap
|
||||
#--------------------------------------------------------------------------
|
||||
def create_tilemap
|
||||
@tilemap = Tilemap.new(@viewport1)
|
||||
@tilemap.map_data = $game_map.data
|
||||
load_tileset
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Load Tileset
|
||||
#--------------------------------------------------------------------------
|
||||
def load_tileset
|
||||
@tileset = $game_map.tileset
|
||||
@tileset.tileset_names.each_with_index do |name, i|
|
||||
@tilemap.bitmaps[i] = Cache.tileset(name)
|
||||
end
|
||||
@tilemap.flags = @tileset.flags
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Create Parallax
|
||||
#--------------------------------------------------------------------------
|
||||
def create_parallax
|
||||
@parallax = Plane.new(@viewport1)
|
||||
@parallax.z = -100
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Create Character Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def create_characters
|
||||
@character_sprites = []
|
||||
$game_map.events.values.each do |event|
|
||||
@character_sprites.push(Sprite_Character.new(@viewport1, event))
|
||||
end
|
||||
$game_map.vehicles.each do |vehicle|
|
||||
@character_sprites.push(Sprite_Character.new(@viewport1, vehicle))
|
||||
end
|
||||
$game_player.followers.reverse_each do |follower|
|
||||
@character_sprites.push(Sprite_Character.new(@viewport1, follower))
|
||||
end
|
||||
@character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
|
||||
@map_id = $game_map.map_id
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Create Airship Shadow Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def create_shadow
|
||||
@shadow_sprite = Sprite.new(@viewport1)
|
||||
@shadow_sprite.bitmap = Cache.system("Shadow")
|
||||
@shadow_sprite.ox = @shadow_sprite.bitmap.width / 2
|
||||
@shadow_sprite.oy = @shadow_sprite.bitmap.height
|
||||
@shadow_sprite.z = 180
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Create Weather
|
||||
#--------------------------------------------------------------------------
|
||||
def create_weather
|
||||
@weather = Spriteset_Weather.new(@viewport2)
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Create Picture Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def create_pictures
|
||||
@picture_sprites = []
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Create Timer Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def create_timer
|
||||
@timer_sprite = Sprite_Timer.new(@viewport2)
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Free
|
||||
#--------------------------------------------------------------------------
|
||||
def dispose
|
||||
dispose_tilemap
|
||||
dispose_parallax
|
||||
dispose_characters
|
||||
dispose_shadow
|
||||
dispose_weather
|
||||
dispose_pictures
|
||||
dispose_timer
|
||||
dispose_viewports
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Free Tilemap
|
||||
#--------------------------------------------------------------------------
|
||||
def dispose_tilemap
|
||||
@tilemap.dispose
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Free Parallax
|
||||
#--------------------------------------------------------------------------
|
||||
def dispose_parallax
|
||||
@parallax.bitmap.dispose if @parallax.bitmap
|
||||
@parallax.dispose
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Free Character Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def dispose_characters
|
||||
@character_sprites.each {|sprite| sprite.dispose }
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Free Airship Shadow Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def dispose_shadow
|
||||
@shadow_sprite.dispose
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Free Weather
|
||||
#--------------------------------------------------------------------------
|
||||
def dispose_weather
|
||||
@weather.dispose
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Free Picture Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def dispose_pictures
|
||||
@picture_sprites.compact.each {|sprite| sprite.dispose }
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Free Timer Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def dispose_timer
|
||||
@timer_sprite.dispose
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Free Viewport
|
||||
#--------------------------------------------------------------------------
|
||||
def dispose_viewports
|
||||
@viewport1.dispose
|
||||
@viewport2.dispose
|
||||
@viewport3.dispose
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Refresh Characters
|
||||
#--------------------------------------------------------------------------
|
||||
def refresh_characters
|
||||
dispose_characters
|
||||
create_characters
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Frame Update
|
||||
#--------------------------------------------------------------------------
|
||||
def update
|
||||
update_tileset
|
||||
update_tilemap
|
||||
update_parallax
|
||||
update_characters
|
||||
update_shadow
|
||||
update_weather
|
||||
update_pictures
|
||||
update_timer
|
||||
update_viewports
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Update Tileset
|
||||
#--------------------------------------------------------------------------
|
||||
def update_tileset
|
||||
if @tileset != $game_map.tileset
|
||||
load_tileset
|
||||
refresh_characters
|
||||
end
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Update Tilemap
|
||||
#--------------------------------------------------------------------------
|
||||
def update_tilemap
|
||||
@tilemap.map_data = $game_map.data
|
||||
@tilemap.ox = $game_map.display_x * 32
|
||||
@tilemap.oy = $game_map.display_y * 32
|
||||
@tilemap.update
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Update Parallax
|
||||
#--------------------------------------------------------------------------
|
||||
def update_parallax
|
||||
if @parallax_name != $game_map.parallax_name
|
||||
@parallax_name = $game_map.parallax_name
|
||||
@parallax.bitmap.dispose if @parallax.bitmap
|
||||
@parallax.bitmap = Cache.parallax(@parallax_name)
|
||||
Graphics.frame_reset
|
||||
end
|
||||
@parallax.ox = $game_map.parallax_ox(@parallax.bitmap)
|
||||
@parallax.oy = $game_map.parallax_oy(@parallax.bitmap)
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Update Character Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def update_characters
|
||||
refresh_characters if @map_id != $game_map.map_id
|
||||
@character_sprites.each {|sprite| sprite.update }
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Update Airship Shadow Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def update_shadow
|
||||
airship = $game_map.airship
|
||||
@shadow_sprite.x = airship.screen_x
|
||||
@shadow_sprite.y = airship.screen_y + airship.altitude
|
||||
@shadow_sprite.opacity = airship.altitude * 8
|
||||
@shadow_sprite.update
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Update Weather
|
||||
#--------------------------------------------------------------------------
|
||||
def update_weather
|
||||
@weather.type = $game_map.screen.weather_type
|
||||
@weather.power = $game_map.screen.weather_power
|
||||
@weather.ox = $game_map.display_x * 32
|
||||
@weather.oy = $game_map.display_y * 32
|
||||
@weather.update
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# *Update Picture Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def update_pictures
|
||||
$game_map.screen.pictures.each do |pic|
|
||||
@picture_sprites[pic.number] ||= Sprite_Picture.new(@viewport2, pic)
|
||||
@picture_sprites[pic.number].update
|
||||
end
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Update Timer Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def update_timer
|
||||
@timer_sprite.update
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Update Viewport
|
||||
#--------------------------------------------------------------------------
|
||||
def update_viewports
|
||||
@viewport1.tone.set($game_map.screen.tone)
|
||||
@viewport1.ox = $game_map.screen.shake
|
||||
@viewport2.color.set($game_map.screen.flash_color)
|
||||
@viewport3.color.set(0, 0, 0, 255 - $game_map.screen.brightness)
|
||||
@viewport1.update
|
||||
@viewport2.update
|
||||
@viewport3.update
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user