Tuto Liblobby 2
Voilà un tuto qui va vous permettre de passer au niveau supérieur avec Liblobby. Il regroupe toutes les fonctions de cette lib, ainsi qu'une description de chacune d'elles. Pour ceux qui n'ont pas lu le premier tuto, LIEN.
Et pour toute questions, LIEN 2.
Sommaire :
I) - Gérer les users.
II) - Gérer les rooms.
III) - Envoyer des données.
I) - Gérer les users :
(c):
void LOBBY_SetOwnName(char *name) ;
Change le nom de la DS actuelle par name (31 caractères max + \0 final).
(c):
LPLOBBY_USER LOBBY_GetUserByID(unsigned short id) ;
Renvoi le nom au format LPLOBBY_USER de la DS numéro id. Renvoi 0 si la fonction échoue (par exemple, la DS numéro id n'existe pas).
(c):
USERID_MYSELF
Numéro id de la DS actuelle, pour récupérer le nom de la DS actuelle, faites LOBBY_GetUserByID(USERID_MYSELF) ;
(c):
LPLOBBY_USER LOBBY_GetUserByMAC(unsigned char *mac) ;
Renvoi le nom de la DS dont l'adresse MAC est mac. Renvoi 0 si la fonction échoue.
(c):
unsigned short LOBBY_GetNumberOfKnownUsers(void) ;
Renvoi le nombre de DS connues. (Si une DS se déconnecte, elle sera quand même comptée dans LOBBY_GetNumberOfKnownUsers(void) ; car elle est "connue" !) La DS actuelle n'est pas comptée.
(c):
int LOBBY_IsTimedOut(LPLOBBY_USER user) ;
Détermine si l'utilisateur user est "hors ligne" depuis un certain temps. Renvoi 0 si il est toujours actif, 1 sinon.
(c):
void LOBBY_UserResetTimeout(LPLOBBY_USER user) ;
Remise à zéro du temps depuis lequel l'utilisateur user n'est plus actif. (LOBBY_IsTimedOut(LPLOBBY_USER user) ; renvoi donc 0).
(c):
const char * LOBBY_GetUserName(LPLOBBY_USER user) ;
Renvoi une chaine de caractères contenant le nom de la DS user.
(c):
int LOBBY_UserIsAllSent(LPLOBBY_USER user);
Vérifie si tout à été transmit à l'utilisateur user. Renvoi 0 si il reste des données à envoyer, renvoi 1 si le dernier paquet a été envoyé (même si aucune confirmation n'a été reçu de la part de la DS cible.).
(c):
int LOBBY_UserIsStreamSent(LPLOBBY_USER user,unsigned short streamID) ;
Même chose que LOBBY_UserIsAllSent(LPLOBBY_USER user); mais sur un canal précis (ici la Lobby vérifie si tout à été envoyé à user sur le canal streamID).
II) - Gérer les rooms :
Une room est une chambre gérée par un leader dans laquelle peuvent se regrouper plusieurs utilisateurs (users).
(c):
void LOBBY_CreateRoom(char *name, int maxUsers, unsigned short gameCode, unsigned short gameVersion) ;
C'est la fonction qui permet de créer une chambre. Le leader est celui qui crée la chambre, donc celui qui utilise cette fonction. La chambre s'appelle name et peut accueillir jusqu'à maxUsers utilisateurs, leader inclut. gameCode et gameVersion vous permettent de personnaliser la room.
(c):
void LOBBY_SetRoomVisibility(int visible);
Ne peut être utilisé que par le leader de la chambre. Si visible vaut 1 : la chambre devient visible, si visible vaut 0, la chambre devient invisible (elle est cachée).
(c):
unsigned short LOBBY_GetNumberOfKnownRooms(void) ;
Renvoi le nombre de chambre connues (fonctionne de la même manière que LOBBY_GetNumberOfKnownUsers(void) ; ).
(c):
LPLOBBY_ROOM LOBBY_GetRoomByID(unsigned long id) ;
Renvoi le nom au format LPLOBBY_ROOM de la chambre numéro id.
(c):
ROOMID_MYROOM
Même principe que USERID_MYSELF (Faites LOBBY_GetRoomByID(ROOMID_MYROOM) ; ==> Renvoi 0 si l'utilisateur n'est pas dans une chambre, renvoi le nom de la chambre sinon.).
(c):
LPLOBBY_ROOM LOBBY_GetRoomByMAC(unsigned char *mac) ;
Renvoi la chambre au format LPLOBBY_ROOM dirigée par l'utilisateur dont l'adresse MAC est mac.
(c):
LPLOBBY_ROOM LOBBY_GetRoomByUser(LPLOBBY_USER user) ;
Renvoi la chambre au format LPLOBBY_ROOM dirigée par l'utilisateur user.
(c):
LPLOBBY_ROOM LOBBY_GetRoomByGame(LPLOBBY_ROOM anchor, unsigned short gameCode) ;
Renvoi la chambre numéro anchor (0 ou plus) au format LPLOBBY_ROOM dont le code jeu est gameCode.
(c):
void LOBBY_JoinRoom(LPLOBBY_ROOM room) ;
La DS actuelle joins la chambre room si celle-ci n'est pas pleine. (Il n'y a pas d'information directe comme quoi l'opération a réussie. Pour le savoir, il faut faire LOBBY_GetRoomByID(ROOMID_MYROOM) qui ne renvoi plus 0 si l'utilisateur a rejoins la chambre.)
(c):
void LOBBY_LeaveRoom(void) ;
La DS actuelle quitte la chambre dans laquelle il se trouve. Ne renvoi rien car n'échoue jamais.
(c):
unsigned short LOBBY_GetUsercountInRoom(LPLOBBY_ROOM room) ;
Renvoi le nombre d'utilisateurs actuellement dans la chambre room.
(c):
unsigned short LOBBY_GetMaxUsercountInRoom(LPLOBBY_ROOM room) ;
Renvoi le nombre maximum d'utilisateur pouvant se connecter à la chambre room (leader inclut).
(c):
LPLOBBY_USER LOBBY_GetRoomUserBySlot(LPLOBBY_ROOM room, unsigned char slot) ;
Renvoi le nom de l'utilisateur numéro slot qui se trouve dans la chambre room. (de 0 à LOBBY_GetMaxUsercountInRoom(LPLOBBY_ROOM room) - 1).
(c):
char* LOBBY_GetRoomName(LPLOBBY_ROOM room) ;
Renvoi une chaîne de caractère contenant le nom de la chambre room.
(c):
unsigned short LOBBY_GetRoomGameCode(LPLOBBY_ROOM room) ;
Renvoi le code jeu de la chambre room.
(c):
unsigned short LOBBY_GetRoomGameVersion(LPLOBBY_ROOM room) ;
Renvoi la version du jeu de la chambre room.
III) - Envoyer des données.
(c):
void LOBBY_SetStreamHandler(unsigned short streamID, LOBBY_STREAMHANDLER_PROC callback) ;
Créer une nouvelle fonction qui reçoit des données sur le canal streamID (Voir le premier tuto).
(c):
void LOBBY_SendToUser(LPLOBBY_USER user,unsigned short stream, unsigned char *data, int length) ;
Envoi length caractère de la chaîne data ainsi que le nombre length à l'utilisateur user sur le canal stream.
(c):
void LOBBY_SendToRoom(LPLOBBY_ROOM room, unsigned short stream, unsigned char *data, int length) ;
Même chose que LOBBY_SendToUser(LPLOBBY_USER user,unsigned short stream, unsigned char *data, int length) ; mais envoi les données à toutes les DS présentes dans la chambre room si la DS actuelle se trouve aussi dans cette room, envoi le données seulement au leader de la chambre si la DS actuelle n'est pas dans la chambre room.
(c):
void LOBBY_SendToAll(unsigned short stream, unsigned char *data, int length) ;
Même chose que LOBBY_SendToUser(LPLOBBY_USER user,unsigned short stream, unsigned char *data, int length) ; mais envoi les données à toutes le DS connues.
(c):
void IPC_WaitForAllSent(void) ;
Attend que toutes les données soient envoyées.
Voilà, vous connaissez maintenant toutes les fonctions présentes dans Liblobby. Vous allez pouvoir faire pleins d'homebrews tip top pour jouer en famille ou entre copains .
Bonne chance !!!
RE-PUB : RE-Téléchargez DS2DS, parce que vous le RE-valez bien !