PureBasic:Editeur map 2D - Fenêtre et événements
PureBasic:Editeur map 2D - Fenêtre et événements
<< Précédent | Sommaire | Suivant >>
Sommaire |
[modifier] Introduction
J'initialise ce tutoriel sans l'avoir préparé (c'est sans aucun doute une très mauvaise idée), j'ignore encore quelle direction il va prendre et si je le terminerai, n'hésitez pas à l'orienter si besoin , ou à donner un coup de pouce pour que ce tutoriel aboutisse à un éditeur de map 2D complet.
L'idée serait de réaliser un éditeur pour la création des maps du RPG 2D (mettre un lien vers le tutoriel du RPG2D en C et en PureBasic).
Cet éditeur devrait permettre :
- de définir la dimension d'une map.
- Charger / Sauver une map (les 3 fichiers .map, .sprite, .event)
- Charger un chipset pour la construction de la map (couche map)
- Charger un chipset pour les sprites (couche sprite)
- Charger une musique et l'écouter avant de l'associer à la map
- Charger un son et l'écouter avant de l'associer à un événement
- Définir les événements directement sur la map.
- créer les fichiers .map .event et .sprite automatiquement.
A travers cet éditeur, l'objectif est aussi de montrer comment utiliser les gadgets et autres fonctions windows pour créer une application.
Je ne suis pas un expert des applications windows, je dirais même que j'ai tout à apprendre dans ce domaine, aussi n'hésitez pas à me corriger ou à proposer une meilleure solution quand vous le jugerez nécessaire.
[modifier] Fenêtre et événements
Entrons directement dans le vif du sujet
EnableExplicit
;Liste des fenêtres
Enumeration
#FenetrePrincipale
EndEnumeration
Define.l Event
If OpenWindow(#FenetrePrincipale, 0, 0, 800, 600, "Editeur de map 2D", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) = 0
MessageRequester("Erreur", "Impossible d'ouvrir la fenêtre ", #PB_MessageRequester_Ok)
End
EndIf
Repeat
Event = WaitWindowEvent()
Select Event
EndSelect
Until Event = #PB_Event_CloseWindow
Ajouter un texte d'explication sur la fenêtre , et les évènements.
[modifier] Menu
EnableExplicit
;Liste des fenêtres
Enumeration
#FenetrePrincipale
EndEnumeration
; Menu
Enumeration
#MenuPrincipal
#MenuNouveau
#MenuOuvrir
#MenuEnregistrer
#MenuQuitter
#MenuRecent1
#MenuRecent2
#MenuEventTeleport
#MenuEventDialog
#MenuEventBattle
#MenuEventShop
#MenuEventInn
#MenuEventChangeTile
#MenuApropos
#MenuPopup
#PopupEventTeleport
#PopupEventDialog
#PopupEventBattle
#PopupEventShop
#PopupEventInn
#PopupEventChangeTile
EndEnumeration
Define.l Event, quit
If OpenWindow(#FenetrePrincipale, 0, 0, 800, 600, "Editeur de map 2D", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) = 0
MessageRequester("Erreur", "Impossible d'ouvrir la fenêtre ", #PB_MessageRequester_Ok)
End
EndIf
If CreateMenu(#MenuPrincipal, WindowID(#FenetrePrincipale))
MenuTitle("Fichier")
MenuItem(#MenuNouveau , "Nouveau")
MenuItem(#MenuOuvrir , "Ouvrir une map")
MenuItem(#MenuEnregistrer, "Enregistrer une map")
MenuBar()
OpenSubMenu("Fichiers récents")
MenuItem(#MenuRecent1 , "C:\map1.map")
MenuItem(#MenuRecent2 , "C:\map2.map")
CloseSubMenu()
MenuBar()
MenuItem(#MenuQuitter , "Quitter")
MenuTitle("Evénements")
MenuItem(#MenuEventBattle , "Evénement bataille")
MenuItem(#MenuEventChangeTile, "Evénement change tuile")
MenuItem(#MenuEventDialog , "Evénement dialogue")
MenuItem(#MenuEventInn , "Evénement auberge")
MenuItem(#MenuEventShop , "Evénement magasin")
MenuItem(#MenuEventTeleport , "Evénement téléportation")
MenuTitle("?")
MenuItem(#MenuApropos, "A propos de ...")
EndIf
If CreatePopupMenu(#MenuPopup)
MenuTitle("Evénements")
MenuItem(#PopupEventBattle , "Evénement bataille")
MenuItem(#PopupEventChangeTile, "Evénement change tuile")
MenuItem(#PopupEventDialog , "Evénement dialogue")
MenuItem(#PopupEventInn , "Evénement auberge")
MenuItem(#PopupEventShop , "Evénement magasin")
MenuItem(#PopupEventTeleport , "Evénement téléportation")
EndIf
Repeat
Event = WaitWindowEvent()
Select Event
Case #WM_RBUTTONDOWN ; Le bouton droit de la souris a été cliqué =>
DisplayPopupMenu(#MenuPopup, WindowID(#FenetrePrincipale)) ; On affiche le menu contextuel
Case #PB_Event_Menu
Select EventMenu()
Case #MenuQuitter : quit = #True
Case #MenuApropos : MessageRequester("A propos de", "Editeur de map 2D, à suivre...", 0)
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow Or quit
Expliquer le menu et le popupmenu ici.
[modifier] Gadgets
A suivre

