Initial import
This commit is contained in:
390
Scripts/RPG/Spriteset_Battle.rb
Normal file
390
Scripts/RPG/Spriteset_Battle.rb
Normal file
@@ -0,0 +1,390 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#==============================================================================
|
||||
# ** Spriteset_Battle
|
||||
#------------------------------------------------------------------------------
|
||||
# This class brings together battle screen sprites. It's used within the
|
||||
# Scene_Battle class.
|
||||
#==============================================================================
|
||||
|
||||
class Spriteset_Battle
|
||||
#--------------------------------------------------------------------------
|
||||
# * Object Initialization
|
||||
#--------------------------------------------------------------------------
|
||||
def initialize
|
||||
create_viewports
|
||||
create_battleback1
|
||||
create_battleback2
|
||||
create_enemies
|
||||
create_actors
|
||||
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 Battle Background (Floor) Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def create_battleback1
|
||||
@back1_sprite = Sprite.new(@viewport1)
|
||||
@back1_sprite.bitmap = battleback1_bitmap
|
||||
@back1_sprite.z = 0
|
||||
center_sprite(@back1_sprite)
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Create Battle Background (Wall) Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def create_battleback2
|
||||
@back2_sprite = Sprite.new(@viewport1)
|
||||
@back2_sprite.bitmap = battleback2_bitmap
|
||||
@back2_sprite.z = 1
|
||||
center_sprite(@back2_sprite)
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Battle Background (Floor) Bitmap
|
||||
#--------------------------------------------------------------------------
|
||||
def battleback1_bitmap
|
||||
if battleback1_name
|
||||
Cache.battleback1(battleback1_name)
|
||||
else
|
||||
create_blurry_background_bitmap
|
||||
end
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Battle Background (Wall) Bitmap
|
||||
#--------------------------------------------------------------------------
|
||||
def battleback2_bitmap
|
||||
if battleback2_name
|
||||
Cache.battleback2(battleback2_name)
|
||||
else
|
||||
Bitmap.new(1, 1)
|
||||
end
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Create Battle Background Bitmap from Processed Map Screen
|
||||
#--------------------------------------------------------------------------
|
||||
def create_blurry_background_bitmap
|
||||
source = SceneManager.background_bitmap
|
||||
bitmap = Bitmap.new(640, 480)
|
||||
bitmap.stretch_blt(bitmap.rect, source, source.rect)
|
||||
bitmap.radial_blur(120, 16)
|
||||
bitmap
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Filename of Battle Background (Floor)
|
||||
#--------------------------------------------------------------------------
|
||||
def battleback1_name
|
||||
if $BTEST
|
||||
$data_system.battleback1_name
|
||||
elsif $game_map.battleback1_name
|
||||
$game_map.battleback1_name
|
||||
elsif $game_map.overworld?
|
||||
overworld_battleback1_name
|
||||
end
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Filename of Battle Background (Wall)
|
||||
#--------------------------------------------------------------------------
|
||||
def battleback2_name
|
||||
if $BTEST
|
||||
$data_system.battleback2_name
|
||||
elsif $game_map.battleback2_name
|
||||
$game_map.battleback2_name
|
||||
elsif $game_map.overworld?
|
||||
overworld_battleback2_name
|
||||
end
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Filename of Field Battle Background (Floor)
|
||||
#--------------------------------------------------------------------------
|
||||
def overworld_battleback1_name
|
||||
$game_player.vehicle ? ship_battleback1_name : normal_battleback1_name
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Filename of Field Battle Background (Wall)
|
||||
#--------------------------------------------------------------------------
|
||||
def overworld_battleback2_name
|
||||
$game_player.vehicle ? ship_battleback2_name : normal_battleback2_name
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Filename of Normal Battle Background (Floor)
|
||||
#--------------------------------------------------------------------------
|
||||
def normal_battleback1_name
|
||||
terrain_battleback1_name(autotile_type(1)) ||
|
||||
terrain_battleback1_name(autotile_type(0)) ||
|
||||
default_battleback1_name
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Filename of Normal Battle Background (Wall)
|
||||
#--------------------------------------------------------------------------
|
||||
def normal_battleback2_name
|
||||
terrain_battleback2_name(autotile_type(1)) ||
|
||||
terrain_battleback2_name(autotile_type(0)) ||
|
||||
default_battleback2_name
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Filename of Battle Background (Floor) Corresponding to Terrain
|
||||
#--------------------------------------------------------------------------
|
||||
def terrain_battleback1_name(type)
|
||||
case type
|
||||
when 24,25 # Wasteland
|
||||
"Wasteland"
|
||||
when 26,27 # Dirt field
|
||||
"DirtField"
|
||||
when 32,33 # Desert
|
||||
"Desert"
|
||||
when 34 # Rocks
|
||||
"Lava1"
|
||||
when 35 # Rocks (lava)
|
||||
"Lava2"
|
||||
when 40,41 # Snowfield
|
||||
"Snowfield"
|
||||
when 42 # Clouds
|
||||
"Clouds"
|
||||
when 4,5 # Poisonous swamp
|
||||
"PoisonSwamp"
|
||||
end
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Filename of Battle Background (Wall) Corresponding to Terrain
|
||||
#--------------------------------------------------------------------------
|
||||
def terrain_battleback2_name(type)
|
||||
case type
|
||||
when 20,21 # Forest
|
||||
"Forest1"
|
||||
when 22,30,38 # Low hill
|
||||
"Cliff"
|
||||
when 24,25,26,27 # Wasteland, dirt field
|
||||
"Wasteland"
|
||||
when 32,33 # Desert
|
||||
"Desert"
|
||||
when 34,35 # Rocks
|
||||
"Lava"
|
||||
when 40,41 # Snowfield
|
||||
"Snowfield"
|
||||
when 42 # Clouds
|
||||
"Clouds"
|
||||
when 4,5 # Poisonous swamp
|
||||
"PoisonSwamp"
|
||||
end
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Filename of Default Battle Background (Floor)
|
||||
#--------------------------------------------------------------------------
|
||||
def default_battleback1_name
|
||||
"Grassland"
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Filename of Default Battle Background (Wall)
|
||||
#--------------------------------------------------------------------------
|
||||
def default_battleback2_name
|
||||
"Grassland"
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Filename of Battle Background (Floor) When on Ship
|
||||
#--------------------------------------------------------------------------
|
||||
def ship_battleback1_name
|
||||
"Ship"
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Filename of Battle Background (Wall) When on Ship
|
||||
#--------------------------------------------------------------------------
|
||||
def ship_battleback2_name
|
||||
"Ship"
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Type of Auto Tile at Player's Feet
|
||||
#--------------------------------------------------------------------------
|
||||
def autotile_type(z)
|
||||
$game_map.autotile_type($game_player.x, $game_player.y, z)
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Move Sprite to Screen Center
|
||||
#--------------------------------------------------------------------------
|
||||
def center_sprite(sprite)
|
||||
sprite.ox = sprite.bitmap.width / 2
|
||||
sprite.oy = sprite.bitmap.height / 2
|
||||
sprite.x = Graphics.width / 2
|
||||
sprite.y = Graphics.height / 2
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Create Enemy Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def create_enemies
|
||||
@enemy_sprites = $game_troop.members.reverse.collect do |enemy|
|
||||
Sprite_Battler.new(@viewport1, enemy)
|
||||
end
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Create Actor Sprite
|
||||
# By default, the actor image is not displayed, but for convenience
|
||||
# a dummy sprite is created for treating enemies and allies the same.
|
||||
#--------------------------------------------------------------------------
|
||||
def create_actors
|
||||
@actor_sprites = Array.new(4) { Sprite_Battler.new(@viewport1) }
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Create Picture Sprite
|
||||
# Create an empty array in the initial state and then add to it as
|
||||
# necessary.
|
||||
#--------------------------------------------------------------------------
|
||||
def create_pictures
|
||||
@picture_sprites = []
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Create Timer Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def create_timer
|
||||
@timer_sprite = Sprite_Timer.new(@viewport2)
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Free
|
||||
#--------------------------------------------------------------------------
|
||||
def dispose
|
||||
dispose_battleback1
|
||||
dispose_battleback2
|
||||
dispose_enemies
|
||||
dispose_actors
|
||||
dispose_pictures
|
||||
dispose_timer
|
||||
dispose_viewports
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Free Battle Background (Floor) Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def dispose_battleback1
|
||||
@back1_sprite.bitmap.dispose
|
||||
@back1_sprite.dispose
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Free Battle Background (Wall) Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def dispose_battleback2
|
||||
@back2_sprite.bitmap.dispose
|
||||
@back2_sprite.dispose
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Free Enemy Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def dispose_enemies
|
||||
@enemy_sprites.each {|sprite| sprite.dispose }
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Free Actor Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def dispose_actors
|
||||
@actor_sprites.each {|sprite| sprite.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
|
||||
#--------------------------------------------------------------------------
|
||||
# * Frame Update
|
||||
#--------------------------------------------------------------------------
|
||||
def update
|
||||
update_battleback1
|
||||
update_battleback2
|
||||
update_enemies
|
||||
update_actors
|
||||
update_pictures
|
||||
update_timer
|
||||
update_viewports
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Update Battle Background (Floor) Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def update_battleback1
|
||||
@back1_sprite.update
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Update Battle Background (Wall) Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def update_battleback2
|
||||
@back2_sprite.update
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Update Enemy Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def update_enemies
|
||||
@enemy_sprites.each {|sprite| sprite.update }
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Update Actor Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def update_actors
|
||||
@actor_sprites.each_with_index do |sprite, i|
|
||||
sprite.battler = $game_party.members[i]
|
||||
sprite.update
|
||||
end
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# *Update Picture Sprite
|
||||
#--------------------------------------------------------------------------
|
||||
def update_pictures
|
||||
$game_troop.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_troop.screen.tone)
|
||||
@viewport1.ox = $game_troop.screen.shake
|
||||
@viewport2.color.set($game_troop.screen.flash_color)
|
||||
@viewport3.color.set(0, 0, 0, 255 - $game_troop.screen.brightness)
|
||||
@viewport1.update
|
||||
@viewport2.update
|
||||
@viewport3.update
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Enemy and Actor Sprites
|
||||
#--------------------------------------------------------------------------
|
||||
def battler_sprites
|
||||
@enemy_sprites + @actor_sprites
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Determine if Animation is Being Displayed
|
||||
#--------------------------------------------------------------------------
|
||||
def animation?
|
||||
battler_sprites.any? {|sprite| sprite.animation? }
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Determine if Effect Is Executing
|
||||
#--------------------------------------------------------------------------
|
||||
def effect?
|
||||
battler_sprites.any? {|sprite| sprite.effect? }
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user