| Ancien membre du staff |
 |
 |
Inscrit le: 12 Aoû 2006, 00:00 Messages: 1064 Points d'aide: 5/60
Créations :
- [RMXP] Database Management
- [RMXP] GUI Widgets
- [RMXP] Advanced Input
Voir ses créations
|
2.2. GUI Widgets- Code: Tout sélectionner
#=============================================================================== # *** GUI Widgets #------------------------------------------------------------------------------- # Auteur : Åvygeil #------------------------------------------------------------------------------- # Un ensemble de classes de fenetres utilitaires pour réaliser des GUI. #===============================================================================
#=============================================================================== # ** Window_BooleanField #------------------------------------------------------------------------------- # Une fenetre qui permet de choisir un booléen. #=============================================================================== class Window_BooleanField < Window_Command #============================================================================= # * initialize # x : abscisse de la fenetre # y : ordonnée de la fenetre #============================================================================= def initialize(x, y) super(150, ["True", "False"]) self.x = x self.y = y self.visible = false self.active = false end #============================================================================= # * value #----------------------------------------------------------------------------- # Renvoie la valeur booléenne sélectionnée. #============================================================================= def value case self.index when 0 return true when 1 return false end end #============================================================================= # * value= # b : un booléen #----------------------------------------------------------------------------- # Met la valeur à b. #============================================================================= def value=(b) case b when true self.index = 0 when false self.index = 1 end end end
#=============================================================================== # ** Window_IntegerField #------------------------------------------------------------------------------- # Une fenetre qui permet d'entrer des nombres au clavier. #=============================================================================== class Window_IntegerField < Window_Base attr_accessor :active # Si la fenetre est active #============================================================================= # * initialize # x : abscisse de la fenetre # y : ordonnée de la fenetre # width : largeur de la fenetre #============================================================================= def initialize(x, y, width) super(x, y, width, 64) self.contents = Bitmap.new(width-32, height-32) self.contents.font.name = $fontface self.contents.font.size = $fontsize @text = "" @old_text = "" refresh self.visible = false self.active = false end #============================================================================= # * update #----------------------------------------------------------------------------- # Met à jour le contenu de la fenetre en fonction # de l'entrée du clavier. #============================================================================= def update super unless self.active return end if Input.trigger?(Keyboard::BACK) @text = @text[0...@text.size-1] || "" end @text << Keyboard.number if @old_text != @text refresh @old_text = String.new(@text) end end #============================================================================= # * value #----------------------------------------------------------------------------- # Renvoie la valeur entière de la fenetre. #============================================================================= def value return @text.to_i end #============================================================================= # * value= # i : un entier #----------------------------------------------------------------------------- # Met la valeur à i. #============================================================================= def value=(i) @text = i.to_s end #============================================================================= # * refresh #============================================================================= def refresh self.contents.clear self.contents.draw_text(4, 0, self.width-40, 32, @text, 0) end
end
#=============================================================================== # ** Window_TextField #------------------------------------------------------------------------------- # Une fenetre qui permet d'entrer du texte au clavier. #=============================================================================== class Window_TextField < Window_Base attr_accessor :active # Si la fenetre est active #============================================================================= # * initialize # x : abscisse de la fenetre # y : ordonnée de la fenetre # width : largeur de la fenetre #============================================================================= def initialize(x, y, width) super(x, y, width, 64) self.contents = Bitmap.new(width-32, height-32) self.contents.font.name = $fontface self.contents.font.size = $fontsize @text = "" @old_text = "" refresh self.visible = false self.active = false end #============================================================================= # * update #----------------------------------------------------------------------------- # Met à jour le contenu de la fenetre en fonction # de l'entrée du clavier. #============================================================================= def update super unless self.active return end if Input.trigger?(Keyboard::BACK) @text = @text[0...@text.size-1] || "" end @text << Keyboard.letter if @old_text != @text refresh @old_text = String.new(@text) end end #============================================================================= # * value #----------------------------------------------------------------------------- # Renvoie le texte de la fenetre. #============================================================================= def value return @text end #============================================================================= # * value= # s : un text #----------------------------------------------------------------------------- # Met le texte de la fenetre à s. #============================================================================= def value=(s) @text = s end #============================================================================= # * refresh #============================================================================= def refresh self.contents.clear self.contents.draw_text(4, 0, self.width-40, 32, @text, 0) end end
#=============================================================================== # ** Window_FileChooser #------------------------------------------------------------------------------- # Une fenetre qui permet de sélectionner un fichier dans un dossier. #=============================================================================== class Window_FileChooser < Window_Selectable #============================================================================= # * initialize # x : abscisse de la fenetre # y : ordonnée de la fenetre # width : largeur de la fenetre # dir : un répertoire #============================================================================= def initialize(x, y, width, dir) @files = Dir["#{dir}/*"].map { |file_name| File.basename(file_name) } @files << "" super(x, y, width, [@files.size * 32 + 32, 480].min) @item_max = @files.size self.contents = Bitmap.new(width - 32, @item_max * 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize refresh self.index = 0 self.visible = false self.active = false end #============================================================================= # * value #----------------------------------------------------------------------------- # Renvoie le nom du fichier sélectionné. #============================================================================= def value return @files[self.index] end #============================================================================= # * value= # s : un text #----------------------------------------------------------------------------- # Met l'indice au fichier de nom file_name. #============================================================================= def value=(file_name) index = @files.index(file_name) if index == nil self.index = 0 else self.index = index end end #============================================================================= # * refresh #============================================================================= def refresh self.contents.clear for i in 0...@item_max x = 4 y = 32 * i self.contents.draw_text(x, y, width - 32, 32, @files[i]) end end end
|
|