Dev NDS Kramateur

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, LIENWink

 

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 :

Code
(c):
void     LOBBY_SetOwnName(char *name) ;

Change le nom de la DS actuelle par name (31 caractères max + \0 final).
 

Code
(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).
 

Code
(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) ;
 

Code
(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.
 

Code
(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.
 

Code
(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.
 

Code
(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).
 

Code
(c):
const char *     LOBBY_GetUserName(LPLOBBY_USER user) ;

Renvoi une chaine de caractères contenant le nom de la DS user.
 

Code
(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.).
 

Code
(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).

Code
(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.
 

Code
(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).
 

Code
(c):
unsigned short     LOBBY_GetNumberOfKnownRooms(void) ;

Renvoi le nombre de chambre connues (fonctionne de la même manière que LOBBY_GetNumberOfKnownUsers(void) ; ).
 

Code
(c):
LPLOBBY_ROOM     LOBBY_GetRoomByID(unsigned long id) ;

Renvoi le nom au format LPLOBBY_ROOM de la chambre numéro id.
 

Code
(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.).
 

Code
(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.
 

Code
(c):
LPLOBBY_ROOM    LOBBY_GetRoomByUser(LPLOBBY_USER user) ;

Renvoi la chambre au format LPLOBBY_ROOM dirigée par l'utilisateur user.
 

Code
(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.
 

Code
(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.)
 

Code
(c):
void    LOBBY_LeaveRoom(void) ;

La DS actuelle quitte la chambre dans laquelle il se trouve. Ne renvoi rien car n'échoue jamais.
 

Code
(c):
unsigned short	    LOBBY_GetUsercountInRoom(LPLOBBY_ROOM room) ;

Renvoi le nombre d'utilisateurs actuellement dans la chambre room.
 

Code
(c):
unsigned short	    LOBBY_GetMaxUsercountInRoom(LPLOBBY_ROOM room) ;

Renvoi le nombre maximum d'utilisateur pouvant se connecter à la chambre room (leader inclut).
 

Code
(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).
 

Code
(c):
char*    LOBBY_GetRoomName(LPLOBBY_ROOM room) ;

Renvoi une chaîne de caractère contenant le nom de la chambre room.
 

Code
(c):
unsigned short	    LOBBY_GetRoomGameCode(LPLOBBY_ROOM room) ;

Renvoi le code jeu de la chambre room.
 

Code
(c):
unsigned short	    LOBBY_GetRoomGameVersion(LPLOBBY_ROOM room) ;

Renvoi la version du jeu de la chambre room.


III) - Envoyer des données.

Code
(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).
 

Code
(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.
 

Code
(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.
 

Code
(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.
 

Code
(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  Cheesy.
Bonne chance !!!

RE-PUB : RE-Téléchargez DS2DS, parce que vous le RE-valez bien !

Rechercher dans le site

© 2008 Tous droits réservés.