Integrated mouse control mappings.
This commit is contained in:
parent
6dfb51e8b0
commit
d2a234839b
|
@ -2,6 +2,7 @@ Changelog
|
||||||
|
|
||||||
0.6
|
0.6
|
||||||
|
|
||||||
|
* Added control remapping
|
||||||
* New game mode: Challenges
|
* New game mode: Challenges
|
||||||
* Add i18n support
|
* Add i18n support
|
||||||
|
|
||||||
|
|
|
@ -173,7 +173,7 @@ static void handleKeyboard(void)
|
||||||
{
|
{
|
||||||
if (battle.status == MS_IN_PROGRESS)
|
if (battle.status == MS_IN_PROGRESS)
|
||||||
{
|
{
|
||||||
if (isKeyControl(CONTROL_BOOST))
|
if (isControl(CONTROL_BOOST))
|
||||||
{
|
{
|
||||||
if (battle.boostTimer == BOOST_RECHARGE_TIME)
|
if (battle.boostTimer == BOOST_RECHARGE_TIME)
|
||||||
{
|
{
|
||||||
|
@ -189,14 +189,14 @@ static void handleKeyboard(void)
|
||||||
clearControl(CONTROL_BOOST);
|
clearControl(CONTROL_BOOST);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isKeyControl(CONTROL_TARGET))
|
if (isControl(CONTROL_TARGET))
|
||||||
{
|
{
|
||||||
selectTarget();
|
selectTarget();
|
||||||
|
|
||||||
clearControl(CONTROL_TARGET);
|
clearControl(CONTROL_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isKeyControl(CONTROL_ECM))
|
if (isControl(CONTROL_ECM))
|
||||||
{
|
{
|
||||||
if (battle.ecmTimer == ECM_RECHARGE_TIME)
|
if (battle.ecmTimer == ECM_RECHARGE_TIME)
|
||||||
{
|
{
|
||||||
|
@ -212,26 +212,26 @@ static void handleKeyboard(void)
|
||||||
clearControl(CONTROL_ECM);
|
clearControl(CONTROL_ECM);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isKeyControl(CONTROL_BRAKE))
|
if (isControl(CONTROL_BRAKE))
|
||||||
{
|
{
|
||||||
applyFighterBrakes();
|
applyFighterBrakes();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isKeyControl(CONTROL_GUNS))
|
if (isControl(CONTROL_GUNS))
|
||||||
{
|
{
|
||||||
switchGuns();
|
switchGuns();
|
||||||
|
|
||||||
clearControl(CONTROL_GUNS);
|
clearControl(CONTROL_GUNS);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isKeyControl(CONTROL_RADAR))
|
if (isControl(CONTROL_RADAR))
|
||||||
{
|
{
|
||||||
cycleRadarZoom();
|
cycleRadarZoom();
|
||||||
|
|
||||||
clearControl(CONTROL_RADAR);
|
clearControl(CONTROL_RADAR);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isKeyControl(CONTROL_MISSILE))
|
if (isControl(CONTROL_MISSILE))
|
||||||
{
|
{
|
||||||
preFireMissile();
|
preFireMissile();
|
||||||
|
|
||||||
|
@ -251,7 +251,7 @@ static void handleMouse(void)
|
||||||
|
|
||||||
if (battle.status == MS_IN_PROGRESS)
|
if (battle.status == MS_IN_PROGRESS)
|
||||||
{
|
{
|
||||||
if (app.mouse.button[SDL_BUTTON_LEFT] && !player->reload && player->guns[0].type)
|
if (isControl(CONTROL_FIRE) && !player->reload && player->guns[0].type)
|
||||||
{
|
{
|
||||||
if (player->selectedGunType != BT_ROCKET)
|
if (player->selectedGunType != BT_ROCKET)
|
||||||
{
|
{
|
||||||
|
@ -263,7 +263,7 @@ static void handleMouse(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (app.mouse.button[SDL_BUTTON_RIGHT])
|
if (isControl(CONTROL_ACCELERATE))
|
||||||
{
|
{
|
||||||
if (battle.boostTimer > BOOST_FINISHED_TIME || game.currentMission->challengeData.noBoost)
|
if (battle.boostTimer > BOOST_FINISHED_TIME || game.currentMission->challengeData.noBoost)
|
||||||
{
|
{
|
||||||
|
@ -271,21 +271,21 @@ static void handleMouse(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (app.mouse.button[SDL_BUTTON_MIDDLE])
|
if (isControl(CONTROL_MISSILE))
|
||||||
{
|
{
|
||||||
preFireMissile();
|
preFireMissile();
|
||||||
|
|
||||||
app.mouse.button[SDL_BUTTON_MIDDLE] = 0;
|
app.mouse.button[SDL_BUTTON_MIDDLE] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (app.mouse.button[SDL_BUTTON_X1])
|
if (isControl(CONTROL_GUNS))
|
||||||
{
|
{
|
||||||
switchGuns();
|
switchGuns();
|
||||||
|
|
||||||
app.mouse.button[SDL_BUTTON_X1] = 0;
|
app.mouse.button[SDL_BUTTON_X1] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (app.mouse.button[SDL_BUTTON_X2])
|
if (isControl(CONTROL_RADAR))
|
||||||
{
|
{
|
||||||
cycleRadarZoom();
|
cycleRadarZoom();
|
||||||
|
|
||||||
|
|
|
@ -37,8 +37,7 @@ extern float getAngle(int x1, int y1, int x2, int y2);
|
||||||
extern int collision(int x1, int y1, int w1, int h1, int x2, int y2, int w2, int h2);
|
extern int collision(int x1, int y1, int w1, int h1, int x2, int y2, int w2, int h2);
|
||||||
extern char *getTranslatedString(char *string);
|
extern char *getTranslatedString(char *string);
|
||||||
extern void addECMEffect(Entity *ent);
|
extern void addECMEffect(Entity *ent);
|
||||||
extern int isKeyControl(int type);
|
extern int isControl(int type);
|
||||||
extern int isMouseControl(int type);
|
|
||||||
extern void clearControl(int type);
|
extern void clearControl(int type);
|
||||||
|
|
||||||
extern App app;
|
extern App app;
|
||||||
|
|
|
@ -28,7 +28,6 @@ extern void retreatEnemies(void);
|
||||||
extern char *getTranslatedString(char *string);
|
extern char *getTranslatedString(char *string);
|
||||||
extern char *getLookupName(char *prefix, long num);
|
extern char *getLookupName(char *prefix, long num);
|
||||||
extern char *timeToString(long millis, int showHours);
|
extern char *timeToString(long millis, int showHours);
|
||||||
extern int getPercent(float current, float total);
|
|
||||||
extern void updateAccuracyStats(unsigned int *stats);
|
extern void updateAccuracyStats(unsigned int *stats);
|
||||||
extern char *timeToString(long millis, int showHours);
|
extern char *timeToString(long millis, int showHours);
|
||||||
|
|
||||||
|
|
|
@ -198,13 +198,16 @@ static void drawFighters(void)
|
||||||
|
|
||||||
static void handleKeyboard(void)
|
static void handleKeyboard(void)
|
||||||
{
|
{
|
||||||
if (app.keyboard[SDL_SCANCODE_ESCAPE])
|
switch (show)
|
||||||
{
|
{
|
||||||
|
case SHOW_STATS:
|
||||||
returnFromOptions();
|
returnFromOptions();
|
||||||
|
|
||||||
memset(app.keyboard, 0, sizeof(int) * MAX_KEYBOARD_KEYS);
|
memset(app.keyboard, 0, sizeof(int) * MAX_KEYBOARD_KEYS);
|
||||||
|
|
||||||
playSound(SND_GUI_CLOSE);
|
playSound(SND_GUI_CLOSE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SHOW_OPTIONS:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,14 +72,28 @@ void initControlsDisplay(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int isKeyControl(int type)
|
int isControl(int type)
|
||||||
{
|
{
|
||||||
return app.keyboard[app.keyControls[type]];
|
int key = app.keyControls[type];
|
||||||
|
int btn = app.mouseControls[type];
|
||||||
|
|
||||||
|
return ((key != -1 && app.keyboard[key]) || (btn != -1 && app.mouse.button[btn]));
|
||||||
}
|
}
|
||||||
|
|
||||||
void clearControl(int type)
|
void clearControl(int type)
|
||||||
{
|
{
|
||||||
app.keyboard[app.keyControls[type]] = 0;
|
int key = app.keyControls[type];
|
||||||
|
int btn = app.mouseControls[type];
|
||||||
|
|
||||||
|
if (key != -1)
|
||||||
|
{
|
||||||
|
app.keyboard[key] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (btn != -1)
|
||||||
|
{
|
||||||
|
app.mouse.button[btn] = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateControlKey(char *name)
|
void updateControlKey(char *name)
|
||||||
|
@ -142,14 +156,20 @@ void drawControls(void)
|
||||||
controlWidget[i]->rect.x = r.x + 175;
|
controlWidget[i]->rect.x = r.x + 175;
|
||||||
controlWidget[i]->rect.y = r.y;
|
controlWidget[i]->rect.y = r.y;
|
||||||
|
|
||||||
r.y += 50;
|
r.y += 65;
|
||||||
|
|
||||||
if (r.y > 400)
|
if (r.y > 500)
|
||||||
{
|
{
|
||||||
r.y = 125;
|
r.y = 125;
|
||||||
r.x += 400;
|
r.x += 400;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
limitTextWidth(r.w - 100);
|
||||||
|
drawText(SCREEN_WIDTH / 2, 525, 16, TA_CENTER, colors.white, _("Click a control to change it, and then the key or mouse button you want to use."));
|
||||||
|
drawText((SCREEN_WIDTH / 2) - 50, 560, 16, TA_RIGHT, colors.white, _("[BACKSPACE] - Clear"));
|
||||||
|
drawText((SCREEN_WIDTH / 2) + 50, 560, 16, TA_LEFT, colors.white, _("[ESCAPE] - Cancel"));
|
||||||
|
limitTextWidth(0);
|
||||||
|
|
||||||
drawWidgets("controls");
|
drawWidgets("controls");
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ extern Widget *getWidget(const char *name, const char *group);
|
||||||
extern void drawWidgets(char *groupName);
|
extern void drawWidgets(char *groupName);
|
||||||
extern char *getLookupName(char *prefix, long num);
|
extern char *getLookupName(char *prefix, long num);
|
||||||
extern long lookup(char *name);
|
extern long lookup(char *name);
|
||||||
|
extern void limitTextWidth(int width);
|
||||||
|
|
||||||
extern App app;
|
extern App app;
|
||||||
extern Colors colors;
|
extern Colors colors;
|
||||||
extern Game game;
|
|
||||||
|
|
|
@ -113,7 +113,6 @@ static void drawMain(void)
|
||||||
#else
|
#else
|
||||||
drawText(SCREEN_WIDTH / 2, r.y + r.h - 135, 16, TA_CENTER, colors.yellow, _("Note: this device does not support changing the screen resolution."));
|
drawText(SCREEN_WIDTH / 2, r.y + r.h - 135, 16, TA_CENTER, colors.yellow, _("Note: this device does not support changing the screen resolution."));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
limitTextWidth(0);
|
limitTextWidth(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,4 +21,3 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#include "../common.h"
|
#include "../common.h"
|
||||||
|
|
||||||
extern char **getFileList(char *dir, int *count);
|
extern char **getFileList(char *dir, int *count);
|
||||||
extern void blitScaled(SDL_Texture *texture, int x, int y, int w, int h);
|
|
||||||
|
|
Loading…
Reference in New Issue