Sujet n°14307
Posté par Zohran le 31 Déc - 20:23 (2014)
Titre : Problème d'UPDATE[RESOLU]
Bonsoir, voilà, je viens de passer une après midi entière à scripter, et comme je commence peut-être à fatiguer, je n'arrive pas à résoudre un bug graphique.
J'ai créé un script affichant une interface pour un éditeur : dès que l'on valide un choix, la liste d'édition s'update bien, mais l'intitulé non .__. .
Et je ne vois pas ce que j'ai pu oublié dans mon script...

Code:
class Editor
 
  def main
    @titles = ["Editeur",
              "Editeur d'objet",
              "Editeur de Pokémon",
              "Editeur d'Attaque",
              "Editeur de Capacités Spéciales",
              "Editeur de Nature"]
   
    @commands = ["Liste des Objets",
                 "Liste des Pokémon",
                 "Liste des Attaques",
                 "Liste des Capacités Spéciales",
                 "Liste des Natures",
                 "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.",
              "Quitter l'Editeur de données"]
   
    @items_list = []
    for i in 0..$data_items.size-1
      @items_list.push(ItemData.name(i+1))
    end
             
    @pokemon_list = []
    for i in 0..$data_pokemon.size-1
      @pokemon_list.push(PokemonData.name(i+1))
    end
   
    @skills_list = []
    for i in 0..$data_skills.size-1
      @skills_list.push(SkillData.name(i+1))
    end
         
    @abilitys_list = []
    for i in 0..$data_abilitys.size-1
      @items_list.push(AbilityData.name(i+1))
    end
   
    @natures_list = []
    for i in 0..$data_natures.size-1
      @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
    @height = @commands.size * Font.default_size + @space*(@current_commands_list.size-1)
             
    @title_sprite = Sprite.new
    @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
   
    @commands_sprite = Sprite.new
    @commands_sprite.bitmap = Bitmap.new(100,@height)
   
    for i in 0..@current_commands_list.size-1
      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)
    @commands_sprite.x = Graphics.width/2 - @commands_sprite.width/2
    @commands_sprite.y = @title_sprite.y + @title_sprite.height + 10
   
    @info_sprite = Sprite.new
    @info_sprite.bitmap = Bitmap.new(100,Font.default_size)
    @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
   
    @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

    dispose
  end
 
  def update
    if Input.trigger?(Input::C)
      @progression_level += 1
      if @progression_level == 1#A refaire
        @current_title = @titles[@current_command+1]
      end
      msgbox @current_title
      @progression_level += 1
      @current_commands_list = @lists[@current_command]
      @current_infos_list = @infos
      @current_command = 0
      update_title
      update_info
      update_commands_list(@current_commands_list)
      @info_sprite.bitmap.clear
    end
   
    update_current_command
    update_cursor
  end
 
  def update_title
    @title_sprite.bitmap.clear
    @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
      @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.bitmap.draw_text(0,0,@info_length,Font.default_size,@current_infos_list[@current_command])
    end
  end
 
  def update_commands_list(list)
    @commands_sprite.bitmap.clear
    for i in 0..list.size-1
      @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_cursor
    @cursor.x = @commands_sprite.x - @cursor.width - 2
    @cursor.y = @commands_sprite.y + @current_command*Font.default_size + @space*@current_command
    @cursor.angle -= 3
  end
 
  def dispose
    @title_sprite.dispose
    @commands_sprite.dispose
  end
 
end


Je fais référence à l'update de l'affichage de @current_title

Posté par Nuri Yuri le 31 Déc - 20:45 (2014)
if @progression_level < 1
Ca vient très probablement de là.

Posté par Zohran le 31 Déc - 20:58 (2014)
Nuri Yuri a écrit:
if @progression_level < 1
Ca vient très probablement de là.


Bon, faut que je recommence cette partie une fois de plus, je m'en doutais aussi...
Je vais voir si c'est bon, sinon je réédite.

EDIT:
C'est bon, j'ai résolu le problème, désolé du dérangement !