From c58164ef971685fc08e9f5410a0f8c1c1f398449 Mon Sep 17 00:00:00 2001 From: Maruno17 Date: Sun, 11 Apr 2021 15:41:55 +0100 Subject: [PATCH] Permanently cached some graphics (player charsets, windowskins and related graphics) --- .../005_Sprites/003_Sprite_Character.rb | 1 + .../005_Sprites/005_Sprite_SurfBase.rb | 2 ++ .../001_BitmapCache.rb | 20 ++++++++++++++++--- .../004_SpriteWindow.rb | 3 +++ .../005_SpriteWindow_text.rb | 4 ++++ 5 files changed, 27 insertions(+), 3 deletions(-) diff --git a/Data/Scripts/005_Sprites/003_Sprite_Character.rb b/Data/Scripts/005_Sprites/003_Sprite_Character.rb index ca474e9e1..089a8f60f 100644 --- a/Data/Scripts/005_Sprites/003_Sprite_Character.rb +++ b/Data/Scripts/005_Sprites/003_Sprite_Character.rb @@ -122,6 +122,7 @@ class Sprite_Character < RPG::Sprite @charbitmap.dispose if @charbitmap @charbitmap = AnimatedBitmap.new( "Graphics/Characters/"+@character_name,@character_hue) + RPG::Cache.addRef("Graphics/Characters/", @character_name, @character_hue) if @character == $game_player @charbitmapAnimated = true @bushbitmap.dispose if @bushbitmap @bushbitmap = nil diff --git a/Data/Scripts/005_Sprites/005_Sprite_SurfBase.rb b/Data/Scripts/005_Sprites/005_Sprite_SurfBase.rb index d43080558..10c59c368 100644 --- a/Data/Scripts/005_Sprites/005_Sprite_SurfBase.rb +++ b/Data/Scripts/005_Sprites/005_Sprite_SurfBase.rb @@ -10,6 +10,8 @@ class Sprite_SurfBase @disposed = false @surfbitmap = AnimatedBitmap.new("Graphics/Characters/base_surf") @divebitmap = AnimatedBitmap.new("Graphics/Characters/base_dive") + RPG::Cache.addRef("Graphics/Characters/base_surf") + RPG::Cache.addRef("Graphics/Characters/base_dive") @cws = @surfbitmap.width/4 @chs = @surfbitmap.height/4 @cwd = @divebitmap.width/4 diff --git a/Data/Scripts/007_Objects and windows/001_BitmapCache.rb b/Data/Scripts/007_Objects and windows/001_BitmapCache.rb index 362ee5003..f42040fca 100644 --- a/Data/Scripts/007_Objects and windows/001_BitmapCache.rb +++ b/Data/Scripts/007_Objects and windows/001_BitmapCache.rb @@ -36,10 +36,10 @@ module RPG cached = true ret = fromCache(path) if !ret - if filename != "" - ret = BitmapWrapper.new(path) - else + if filename == "" ret = BitmapWrapper.new(32, 32) + else + ret = BitmapWrapper.new(path) end @cache[path] = ret cached = false @@ -85,6 +85,20 @@ module RPG def self.transition(filename) self.load_bitmap("Graphics/Transitions/", filename) end + + def self.addRef(folder_name, filename = "", hue = 0) + path = folder_name + filename + ret = fromCache(path) + if hue > 0 + key = [path, hue] + ret2 = fromCache(key) + if ret2 + ret2.addRef + return + end + end + ret.addRef if ret + end end end diff --git a/Data/Scripts/007_Objects and windows/004_SpriteWindow.rb b/Data/Scripts/007_Objects and windows/004_SpriteWindow.rb index a0febcb78..549cd0683 100644 --- a/Data/Scripts/007_Objects and windows/004_SpriteWindow.rb +++ b/Data/Scripts/007_Objects and windows/004_SpriteWindow.rb @@ -837,6 +837,7 @@ class SpriteWindow_Base < SpriteWindow @curframe=MessageConfig.pbGetSystemFrame() @curfont=MessageConfig.pbGetSystemFontName() @sysframe=AnimatedBitmap.new(@curframe) + RPG::Cache.addRef(@curframe) if @curframe && !@curframe.empty? @customskin=nil __setWindowskin(@sysframe.bitmap) __resolveSystemFrame() @@ -869,6 +870,7 @@ class SpriteWindow_Base < SpriteWindow resolvedName=pbResolveBitmap(skin) return if !resolvedName || resolvedName=="" @customskin=AnimatedBitmap.new(resolvedName) + RPG::Cache.addRef(resolvedName) __setWindowskin(@customskin.bitmap) if self.skinformat==1 skinbase=resolvedName.sub(/\.[^\.\/\\]+$/,"") @@ -903,6 +905,7 @@ class SpriteWindow_Base < SpriteWindow if @sysframe && !@customskin @sysframe.dispose if @sysframe @sysframe=AnimatedBitmap.new(@curframe) + RPG::Cache.addRef(@curframe) if @curframe && !@curframe.empty? @resolvedFrame=nil __setWindowskin(@sysframe.bitmap) __resolveSystemFrame() diff --git a/Data/Scripts/007_Objects and windows/005_SpriteWindow_text.rb b/Data/Scripts/007_Objects and windows/005_SpriteWindow_text.rb index 0f42f56ab..cb0fc12cb 100644 --- a/Data/Scripts/007_Objects and windows/005_SpriteWindow_text.rb +++ b/Data/Scripts/007_Objects and windows/005_SpriteWindow_text.rb @@ -964,6 +964,8 @@ module UpDownArrowMixin def initUpDownArrow @uparrow = AnimatedSprite.create("Graphics/Pictures/uparrow",8,2,self.viewport) @downarrow = AnimatedSprite.create("Graphics/Pictures/downarrow",8,2,self.viewport) + RPG::Cache.addRef("Graphics/Pictures/uparrow") + RPG::Cache.addRef("Graphics/Pictures/downarrow") @uparrow.z = 99998 @downarrow.z = 99998 @uparrow.visible = false @@ -1046,8 +1048,10 @@ class Window_DrawableCommand < SpriteWindow_SelectableEx self.viewport = viewport if viewport if isDarkWindowskin(self.windowskin) @selarrow = AnimatedBitmap.new("Graphics/Pictures/selarrow_white") + RPG::Cache.addRef("Graphics/Pictures/selarrow_white") else @selarrow = AnimatedBitmap.new("Graphics/Pictures/selarrow") + RPG::Cache.addRef("Graphics/Pictures/selarrow") end @index = 0 colors = getDefaultTextColors(self.windowskin)