Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 50876 Details for
Bug 81429
Project Starfighter - add joystick support
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
Patch adding joystick support
starfighter-joystick.diff (text/plain), 25.09 KB, created by
Robert Schuster
on 2005-02-09 16:29:53 UTC
(
hide
)
Description:
Patch adding joystick support
Filename:
MIME Type:
Creator:
Robert Schuster
Created:
2005-02-09 16:29:53 UTC
Size:
25.09 KB
patch
obsolete
>diff -uNr starfighter-orig/code/comms.cpp starfighter-1.1/code/comms.cpp >--- starfighter-orig/code/comms.cpp 2005-02-09 18:25:54.000000000 +0100 >+++ starfighter-1.1/code/comms.cpp 2005-02-09 19:45:06.000000000 +0100 >@@ -131,7 +131,7 @@ > > void doComms(SDL_Surface *comms) > { >- if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL])) >+ if (IS_FIRE_PRESSED()) > { > if (engine.commsSection == 0) > { >@@ -140,7 +140,7 @@ > if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, 170, 180 + (i * 60), 430, 50)) > { > createMissionDetailSurface(comms, i); >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0; >+ RESET_FIRE(); > } > } > } >@@ -149,7 +149,7 @@ > if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, 170, 440, 160, 20)) > { > createCommsSurface(comms); >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0; >+ RESET_FIRE(); > } > } > } >diff -uNr starfighter-orig/code/events.cpp starfighter-1.1/code/events.cpp >--- starfighter-orig/code/events.cpp 2005-02-09 18:25:54.000000000 +0100 >+++ starfighter-1.1/code/events.cpp 2005-02-09 19:35:44.000000000 +0100 >@@ -29,7 +29,7 @@ > { > getPlayerInput(); > >- if (engine.keyState[SDLK_ESCAPE]) >+ if (IS_QUIT_PRESSED()) > { > engine.paused = 0; > engine.done = 1; >@@ -37,10 +37,10 @@ > return 1; > } > >- if (engine.keyState[SDLK_p]) >+ if (IS_PAUSE_PRESSED()) > { > engine.paused = 0; >- engine.keyState[SDLK_p] = 0; >+ RESET_PAUSE(); > } > > return 0; >diff -uNr starfighter-orig/code/game.cpp starfighter-1.1/code/game.cpp >--- starfighter-orig/code/game.cpp 2005-02-09 18:25:54.000000000 +0100 >+++ starfighter-1.1/code/game.cpp 2005-02-09 19:30:57.000000000 +0100 >@@ -137,7 +137,7 @@ > // Default to no aliens dead... > engine.allAliensDead = 0; > >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = engine.keyState[SDLK_SPACE] = 0; >+ RESET_INVOKE(); > flushInput(); > > while (engine.done != 1) >diff -uNr starfighter-orig/code/globals.cpp starfighter-1.1/code/globals.cpp >--- starfighter-orig/code/globals.cpp 2005-02-09 18:25:54.000000000 +0100 >+++ starfighter-1.1/code/globals.cpp 2005-02-10 00:49:57.158338440 +0100 >@@ -48,9 +48,6 @@ > > engine.commsSection = 0; > >- for (int i = 0 ; i < 350 ; i++) >- engine.keyState[i] = 0; >- > engine.eventTimer = 0; > engine.counter2 = 0; > engine.timeTaken = 0; >diff -uNr starfighter-orig/code/init.cpp starfighter-1.1/code/init.cpp >--- starfighter-orig/code/init.cpp 2005-02-09 18:25:54.000000000 +0100 >+++ starfighter-1.1/code/init.cpp 2005-02-10 01:16:00.489675952 +0100 >@@ -88,9 +88,9 @@ > graphics.drawString("Project: Starfighter will now exit", -1, 450, FONT_WHITE); > graphics.drawString("Press Space to continue", -1, 475, FONT_WHITE); > >- engine.keyState[SDLK_SPACE] = 0; >+ RESET_INVOKE(); > >- while (!engine.keyState[SDLK_SPACE]) >+ while (!IS_INVOKE_PRESSED()) > { > getPlayerInput(); > graphics.updateScreen(); >@@ -154,7 +154,7 @@ > #endif > > /* Initialize the SDL library */ >- if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO) < 0) { >+ if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO|SDL_INIT_JOYSTICK) < 0) { > printf("Couldn't initialize SDL: %s\n", SDL_GetError()); > exit(1); > } >@@ -204,7 +204,18 @@ > } > > SDL_ShowCursor(SDL_DISABLE); >- SDL_EventState(SDL_MOUSEMOTION, SDL_DISABLE); >+ >+ int num = SDL_NumJoysticks(); >+ if(num > 0) { >+ for(int i=0 ; i< num ; i++) { >+ printf("Opening Joystick %i: %s\n", i, SDL_JoystickOpen(i) ? "succeeded" : "failed"); >+ } >+ SDL_JoystickEventState(SDL_ENABLE); >+ } else { >+ printf("No Joysticks available.\n"); >+ } >+ >+ > } > > /* >@@ -214,7 +225,13 @@ > */ > void cleanUp() > { >+ > printf("Cleaning Up...\n"); >+ >+ /* Joysticks are freed implicitly, as we >+ * have not stored them anywhere. >+ */ >+ > printf("Freeing Graphics\n"); > graphics.freeGraphics(); > printf("Freeing Background\n"); >diff -uNr starfighter-orig/code/intermission.cpp starfighter-1.1/code/intermission.cpp >--- starfighter-orig/code/intermission.cpp 2005-02-09 18:25:54.000000000 +0100 >+++ starfighter-1.1/code/intermission.cpp 2005-02-09 19:47:48.000000000 +0100 >@@ -283,7 +283,7 @@ > if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, r.x, r.y, systemPlanet[planet].image->w, systemPlanet[planet].image->h)) > { > graphics.drawString(systemPlanet[planet].name, -1, 545, FONT_WHITE); >- if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL])) >+ if (IS_FIRE_PRESSED()) > { > if (currentGame.system == 0) > { >@@ -299,7 +299,7 @@ > } > > rtn = 1; >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0; >+ RESET_FIRE(); > } > } > >@@ -408,7 +408,7 @@ > > void showOptions(SDL_Surface *optionsSurface) > { >- if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL])) >+ if (IS_FIRE_PRESSED()) > { > if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, 417, 172, 45, 22)) > currentGame.useSound = 1; >@@ -469,7 +469,7 @@ > if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, 417, 322, 100, 22)) > { > Math::wrapChar(&(++currentGame.autoSaveSlot), -1, 4); >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0; >+ RESET_FIRE(); > } > > createOptions(optionsSurface); >@@ -536,7 +536,7 @@ > graphics.shape[FACE_KLINE] = loadImage("gfx/face_kline.png"); > > engine.done = 0; >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0; >+ RESET_FIRE(); > engine.ssx = engine.ssy = 0; > > SDL_Rect r; >@@ -614,7 +614,8 @@ > unsigned long frameLimit = SDL_GetTicks(); > > flushInput(); >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = engine.keyState[SDLK_SPACE] = 0; >+ RESET_FIRE(); >+ RESET_SWITCH_PLANET_MOVEMENT(); > engine.done = 0; > > while (!engine.done) >@@ -698,10 +699,10 @@ > break; > > case 1: >- if (engine.keyState[SDLK_SPACE]) >+ if (IS_SWITCH_PLANET_MOVEMENT_PRESSED()) > { > movePlanets = !movePlanets; >- engine.keyState[SDLK_SPACE] = 0; >+ RESET_SWITCH_PLANET_MOVEMENT(); > } > > if (movePlanets) >@@ -834,17 +835,18 @@ > graphics.blit(iconInfo[11].image, (int)iconInfo[i].x, 545); > } > >- if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL])) >+ if (IS_FIRE_PRESSED()) > { > redrawBackGround = 1; > section = i; >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0; >+ RESET_FIRE(); > } > } > } > } > >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = engine.keyState[SDLK_SPACE] = 0; >+ RESET_FIRE(); >+ RESET_SWITCH_PLANET_MOVEMENT(); > doCursor(); > > // Limit us to 60 frame a second >diff -uNr starfighter-orig/code/loadSave.cpp starfighter-1.1/code/loadSave.cpp >--- starfighter-orig/code/loadSave.cpp 2005-02-09 18:25:54.000000000 +0100 >+++ starfighter-1.1/code/loadSave.cpp 2005-02-09 19:31:36.000000000 +0100 >@@ -147,7 +147,7 @@ > > // Recall to update the save slots... (lazy, yes) > initSaveSlots(); >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0; >+ RESET_FIRE(); > } > > void createSavesSurface(SDL_Surface *savesSurface, signed char clickedSlot) >@@ -197,7 +197,7 @@ > break; > } > >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0; >+ RESET_FIRE(); > } > > /* >@@ -215,7 +215,7 @@ > > int clickedSlot = -1; > >- if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL])) >+ if (IS_FIRE_PRESSED()) > { > for (int i = 0 ; i < 5 ; i++) > { >diff -uNr starfighter-orig/code/misc.cpp starfighter-1.1/code/misc.cpp >--- starfighter-orig/code/misc.cpp 2005-02-09 18:25:54.000000000 +0100 >+++ starfighter-1.1/code/misc.cpp 2005-02-10 00:49:32.538081288 +0100 >@@ -372,7 +372,7 @@ > if (player.shield < 1) > return; > >- if ((!engine.keyState[SDLK_SPACE]) && (player.weaponType[1] == W_LASER) && (engine.eventTimer % 8 == 1)) >+ if ((!IS_CHARGE_PRESSED()) && (player.weaponType[1] == W_LASER) && (engine.eventTimer % 8 == 1)) > Math::limitChar(&(--player.ammo[1]), 1, 255); > > if ((engine.eventTimer < 30) && (player.shield <= engine.lowShield)) >diff -uNr starfighter-orig/code/missions.cpp starfighter-1.1/code/missions.cpp >--- starfighter-orig/code/missions.cpp 2005-02-09 18:25:54.000000000 +0100 >+++ starfighter-1.1/code/missions.cpp 2005-02-09 19:34:37.000000000 +0100 >@@ -787,13 +787,13 @@ > > flushInput(); > engine.done = 0; >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0; >+ RESET_FIRE(); > > while (true) > { > graphics.updateScreen(); > getPlayerInput(); >- if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL])) >+ if (IS_FIRE_PRESSED()) > break; > } > >@@ -905,13 +905,13 @@ > > flushInput(); > engine.done = 0; >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0; >+ RESET_FIRE(); > > while (true) > { > graphics.updateScreen(); > getPlayerInput(); >- if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL])) >+ if (IS_FIRE_PRESSED()) > break; > } > } >diff -uNr starfighter-orig/code/player.cpp starfighter-1.1/code/player.cpp >--- starfighter-orig/code/player.cpp 2005-02-09 18:25:54.000000000 +0100 >+++ starfighter-1.1/code/player.cpp 2005-02-10 01:29:13.017193456 +0100 >@@ -78,10 +78,10 @@ > { > if (player.shield > 0) > { >- if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL])) >+ if (IS_FIRE_PRESSED()) > fireBullet(&player, 0); > >- if ((engine.keyState[SDLK_SPACE]) && (player.weaponType[1] != W_NONE)) >+ if (IS_CHARGE_PRESSED() && (player.weaponType[1] != W_NONE)) > { > if ((player.weaponType[1] != W_CHARGER) && (player.weaponType[1] != W_LASER) && (player.ammo[1] > 0)) > { >@@ -105,7 +105,7 @@ > > if (player.weaponType[1] == W_CHARGER) > { >- if (engine.keyState[SDLK_SPACE]) >+ if (IS_CHARGE_PRESSED()) > { > Math::limitChar(&(++player.ammo[1]), 0, 200); > } >@@ -117,7 +117,7 @@ > } > } > >- if ((engine.keyState[SDLK_LSHIFT]) || (engine.keyState[SDLK_RSHIFT])) >+ if (IS_FIRE_PRESSED()) > { > if (player.ammo[0] < 1) > { >@@ -190,39 +190,39 @@ > } > } > >- engine.keyState[SDLK_LSHIFT] = engine.keyState[SDLK_RSHIFT] = 0; >+ RESET_FIRE(); > } > > Math::limitChar(&--player.reload[0], 0, 999); > Math::limitChar(&--player.reload[1], 0, 999); > >- if (engine.keyState[SDLK_UP]) >+ if (IS_UP_PRESSED()) > { > player.y -= player.speed; > engine.ssy += 0.1; > } > >- if (engine.keyState[SDLK_DOWN]) >+ if (IS_DOWN_PRESSED()) > { > player.y += player.speed; > engine.ssy -= 0.1; > } > >- if (engine.keyState[SDLK_LEFT]) >+ if (IS_LEFT_PRESSED()) > { > player.x -= player.speed; > engine.ssx += 0.1; > player.face = 1; > } > >- if (engine.keyState[SDLK_RIGHT]) >+ if (IS_RIGHT_PRESSED()) > { > player.x += player.speed; > engine.ssx -= 0.1; > player.face = 0; > } > >- if (engine.keyState[SDLK_ESCAPE]) >+ if (IS_QUIT_PRESSED()) > { > if ((engine.done == 0) && (engine.gameSection == SECTION_GAME) && (currentMission.remainingObjectives1 == 0)) > { >@@ -232,20 +232,20 @@ > } > } > >- if (engine.keyState[SDLK_p]) >+ if (IS_PAUSE_PRESSED()) > { > engine.paused = 1; >- engine.keyState[SDLK_p] = 0; >+ RESET_PAUSE(); > } > >- if ((engine.keyState[SDLK_t]) && (currentGame.area != 10)) >+ if (IS_TIMER_PRESSED() && (currentGame.area != 10)) > { > if (engine.targetArrowTimer == -1) > engine.targetArrowTimer = 0; > else > engine.targetArrowTimer = -1; > >- engine.keyState[SDLK_t] = 0; >+ RESET_TIMER(); > } > > if ((engine.missionCompleteTimer == 0) && (engine.targetArrowTimer == -1)) >@@ -304,7 +304,7 @@ > playSound(SFX_EXPLOSION); > } > >- engine.keyState[SDLK_UP] = engine.keyState[SDLK_DOWN] = engine.keyState[SDLK_LEFT] = engine.keyState[SDLK_RIGHT] = 0; >+ RESET_STEER(); > if ((rand() % 3) == 0) > addExplosion(player.x + Math::rrand(-10, 10), player.y + Math::rrand(-10, 10), E_BIG_EXPLOSION); > if (player.shield == -99) >@@ -334,44 +334,84 @@ > > void flushInput() > { >- for (int i = 0 ; i < 350 ; i++) >- engine.keyState[i] = 0; >- > while (SDL_PollEvent(&engine.event)){} > } > > void getPlayerInput() > { >- if (engine.gameSection == SECTION_INTERMISSION) >- { >- // Get the current mouse position >- int x, y; >- SDL_GetMouseState(&x, &y); >- engine.cursor_x = x; >- engine.cursor_y = y; >- } >- >- if (SDL_PollEvent(&engine.event)) >+ while (SDL_PollEvent(&engine.event)) > { > switch (engine.event.type) > { > case SDL_QUIT: > exit(0); > break; >- >+ case SDL_MOUSEMOTION: >+ /* Mouse motion reacts only between missions. */ >+ if(engine.gameSection == SECTION_INTERMISSION) { >+ engine.cursor_x += engine.event.motion.xrel; >+ engine.cursor_y += engine.event.motion.yrel; >+ } >+ break; >+ case SDL_MOUSEBUTTONUP: > case SDL_MOUSEBUTTONDOWN: >- if (engine.gameSection == SECTION_INTERMISSION) >- { >- if (engine.event.button.button == SDL_BUTTON_LEFT) engine.keyState[SDLK_LCTRL] = 1; >- if (engine.event.button.button == SDL_BUTTON_RIGHT) engine.keyState[SDLK_SPACE] = 1; >+ // Treats mouse as input events. >+ switch(engine.event.button.button) { >+ case SDL_BUTTON_LEFT: >+ engine.playerControl.fire = engine.event.button.state;; >+ break; >+ case SDL_BUTTON_RIGHT: >+ engine.playerControl.charge = engine.event.button.state; >+ break; >+ case SDL_BUTTON_WHEELUP: >+ // Allows menu control. >+ engine.playerControl.up = engine.event.button.state; >+ break; >+ case SDL_BUTTON_WHEELDOWN: >+ // Allows menu control. >+ engine.playerControl.down = engine.event.button.state; >+ break; > } > break; >- > case SDL_KEYDOWN: > if (engine.gameSection == SECTION_TITLE) > addKeyEvent(SDL_GetKeyName(engine.event.key.keysym.sym)); >- >- engine.keyState[engine.event.key.keysym.sym] = 1; >+ >+ switch(engine.event.key.keysym.sym) { >+ case SDLK_LEFT: >+ engine.playerControl.left = 1; >+ break; >+ case SDLK_RIGHT: >+ engine.playerControl.right = 1; >+ break; >+ case SDLK_UP: >+ engine.playerControl.up = 1; >+ break; >+ case SDLK_DOWN: >+ engine.playerControl.down = 1; >+ break; >+ case SDLK_LCTRL: >+ case SDLK_RCTRL: >+ engine.playerControl.fire = 1; >+ break; >+ case SDLK_SPACE: >+ engine.playerControl.charge = 1; >+ break; >+ case SDLK_ESCAPE: >+ engine.playerControl.quit = 1; >+ break; >+ case SDLK_t: >+ engine.playerControl.timer = 1; >+ break; >+ case SDLK_p: >+ engine.playerControl.pause = 1; >+ break; >+ case SDLK_RETURN: >+ engine.playerControl.invoke = 1; >+ break; >+ default: >+ break; >+ } > > if (engine.gameSection != SECTION_GAME) > engine.paused = 0; >@@ -379,20 +419,104 @@ > break; > > case SDL_KEYUP: >- if (engine.event.key.keysym.sym != SDLK_p) >- engine.keyState[engine.event.key.keysym.sym] = 0; >+ switch(engine.event.key.keysym.sym) { >+ case SDLK_LEFT: >+ engine.playerControl.left = 0; >+ break; >+ case SDLK_RIGHT: >+ engine.playerControl.right = 0; >+ break; >+ case SDLK_UP: >+ engine.playerControl.up = 0; >+ break; >+ case SDLK_DOWN: >+ engine.playerControl.down = 0; >+ break; >+ case SDLK_LCTRL: >+ case SDLK_RCTRL: >+ engine.playerControl.fire = 0; >+ break; >+ case SDLK_SPACE: >+ engine.playerControl.charge = 0; >+ break; >+ case SDLK_ESCAPE: >+ engine.playerControl.quit = 0; >+ break; >+ case SDLK_t: >+ engine.playerControl.timer = 0; >+ break; >+ case SDLK_p: >+ engine.playerControl.pause = 0; >+ break; >+ case SDLK_RETURN: >+ engine.playerControl.invoke = 0; >+ break; >+ default: >+ break; >+ } > break; >- >- default: >+ case SDL_JOYAXISMOTION: >+ switch(engine.event.jaxis.axis) { >+ case 0: >+ if(engine.event.jaxis.value < -AXIS_THRESHOLD) { >+ engine.playerControl.left = 1; >+ } else if(engine.event.jaxis.value > AXIS_THRESHOLD) { >+ engine.playerControl.right = 1; >+ } else { >+ engine.playerControl.left = >+ engine.playerControl.right = 0; >+ } >+ break; >+ case 1: >+ if(engine.event.jaxis.value < -AXIS_THRESHOLD) { >+ engine.playerControl.up = 1; >+ } else if(engine.event.jaxis.value > AXIS_THRESHOLD) { >+ engine.playerControl.down = 1; >+ } else { >+ engine.playerControl.up = >+ engine.playerControl.down = 0; >+ } >+ break; >+ default: >+ break; >+ } > break; >+ case SDL_JOYBUTTONUP: >+ case SDL_JOYBUTTONDOWN: >+ switch(engine.event.jbutton.button) { >+ case 0: >+ engine.playerControl.fire = engine.event.jbutton.state; >+ break; >+ case 1: >+ engine.playerControl.charge = engine.event.jbutton.state; >+ break; >+ case 2: >+ engine.playerControl.pause = engine.event.jbutton.state; >+ break; >+ case 3: >+ engine.playerControl.quit = engine.event.jbutton.state; >+ break; >+ default: >+ engine.playerControl.invoke = engine.event.jbutton.state; >+ break; >+ } > } >+ > } >+ >+ /* Moves cursor around. */ >+ if(engine.gameSection == SECTION_INTERMISSION) { >+ engine.cursor_x += (engine.playerControl.right-engine.playerControl.left)*MOVE_MULT; >+ engine.cursor_y += (engine.playerControl.down-engine.playerControl.up)*MOVE_MULT; >+ } >+ > } > > void leaveSector() > { >- engine.keyState[SDLK_UP] = engine.keyState[SDLK_DOWN] = engine.keyState[SDLK_LEFT] = engine.keyState[SDLK_RIGHT] = 0; >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = engine.keyState[SDLK_SPACE] = 0; >+ RESET_STEER(); >+ RESET_FIRE(); >+ RESET_CHARGE(); > > if (engine.done == 0) > engine.done = 3; >diff -uNr starfighter-orig/code/script.cpp starfighter-1.1/code/script.cpp >--- starfighter-orig/code/script.cpp 2005-02-09 18:25:54.000000000 +0100 >+++ starfighter-1.1/code/script.cpp 2005-02-09 19:30:31.000000000 +0100 >@@ -202,7 +202,8 @@ > graphics.clearScreen(graphics.black); > SDL_Delay(1000); > >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = engine.keyState[SDLK_SPACE] = 0; >+ RESET_INVOKE(); >+ RESET_QUIT(); > > engine.ssx = -0.5; > engine.ssy = 0; >@@ -301,7 +302,7 @@ > while (SDL_GetTicks() < (frameLimit + 16)){} > frameLimit = SDL_GetTicks(); > >- if (engine.keyState[SDLK_ESCAPE]) >+ if (IS_QUIT_PRESSED() || IS_INVOKE_PRESSED()) > break; > } > >diff -uNr starfighter-orig/code/shop.cpp starfighter-1.1/code/shop.cpp >--- starfighter-orig/code/shop.cpp 2005-02-09 18:25:54.000000000 +0100 >+++ starfighter-1.1/code/shop.cpp 2005-02-09 19:15:25.000000000 +0100 >@@ -739,14 +739,14 @@ > else if (currentGame.system == 2) > icons = 15; > >- if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL])) >+ if (IS_FIRE_PRESSED()) > { > for (int i = 0 ; i < icons ; i++) > { > if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, shopItems[i].x, shopItems[i].y, 32, 25)) > { > shopSelectedItem = i; >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0; >+ RESET_FIRE(); > drawShop(); > } > } >@@ -756,14 +756,14 @@ > if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, 60, 350, 24, 16)) > { > buy(shopSelectedItem); >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0; >+ RESET_FIRE(); > drawShop(); > } > > if (Collision::collision(engine.cursor_x + 13, engine.cursor_y + 13, 6, 6, 700, 350, 24, 16)) > { > sell(shopSelectedItem); >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0; >+ RESET_FIRE(); > drawShop(); > } > } >diff -uNr starfighter-orig/code/structs.h starfighter-1.1/code/structs.h >--- starfighter-orig/code/structs.h 2005-02-09 18:25:54.000000000 +0100 >+++ starfighter-1.1/code/structs.h 2005-02-10 01:22:42.354583200 +0100 >@@ -204,6 +204,9 @@ > char subject[100]; > }; > >+typedef struct control { >+ char up, down, left, right, fire, charge, timer, pause, quit, invoke; >+}; > > typedef struct globalEngineVariables { > >@@ -269,7 +272,8 @@ > // This really only applies to Linux users. > char userHomeDirectory[1024]; > >- char keyState[350]; >+ // game specific controls >+ control playerControl; > > signed char cheat; // overall cheat > signed char cheatShield; >@@ -279,6 +283,58 @@ > signed char cheatCredits; > }; > >+// For invoking menu entries. >+#define IS_INVOKE_PRESSED() (engine.playerControl.fire ||\ >+ engine.playerControl.invoke ||\ >+ engine.playerControl.charge) >+ >+#define RESET_INVOKE() (engine.playerControl.fire =\ >+ engine.playerControl.invoke =\ >+ engine.playerControl.charge = 0) >+ >+// The fire buttons. >+#define IS_FIRE_PRESSED() (engine.playerControl.fire) >+#define RESET_FIRE() (engine.playerControl.fire = 0) >+ >+#define IS_SWITCH_PLANET_MOVEMENT_PRESSED() (engine.playerControl.invoke ||\ >+ engine.playerControl.charge) >+ >+#define RESET_SWITCH_PLANET_MOVEMENT() (engine.playerControl.invoke =\ >+ engine.playerControl.charge =0) >+ >+#define RESET_QUIT() (engine.playerControl.quit =0) >+#define IS_QUIT_PRESSED() (engine.playerControl.quit) >+ >+#define RESET_UP() (engine.playerControl.up =0) >+#define IS_UP_PRESSED() (engine.playerControl.up) >+ >+#define RESET_DOWN() (engine.playerControl.down =0) >+#define IS_DOWN_PRESSED() (engine.playerControl.down) >+ >+#define RESET_LEFT() (engine.playerControl.left =0) >+#define IS_LEFT_PRESSED() (engine.playerControl.left) >+ >+#define RESET_RIGHT() (engine.playerControl.right =0) >+#define IS_RIGHT_PRESSED() (engine.playerControl.right) >+ >+// Conveniently resets all direction controls at once. >+#define RESET_STEER() (engine.playerControl.up =\ >+ engine.playerControl.down =\ >+ engine.playerControl.left =\ >+ engine.playerControl.right = 0) >+ >+#define RESET_PAUSE() (engine.playerControl.pause =0) >+#define IS_PAUSE_PRESSED() (engine.playerControl.pause) >+ >+#define RESET_CHARGE() (engine.playerControl.charge = 0) >+#define IS_CHARGE_PRESSED() (engine.playerControl.charge) >+ >+#define RESET_TIMER() (engine.playerControl.timer =0) >+#define IS_TIMER_PRESSED() (engine.playerControl.timer) >+ >+#define AXIS_THRESHOLD 5000 >+#define MOVE_MULT 10 >+ > typedef struct event { > > int time; >diff -uNr starfighter-orig/code/title.cpp starfighter-1.1/code/title.cpp >--- starfighter-orig/code/title.cpp 2005-02-09 18:25:54.000000000 +0100 >+++ starfighter-1.1/code/title.cpp 2005-02-09 19:26:17.000000000 +0100 >@@ -238,7 +238,7 @@ > > engine.done = 0; > flushInput(); >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = 0; >+ RESET_FIRE(); > > if ((currentGame.useMusic) && (engine.useAudio)) > Mix_PlayMusic(engine.music, 1); >@@ -308,18 +308,18 @@ > if (redGlow <= 0) {redDir = 2; redGlow = 0;} > if (redGlow >= 255) {redDir = -2; redGlow = 255;} > >- if (engine.keyState[SDLK_UP]) >+ if (IS_UP_PRESSED()) > { >- engine.keyState[SDLK_UP] = 0; >+ RESET_UP(); > Math::wrapChar(&(--selectedOption), 1, listLength); > if (menuType == 0) > if ((selectedOption == 2) || (selectedOption == 3)) > if (continueSaveSlot == 0) > selectedOption = 1; > } >- if (engine.keyState[SDLK_DOWN]) >+ if (IS_DOWN_PRESSED()) > { >- engine.keyState[SDLK_DOWN] = 0; >+ RESET_DOWN(); > Math::wrapChar(&(++selectedOption), 1, listLength); > if (menuType == 0) > if ((selectedOption == 2) || (selectedOption == 3)) >@@ -351,7 +351,7 @@ > engine.cheatCredits = 0; > } > >- if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL]) || (engine.keyState[SDLK_SPACE])) >+ if (IS_INVOKE_PRESSED()) > { > if ((now - then <= 27500) && (!skip)) > { >@@ -450,7 +450,7 @@ > break; > } > } >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = engine.keyState[SDLK_SPACE] = 0; >+ RESET_INVOKE(); > } > > while (SDL_GetTicks() < (frameLimit + 16)){} >@@ -462,7 +462,7 @@ > SDL_FreeSurface(prlogo); > SDL_FreeSurface(sflogo); > >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = engine.keyState[SDLK_SPACE] = 0; >+ RESET_INVOKE(); > > resetLists(); > >@@ -532,7 +532,7 @@ > unsigned long frameLimit = SDL_GetTicks(); > > flushInput(); >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = engine.keyState[SDLK_SPACE] = 0; >+ RESET_INVOKE(); > > while (true) > { >@@ -541,7 +541,7 @@ > > getPlayerInput(); > >- if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL]) || (engine.keyState[SDLK_SPACE])) >+ if (IS_INVOKE_PRESSED()) > break; > > if (graphics.textShape[8].y > 450) >@@ -572,7 +572,7 @@ > graphics.freeGraphics(); > SDL_FillRect(graphics.background, NULL, graphics.black); > >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = engine.keyState[SDLK_SPACE] = 0; >+ RESET_INVOKE(); > engine.gameSection = SECTION_INTERMISSION; > > loadMusic("music/Wybierak.mod"); >@@ -597,13 +597,13 @@ > graphics.updateScreen(); > > flushInput(); >- engine.keyState[SDLK_LCTRL] = engine.keyState[SDLK_RCTRL] = engine.keyState[SDLK_SPACE] = 0; >+ RESET_INVOKE(); > > while (true) > { > getPlayerInput(); > >- if ((engine.keyState[SDLK_LCTRL]) || (engine.keyState[SDLK_RCTRL]) || (engine.keyState[SDLK_SPACE])) >+ if (IS_INVOKE_PRESSED()) > break; > > graphics.updateScreen(); >@@ -701,7 +701,7 @@ > SDL_Rect r1 = {0, 80, 800, 20}; > SDL_Rect r2 = {0, 500, 800, 20}; > >- engine.keyState[SDLK_ESCAPE] = 0; >+ RESET_QUIT(); > flushInput(); > > while (true) >@@ -710,7 +710,7 @@ > graphics.unBuffer(); > > getPlayerInput(); >- if (engine.keyState[SDLK_ESCAPE]) >+ if (IS_QUIT_PRESSED()) > break; > > for (int i = 0 ; i < numberOfCredits ; i++) >Dateien starfighter-orig/starfighter und starfighter-1.1/starfighter sind verschieden.
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 81429
:
50876
|
50877
|
50879