Race - v-l-m/vlm GitHub Wiki
Schema extrait de http://dev.virtual-loup-de-mer.org/vlm/browser/trunk/base/schemas/races_tables.sql RACES, WAYPOINTS, RACES_WAYPOINTS, races_instructions
- Créer une course, ** ajouter une ligne dans "races" ** ajounter N lignes dans "waypoints" (une par waypoint) ** faire la relation 1,N (intégrant l'ordonnancement des WP) dans races_waypoint ** la table races_instructions est facultative
{| border="1" |+ tables valorisées par l'admin lors de la création d'une course
| ! TABLE !! INFORMATIONS !! COMMENTAIRES |
|---|
races |
|
idraces int(11) NOT NULL auto_increment,
racename varchar(255) NOT NULL default '',
started int(11) NOT NULL default '0',
deptime bigint(14) default NULL,
startlong int(11) NOT NULL default '0',
startlat int(11) NOT NULL default '0',
boattype varchar(255) default NULL,
closetime bigint(20) default NULL,
racetype int(11) default NULL,
firstpcttime bigint(20) default NULL,
depend_on int(11) default NULL,
qualifying_races text,
idchallenge text,
coastpenalty int(11) default '0',
bobegin bigint(20) default '0',
boend bigint(20) default '0',
maxboats int(11) default '0',
theme varchar(30) default NULL,
'vacfreq' tinyint(4) default 5,
PRIMARY KEY (idraces) |
|---|
races_instructions |
|
idraces int(11) default NULL,
instructions text,
flag int(11),
KEY (idraces) |
|---|
waypoints |
|
idwaypoint int(20) NOT NULL default '0',
latitude1 double default NULL,
longitude1 double default NULL,
latitude2 double default NULL,
longitude2 double default NULL,
libelle varchar(255) default NULL,
maparea int(11) default '10',
PRIMARY KEY (idwaypoint) |
|---|
races_waypoints |
|
idraces int(11) NOT NULL default '0',
wporder int(11) NOT NULL default '0',
idwaypoint int(20) default NULL,
laisser_au int(11) default NULL,
wptype varchar(32) default NULL,
PRIMARY KEY (idraces,wporder)
|
si dans table waypoints :
latitude1 longitude2
alors le wp est de type laisser_au
|}
- les utilisateurs renseignent actuellement directement en SQL et transmettent à Phille, libellé de l'IC, n°topic créé par Phille.
Commentaires Sterwenn
Icegate et nosail zone, on les code à la main. Icegate et nosail zone sont des "règles de controle" mises en oeuvre "en dehors/parallèle du moteur VLM", mais ne figurent pas dans le script de création d'une course en base de données.
bobegin et boend, ce sont des dates, exprimées comme deptime et closetime à la façon "secondes depuis Epoch": elle introduisent le début d'un blackout et la fin de celui-ci.
On peut par exemple imaginer qu'une course se déroulant autour du meridien 0 soit automatiquement mise en blackout entre 20UTC et 6UTC tous les jours, ça ferait un peu "il fait nuit donc on ne voit pas les concurents". La table "races" peut en mémoriser à la foi.
qualifying_races : liste des course qualificatives à une course (une seule suffit si plusieurs sont précisées).
depend_on : liste des courses qu'il faut obligatoirement avoir terminée (toutes) pour prendre part à une autre. ==> pas implémenté pour l'instant, le code n'est pas complêt et est en commentaire dans lib/phpcommon/functions.php.
A la course 002 aura la "001" en qualifying_races. Il suffit en fait de faire un chainage et que le qualifying_races de l'une mentionne uniquement la course précédente. Ainsi, pas besoin du depend_on, qui devrait quitter la base de données !
Ls courses "Kawa", et les "transquad" étaient comme ça : TRANSQUAD2 avait TRANSQUAD1 en qualif mais pour faire la multikawa, il fallait avoir fini une des 20071021 20071022 20071023 20071024 20071025. Donc, qualifying_races pour la multikawa valait "20071021 20071022 20071023 20071024 20071025"
idchallenge : pour classements au temps cumulé. (pas nécessaire, Droopy fait très bien ce travail).
maxboats : c'est pour faire des courses limitées en nombre d'inscrits (ex :le postlogue de Cap Istambul (80906), qui avait d'ailleurs la 80905 en qualifying_races)
Le theme : c'est pour forcer un theme pour tous les joueurs d'une course. Pour la 956, on a forcé l'utilisation du theme "oceanexpress_newyork_lorient". ==> Le Theme, c'est le nom d'une feuille de style pour looker l'interface.
Il y a maintenant : "vacfreq", qui indique la durée des vacations en minutes. (alors que le getinfo retourne l'info en secondes)
Et c'est tout dans la table "races", dont la description est la suivante : Dans la colonne "NULL", c'est YES si la valeur peut être omise, ou NO s'il faut forcément la fournir. Dans la colonne "Default" toute valeur non précisée dans le script prendra la valeur "par défaut" indiquée : tinyint, int ou bigint, c'est de l'entier (int(11) c'est sur 11 chiffres maxi) varchar, c'est de la chaine de caractères de longueur au maximum celle précisée (tout caractère du clavier, et attention aux "apostrophes", qui doivent être mis entre guillemets) text, c'est pareil, mais ça peut être un roman en terme de longueur.
[~]$ mysql -e "desc races"
+------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+----------------+
| idraces | int(11) | NO | PRI | NULL | auto_increment |
| racename | varchar(255) | NO | | | |
| started | int(11) | NO | | 0 | |
| deptime | bigint(14) | YES | | NULL | |
| startlong | int(11) | NO | | 0 | |
| startlat | int(11) | NO | | 0 | |
| boattype | varchar(255) | YES | | NULL | |
| closetime | bigint(20) | YES | | NULL | |
| racetype | int(11) | YES | | NULL | |
| firstpcttime | bigint(20) | YES | | NULL | |
| depend_on | int(11) | YES | | NULL | |
| qualifying_races | text | YES | | NULL | |
| idchallenge | text | YES | | NULL | |
| coastpenalty | int(11) | YES | | 0 | |
| bobegin | bigint(20) | YES | | 0 | |
| boend | bigint(20) | YES | | 0 | |
| maxboats | int(11) | YES | | 0 | |
| theme | varchar(30) | YES | | NULL | |
| vacfreq | tinyint(4) | YES | | 5 | |
+------------------+--------------+------+-----+---------+----------------+
améliorer les performances : on devrait supprimer la colonne depend_on (on l'utilisera sans doute jamais, en fait) et la colonne idchallenge un jour. Ne pas prendre la peine de les valoriser, donc.