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)
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)
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;
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()
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");
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);
}