Code: |
class Editor def main Audio.bgm_play(Directory.editor_sounds+"Musique de fond") @titles = ["Editeur", "Editeur d'Objets", "Editeur de Pokémon", "Editeur d'Attaques", "Editeur de Capacités Spéciales", "Editeur de Natures", "Editeur de Jeu"] @commands = ["Liste des Objets", "Liste des Pokémon", "Liste des Attaques", "Liste des Capacités Spéciales", "Liste des Natures", "Configurations du Jeu", "Quitter"] @infos = ["Créer un nouvel objet ou éditer un objet existant.", "Créer un nouveau pokémon ou éditer un pokémon existant.", "Créer une nouvelle attaque ou éditer une attaque existante.", "Créer une nouvelle capacité spéciale ou éditer une capacité spéciale existante.", "Créer une nouvelle nature ou éditer une nature existante.", "Configurer les données générales du jeu.", "Quitter l'Editeur de données."] @items_list = [] $data_items.size-1.times do |i| @items_list.push(ItemData.name(i+1)) end @pokemon_list = [] $data_pokemon.size-1.times do |i| @pokemon_list.push(PokemonData.name(i+1)) end @skills_list = [] $data_skills.size-1.times do |i| @skills_list.push(SkillData.name(i+1)) end @abilitys_list = [] $data_abilitys.size-1.times do |i| @abilitys_list.push(AbilityData.name(i+1)) end @natures_list = [] $data_natures.size-1.times do |i| @natures_list.push(NatureData.name(i)) end @lists = [@items_list,@pokemon_list,@skills_list,@abilitys_list,@natures_list] @current_title = @titles[0] @current_commands_list = @commands @current_infos_list = @infos @current_command = 0 @progression_level = 0 @space = 2 @length = 0 @title_sprite = Sprite.new make_bitmap_title_sprite @commands_sprite = Sprite.new make_bitmap_commands_sprite @info_sprite = Sprite.new @info_sprite.bitmap = Bitmap.new(100,Font.default_size) remake_bitmap_info_sprite @cursor = Sprite.new @cursor.bitmap = Bitmap.new(Directory.editor+"Curseur") @cursor.ox = @cursor.width/2 @cursor.oy = @cursor.height/2 @cursor.x = @commands_sprite.x - @cursor.width - 2 @cursor.y = @commands_sprite.y update_title update_info update_commands_list(@current_commands_list) Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze Audio.bgm_stop dispose end def update update_quit_command update_validation_command update_current_command update_cursor update_y_commands_sprite update_info update_item_icon update_item_info end def make_bitmap_title_sprite @title_sprite.bitmap = Bitmap.new(100,Font.default_size) @title_length = @title_sprite.bitmap.text_size(@current_title).width @title_sprite.bitmap = Bitmap.new(@title_length,Font.default_size) @title_sprite.x = Graphics.width/2 - @title_sprite.width/2 @title_sprite.y = 2 @title_sprite.z = 5 end def update_y_commands_sprite if @progression_level != 0 if @cursor.y > Graphics.height/2 - @cursor.height/2 and Input.trigger?(Input::DOWN) @commands_sprite.y -= Font.default_size end if @cursor.y > Graphics.height/2 - @cursor.height/2 and Input.trigger?(Input::UP) if @commands_sprite.y != @title_sprite.y + @title_sprite.height + 10 @commands_sprite.y += Font.default_size end end end end def make_bitmap_commands_sprite @height = @current_commands_list.size * Font.default_size + @space*(@current_commands_list.size-1) @commands_sprite.bitmap = Bitmap.new(100,@height) @current_commands_list.size-1.times do |i| if @commands_sprite.bitmap.text_size(@current_commands_list[i]).width > @length @length = @commands_sprite.bitmap.text_size(@current_commands_list[i]).width end end @commands_sprite.bitmap = Bitmap.new(@length,@height) if @progression_level == 1 @commands_sprite.x = 20 else @commands_sprite.x = Graphics.width/2 - @commands_sprite.width/2 end @commands_sprite.y = @title_sprite.y + @title_sprite.height + 10 end def update_title @title_sprite.bitmap.clear make_bitmap_title_sprite @title_sprite.bitmap.draw_text(0,0,@title_length,Font.default_size,@current_title) end def update_info if @progression_level < 1 @info_sprite.bitmap.clear remake_bitmap_info_sprite @info_sprite.bitmap.draw_text(0,0,@info_length,Font.default_size,@current_infos_list[@current_command]) end end def remake_bitmap_info_sprite @info_length = @info_sprite.bitmap.text_size(@current_infos_list[@current_command]).width @info_sprite.bitmap = Bitmap.new(@info_length,Font.default_size) @info_sprite.x = Graphics.width/2 - @info_sprite.width/2 @info_sprite.y = @commands_sprite.y + @commands_sprite.height + 10 @info_sprite.z = 5 end def update_commands_list(list) @commands_sprite.bitmap.clear list.size-1.times do |i| @commands_sprite.bitmap.draw_text(0,i*Font.default_size+@space,@length,Font.default_size,list[i]) end end def update_current_command if Input.trigger?(Input::UP) and @current_command > 0 @current_command -= 1 end if Input.trigger?(Input::DOWN) and @current_command < @current_commands_list.size-1 @current_command += 1 end end def update_validation_command if Input.trigger?(Input::C) @progression_level += 1 if @progression_level == 1 @current_title = @titles[@current_command+1] @current_commands_list = @lists[@current_command] if @current_title == @titles[1] make_item_icon make_item_info end end refresh end end def update_quit_command if Input.trigger?(Input::B) @progression_level -=1 if @progression_level == 0 @current_title = @titles[0] @current_commands_list = @commands @item.dispose if @item != nil @item_info.dispose if @item_info != nil end refresh end end def refresh @current_infos_list = @infos @current_command = 0 update_title update_info make_bitmap_commands_sprite update_commands_list(@current_commands_list) refresh_cursor @info_sprite.bitmap.clear end def refresh_cursor @cursor.y = @commands_sprite.y end def update_cursor @cursor.x = @commands_sprite.x - @cursor.width - 2 if @cursor.y <= Graphics.height/2 - @cursor.height/2 or @commands_sprite.y == @title_sprite.y + @title_sprite.height + 10 @cursor.y = @commands_sprite.y + @current_command*Font.default_size + 9#@space*@current_command end @cursor.angle -= 3 end def make_item_icon @item = Sprite.new @item.bitmap = Bitmap.new(Directory.items+(@current_command+1).to_s) @item.y = @commands_sprite.y end def update_item_icon if @progression_level == 1 and @current_title == @titles[1] @item.bitmap = Bitmap.new(Directory.items+(@current_command+1).to_s) @item.x = @commands_sprite.x + @commands_sprite.width + 10 end end def make_item_info @item_text_info = ["Type : "+ItemData.type(@current_command+1).to_s, "Prix : "+ItemData.price(@current_command+1).to_s, "Description : "+ItemData.info(@current_command+1).to_s] @height_item_info = @item_text_info.size * Font.default_size + @space*(@item_text_info.size-1) @item_info = Sprite.new @item_info.bitmap = Bitmap.new(100,@height_item_info) @length_item_info = @item_info.bitmap.text_size(@item_text_info[2]).width @item_info = Sprite.new @item_info.bitmap = Bitmap.new(@length_item_info,@height_item_info) @item_info.y = @item.y + @item.height + 10 end def update_item_info if @progression_level == 1 and @current_title == @titles[1] @item_info.bitmap.clear @item_text_info = ["Type : "+ItemData.type(@current_command+1).to_s, "Prix : "+ItemData.price(@current_command+1).to_s, "Description : "+ItemData.info(@current_command+1).to_s] @length_item_info = @item_info.bitmap.text_size(@item_text_info[2]).width @item_info.bitmap = Bitmap.new(@length_item_info,@height_item_info) @item_text_info.size-1.times do |i| @item_info.bitmap.draw_text(0,i*Font.default_size+@space,@length_item_info,Font.default_size,@item_text_info[i]) end @item_info.x = @commands_sprite.x + @commands_sprite.width + 10 end end def dispose @title_sprite.dispose @commands_sprite.dispose end end |
Code: |
$data_items.size.times do |i| @items_list.push(ItemData.name(i)) end |
Code: |
$data_items.size - (1.times do |i| ... end) |
Code: |
($data_items.size - 1).times do |i| ... end |
Nuri Yuri a écrit: | ||||
Oui. D'ailleurs, l'appel de fonction avec « . » est prioritaire sur la soustraction alors ce que ruby comprenait c'était :
Et non
Si tu veux un détail de cette priorité on peut y aller avec les opérateurs qui sont en réalité des fonctions mais qui sont traités comme des opérateurs par le compilateur : C'est fou comme changer trois caractères peut changer toute l'interprétation d'un code :D |