forked from suppayami/rmvxa-collection
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Face Cache.rb
140 lines (118 loc) · 5.17 KB
/
Face Cache.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#==============================================================================
#
# ¥ Yami Engine Symphony - Face Cache
# -- Last Updated: 2012.12.10
# -- Level: Nothing
# -- Requires: n/a
#
#==============================================================================
$imported = {} if $imported.nil?
$imported["YES-FaceCache"] = true
#==============================================================================
# ¥ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2012.12.10 - Fixed: F12 problem.
# 2012.11.14 - Started and Finished Script.
#
#==============================================================================
# ¥ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script provides a Faces-cache for default Window_Base, which enhances
# a little performance for Windows.
#
#==============================================================================
# ¥ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ¥ Materials/‘fÞ but above ¥ Main. Remember to save.
#
#==============================================================================
# ¥ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.
# This script will not work with a custom draw face method.
#
#==============================================================================
#==============================================================================
# ¥ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================
#==============================================================================
# ¡ Module Yami Engine Symphony
#==============================================================================
module YES
#--------------------------------------------------------------------------
# self.clear_face_cache
#--------------------------------------------------------------------------
def self.clear_face_cache
Cache.clear_face
end
end # YES
#==============================================================================
# ¡ Cache
#==============================================================================
module Cache
#--------------------------------------------------------------------------
# new method: storage_face
#--------------------------------------------------------------------------
def self.storage_face(bitmap, name)
@face_cache ||= {}
@face_cache[name] = bitmap unless @face_cache.has_key?(name)
@face_cache[name]
end
#--------------------------------------------------------------------------
# new method: restore_face
#--------------------------------------------------------------------------
def self.restore_face(name)
return false if @face_cache.nil? || !@face_cache.has_key?(name)
@face_cache[name]
end
#--------------------------------------------------------------------------
# new method: clear_face
#--------------------------------------------------------------------------
def self.clear_face
@face_cache ||= {}
@face_cache.each_value { |b| b.dispose unless b.disposed? }
@face_cache.clear
end
end # Cache
#==============================================================================
# ¡ Window_Base
#==============================================================================
module DataManager
#--------------------------------------------------------------------------
# alias method: init
#--------------------------------------------------------------------------
class <<self; alias yes_face_cache_init init; end
def self.init
Cache.clear_face
yes_face_cache_init
end
end # DataManager
#==============================================================================
# ¡ Window_Base
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# overwrite method: draw_face
#--------------------------------------------------------------------------
def draw_face(face_name, face_index, x, y, enabled = true)
cache = Cache.restore_face(face_name + face_index.to_s)
if !cache
cache = Bitmap.new(96, 96)
bitmap = Cache.face(face_name)
rect = Rect.new(face_index % 4 * 96, face_index / 4 * 96, 96, 96)
cache.blt(0, 0, bitmap, rect)
Cache.storage_face(cache, face_name + face_index.to_s)
bitmap.dispose
end
contents.blt(x, y, cache, Rect.new(0, 0, 96, 96), enabled ? 255 : translucent_alpha)
end
end # Window_Base
#==============================================================================
#
# ¥ End of File
#
#==============================================================================