Code et boucle générale (Editeur de map)

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Code et boucle générale (Editeur de map)

Message par blendman »

salut

J'aurai aimé avoir votre avis éclairé sur l'écriture et le contenu du code d'un logiciel de type éditeur de map.

Voici un screenshot de mon éditeur de map :
http://www.3arks.com/images/screenshots ... v0.4.1.jpg

Voici en gros comment se compose ma boucle principale :

Code : Tout sélectionner

Repeat  
  If (ElapsedMilliseconds() > CheckTime + 1000 / 60)
    CheckTime = ElapsedMilliseconds() 
    update_Screen() 
  Else   
    Delay(5)
  EndIf   
  event_Editor()  
Until quit = 1
update_screen()
C'est une procédure qui affiche les sprites3D, puis les informations en startdrawing() comme le texte, ou des traits (pour une grille), etc.. tout cela sur le screen, et pas sur la fenêtre entière, le screen est au milieu de la fenêtre (voir le screenshot au dessus).


event_Editor()
C'est la procédure qui gère tous les events de mon programme. ça ressemble à ça :

Code : Tout sélectionner

Procedure event_Editor()
event = WaitWindowEvent(100)
  If event
    ;{ update
    update_general()   ; procédure qui fait les update nécessaire, comme récupérer les coordonnées de la souris 
    ;}
    ;{ keyboard    
    keyboard_event() ; gestion des évènements claviers (environ 15 events)
    ;}
    Select event
        ;{ mouse event
      Case #WM_LBUTTONUP
       
      Case #WM_LBUTTONDOWN
                       
      Case #WM_RBUTTONDOWN
                    
      Case #WM_RBUTTONUP
              
      Case #WM_LBUTTONUP
             
      Case #WM_MOUSEMOVE  
    
        ;}         
      Case #PB_Event_Menu
        Select EventMenu()            
            ;-- file          
          Case 0 ; menu N°1 : créer une nouvelle map
            create_new_map()
            ;etc...          
        EndSelect
        
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 1
            ; event pour le gadget N°1
            ;....            
        EndSelect
        
      Case #PB_Event_CloseWindow
        Select EventWindow()
          Case 0 
           exit() ; on ferme l'éditeur
           ; etc...
        EndSelect        
    EndSelect
  Else
    dostuff() ; procédure qui rafraichit la fenêtre
  EndIf
EndProcedure
Je suppose que l'on comprend comment ça fonctionne.

D'après vous, est-ce une bonne organisation pour un éditeur de map ou un logiciel en général ?

Etant donné que je gère des panels, onglets, boutons et autres gadgets, + 1 screen à l'intérieur d'une même fenêtre, il arrive que le rafraichissement de la fenêtre prenne 1 seconde (par exemple, les boutons n'apparaissent pas tous d'un coup).
faut-il gérer ça comme ça, ou dois-je passer par les thread ou les callbacks pour certaines choses ?

Merci pour vos conseils :D.
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Code et boucle générale (Editeur de map)

Message par Thyphoon »

moi j'aurais été tenté de faire comme toi ... mais bon je suis peut être pas la meilleur référence ! :oops:

en tout cas ton éditeur a l'air très intuitif et complet ! :D
Répondre