Fix for tiles being invisible after a map transfer if they were on screen before it

This commit is contained in:
Maruno17
2022-06-04 16:06:00 +01:00
parent 2c65a9de7d
commit d383d69cf4
4 changed files with 16 additions and 9 deletions

View File

@@ -23,7 +23,7 @@ class Scene_Map
@spritesets[map.map_id] = Spriteset_Map.new(map) @spritesets[map.map_id] = Spriteset_Map.new(map)
end end
$map_factory.setSceneStarted(self) $map_factory.setSceneStarted(self)
updateSpritesets updateSpritesets(true)
end end
def createSingleSpriteset(map) def createSingleSpriteset(map)
@@ -31,7 +31,7 @@ class Scene_Map
@spritesets[map] = Spriteset_Map.new($map_factory.maps[map]) @spritesets[map] = Spriteset_Map.new($map_factory.maps[map])
$scene.spriteset.restoreAnimations(temp) $scene.spriteset.restoreAnimations(temp)
$map_factory.setSceneStarted(self) $map_factory.setSceneStarted(self)
updateSpritesets updateSpritesets(true)
end end
def disposeSpritesets def disposeSpritesets
@@ -133,7 +133,7 @@ class Scene_Map
$map_factory.updateMaps(self) $map_factory.updateMaps(self)
end end
def updateSpritesets def updateSpritesets(refresh = false)
@spritesets = {} if !@spritesets @spritesets = {} if !@spritesets
$map_factory.maps.each do |map| $map_factory.maps.each do |map|
@spritesets[map.map_id] = Spriteset_Map.new(map) if !@spritesets[map.map_id] @spritesets[map.map_id] = Spriteset_Map.new(map) if !@spritesets[map.map_id]
@@ -150,6 +150,7 @@ class Scene_Map
end end
@spritesetGlobal.update @spritesetGlobal.update
pbDayNightTint(@map_renderer) pbDayNightTint(@map_renderer)
@map_renderer.refresh if refresh
@map_renderer.update @map_renderer.update
EventHandlers.trigger(:on_frame_update) EventHandlers.trigger(:on_frame_update)
end end

View File

@@ -292,6 +292,7 @@ class TilemapRenderer
@ox = 0 @ox = 0
@oy = 0 @oy = 0
@visible = true @visible = true
@need_refresh = true
@disposed = false @disposed = false
end end
@@ -347,7 +348,9 @@ class TilemapRenderer
#============================================================================= #=============================================================================
def refresh; end def refresh
@need_refresh = true
end
def refresh_tile_bitmap(tile, map, tile_id) def refresh_tile_bitmap(tile, map, tile_id)
tile.tile_id = tile_id tile.tile_id = tile_id
@@ -538,7 +541,7 @@ class TilemapRenderer
# Recalculate autotile frames # Recalculate autotile frames
@tilesets.update @tilesets.update
@autotiles.update @autotiles.update
do_full_refresh = false do_full_refresh = @need_refresh
if @viewport.ox != @old_viewport_ox || @viewport.oy != @old_viewport_oy if @viewport.ox != @old_viewport_ox || @viewport.oy != @old_viewport_oy
@old_viewport_ox = @viewport.ox @old_viewport_ox = @viewport.ox
@old_viewport_oy = @viewport.oy @old_viewport_oy = @viewport.oy
@@ -604,6 +607,7 @@ class TilemapRenderer
end end
end end
end end
@need_refresh = false
@autotiles.changed = false @autotiles.changed = false
end end
end end

View File

@@ -49,11 +49,11 @@ class Game_Temp
end end
def pbSceneStandby def pbSceneStandby
# $scene.disposeSpritesets if $scene.is_a?(Scene_Map) $scene.disposeSpritesets if $scene.is_a?(Scene_Map)
# RPG::Cache.clear RPG::Cache.clear
# Graphics.frame_reset Graphics.frame_reset
yield yield
# $scene.createSpritesets if $scene.is_a?(Scene_Map) $scene.createSpritesets if $scene.is_a?(Scene_Map)
end end
def pbBattleAnimation(bgm = nil, battletype = 0, foe = nil) def pbBattleAnimation(bgm = nil, battletype = 0, foe = nil)

View File

@@ -556,6 +556,7 @@ def pbLoadRpgxpScene(scene)
oldscene = $scene oldscene = $scene
$scene = scene $scene = scene
Graphics.freeze Graphics.freeze
oldscene.disposeSpritesets
visibleObjects = pbHideVisibleObjects visibleObjects = pbHideVisibleObjects
Graphics.transition Graphics.transition
Graphics.freeze Graphics.freeze
@@ -565,6 +566,7 @@ def pbLoadRpgxpScene(scene)
Graphics.transition Graphics.transition
Graphics.freeze Graphics.freeze
$scene = oldscene $scene = oldscene
$scene.createSpritesets
pbShowObjects(visibleObjects) pbShowObjects(visibleObjects)
Graphics.transition Graphics.transition
end end