voulant aider mon ami Shadow, j'ai voulu faire un éditeur de checkpoints, mais j'ai un problème quand je veux ajouter un élément dans la liste en cliquant sur le bouton gauche ou en en supprimant un en cliquant sur le bouton droit.
Ce que je souhaite : en cliquant sur le bouton gauche, ajouter un seul élément dans la liste, mais il me manque un filtre pour éviter d'en ajouter plusieurs non souhaités.
Le principe est le même avec le bouton droit, sauf qu'il supprime le dernier élément.
Je viens donc encore solliciter votre aide bienveillante et bien venue et je vous en remercie par anticapation.
Code : Tout sélectionner
; constantes, enumeration, variables, structures
Enumeration Fenetres
#Fenetre_principale
EndEnumeration
Enumeration Images
#Melbourne
EndEnumeration
#LargeurEcr = 1920 ;On peut choisir la résolution qu'on veut
#HauteurEcr = 1080
Structure Position
X.i
Y.i
EndStructure
Global FichierParDefaut$, Filtre$, Filtre, Fichier$, FichierImage, BtnGauche, BtnDroit, evenement, Mx, My, Quitter
Global.position NewList Checkpoint()
; Décodeurs, encodeurs
UsePNGImageDecoder()
; Initialisations
InitSprite() : InitKeyboard() : InitMouse()
Procedure Ouvrir_Fenetre_principale()
OpenWindow(#Fenetre_principale, 0, 0, #LargeurEcr, #HauteurEcr, "Editeur de Check-Points", #PB_Window_ScreenCentered|#PB_Window_BorderLess)
OpenWindowedScreen(WindowID(#Fenetre_principale), 0, 0, #LargeurEcr, #HauteurEcr)
FichierParDefaut$ = ""
Filtre$ = "Image PNG (*.png)|*.png"
Filtre = 0 ; utiliser par défaut le premier des trois filtres possibles
Fichier$ = OpenFileRequester("Choisissez un fichier à charger", FichierParDefaut$, Filtre$, Filtre)
BtnGauche = 1
BtnDroit = 2
If Fichier$
; Charge une image
FichierImage = LoadImage(#PB_Any, Fichier$)
EndIf
SetClassLongPtr_(ScreenID(), #GCL_HCURSOR, LoadCursor_(0, #IDC_ARROW))
ShowCursor_(#True) ; montrer le curseur
EndProcedure
Procedure GestionSouris()
If MouseButton(BtnGauche)
AddElement(Checkpoint())
Checkpoint()\X = Mx
Checkpoint()\Y = My
ElseIf MouseButton(BtnDroit)
If ListSize(Checkpoint())
LastElement(Checkpoint())
DeleteElement(Checkpoint())
EndIf
EndIf
EndProcedure
Procedure Afficher()
StartDrawing(ScreenOutput())
If FichierImage
DrawImage(ImageID(FichierImage), 0, 0, #LargeurEcr, #HauteurEcr)
DrawText((#LargeurEcr-TextWidth(GetFilePart(Fichier$, #PB_FileSystem_NoExtension)))/2, 10, GetFilePart(Fichier$, #PB_FileSystem_NoExtension), 0, Point(0,0))
DrawText(10,10, Str(mx) + "/" + Str(my), 0, Point(0,0))
DrawText(10, #HauteurEcr - 20, "Appuyez sur Echap pour sortir", $FF, Point(0,0))
EndIf
StopDrawing()
EndProcedure
Procedure Quitter()
If KeyboardPushed(#PB_Key_Escape)<>#Null
Quitter = 1
EndIf
EndProcedure
Ouvrir_Fenetre_principale()
Repeat
evenement = WaitWindowEvent(1)
ExamineKeyboard()
ExamineMouse()
Mx = MouseX()
My = MouseY()
Afficher()
GestionSouris()
Quitter()
FlipBuffers()
Until Quitter = 1
End