Initial import
This commit is contained in:
135
Scripts/RPG/Cache.rb
Normal file
135
Scripts/RPG/Cache.rb
Normal file
@@ -0,0 +1,135 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#==============================================================================
|
||||
# ** Cache
|
||||
#------------------------------------------------------------------------------
|
||||
# This module loads graphics, creates bitmap objects, and retains them.
|
||||
# To speed up load times and conserve memory, this module holds the
|
||||
# created bitmap object in the internal hash, allowing the program to
|
||||
# return preexisting objects when the same bitmap is requested again.
|
||||
#==============================================================================
|
||||
|
||||
module Cache
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Animation Graphic
|
||||
#--------------------------------------------------------------------------
|
||||
def self.animation(filename, hue)
|
||||
load_bitmap("Graphics/Animations/", filename, hue)
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Battle Background (Floor) Graphic
|
||||
#--------------------------------------------------------------------------
|
||||
def self.battleback1(filename)
|
||||
load_bitmap("Graphics/Battlebacks1/", filename)
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Battle Background (Wall) Graphic
|
||||
#--------------------------------------------------------------------------
|
||||
def self.battleback2(filename)
|
||||
load_bitmap("Graphics/Battlebacks2/", filename)
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Battle Graphic
|
||||
#--------------------------------------------------------------------------
|
||||
def self.battler(filename, hue)
|
||||
load_bitmap("Graphics/Battlers/", filename, hue)
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Character Graphic
|
||||
#--------------------------------------------------------------------------
|
||||
def self.character(filename)
|
||||
load_bitmap("Graphics/Characters/", filename)
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Face Graphic
|
||||
#--------------------------------------------------------------------------
|
||||
def self.face(filename)
|
||||
load_bitmap("Graphics/Faces/", filename)
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Parallax Background Graphic
|
||||
#--------------------------------------------------------------------------
|
||||
def self.parallax(filename)
|
||||
load_bitmap("Graphics/Parallaxes/", filename)
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Picture Graphic
|
||||
#--------------------------------------------------------------------------
|
||||
def self.picture(filename)
|
||||
load_bitmap("Graphics/Pictures/", filename)
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get System Graphic
|
||||
#--------------------------------------------------------------------------
|
||||
def self.system(filename)
|
||||
load_bitmap("Graphics/System/", filename)
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Tileset Graphic
|
||||
#--------------------------------------------------------------------------
|
||||
def self.tileset(filename)
|
||||
load_bitmap("Graphics/Tilesets/", filename)
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Title (Background) Graphic
|
||||
#--------------------------------------------------------------------------
|
||||
def self.title1(filename)
|
||||
load_bitmap("Graphics/Titles1/", filename)
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Get Title (Frame) Graphic
|
||||
#--------------------------------------------------------------------------
|
||||
def self.title2(filename)
|
||||
load_bitmap("Graphics/Titles2/", filename)
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Load Bitmap
|
||||
#--------------------------------------------------------------------------
|
||||
def self.load_bitmap(folder_name, filename, hue = 0)
|
||||
@cache ||= {}
|
||||
if filename.empty?
|
||||
empty_bitmap
|
||||
elsif hue == 0
|
||||
normal_bitmap(folder_name + filename)
|
||||
else
|
||||
hue_changed_bitmap(folder_name + filename, hue)
|
||||
end
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Create Empty Bitmap
|
||||
#--------------------------------------------------------------------------
|
||||
def self.empty_bitmap
|
||||
Bitmap.new(32, 32)
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Create/Get Normal Bitmap
|
||||
#--------------------------------------------------------------------------
|
||||
def self.normal_bitmap(path)
|
||||
@cache[path] = Bitmap.new(path) unless include?(path)
|
||||
@cache[path]
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Create/Get Hue-Changed Bitmap
|
||||
#--------------------------------------------------------------------------
|
||||
def self.hue_changed_bitmap(path, hue)
|
||||
key = [path, hue]
|
||||
unless include?(key)
|
||||
@cache[key] = normal_bitmap(path).clone
|
||||
@cache[key].hue_change(hue)
|
||||
end
|
||||
@cache[key]
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Check Cache Existence
|
||||
#--------------------------------------------------------------------------
|
||||
def self.include?(key)
|
||||
@cache[key] && !@cache[key].disposed?
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Clear Cache
|
||||
#--------------------------------------------------------------------------
|
||||
def self.clear
|
||||
@cache ||= {}
|
||||
@cache.clear
|
||||
GC.start
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user