Salut,
Dans ma vision des choses, j'aimerais avoir la possibilité de pouvoir gérer des évenements pour faire un monde un peu plus vivant qu'une simple carte statique. (C'est pas original)
Exemples :
- Passer à un endroit particulier provoque un éboulement
- Actionner un levier pour ouvrir/fermer un pont levis/herse
Après avoir un peu réfléchi, il me semble que la meilleure solution : la plus flexible et la moins dure à implémenter, c'est d'avoir des objets dans ma base avec des propriétés du style:
-onPick
-onDrop
-onThrow
-onSmell
-onExamine
-onUse
etc...
Pour les lieux OnEnter / OnLeave éventuellement onFirstEnter.
Par exemple, pour un oeuf, la propriété onDrop est testée quand on pose/lâche un objet :
// onDrop
echo "Votre oeuf se casse";
this->Object->isBroken();
Et on fait un eval() au moment où la condition est executée.
Au début, je pensais plus à créer mes propres macros, mais je ne vois pas vraiment l'intérêt par rapport à du code "brute".
Est-ce qu'il y a d'autres solutions plus simples ? pires ?
PS : C'est une solution inspiré dans ce qu'on trouve dans les langages dédiés à l'écriture de fictions intéractives.
Dans ma vision des choses, j'aimerais avoir la possibilité de pouvoir gérer des évenements pour faire un monde un peu plus vivant qu'une simple carte statique. (C'est pas original)
Exemples :
- Passer à un endroit particulier provoque un éboulement
- Actionner un levier pour ouvrir/fermer un pont levis/herse
Après avoir un peu réfléchi, il me semble que la meilleure solution : la plus flexible et la moins dure à implémenter, c'est d'avoir des objets dans ma base avec des propriétés du style:
-onPick
-onDrop
-onThrow
-onSmell
-onExamine
-onUse
etc...
Pour les lieux OnEnter / OnLeave éventuellement onFirstEnter.
Par exemple, pour un oeuf, la propriété onDrop est testée quand on pose/lâche un objet :
// onDrop
echo "Votre oeuf se casse";
this->Object->isBroken();
Et on fait un eval() au moment où la condition est executée.
Au début, je pensais plus à créer mes propres macros, mais je ne vois pas vraiment l'intérêt par rapport à du code "brute".
Est-ce qu'il y a d'autres solutions plus simples ? pires ?
PS : C'est une solution inspiré dans ce qu'on trouve dans les langages dédiés à l'écriture de fictions intéractives.