Removed redundant "\r" from various messages, removed usages of BitmapWrapper, fixed Lure Ball error in battles started in the Debug menu, improved Terrain Tag editor, fixed some Compiler errors, enabled vsync, fixed event graphics frozen to the screen when using $game_player.moveto directly.

This commit is contained in:
Maruno17
2023-05-04 21:28:00 +01:00
parent 5f20121e59
commit 48fb8dae73
44 changed files with 362 additions and 398 deletions

View File

@@ -68,9 +68,9 @@ class Sprite_Character < RPG::Sprite
@oldbushdepth = 0
@spriteoffset = false
if !character || character == $game_player || (character.name[/reflection/i] rescue false)
@reflection = Sprite_Reflection.new(self, character, viewport)
@reflection = Sprite_Reflection.new(self, viewport)
end
@surfbase = Sprite_SurfBase.new(self, character, viewport) if character == $game_player
@surfbase = Sprite_SurfBase.new(self, viewport) if character == $game_player
self.zoom_x = TilemapRenderer::ZOOM_X
self.zoom_y = TilemapRenderer::ZOOM_Y
update
@@ -94,51 +94,55 @@ class Sprite_Character < RPG::Sprite
@reflection = nil
@surfbase&.dispose
@surfbase = nil
@character = nil
super
end
def refresh_graphic
return if @tile_id == @character.tile_id &&
@character_name == @character.character_name &&
@character_hue == @character.character_hue &&
@oldbushdepth == @character.bush_depth
@tile_id = @character.tile_id
@character_name = @character.character_name
@character_hue = @character.character_hue
@oldbushdepth = @character.bush_depth
@charbitmap&.dispose
@charbitmap = nil
@bushbitmap&.dispose
@bushbitmap = nil
if @tile_id >= 384
@charbitmap = pbGetTileBitmap(@character.map.tileset_name, @tile_id,
@character_hue, @character.width, @character.height)
@charbitmapAnimated = false
@spriteoffset = false
@cw = Game_Map::TILE_WIDTH * @character.width
@ch = Game_Map::TILE_HEIGHT * @character.height
self.src_rect.set(0, 0, @cw, @ch)
self.ox = @cw / 2
self.oy = @ch
elsif @character_name != ""
@charbitmap = AnimatedBitmap.new(
"Graphics/Characters/" + @character_name, @character_hue
)
RPG::Cache.retain("Graphics/Characters/", @character_name, @character_hue) if @character == $game_player
@charbitmapAnimated = true
@spriteoffset = @character_name[/offset/i]
@cw = @charbitmap.width / 4
@ch = @charbitmap.height / 4
self.ox = @cw / 2
else
self.bitmap = nil
@cw = 0
@ch = 0
end
@character.sprite_size = [@cw, @ch]
end
def update
return if @character.is_a?(Game_Event) && !@character.should_update?
super
if @tile_id != @character.tile_id ||
@character_name != @character.character_name ||
@character_hue != @character.character_hue ||
@oldbushdepth != @character.bush_depth
@tile_id = @character.tile_id
@character_name = @character.character_name
@character_hue = @character.character_hue
@oldbushdepth = @character.bush_depth
@charbitmap&.dispose
@charbitmap = nil
@bushbitmap&.dispose
@bushbitmap = nil
if @tile_id >= 384
@charbitmap = pbGetTileBitmap(@character.map.tileset_name, @tile_id,
@character_hue, @character.width, @character.height)
@charbitmapAnimated = false
@spriteoffset = false
@cw = Game_Map::TILE_WIDTH * @character.width
@ch = Game_Map::TILE_HEIGHT * @character.height
self.src_rect.set(0, 0, @cw, @ch)
self.ox = @cw / 2
self.oy = @ch
elsif @character_name != ""
@charbitmap = AnimatedBitmap.new(
"Graphics/Characters/" + @character_name, @character_hue
)
RPG::Cache.retain("Graphics/Characters/", @character_name, @character_hue) if @character == $game_player
@charbitmapAnimated = true
@spriteoffset = @character_name[/offset/i]
@cw = @charbitmap.width / 4
@ch = @charbitmap.height / 4
self.ox = @cw / 2
else
self.bitmap = nil
@cw = 0
@ch = 0
end
@character.sprite_size = [@cw, @ch]
end
refresh_graphic
return if !@charbitmap
@charbitmap.update if @charbitmapAnimated
bushdepth = @character.bush_depth

View File

