#============================================================================== # ¡á Spriteset_Map #------------------------------------------------------------------------------ # ¡¡«Þ«Ã«×?ØüªÎ«¹«×«é«¤«Èªä«¿«¤«ë«Þ«Ã«×ªÊªÉªòªÞªÈªáª¿«¯«é«¹ªÇª¹¡£ª³ªÎ«¯«é«¹ªÏ # Scene_Map «¯«é«¹ªÎ?Ý»ªÇÞÅéĪµªìªÞª¹¡£ #============================================================================== class Spriteset_Map #-------------------------------------------------------------------------- # ¡Ü «ª«Ö«¸«§«¯«ÈôøÑ¢ûù #-------------------------------------------------------------------------- def initialize create_viewports create_tilemap create_parallax create_characters create_shadow create_weather create_pictures create_timer update end #-------------------------------------------------------------------------- # ¡Ü «Ó«å?«Ý?«ÈªÎíÂà÷ #-------------------------------------------------------------------------- def create_viewports @viewport1 = Viewport.new @viewport2 = Viewport.new @viewport3 = Viewport.new @viewport2.z = 50 @viewport3.z = 100 end #-------------------------------------------------------------------------- # ¡Ü «¿«¤«ë«Þ«Ã«×ªÎíÂà÷ #-------------------------------------------------------------------------- def create_tilemap @tilemap = Tilemap.new(@viewport1) @tilemap.map_data = $game_map.data load_tileset end #-------------------------------------------------------------------------- # ¡Ü «¿«¤«ë«»«Ã«ÈªÎ«í?«É #-------------------------------------------------------------------------- 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 #-------------------------------------------------------------------------- # ¡Ü êÀÌتÎíÂà÷ #-------------------------------------------------------------------------- def create_parallax @parallax = Plane.new(@viewport1) @parallax.z = -100 end #-------------------------------------------------------------------------- # ¡Ü «­«ã«é«¯«¿?«¹«×«é«¤«ÈªÎíÂà÷ #-------------------------------------------------------------------------- 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 #-------------------------------------------------------------------------- # ¡Ü Þ«ú¼àϪÎ篫¹«×«é«¤«ÈªÎíÂà÷ #-------------------------------------------------------------------------- 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 #-------------------------------------------------------------------------- # ¡Ü ô¸ý¦ªÎíÂà÷ #-------------------------------------------------------------------------- def create_weather @weather = Spriteset_Weather.new(@viewport2) end #-------------------------------------------------------------------------- # ¡Ü «Ô«¯«Á«ã«¹«×«é«¤«ÈªÎíÂà÷ #-------------------------------------------------------------------------- def create_pictures @picture_sprites = [] end #-------------------------------------------------------------------------- # ¡Ü «¿«¤«Þ?«¹«×«é«¤«ÈªÎíÂà÷ #-------------------------------------------------------------------------- def create_timer @timer_sprite = Sprite_Timer.new(@viewport2) end #-------------------------------------------------------------------------- # ¡Ü ú°Û¯ #-------------------------------------------------------------------------- def dispose dispose_tilemap dispose_parallax dispose_characters dispose_shadow dispose_weather dispose_pictures dispose_timer dispose_viewports end #-------------------------------------------------------------------------- # ¡Ü «¿«¤«ë«Þ«Ã«×ªÎú°Û¯ #-------------------------------------------------------------------------- def dispose_tilemap @tilemap.dispose end #-------------------------------------------------------------------------- # ¡Ü êÀÌتÎú°Û¯ #-------------------------------------------------------------------------- def dispose_parallax @parallax.bitmap.dispose if @parallax.bitmap @parallax.dispose end #-------------------------------------------------------------------------- # ¡Ü «­«ã«é«¯«¿?«¹«×«é«¤«ÈªÎú°Û¯ #-------------------------------------------------------------------------- def dispose_characters @character_sprites.each {|sprite| sprite.dispose } end #-------------------------------------------------------------------------- # ¡Ü Þ«ú¼àϪÎ篫¹«×«é«¤«ÈªÎú°Û¯ #-------------------------------------------------------------------------- def dispose_shadow @shadow_sprite.dispose end #-------------------------------------------------------------------------- # ¡Ü ô¸ý¦ªÎú°Û¯ #-------------------------------------------------------------------------- def dispose_weather @weather.dispose end #-------------------------------------------------------------------------- # ¡Ü «Ô«¯«Á«ã«¹«×«é«¤«ÈªÎú°Û¯ #-------------------------------------------------------------------------- def dispose_pictures @picture_sprites.compact.each {|sprite| sprite.dispose } end #-------------------------------------------------------------------------- # ¡Ü «¿«¤«Þ?«¹«×«é«¤«ÈªÎú°Û¯ #-------------------------------------------------------------------------- def dispose_timer @timer_sprite.dispose end #-------------------------------------------------------------------------- # ¡Ü «Ó«å?«Ý?«ÈªÎú°Û¯ #-------------------------------------------------------------------------- def dispose_viewports @viewport1.dispose @viewport2.dispose @viewport3.dispose end #-------------------------------------------------------------------------- # ¡Ü «­«ã«é«¯«¿?ªÎ«ê«Õ«ì«Ã«·«å #-------------------------------------------------------------------------- def refresh_characters dispose_characters create_characters end #-------------------------------------------------------------------------- # ¡Ü «Õ«ì?«àÌÚãæ #-------------------------------------------------------------------------- def update update_tileset update_tilemap update_parallax update_characters update_shadow update_weather update_pictures update_timer update_viewports end #-------------------------------------------------------------------------- # ¡Ü «¿«¤«ë«»«Ã«ÈªÎÌÚãæ #-------------------------------------------------------------------------- def update_tileset if @tileset != $game_map.tileset load_tileset refresh_characters end end #-------------------------------------------------------------------------- # ¡Ü «¿«¤«ë«Þ«Ã«×ªÎÌÚãæ #-------------------------------------------------------------------------- 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 #-------------------------------------------------------------------------- # ¡Ü êÀÌتÎÌÚãæ #-------------------------------------------------------------------------- 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 #-------------------------------------------------------------------------- # ¡Ü «­«ã«é«¯«¿?«¹«×«é«¤«ÈªÎÌÚãæ #-------------------------------------------------------------------------- def update_characters refresh_characters if @map_id != $game_map.map_id @character_sprites.each {|sprite| sprite.update } end #-------------------------------------------------------------------------- # ¡Ü Þ«ú¼àϪÎ篫¹«×«é«¤«ÈªÎÌÚãæ #-------------------------------------------------------------------------- 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 #-------------------------------------------------------------------------- # ¡Ü ô¸ý¦ªÎÌÚãæ #-------------------------------------------------------------------------- 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 #-------------------------------------------------------------------------- # ¡Ü «Ô«¯«Á«ã«¹«×«é«¤«ÈªÎÌÚãæ #-------------------------------------------------------------------------- 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 #-------------------------------------------------------------------------- # ¡Ü «¿«¤«Þ?«¹«×«é«¤«ÈªÎÌÚãæ #-------------------------------------------------------------------------- def update_timer @timer_sprite.update end #-------------------------------------------------------------------------- # ¡Ü «Ó«å?«Ý?«ÈªÎÌÚãæ #-------------------------------------------------------------------------- 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