]> git.mxchange.org Git - quix0rs-blobwars.git/blobdiff - src/CEngine.cpp
Added .gitignore to ignore certain files + fixed access rights on Makefile* as
[quix0rs-blobwars.git] / src / CEngine.cpp
index ac9bb8ce37cfbef6aa6badf6f3600818b7723640..d1723aab14f883800b8fd099e87f9228be753456 100644 (file)
@@ -155,14 +155,6 @@ void Engine::addKeyEvent()
 
 void Engine::getInput()
 {
-       SDL_GetMouseState(&mouseX, &mouseY);
-
-       // Scale from window coordinates to graphics coordinates
-       int w, h;
-       SDL_GetWindowSize(graphics.window, &w, &h);
-       mouseX = mouseX * 640 / w;
-       mouseY = mouseY * 480 / h;
-
        while (SDL_PollEvent(&event))
        {
                switch (event.type)
@@ -184,6 +176,11 @@ void Engine::getInput()
                                if (event.button.button == SDL_BUTTON_RIGHT) mouseRight = 0;
                                break;
 
+                       case SDL_MOUSEMOTION:
+                               mouseX = event.motion.x;
+                               mouseY = event.motion.y;
+                               break;
+
                        case SDL_KEYDOWN:
                                
                                if (waitForButton)
@@ -275,6 +272,35 @@ void Engine::getInput()
                                joykeyFire = false;
                                break;
 
+                       case SDL_JOYHATMOTION:
+                               switch (event.jhat.value) {
+                               case SDL_HAT_CENTERED:
+                                       joyX = 0,      joyY = 0;      break;
+                               case SDL_HAT_LEFT:
+                                       joyX = -32768, joyY = 0;      break;
+                               case SDL_HAT_LEFTUP:
+                                       joyX = -32768, joyY = -32768; break;
+                               case SDL_HAT_UP:
+                                       joyX = 0,      joyY = -32768; break;
+                               case SDL_HAT_RIGHTUP:
+                                       joyX = 32767,  joyY = -32768; break;
+                               case SDL_HAT_RIGHT:
+                                       joyX = 32767,  joyY = 0;      break;
+                               case SDL_HAT_RIGHTDOWN:
+                                       joyX = 32767,  joyY = 32767;  break;
+                               case SDL_HAT_DOWN:
+                                       joyX = 0,      joyY = 32767;  break;
+                               case SDL_HAT_LEFTDOWN:
+                                       joyX = -32768, joyY = 32767;  break;
+                               }
+
+                               if (joyX != joyprevX)
+                                       joykeyX = joyprevX = joyX;
+                               if (joyY != joyprevY)
+                                       joykeyY = joyprevY = joyY;
+
+                               break;
+
                        case SDL_WINDOWEVENT:
                                if (event.window.event == SDL_WINDOWEVENT_FOCUS_LOST)
                                        paused = true;
@@ -296,9 +322,12 @@ int Engine::getMouseY() const
        return mouseY;
 }
 
-void Engine::setMouse(int x, int y)
+void Engine::moveMouse(int dx, int dy)
 {
-       SDL_WarpMouseInWindow(graphics.window, x, y);
+       mouseX += dx;
+       mouseY += dy;
+       Math::limitInt(&mouseX, 0, 640);
+       Math::limitInt(&mouseY, 0, 480);
 }
 
 bool Engine::userAccepts()
@@ -393,14 +422,12 @@ bool Engine::unpack(const char *filename, int fileType)
                        snprintf(tempPath, sizeof tempPath, "%smusic.mod", userHomeDirectory);
                        fp = fopen(tempPath, "wb");
                }
-
-               if (fileType == PAK_TAGS)
+               else if (fileType == PAK_TAGS)
                {
                        snprintf(tempPath, sizeof tempPath, "%smusic.tags", userHomeDirectory);
                        fp = fopen(tempPath, "wb");
                }
-
-               if (fileType == PAK_FONT)
+               else if (fileType == PAK_FONT)
                {
                        snprintf(tempPath, sizeof tempPath, "%sfont.ttf", userHomeDirectory);
                        fp = fopen(tempPath, "wb");
@@ -920,20 +947,18 @@ bool Engine::loadDefines()
        if (!loadData("data/defines.h"))
                return false;
 
-       char *token = strtok((char*)dataBuffer, "\n");
-
-       Data *data;
+       strtok((char*)dataBuffer, "\n");
 
        while (true)
        {
-               token = strtok(NULL, "\n");
+               char *token = strtok(NULL, "\n");
                if (!token)
                        break;
 
                if (!strstr(token, "/*"))
                {
                        sscanf(token, "%*s %s %[^\n\r]", string[0], string[1]);
-                       data = new Data();
+                       Data *data = new Data();
                        data->set(string[0], string[1], 1, 1);
                        defineList.add(data);
                }