@@ -1,14 +1,13 @@
class Sprite_Reflection
attr_reader :visible
attr_accessor :event
def initialize(sprite, event, viewport = nil)
@rsprite = sprite
@sprite = nil
@event = event
@height = 0
def initialize(parent_sprite, viewport = nil)
@parent_sprite = parent_sprite
@sprite = nil
@height = 0
@fixedheight = false
if @event && @event != $game_player && @event.name[/reflection\((\d+)\)/i]
if @parent_sprite.character && @parent_sprite.character != $game_player &&
@parent_sprite.character.name[/reflection\((\d+)\)/i]
@height = $~[1].to_i || 0
@fixedheight = true
end
@@ -18,15 +17,19 @@ class Sprite_Reflection
end
def dispose
if !@disposed
@sprite&.dispose
@sprite = nil
@disposed = true
end
return if @disposed
@sprite&.dispose
@sprite = nil
@parent_sprite = nil
@disposed = true
end
def disposed?
@disposed
return @disposed
end
def event
return @parent_sprite.character
end
def visible=(value)
@@ -36,7 +39,7 @@ class Sprite_Reflection
def update
return if disposed?
shouldShow = @rsprite.visible
shouldShow = @parent_sprite.visible
if !shouldShow
# Just-in-time disposal of sprite
if @sprite
@@ -48,38 +51,38 @@ class Sprite_Reflection
# Just-in-time creation of sprite
@sprite = Sprite.new(@viewport) if !@sprite
if @sprite
x = @rsprite.x - (@rsprite.ox * TilemapRenderer::ZOOM_X)
y = @rsprite.y - (@rsprite.oy * TilemapRenderer::ZOOM_Y)
y -= Game_Map::TILE_HEIGHT * TilemapRenderer::ZOOM_Y if @rsprite.character.character_name[/offset/i]
x = @parent_sprite.x - (@parent_sprite.ox * TilemapRenderer::ZOOM_X)
y = @parent_sprite.y - (@parent_sprite.oy * TilemapRenderer::ZOOM_Y)
y -= Game_Map::TILE_HEIGHT * TilemapRenderer::ZOOM_Y if event.character_name[/offset/i]
@height = $PokemonGlobal.bridge if !@fixedheight
y += @height * TilemapRenderer::ZOOM_Y * Game_Map::TILE_HEIGHT / 2
width = @rsprite.src_rect.width
height = @rsprite.src_rect.height
width = @parent_sprite.src_rect.width
height = @parent_sprite.src_rect.height
@sprite.x = x + ((width / 2) * TilemapRenderer::ZOOM_X)
@sprite.y = y + ((height + (height / 2)) * TilemapRenderer::ZOOM_Y)
@sprite.ox = width / 2
@sprite.oy = (height / 2) - 2 # Hard-coded 2 pixel shift up
@sprite.oy -= @rsprite.character.bob_height * 2
@sprite.oy -= event.bob_height * 2
@sprite.z = -50 # Still water is -100, map is 0 and above
@sprite.z += 1 if @event == $game_player
@sprite.zoom_x = @rsprite.zoom_x
@sprite.zoom_y = @rsprite.zoom_y
@sprite.z += 1 if event == $game_player
@sprite.zoom_x = @parent_sprite.zoom_x
@sprite.zoom_y = @parent_sprite.zoom_y
frame = (Graphics.frame_count % 40) / 10
@sprite.zoom_x *= [1.0, 0.95, 1.0, 1.05][frame]
@sprite.angle = 180.0
@sprite.mirror = true
@sprite.bitmap = @rsprite.bitmap
@sprite.tone = @rsprite.tone
@sprite.bitmap = @parent_sprite.bitmap
@sprite.tone = @parent_sprite.tone
if @height > 0
@sprite.color = Color.new(48, 96, 160, 255) # Dark still water
@sprite.opacity = @rsprite.opacity
@sprite.opacity = @parent_sprite.opacity
@sprite.visible = !Settings::TIME_SHADING # Can't time-tone a colored sprite
else
@sprite.color = Color.new(224, 224, 224, 96)
@sprite.opacity = @rsprite.opacity * 3 / 4
@sprite.opacity = @parent_sprite.opacity * 3 / 4
@sprite.visible = true
end
@sprite.src_rect = @rsprite.src_rect
@sprite.src_rect = @parent_sprite.src_rect
end
end
end

View File

