Chargement...



Cette page ne s'affiche pas ? Cliquez ici
 
Retour au site zeldaroth.fr
le site officiel de Zelda ROTH
 
 FAQFAQ RangsRangs   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Support Joystick

 
Poster un nouveau sujet   Répondre au sujet    zeldaroth.fr Index du Forum -> Zelda ROTH
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
linuxprocess
Spectre
Spectre



Inscrit le: 24 Aoû 2017

Messages: 2

MessagePosté le: Jeu Aoû 24, 2017 22:25    Sujet du message: Support Joystick Répondre en citant

Hello,
On va dire que je suis du genre développeur pressé Smile
Ancien fan de zelda sur snes, je suis tombé avec enthousiasme sur ce site.
J'ai donc commencé à me lancer dans ces nouvelles aventures de Link (je n'en suis qu'au tout début !).
J'ai trouvé un peu dommage de ne pas pouvoir utiliser mon joypad (xbox360 tres bien supporté sous Linux).
Du coup, j'ai codé un patch rapide.

Je le poste ici, à toute fin utile, sans aucune garantie Smile

Il est possible que ca soit directement utilisable pour les autres jeux ... j'ai même pas regardé Rolling Eyes

Moi, pour le moment, ca me suffit.

Au passage : merci pour le travail réalisé !

A+

Code:

diff -uw srcorig/Keyboard.cpp src/Keyboard.cpp
--- srcorig/Keyboard.cpp        2009-02-18 23:30:03.000000000 +0100
+++ src/Keyboard.cpp    2017-08-23 12:19:43.946258781 +0200
@@ -69,16 +69,68 @@
 int Keyboard::getMode() {return mode;}
 void Keyboard::setMode(int i) {mode=i;}
 
+/* joystick */
+
+/* configuration ideale(?) pour manette XBOX */
+unsigned int joyconfig[]={
+  SDLK_w,     /* bouton A */
+  SDLK_c,     /* bouton B */
+  SDLK_SPACE, /* bouton X */
+  SDLK_x,     /* bouton Y */
+  SDLK_LSHIFT,/* bouton L */
+  SDLK_LCTRL, /* bouton R */
+  SDLK_p,     /* bouton back */
+  SDLK_RETURN,/* bouton start */
+  SDLK_F1     /* bouton middle */
+};
+
 int Keyboard::gererClavier() {
+
+  keys = SDL_GetKeyState(NULL);
     while (SDL_PollEvent(&event)) {
         switch (event.type) {
             case SDL_QUIT : return -1;
             case SDL_KEYDOWN :
                 if (pollKey(event) == -1) return -1;
                 break;
+            case SDL_JOYAXISMOTION:
+                 if(event.jaxis.axis == 0) // horizontal
+                 {       if(event.jaxis.value<-10000)
+                    {  keys[SDLK_LEFT]=1;
+                      keys[SDLK_RIGHT]=0;
+                    }
+                 else if(event.jaxis.value>10000)
+                    {  keys[SDLK_LEFT]=0;
+                      keys[SDLK_RIGHT]=1;
+                    }
+                 else
+                    {  keys[SDLK_LEFT]=0;
+                      keys[SDLK_RIGHT]=0;
+                    }
+                 }
+                 if(event.jaxis.axis == 1) // vertical
+                  {    if(event.jaxis.value<-10000)
+                    {  keys[SDLK_UP]=1;
+                      keys[SDLK_DOWN]=0;
+                    }
+                 else if(event.jaxis.value>10000)
+                    {  keys[SDLK_UP]=0;
+                      keys[SDLK_DOWN]=1;
+                    }
+                 else
+                    {  keys[SDLK_UP]=0;
+                      keys[SDLK_DOWN]=0;
+                    }
+                 }
+                 break;
+            case SDL_JOYBUTTONDOWN:
+                  keys[joyconfig[event.jbutton.button]]=1;
+                               break;
+            case SDL_JOYBUTTONUP:
+                  keys[joyconfig[event.jbutton.button]]=0;
+                               break;
         }
     }
-    keys = SDL_GetKeyState(NULL);
     pollKeys(keys);
     
     return 0;
diff -uw srcorig/main.cpp src/main.cpp
--- srcorig/main.cpp    2008-12-10 20:10:20.000000000 +0100
+++ src/main.cpp        2017-08-23 10:47:17.804232513 +0200
@@ -26,6 +26,14 @@
     atexit(SDL_Quit);
     //if(SDL_InitSubSystem(SDL_INIT_AUDIO) == -1) *SOUND = false;
 
+    static SDL_Joystick *js=NULL;
+
+    if( SDL_InitSubSystem(SDL_INIT_JOYSTICK) != -1
+        && SDL_NumJoysticks()
+        && (js=SDL_JoystickOpen(0)) )
+       printf("Joystick 0 activated\n");
+
+
     SDL_WM_SetCaption("Return of the Hylian",NULL);
     SDL_Surface* icon = SDL_LoadBMP("data/images/logos/triforce.ico");
     SDL_SetColorKey(icon,SDL_SRCCOLORKEY,SDL_MapRGB(icon->format,0,0,0));
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Vincent
Administrateur
Administrateur
Primé d'or
Primé d'or
Héros
Héros



Inscrit le: 05 Oct 2006
Age: 39

Messages: 4436

MessagePosté le: Dim Aoû 27, 2017 14:58    Sujet du message: Répondre en citant

Bonjour,

beau boulot, ça semble plutôt pas mal !


Par contre pour info la manette xbox (et d'autres) sont déjà gérées par la dernière version du jeu mais que je ne l'ai pour le moment compilée que pour windows (parce que pas le temps ^^)
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Envoyer un e-mail Visiter le site web de l'utilisateur MSN Messenger
linuxprocess
Spectre
Spectre



Inscrit le: 24 Aoû 2017

Messages: 2

MessagePosté le: Lun Aoû 28, 2017 22:03    Sujet du message: Répondre en citant

Bonjour,

Merci, mais ca reste du quick'n dirty, je suis sûr que tu as fais mieux Smile

Il y a moyen de suivre les mises à jour des sources dans un repos publique ?
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Vincent
Administrateur
Administrateur
Primé d'or
Primé d'or
Héros
Héros



Inscrit le: 05 Oct 2006
Age: 39

Messages: 4436

MessagePosté le: Jeu Aoû 31, 2017 18:46    Sujet du message: Répondre en citant

Hélas non, je gère mes sources suivant la célèbre méthodologie dite "à l'arrache" ^^ Tu peux juste récupérer la dernière version sur le site.

Un jour je verrai à me motiver pour mettre ça sur un GIT, mais ce n'est pas fait pour le moment.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Envoyer un e-mail Visiter le site web de l'utilisateur MSN Messenger
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    zeldaroth.fr Index du Forum -> Zelda ROTH Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com