Script for displaying variables in RGSS

Tue, 29 Jan 2008 04:28:56 +0000 - Author: Peter O.

This is a script for displaying variables and other kinds of text in RGSS. The following functions are defined:

  • showVarDisplay(num,x,y) - Creates a new VariableDisplay numbered _num_ and which is positioned on the coordinates _x_ and _y_.
  • updateVarDisplays - Updates all VariableDisplays. To be called on Spriteset_Map's update function.
  • hideVarDisplay(num) - Closes the VariableDisplay numbered _num_.
  • setVarDisplayUpdate(num,method,param) - Sets the method for updating the VariableDisplay. The optional _param_ is passed to that method.
  • getVarDisplay(num) - Gets the VariableDisplay numbered _num_.
  • VariableDisplay has these changeable properties:
  • x,y,z,opacity,visible - Work like Sprite's properties
  • fontface, fontsize, textcolor - Font, size, and color of the text
  • picture - File name of background graphic
  • varnumber - Variable's ID number
  • update - Updates the display.
class VariableDisplay
###############################
 # Default font face.
 DEFAULTFONT="Arial"
 # Default text size.
 DEFAULTSIZE=22
 # Default text color.
 DEFAULTCOLOR=Color.new(255,255,255)
 # Picture filename.  Must be in Graphics/Pictures.
 DEFAULTPICTURE="mapback.png"
 # Default Z order.
 DEFAULTZ=100
 # Default placement.
 DEFAULTPLACEMENT=1
###############################
 attr_reader :x,:y,:picture,:fontface
 attr_reader :fontsize,:textcolor,:z,:opacity,:visible
 def initialize(x,y,picture=nil)
  @z=DEFAULTZ
  @sprite=Sprite.new(nil)
  @sprite.z=@z
  @sprite2=Sprite.new(nil)
  @sprite2.z=@z
  @picture=nil
  @picturename=picture ? picture : DEFAULTPICTURE
  @bitmap=nil
  @x=x
  @y=y
  @changeBitmap=true
  @fontface=DEFAULTFONT
  @fontsize=DEFAULTSIZE
  @textcolor=DEFAULTCOLOR
  @gettingtext=false
  @opacity=255
  @visible=true
  @method=nil
  @params=nil
  privRefresh
 end
 def setUpdateMethod(value,params)
  @method=Kernel.method(value.to_sym)
  begin
   @params=params.clone
  rescue TypeError
   @params=params
  end
  @changeBitmap=true
  privRefresh
 end
 def dispose
  @picture.dispose if @picture
  @bitmap.dispose if @bitmap
  @sprite.dispose
  @sprite2.dispose
 end
 def z=(value)
  @z=value
  privRefresh
 end
 def fontsize=(value)
  @fontsize=value
  @changeBitmap=true
  privRefresh
 end
 def fontface=(value)
  @fontface=value
  @changeBitmap=true
  privRefresh
 end
 def picture=(value)
  @picture=value
  @changeBitmap=true
  privRefresh
 end
 def textcolor=(value)
  @textcolor=value
  @changeBitmap=true
  privRefresh
 end
 def x=(value)
  @x=value
  privRefresh
 end
 def y=(value)
  @y=value
  privRefresh
 end
 def z=(value)
  @z=value
  privRefresh
 end
 def opacity=(value)
  @opacity=value
  privRefresh
 end
 def visible=(value)
  @visible=value
  privRefresh
 end
 def update
  privRefresh
 end
 private
 def privRefresh
  if @changeBitmap
   @picture.dispose if @picture
   @picture=RPG::Cache.picture(@picturename)
   @bitmap.dispose if @bitmap
   @bitmap=Bitmap.new(@picture.width,@picture.height)
   @bitmap.font.name=[@fontface,"Arial","Times New Roman"]
   @bitmap.font.size=@fontsize
   @bitmap.font.color=@textcolor
   @sprite.bitmap=@picture
   @sprite2.bitmap=@bitmap
   @changeBitmap=false
  end
  return if @gettingtext
  @bitmap.clear
  if @method
   @gettingtext=true
   text=@method.call(self,@params)
   @gettingtext=false
   @bitmap.draw_text(0,0,@bitmap.width,@bitmap.height,text,1)
  end
  @sprite.x=@x
  @sprite.y=@y
  @sprite.z=@z
  @sprite.opacity=@opacity
  @sprite.visible=@visible
  @sprite2.x=@x
  @sprite2.y=@y
  @sprite2.z=@z
  @sprite2.opacity=@opacity
  @sprite2.visible=@visible
 end
end

################

class Game_Temp
 attr_accessor :vardisplays
end

def showVarDisplay(num,x,y)
 if !$game_temp.vardisplays
  $game_temp.vardisplays=[]
 end
 display=VariableDisplay.new(x,y)
 $game_temp.vardisplays[num]=display
 return display
end
def getVarDisplay(num)
 return nil if !$game_temp.vardisplays
 return $game_temp.vardisplays[num]
end
def hideVarDisplay(num)
 display=getVarDisplay(num)
 if display
  display.dispose
  $game_temp.vardisplays[num]=nil
 end
end
def setVarDisplayUpdate(num,meth,params=nil)
 display=getVarDisplay(num)
 if display
  display.setUpdateMethod(meth,params)
 end
end
def updateVarDisplays
 return if !$game_temp.vardisplays
 for display in $game_temp.vardisplays
  display.update if display
 end
end

def getVariable(display,param)
 return $game_variables[param]
end


class Spriteset_Map
  alias petero_vardisplays_Spriteset_Map_update update
  def update
    updateVarDisplays
    petero_vardisplays_Spriteset_Map_update
  end
end


Discussion

Other Formats