# ¤¢¤ XRXSv12. Ds-In1. ƒNƒŠƒA[HP/MP ¤¢¤ # # publish 2010/ 3/ 9 # update - 11/ 1/10a # #============================================================================== # ƒJƒXƒ^ƒ}ƒCƒYƒ|ƒCƒ“ƒg #============================================================================== module XRXSVDsIn NumberL = "NumberL" NumberS = "NumberS" end #============================================================================== # --- XRXSV : draw_number(x, y, width, height, number, align, skin[, opacity]) #============================================================================== class Bitmap def draw_number(x, y, width, height, number, align, skin, opacity = 224) number_digits = [] n = number loop do number_digits.push(n % 10) n /= 10 break if n == 0 end number_width = skin.rect.width / 10 number_height = skin.rect.height case align when 0 n = number_digits.size * number_width when 1 n = (width - number_digits.size * number_width) / 2 when 2 n = width end draw_end_x = x + n ny = y + (height - number_height) / 2 # •`‰æŠJŽn skin_rect = Rect.new(0, 0, number_width, number_height) for i in 0...number_digits.size n = number_digits[i] nx = draw_end_x - number_width * (i + 1) skin_rect.x = n * number_width self.blt(nx, ny, skin, skin_rect, opacity) end end end #============================================================================== # ƒfƒUƒCƒ“Eƒvƒ‰ƒOƒCƒ“ #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # Å‘åHP/MPŒ…” #-------------------------------------------------------------------------- def get_maxhpmp_digit(actor) hp_digit = Math.log10(actor.maxhp).to_i + 1 mp_digit = Math.log10(actor.maxmp).to_i + 1 return [hp_digit, mp_digit].max end #-------------------------------------------------------------------------- # œ HP ‚Ì•`‰æ #-------------------------------------------------------------------------- def draw_actor_hp(actor, x, y, width = 120) draw_actor_hp_gauge(actor, x, y, width) original_font_size = self.contents.font.size self.contents.font.size = 16 self.contents.font.color = system_color self.contents.draw_text(x, y, 30, WLH, Vocab::hp_a) self.contents.font.size = original_font_size xr = x + width number_skin1 = Cache.system(XRXSVDsIn::NumberL) number_skin2 = Cache.system(XRXSVDsIn::NumberS) w1 = number_skin1.width / 10 w2 = number_skin2.width / 10 h = WLH - 5 ox = 0 if width < 64 # elsif width < 120 self.contents.draw_number(xr - 40, y, 40, h, actor.hp, 2, number_skin1) else n = self.get_maxhpmp_digit(actor) * w2 ox += n self.contents.draw_number(xr - ox, y, n, h, actor.maxhp, 2, number_skin2) n = 10 ox += n self.contents.font.color = normal_color self.contents.draw_text(xr - ox, y, n, WLH, "/", 2) self.contents.draw_number(xr - ox, y, 0, h, actor.hp, 2, number_skin1) end end #-------------------------------------------------------------------------- # œ MP ‚Ì•`‰æ #-------------------------------------------------------------------------- def draw_actor_mp(actor, x, y, width = 120) draw_actor_mp_gauge(actor, x, y, width) original_font_size = self.contents.font.size self.contents.font.size = 16 self.contents.font.color = system_color self.contents.draw_text(x, y, 30, WLH, Vocab::mp_a) self.contents.font.size = original_font_size xr = x + width number_skin1 = Cache.system(XRXSVDsIn::NumberL) number_skin2 = Cache.system(XRXSVDsIn::NumberS) w1 = number_skin1.width / 10 w2 = number_skin2.width / 10 h = WLH - 5 ox = 0 if width < 120 self.contents.draw_number(xr - 40, y, 40, h, actor.mp, 2, number_skin1) else n = self.get_maxhpmp_digit(actor) * w2 ox += n self.contents.draw_number(xr - ox, y, n, h, actor.maxmp, 2, number_skin2) n = 10 ox += n self.contents.font.color = normal_color self.contents.draw_text(xr - ox, y, n, WLH, "/", 2) self.contents.draw_number(xr - ox, y, 0, h, actor.mp, 2, number_skin1) end end end