// ***************************************************************************
// ***************************************************************************
// INTERFACE COMMANDS
// ***************************************************************************
// ***************************************************************************
Fichier de definition des commandes et paramtres de l'interface
Note: dans la syntaxe et la description des parmptres, la valeur indique est la valeur par dffaut
Note: le X va vers la droite, le Y vers le haut. Les valeurs sont en pixels
Note: DERIVANT DE veut dire qu'on peut mettre les meme parametres que celui de qui on derive
les modifiables sont aussi herites
Note: MODIFIABLE veut dire que l'on peut modifier un paramtres dans le script (avec un link par exemple)
Note: OBLIGATOIRE veut dire que l'option doit tre presente sinon il y a crash ou non fonctionnement
Note: Identifiant de localisation local de type string (fait reference a un id de en.uxt par exemple)
Identifiant de localisation reseau de type integer
// ***************************************************************************
// ***************************************************************************
// BASICS
// ***************************************************************************
// ***************************************************************************
chaque vue, control, ou group DERIVE DE interface_element et peut avoir les parametres suivant:
MODIFIABLE: active (bool)
x, y, w, h (int)
// ***************************************************************************
// ***************************************************************************
// VIEWS
// ***************************************************************************
// ***************************************************************************
Une vue a un type qui est dfinit par le parametre type="".
MODIFIABLE: alpha (int)
// ***************************************************************************
//
// ***************************************************************************
BUT:
affiche une bitmap
SYNTAXE:
MODIFIABLE: color (string)
color_as_int (int)
color_rgba (rgba)
texture (string)
alpha (int)
// ***************************************************************************
//
// ***************************************************************************
Vue DERIVANT DE
BUT:
affiche une bitmap dans des textures non condenses (plusieurs textures dans une seule)
SYNTAXE:
texture sert pour le nom de la texture toute seule
// ***************************************************************************
//
// ***************************************************************************
BUT:
affiche un text
SYNTAXE:
MODIFIABLE: hardtext (string)
uc_hardtext (ucstring)
color (string ('#r #g #b #a'))
color_rgba (rgba)
alpha (int)
NOTE: IL NE FAUT PAS mettre de sizeref sur une vue texte.
NOTE: Les vue textes peuvent prendre la forme de "TextFormatTagged".
MAIS SEULES les vues textes multilignes interprètent correctement les tags.
Les Tags possibles sont:
@{F3DF} Tag De couleur (en hexadecimal, défintion avec 0 à F (0 à 15 maxi only donc) pour chaque composante RGBA)
@{T10} Tag de Tabulation. Le chiffre indique l'espacement minimum (en nombre de caractère '_')
NOTE: Il n'est pas posssible de préciser un TextFormatTaged, autrement que par code C++, ou via la fonction LUA:
setTextFormatTaged()
// ***************************************************************************
//
// ***************************************************************************
BUT:
Vue DERIVANT DE
affiche un text en fonction d'un identifiant reseau (c'est une chaine de character equivalent a set_server_string (ah))
SYNTAXE:
MODIFIABLE: textid (int)
textid_dblink (string)
// ***************************************************************************
//
// ***************************************************************************
BUT:
Vue DERIVANT DE
Affiche une entre de la database (un nombre entier) sous forme de text
SYNTAXE:
// ***************************************************************************
//
// ***************************************************************************
BUT:
Vue DERIVANT DE
Affiche un texte. Si le texte contient les caracteres speciaux suivant, il y a un traitement particulier
$p -> remplace par le nom du joueur
$P -> remplace par le nom du joueur en lettre capitale
$b -> remplace par le nom du NPC auquel le joueur est en train de parler
$s -> remplace par le nom du NPC auquel le joueur est en train de parler (sans le titre)
ui... -> remplace par la traduction i18n (puis effectue les remplacements precedent)
SYNTAXE:
// ***************************************************************************
//
// ***************************************************************************
BUT:
Vue DERIVANT DE
Un peu dans le meme esprit que la vue text_formated. Elle possede les memes traitements particuliers que
text_formated auxquels il faut y rajouter :
$t -> remplace par la valeur du text id
SYNTAXE:
// ***************************************************************************
//
// ***************************************************************************
BUT:
Vue DERIVANT DE
Affiche un nombre de la database sous la forme "8/10" (avec donc une valeur max de la database).
Si le nombre est 0, cela affiche la string emptytext.
Par defaut emptytext="", et dans ce cas, "0/80" est affich (80 est la vraie valeur max en fait)
SYNTAXE:
NB : emptytext contient un identifiant de localization local
// ***************************************************************************
//
// ***************************************************************************
BUT:
Vue speciale qui affiche un nombre avec des digits speciaux (bitmaps).
SYNTAXE:
La taille totale est automatiquement calcule en fonction du digit 0 et du nombre de digit.
bien sur, x,y,posref etc... marche toujours
// ***************************************************************************
//
// ***************************************************************************
BUT:
Vue DERIVANT DE
affiche une valeur sous forme de bar. Pour l instant 4 versions : (normal, mini, ultra_mini et mini_thick)
les bitmaps utilisees sont hardcodees en c++
SYNTAXE:
MODIFIABLE:
value (int)
range (int)
reference (int)
value_dblink (string)
range_dblink (string)
reference_dblink (string)
// ***************************************************************************
//
// ***************************************************************************
BUT:
Vue DERIVANT DE
un peu dans le meme esprit que "bar" mais affiche directement 3 barres
SYNTAXE:
MODIFIABLE:
value1 (int)
value2 (int)
value3 (int)
range1 (int)
range2 (int)
range3 (int)
// ***************************************************************************
// ***************************************************************************
// CONTROLS
// ***************************************************************************
// ***************************************************************************
DERIVE DE
Un control a un type qui est définit par le paramètre type="".
MODIFIABLE: alpha (int)
// ***************************************************************************
//
// ***************************************************************************
BUT:
Control qui dérive simplement de ctrl_base, et qui ne gère aucun évenement et n'affiche rien.
Son seul but est d'avoir une zone pour afficher un tooltip quand on passe dessus.
SYNTAXE:
// ***************************************************************************
//
// ***************************************************************************
BUT:
boutton, push, radio ou toggle.
SYNTAXE:
MODIFIABLE: pushed (bool)
col_normal (string ('#r #g #b #a'))
col_over (string ('#r #g #b #a'))
col_pushed (string ('#r #g #b #a'))
col_normal_rgba (rgba)
col_over_rgba (rgba)
col_pushed_rgba (rgba)
frozen (bool)
params_l (string)
texture (string)
texture_pushed (string)
texture_over (string)
// ***************************************************************************
//
// ***************************************************************************
BUT:
boutton, push, radio ou toggle.
SYNTAXE:
MODIFIABLE: pushed (bool)
col_normal (string ('#r #g #b #a'))
col_over (string ('#r #g #b #a'))
col_pushed (string ('#r #g #b #a'))
col_normal_rgba (rgba)
col_over_rgba (rgba)
col_pushed_rgba (rgba)
frozen (bool)
params_l (string)
uc_hardtext (ucstring telle quelle)
hardtext (string qui va etre localisee)
// ***************************************************************************
//
// ***************************************************************************
BUT:
scroll bar.
SYNTAXE:
// ***************************************************************************
//
// ***************************************************************************
BUT:
affiche un boutton spécial d'item, brique etc...
SYNTAXE:
MODIFIABLE:
sheet (string) (correspond a la value le lien vers la DB)
color1 (rgba)
color2 (rgba)
back (int)
symbol (int)
invert_symbol (bool)
// ***************************************************************************
//
// ***************************************************************************
BUT:
affiche une image pour choisir que l on puisse choisir une couleur dedans
SYNTAXE:
MODIFIABLE: r, g, b, a (int) les composantes de la couleur selectionnee
color (string ('#r #g #b #a'))
// ***************************************************************************
// ***************************************************************************
// GROUPS
// ***************************************************************************
// ***************************************************************************
// ***************************************************************************
//
// ***************************************************************************
BUT:
DERIVE DE
Définit un group qui pourra contenir des groups, des controls ou des vues.
Aucun affichage n'est fait sinon celui des fils
Pour qu'un groupe soit affiché, il faut qu'il apparaisse dans les
SYNTAXE:
MODIFIABLE: ofsx (int)
ofsy (int)
// ***************************************************************************
//
// ***************************************************************************
BUT:
SYNTAXE:
// ***************************************************************************
//
// ***************************************************************************
Herite de group
BUT:
Afficher un container
SYNTAXE:
MODIFIABLE: title, title_opened, title_closed (string)
uc_title_opened, uc_title_closed, uc_title (ucstring)
title_color (string)
pop_max_h (int)
openable, opened (bool)
lockable, locked (bool)
Note: si global_color est à true le bouton et le titre sont colorés par la couleur globale
// ***************************************************************************
//
// ***************************************************************************
Herite de group
BUT:
comme un group mais affiche un cadre et un fond (fixé: bitmaps de la modal).
SYNTAXE:
MODIFIABLE: color (string ('#r #g #b #a'))
// ***************************************************************************
//
// ***************************************************************************
Herite du group de type "frame" (affiche donc un cadre)
BUT:
Affiche une fenetre qui pourra etre ouverte sur une action. Cachée par defaut (active=false)
NOTE: un group modal NE DOIT PAS être défini dans les .
En fait ils sont automatiquement ajoutés
NB: par defaut les modals sont ESCAPABLE
SYNTAXE:
certains actions handlers prennent un id de window en paramètre (eg: "ui:interface:taskbar"). L'id spécial
se nommant "ctrl_launch_modal" désigne en fait le bouton ou le control qui a fait ouvrir la fenetre modal.
eg:
Un control sheet dans une fenetre modal echange son sheet id avec le ctrl sheet qui a ouvert la modal:
Dans le xml, il faut bien faire attention a ce que les modals soient a la racine sinon elles peuvent
etre affichées plusieurs fois. Il ne faut pas non plus qu'elles soient ajoutées en tant que node dans un
// ***************************************************************************
//
// ***************************************************************************
Herite du groupe de type "modal"
BUT:
Affiche un menu contextuel
Caché par défaut
SYNTAXE:
// Ligne simple
...
MODIFIABLE: pour une action : grayed, checked et tous les modifiables d une vue texte
on peut recuperer les usergroup en faisant comme d'habitude menuid:actionid:usergroupid
// ***************************************************************************
//
// ***************************************************************************
BUT:
affiche une liste variable de ctrl_sheet
SYNTAXE:
// Le mode "Resize" n'existe pas en fait. Le scripteur est libre de mettre ou pas une scroll bar et/ou des boutons qui permettent de changer rowmax
// Setup tyipque de scrollBar. L'alignement est hardocé pour etre Top. Le y devrait etre egal à "-tmargin" du group list_sheet
tx_bottomleft= "w_scroll_l123_b.tga"
tx_middle= "w_scroll_l123_m.tga"
tx_topright= "w_scroll_l123_t.tga"
/>
MODIFIABLE: nbelt (int en lecture seul !) le nombre d'element valide si array=false sinon maxelt
// ***************************************************************************
//
// ***************************************************************************
BUT:
affiche un tableau de familles de métier avec la bonne brick.
sont grand pere DOIT etre un container (pour initialiser son nom)
SYNTAXE:
// Boutons pour changer le niveau de brick voulu
// vue qui affiche le niveau selectionné
// group de décoration qui affiche un fond derriere le texte (sert pour le scroll des levels à la molette)
// ***************************************************************************
//
// ***************************************************************************
BUT:
widget qui sert pour augmenter et diminuer un nombre de la database
SYNTAXE:
// une vue qui permettra d'afficher le nombre
// boutton pour incrémenter
// boutton pour décrémenter
// ***************************************************************************
//
// ***************************************************************************
BUT:
widget servant à afficher des lignes de chat ou autres défilant, avec une scrollBar et des boutons pour augmenter
la taille de la fenetre
SYNTAXE:
// ***************************************************************************
//
// ***************************************************************************
BUT:
edition de texte
SYNTAXE:
MODIFIABLE: input_string (string)
uc_input_string (ucstring)
// ***************************************************************************
//
// ***************************************************************************
BUT:
Widget de composition de magie
SYNTAXE:
// Brick racine
// Brick mandatory
// Brick optional
// bouton de validation
// ***************************************************************************
//
// ***************************************************************************
BUT:
Widget de composition de magie
SYNTAXE:
// Brick racine
// Brick optional
// bouton de validation
// Tool
// MPs
// Select number
// ***************************************************************************
//
// ***************************************************************************
BUT:
Widget d'affichage des sentence connues. cf list_job pour le lien "list_sentence"
SYNTAXE:
// Le mode "Resize" n'existe pas en fait. Le scripteur est libre de mettre ou pas une scroll bar et/ou des boutons qui permettent de changer rowmax
// Setup tyipque de scrollBar. L'alignement est hardocé pour etre Top. Le y devrait etre egal à "-tmargin" du group list_sheet
tx_bottomleft= "w_scroll_l123_b.tga"
tx_middle= "w_scroll_l123_m.tga"
tx_topright= "w_scroll_l123_t.tga"
// ***************************************************************************
//
// ***************************************************************************
BUT:
affiche une combo_box. Un bouton sur un texte qui fait apparaitre un menu de selection de texte quand on clique dessus
SYNTAXE:
// Text qui affiche le choix courant.
// Boutton qui sert pour ouvrir la liste.
// ajoute un choix pour la combo_box
Note: il faut que "ui:interface:combo_box_select_menu" soit définie comme un avec
les paramètres d'aspect que l'on veut. Les champs actions sont remplies quand la combo_box est ouverte
EXEMPLE:
Ce setup permet de faire une combo box ou le bouton est invisible et recouvre en fait tout le group:
si on clique sur le texte, on ouvre alors la liste de choix.
// un cadre juste pour faire joli
// notre text
// Note pas de texture définie sauf l'over: c fait exprès.
// ***************************************************************************
//
// ***************************************************************************
hérite de group
BUT:
affiche un arbre (comme un menu)
EXEMPLE:
Sur les nodes qui contiennent des fils on peut setuper la valeur de départ à ouvert ou fermé
// ***************************************************************************
//
// ***************************************************************************
"
ul_begin_space="12" // H space when "
"
li_indent="-10" // W space when "
"
ul_indent="30" // W space when "
"
form_text_area_group="edit_box_widget" // The group to instanciate for a form edit box. It must have a child group CGroupEditBox* with the id "eb"
checkbox_bitmap_normal="checkbox_normal.tga" // The "off" bitmap use in form checkbox
checkbox_bitmap_pushed="checkbox_pushed.tga" // The "on" bitmap use in form checkbox
checkbox_bitmap_over="checkbox_over.tga" // The "over" bitmap use in form checkbox
background_bitmap_view="bg" // The name of the child bitmap view used for background
home="http://www.nevrax.org" // The home url (you can browsse to the home url with the url "home"
browse_next_time="false" // If true, the url is browsed when the group is created
>
// ***************************************************************************
// (derived from HTML)
// ***************************************************************************
// ***************************************************************************
// (derived from group)
// ***************************************************************************
// ***************************************************************************
// (derived from group)
// ***************************************************************************
a html-like table :
The table is essentially an array. Each line must have the same number of cells.
The width of the table can be arbitrary. Either sizeref="w" or a fixed w can be used.
using child_resize_w has undefined results.
The height or the table is imposed by its children cells (like with html table)
Table is specified using the standard
&
// option for the table :
border : the same the html tables 'border'
cellpadding : the same the html tables 'cellpadding'
cellspacing : the same the html tables 'cellspacing'
bgcolor : background color with format "R G B A" ("255 0 0 255" for example)
width : wanted width of table in pixels (same than html "width"). could be a ratio like "100%"
usually the table will specify sizeref="w" or w and width="100%"
continuous_update : whan set to true, the table will be updated continuously has its parent container is resized, and not when mouse left button is released only
// options for the cells (
tag)
Cells can have an id. If none is given a id like cell_1_2 id generated (first number is column, second is row)
align : horizontal alignment of cell content. Can be "left", "right" or "center" (same than HTML 'align')
valign : vertical alignment of cell content. Can be 'top", "middle" or "bottom" (same than HTML 'valign')
left_margin : offset added to the x position of the cell content
nowrap : same then htlm table 'nowrap'
bgcolor : color of the cell background (with the "R G B A" format)
width : same then htlm table 'width' : gives width of column for that cell, or a percentage
add_child_w : take the wanted size from the size of the children (equivalent to child_resize_h), and add the 'width' (not added if a percentage)
height : minimum height of the cell
ignore_max_width : if "true", the cell content max_used_w is ignored when computing the width of the cell
ignore_min_width : if "true", the cell content min_used_w is ignored when computing the width of the cell
// ***************************************************************************
// ***************************************************************************
// MISC: DEFINE, PROCEDURES, TEMPLATES, ANIM, SCENE3D, ...
// ***************************************************************************
// ***************************************************************************
// ***************************************************************************
//
// ***************************************************************************
BUT:
Permet de definir une constante.
SYNTAXE:
EXAMPLE:
....
Comme ca "Hello %pipo_title" est remplacé par "Hello yoyo"
L'id du define ne peut contenir que les charactères:
'a' à 'z'
'A' à 'Z'
'0' à '9'
'_'
Du coup si vous voulez vraiment afficher un % dans une string (par exemple "25 %"), il faut l'ecrire en double "25 %%"
// ***************************************************************************
//
// ***************************************************************************
BUT:
Definit un action handler special qui lance des action handlers à la suite
SYNTAXE:
les paramètres sont optionnels.
un action handler peut etre lui meme une autre procedure (attention recursivité :))
La procédure se lance en utilisant l'action handler "proc" avec comme paramètre "nom_procedure"
La procédure peut prendre des paramètres en entrée (voir l'action handler proc pour comment faire).
Pour chaque action, le champ params="" est parsé. Tout chaine de type @#, ou # est un numéro
(à N chiffres) copiera alors le paramètre (simple copie de chaine) au moment de l'appel.
Note: de la même facon que les % dans les define, un double @ permet de ne pas considérer l'@ comme un descripteur
de paramètre
EXAMPLE:
....
EXAMPLE paramètres:
....
Dans cet exemple, sur un cliok gauche du bouton, set sera appelé avec une valeur de 10!!
Notez que l'index des paramètres commence à 0.
// ***************************************************************************
//
// ***************************************************************************
BUT:
Definit un patron qui permet d'instancier des groups, ctrls ou vues qui se ressemblent.
SYNTAXE:
Definition du template:
corps du template (group, controls etc...) qui reference les paramètres du template avec #
Instanciation du template:
EXAMPLE:
// ***************************************************************************
//
// ***************************************************************************
BUT:
Create an array of template's instances (mutli instance version of )
SYNTAXE:
Then for each instance created, All properties of the XML node are parsed, and $i are replaced with the index of the instance
EXAMPLE:
This will create 16 instances of ctrls (tab_array0_0, tab_array0_1, tab_array0_2....)
The first one will be placed on right of "tabref", but with a x of 4 (_firstpos="TR TL" _xfirst="4")
The next ones will be placed on right of each other, but sticked with a x of 1 (_nextpos="TR TL" x="1" )
NB: if '_xfirst' is not defined, then 'x' will be taken for the first position also
NB: if '_yfirst' is not defined, then 'y' will be taken for the first position also
NB: Both _firstpos/_nextpos must be defined in order for the "stick system" to work
also you must declare id="", posparent="" and posref="" in the template definition.
// ***************************************************************************
//
// ***************************************************************************
BUT:
crée une variable et associe une valeur
SYNTAXE:
sert à définir un tableau.
/>
EXAMPLE:
Dans le cas de définition d'un tableau, le premier "$i" rencontré est remplacé par l'index de 0 à size-1.
// ***************************************************************************
//
// ***************************************************************************
BUT:
lié une expression à une valeur d'une vue (target). L'expression doit dependre d'entrée de la database. A chaque fois qu'une
entrée de la database est updatée, l'expression est recalculée, et le target est updatée.
SYNTAXE:
EXAMPLE:
// si l entrée de database 'my_db_view' ne vaut pas 0, alors my_view:active est mis à true
CREATION DYNAMIQUE DE LIEN:
Elle est utile si on veut que les update ne soient pris en compte qu'à un moment précis (par exemple dans une boite modale)
C'est sutout bien dans le cas de test couteux ou si des textes non visibles sont updatés pour rien.
// création :
handler="add_link" params="id=identifier_unique|expr=expression_a_evaluer|target=dest_de_lexpression"
// supression:
handler="remove_link" params="id=identifier_unique|expr=expression_a_evaluer|target=dest_de_lexpression"
par exemple, en reprenant l exemple precedent:
handler="add_link" params="id=mon_lien|expr=ne(@my_db_entry, 0)|target=my_view:active"
handler="remove_link" params="id=mon_lien"
// ***************************************************************************
//