@@ -1,11 +1,9 @@
class Sprite_SurfBase
attr_reader :visible
attr_accessor :event
def initialize(sprite, event, viewport = nil)
@rsprite = sprite
@sprite = nil
@event = event
def initialize(parent_sprite, viewport = nil)
@parent_sprite = parent_sprite
@sprite = nil
@viewport = viewport
@disposed = false
@surfbitmap = AnimatedBitmap.new("Graphics/Characters/base_surf")
@@ -23,13 +21,18 @@ class Sprite_SurfBase
return if @disposed
@sprite&.dispose
@sprite = nil
@parent_sprite = nil
@surfbitmap.dispose
@divebitmap.dispose
@disposed = true
end
def disposed?
@disposed
return @disposed
end
def event
return @parent_sprite.character
end
def visible=(value)
@@ -49,41 +52,40 @@ class Sprite_SurfBase
end
# Just-in-time creation of sprite
@sprite = Sprite.new(@viewport) if !@sprite
if @sprite
if $PokemonGlobal.surfing
@sprite.bitmap = @surfbitmap.bitmap
cw = @cws
ch = @chs
elsif $PokemonGlobal.diving
@sprite.bitmap = @divebitmap.bitmap
cw = @cwd
ch = @chd
end
sx = @event.pattern_surf * cw
sy = ((@event.direction - 2) / 2) * ch
@sprite.src_rect.set(sx, sy, cw, ch)
if $game_temp.surf_base_coords
spr_x = ((($game_temp.surf_base_coords[0] * Game_Map::REAL_RES_X) - @event.map.display_x).to_f / Game_Map::X_SUBPIXELS).round
spr_x += (Game_Map::TILE_WIDTH / 2)
spr_x = ((spr_x - (Graphics.width / 2)) * TilemapRenderer::ZOOM_X) + (Graphics.width / 2) if TilemapRenderer::ZOOM_X != 1
@sprite.x = spr_x
spr_y = ((($game_temp.surf_base_coords[1] * Game_Map::REAL_RES_Y) - @event.map.display_y).to_f / Game_Map::Y_SUBPIXELS).round
spr_y += (Game_Map::TILE_HEIGHT / 2) + 16
spr_y = ((spr_y - (Graphics.height / 2)) * TilemapRenderer::ZOOM_Y) + (Graphics.height / 2) if TilemapRenderer::ZOOM_Y != 1
@sprite.y = spr_y
else
@sprite.x = @rsprite.x
@sprite.y = @rsprite.y
end
@sprite.ox = cw / 2
@sprite.oy = ch - 16 # Assume base needs offsetting
@sprite.oy -= @event.bob_height
@sprite.z = @event.screen_z(ch) - 1
@sprite.zoom_x = @rsprite.zoom_x
@sprite.zoom_y = @rsprite.zoom_y
@sprite.tone = @rsprite.tone
@sprite.color = @rsprite.color
@sprite.opacity = @rsprite.opacity
return if !@sprite
if $PokemonGlobal.surfing
@sprite.bitmap = @surfbitmap.bitmap
cw = @cws
ch = @chs
elsif $PokemonGlobal.diving
@sprite.bitmap = @divebitmap.bitmap
cw = @cwd
ch = @chd
end
sx = event.pattern_surf * cw
sy = ((event.direction - 2) / 2) * ch
@sprite.src_rect.set(sx, sy, cw, ch)
if $game_temp.surf_base_coords
spr_x = ((($game_temp.surf_base_coords[0] * Game_Map::REAL_RES_X) - event.map.display_x).to_f / Game_Map::X_SUBPIXELS).round
spr_x += (Game_Map::TILE_WIDTH / 2)
spr_x = ((spr_x - (Graphics.width / 2)) * TilemapRenderer::ZOOM_X) + (Graphics.width / 2) if TilemapRenderer::ZOOM_X != 1
@sprite.x = spr_x
spr_y = ((($game_temp.surf_base_coords[1] * Game_Map::REAL_RES_Y) - event.map.display_y).to_f / Game_Map::Y_SUBPIXELS).round
spr_y += (Game_Map::TILE_HEIGHT / 2) + 16
spr_y = ((spr_y - (Graphics.height / 2)) * TilemapRenderer::ZOOM_Y) + (Graphics.height / 2) if TilemapRenderer::ZOOM_Y != 1
@sprite.y = spr_y
else
@sprite.x = @parent_sprite.x
@sprite.y = @parent_sprite.y
end
@sprite.ox = cw / 2
@sprite.oy = ch - 16 # Assume base needs offsetting
@sprite.oy -= event.bob_height
@sprite.z = event.screen_z(ch) - 1
@sprite.zoom_x = @parent_sprite.zoom_x
@sprite.zoom_y = @parent_sprite.zoom_y
@sprite.tone = @parent_sprite.tone
@sprite.color = @parent_sprite.color
@sprite.opacity = @parent_sprite.opacity
end
end