Créé le 01/10/2002
Dernière mise à jour le 01/04/2003
L'état est une partie de code ou on peut y mettre plusieurs functions et
des labels.
On peut en mettre plusieurs dans un code mais un seul état tourne
a la fois.
On peut toujours se servir des éventuelles autres functions qui se trouve dans le code.
Le fait que le code tourne dans un état (une fois
celui-ci enclenché) on peut écrasé ou modifié des functions et des labels dans
cet état.
Exemple:
state MyState
{
ignores
Touch, UnTouch;
function BeginState()
{
//
mon code déclenchéent en entrant dans l'état
}
function
EndState()
{
//
mon code déclenchéent en sortant de l'état
}
}
La spécification ignores désactive une ou plusieurs
function(s) de base dans cet état.
La function BeginState() s'éxécutera dés le
début de l'état.
La function EndState() s'éxécutera
en sortant de l'état ou en changeant.
Exemple pour vérifier qu'on est bien dans tel état:
function Test()
{
if(IsInState('MyState'))
{
//
mon code si l'état courant est bien "MyState"
}
}
La function IsInState() est une function
a retour de bool.
Si l'actor est bien dans l'état
spécifié, IsInState() retourne vrai.
Autre function
pour les états, GetStateName() aussi une function
a retour, renvoie par un name le nom l'état courant.
Exemple pour écraser une function:
function Test(int MyNumber, vector MyLocation)
{
//
mon code
}
state MyState
{
function
Test(int MyNumber, vector MyLocation); // écrase
la function (la reécri sans code)
}
Si le code tourne dans l'état MyState la function Test() est désactivé.
Note:
On peut mettre directement un point-virgule juste aprés la déclaration
de la function écrasé, a la place d'ouvrir est fermer avec {};
Exemple pour que l'état s'auto-éxécute:
auto state MyState
{
//
mon code dans une function ou un label
}
Exemple pour avoir plusieurs utilisation du code:
state() MyState
{
//
mon code dans une function ou un label
}
En mettant des parenthèses juste aprés le mapper peut ainsi avoir plusieurs utilisation
du code avec plusieurs états de se type. (voir dans les default properties :
Object > InitialState)
L'état initial sélectionné serra auto-éxécute en
début de partie.
Les labels sont des sous-partie d'un états, qui permette de coder directement
dans un état (pratique s'il est auto-éxécutable).
C'est grace aux labels
qu'on a accés aux functions lantentes comme Sleep() qui permet
de stoper un certain temps l'éxécution du code.
Exemple de l'utilisation de Sleep():
state MyState
{
Begin:
Sleep(5.25);
//
mes paramètres ici
}
Dans un état, le label par default est Begin
(on peut mettre n'importe quoi d'autre mais mieux vaut utiliser celui-la).
Dans
cet état mes paramètres méttront 5.25 secondes
avant de se déclenchéent.
Note:
S'il y a aussi des functions dans l'état, mettre toujours le ou les
label(s) aprés celle-ci.
Pour appeler un état et éventuellement un label en particulier, on utilise
la function GoToState().
Pour passer dans un
autre label de l'état, c'est la function GoTo().
Exemple pour un état:
function Test()
{
GoToState('MyState');
}
state
MyState
{
Begin:
//
mes paramètres ici
}
Exemple pour un label:
state MyState
{
MyLabel:
Log("Le
label <MyLabel> à été appelé");
GoTo('EndLabel');
Begin:
Log("Le
label <Begin> à été appelé");
GoTo('MyLabel');
EndLabel:
Log("Le
label <EndLabel> à été appelé");
}
On remarque ici que c'est pas vraiment important de mettre le label Begin en premier car de toute façon c'est lui qui s'éxécutera en premier (mais je conseille quand même de le mettre pour mieux se retrouvé dans le code), ensuite s'il y en a plusieurs il faut mettre un label de fin (ici c'est EndLabel) si on veut pas que le label suivant s'éxécute.
Ca donne les messages suivant dans le log: (System\UT2003.log)
Le
label <Begin> à été appelé
Le label <MyLabel> à été appelé
Le
label <EndLabel> à été appelé
Exemple pour un label dans un état:
auto state Start
{
GoToState('MyState',
'MyLabel');
}
state MyState
{
Begin:
//
mes paramètres ici
MyLabel:
//
mes paramètres ici
}
Ici un premier état-automatique Start éxécute l'état MyState en commençant par le label MyLabel et non avec celui par défault Begin.
Exemple pour sortir d'un état:
state MyState
{
Begin:
GoToState('');
}
Comme on peut constater avec les 2 derniers exemples, la function GoToState() a entièrement ses options optionnelles. On peut juste s'en servir pour aller vers un état ou un label dans un état ou même dans aucun état. (juste en sortir)