Forum FunLabyrinthe

Le jeu de labyrinthe fun et gratuit - Retour au site

  • Vous n'êtes pas connecté.

#1 mai 24, 2012 23:50:50

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Plug-in

Petit détail d'ordre esthétique à propos du GaugeDisplayPlugin :
J'ai enfin réussi à faire fonctionner les chronos !!!
Et, évidemment, ça me donne plein d'envies d'exploiter la chose !!
Maintenant je voudrais savoir si il y a moyen de changer la couleur de la barre de progression (Gauge) sans “trifouiller” le GaugeDisplay.pas !???… Et, dans le cas contraire, je dois donc refaire une unité .pas ???..
Merci..

J'en profite pour résumer ici les indications de sjrd nécessaires pour construire un chrono :
(au cas où quelqu'un serait intéressé, vue que j'ai passé 3 plombes à retrouver le message s'y rapportant !!!)

Fichier|Unités utilisées, ajouter, dans l'ordre, les unités suivantes :
- GaugeDisplay
- Stopwatches
- GenericStopwatches
- StopwatchSquares


Dans l'inspecteur d'objet du Plugin Chronomètre, spécifier le Delay en millisecondes (1sec = 1000)..
Dans l'inspecteur d'objet du Plugin GaugeDisplayPlugin cliquer sur les "" de la propriété Gauges, puis sur le petit "+" en bas de l'inspecteur d'objet.
Dans la propriété RelatedComponent, écrire LoseStopwatchPlugin

Attacher les 2 plugins au joueur, en sélectionnant le joueur, puis, dans l'inspecteur d'objets, en mettant True en face de LoseStopwatchPlugin et de GaugeDisplayPlugin.

Dans la palette des composants, une nouvelle catégorie : Chronomètres.
Un bouton pour créer un effet qui déclenche un chrono, et un qui l'arrête…
En créer un de chaque, et dans leur propriété Stopwatch, sélectionner LoseStopwatchPlugin.
(Possibilités d'associer un message à afficher au démarrage/à l'arrêt via la propriété StartMessage/StopMessage,
mettre l'image de son choix en modifiant leur Painter).



(°!°) DerF

Modifié DerF_44 (mai 24, 2012 23:59:04)

Hors-ligne

#2 mai 25, 2012 00:26:08

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Plug-in

Oups… Des fois je me demande si j'ai bien mon compte de neurones !!!…
Donc, ok, j'ai vu comment on pouvait changer les couleurs de la Gauge !!!
(J'avais zappé à quel point FunLaby est vraiment bien foutu !!.)

Donc, pour ceux que ça intéresse c'est par ici :
Dans l'inspecteur d'objet du Plugin GaugeDisplayPlugin cliquer sur les “…” de la propriété Gauges, puis sur 0 - TGaugeDescription en bas de l'inspecteur d'objet… Cliquer sur les "" des BackgroundColor, BorderColor, LeftColor et RightColor afin d'obtenir une palette de couleurs.
Trop bien !!

Alors, puisque je suis là, mon autre question :
Y'aurait-il moyen d'obtenir autre chose que la défaite du joueur en cas de dépassement du temps chrono !??
(Je me doute bien que oui, mais je veux dire relativement simplement !!????)
Genre déplacer le joueur par exemple !?…
Bon, décidément il temps que j'aille me coucher je crois : En bidouillant le GenericStopwatches.fnd ça m'a l'air assez facile non !?…
Du coup tout ça amène une suggestion d'amélioration pour une prochaine version :
Pouvoir choisir quel effet sera déclenché si le joueur dépasse le temps imparti !!!

(Désolé d'avoir posé tant de lignes pour si peu !)



(°!°) DerF

Modifié DerF_44 (mai 25, 2012 00:43:20)

Hors-ligne

#3 mai 25, 2012 07:56:11

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Plug-in

Je cherche une petite formule magique à utiliser dans un .fnd perso pour augmenter le temps d'un chrono en cours dans le genre :
effect TTimeBonus
name 'Ajout de temps';

on Execute do
begin
Player(TStopWatchesPluginPlayerData).Delay := Player.Delay + 1000;
end;
end;

Dois-je déclarer dans les uses Stopwatches, GenericStopwatches ??…

Merci.


(°!°) DerF

Modifié DerF_44 (mai 25, 2012 07:56:56)

Hors-ligne

#4 mai 25, 2012 10:20:05

sjrd
De : Belgique
Enregistré : 2010-04-11
Messages : 481
Réputation: +  14  -
Profil   Envoyer un courriel  

Plug-in

DerF_44
Fichier|Unités utilisées, ajouter, dans l'ordre, les unités suivantes :
- GaugeDisplay
- Stopwatches
- GenericStopwatches
- StopwatchSquares
Il devait déjà être vieux, ce message ! Parce dans le “dans l'ordre” n'a plus aucune espèce d'importance depuis FunLabyrinthe 5.2
DerF_44
Bon, décidément il temps que j'aille me coucher je crois : En bidouillant le GenericStopwatches.fnd ça m'a l'air assez facile non !?…
Oui l'idée c'est qu'il faut se faire son petit plugin dans son labyrinthe, inspiré de TLoseStopwatchPlugin. Il suffit d'écrire ce qu'on veut dans on Expire do. Pas besoin d'aller modifier GenericStopwatches en tant que tel, bien sûr !
DerF_44
Du coup tout ça amène une suggestion d'amélioration pour une prochaine version :
Pouvoir choisir quel effet sera déclenché si le joueur dépasse le temps imparti !!!
Ben c'est ça, il suffit d'un petit FunDelphi à soi. En fait ça va vraiment dépendre très fort de chaque labyrinthe, ce que c'est censé faire à l'expiration. Il est impossible de généraliser ça.


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Hors-ligne

#5 mai 25, 2012 10:27:36

sjrd
De : Belgique
Enregistré : 2010-04-11
Messages : 481
Réputation: +  14  -
Profil   Envoyer un courriel  

Plug-in

DerF_44
Je cherche une petite formule magique à utiliser dans un .fnd perso pour augmenter le temps d'un chrono en cours
En tant que tel, ce n'est pas possible avec l'implémentation courante de Stopwatches.pas.
Il faut contourner en arrêtant et en redémarrant le plugin.

(non testé
var
RemainingTime: Cardinal;
begin
RemainingTime := SomeStopwatchPlugin.GetPlayerData(Player).RemainingTime;
SomeStopwatchPlugin.GetPlayerData(Player).Delay := RemainingTime + 10000;
SomeStopwatchPlugin.Start(Player);
end;
Le 10000 pouvant bien sûr être remplacé par le nombre de ms voulu.

Ceci fonctionne, mais a l'inconvénient que, visuellement, la gauge va de nouveau être remplie (mais diminuera plus vite).


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Hors-ligne

#6 mai 26, 2012 10:51:26

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Plug-in

C'est Ok !!..
Après quelques mésaventures dont un plantage de l'éditeur suite à une suppression de l'unité GenericStopwatches (que je voulais remplacer par un .fnd perso) et une impossibilité de réouvrir mon projet (!) je suis parvenu à mieux capter les subtilités des chronos et à (re)faire un petit projet test…
J'ai donc un effet qui ajoute un bonus temps, réglable par la property “Bonus”..
Voici le code : (Le plugin initial “LoseStopwatchPlugin” est remplacé ici par un plugin perso “LoseStopPlugin”)
effect TBonusT
name 'bonus temps';
image 'étoile';
property Bonus : Integer;
on Execute do
var
RemainingTime: Cardinal;
begin
RemainingTime := LoseStopPlugin.GetPlayerData(Player).RemainingTime;
LoseStopPlugin.GetPlayerData(Player).Delay := RemainingTime + Bonus;
LoseStopPlugin.Start(Player);
end;
end;

Et ça fonctionne nickel !.. C'est exactement ce que je voulais !!!
Merci beaucoup !!.

(Pour ma curiosité : C'est quoi un “Cardinal” ?)


(°!°) DerF

Hors-ligne

#7 mai 26, 2012 13:45:41

sjrd
De : Belgique
Enregistré : 2010-04-11
Messages : 481
Réputation: +  14  -
Profil   Envoyer un courriel  

Plug-in

Un Cardinal c'est comme un Integer sauf qu'il ne peut pas être négatif. Il peut aller de 0 à 2^32 - 1 inclus. Un Integer va de -2^31 à 2^31 - 1 inclus.


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Hors-ligne

#8 mai 28, 2012 02:02:49

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Plug-in

Ok, merci.


(°!°) DerF

Hors-ligne

Pied de page

Modération

Powered by DjangoBB

Lo-Fi Version