Bug #826 - fixes multiple human players using keyboard

git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@5509 30fe4595-0a0c-4342-8851-515496e4dcbd

Former-commit-id: f9c32313f2a86e5623042331ac7aca355ef93380
Former-commit-id: 1b9516c4aff57a8174b3824e530ac0252e30c90e
This commit is contained in:
mungewell 2013-06-12 03:56:26 +00:00
parent c5cc58c8be
commit 0b1affdd95
2 changed files with 16 additions and 4 deletions

View file

@ -95,6 +95,7 @@ static int lastReadKeyState[GFUIK_MAX+1];
static tKeyInfo keyInfo[GFUIK_MAX+1];
static bool firstTime = false;
static int resumeIndex = 0;
static tdble lastKeyUpdate = -10.0;
void *PrefHdle = NULL;
@ -146,6 +147,8 @@ shutdown(const int index)
GfuiKeyEventRegisterCurrent(0);
firstTime = false;
}//if firstTime
resumeIndex = 0;
}//shutdown
@ -614,8 +617,13 @@ resumerace(int index, tCarElt* car, tSituation *s)
HmReadPrefs(index);
// Setup Keyboard map (key code => index of the associated command in keyInfo / lastReadKeyState).
keyIndex = 0;
mapKeys.clear();
if (index > resumeIndex) {
// must be first time after start/resume (index counts down)
GfOut("Clearing Keyboard map (index %d)\n", index);
keyIndex = 0;
mapKeys.clear();
}
resumeIndex = index;
for (int i = 0; i < NbCmdControl; i++)
{

View file

@ -85,7 +85,11 @@ HmReadPrefs(const int index)
const int idx = index - 1;
tControlCmd *cmdCtrl;
cmdCtrl = HCtx[idx]->cmdControl = (tControlCmd *) calloc (NbCmdControl, sizeof (tControlCmd));
if (HCtx[idx]->cmdControl == NULL) {
GfOut("malloc control array index %d:\n", index);
HCtx[idx]->cmdControl = (tControlCmd *) calloc (NbCmdControl, sizeof (tControlCmd));
}
cmdCtrl = HCtx[idx]->cmdControl;
memcpy(cmdCtrl, CmdControlRef, NbCmdControl * sizeof (tControlCmd));
sprintf(sstring, "%s%s", GfLocalDir(), HM_PREF_FILE);
@ -128,7 +132,7 @@ HmReadPrefs(const int index)
defaultSettings = controlList[i].settings;
/* Command Settings */
GfOut("Command settings :\n");
GfOut("Command settings for index %d:\n", index);
for (int cmd = 0; cmd < NbCmdControl; cmd++) {
prm = GfctrlGetNameByRef(cmdCtrl[cmd].type, cmdCtrl[cmd].val);