Re #139 (D30) Fixed new human drivers created in Player COnfig menu not selectable in Driver Select menu (forced default = sc-lynx-220 car in human.xml)
git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@2713 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: c2eb9f82af94cfbf8438ebd17dfca18679f6eea3 Former-commit-id: 95c4d2631a56248e4f4277bc6392ee002c6f6c55
This commit is contained in:
parent
b4034d92e5
commit
c07b1d215a
1 changed files with 32 additions and 10 deletions
|
@ -31,10 +31,10 @@
|
||||||
#include "playerconfig.h"
|
#include "playerconfig.h"
|
||||||
|
|
||||||
|
|
||||||
static const int MAX_PLAYER_NAME_LEN = 16;
|
static const char *PlayerNamePrompt = "-- Enter name --";
|
||||||
static const char *PLAYER_NAME_PROMPT = "-- Enter name --";
|
static const char *NoPlayer = "-- No one --";
|
||||||
static const char *NO_PLAYER = "-- No one --";
|
static const char *HumanDriverModuleName = "human";
|
||||||
static const char *HumanDriverModuleName = "human";
|
static const char *DefaultCarName = "sc-lynx-220";
|
||||||
|
|
||||||
static const char *SkillLevelString[] = { ROB_VAL_ROOKIE, ROB_VAL_AMATEUR, ROB_VAL_SEMI_PRO, ROB_VAL_PRO };
|
static const char *SkillLevelString[] = { ROB_VAL_ROOKIE, ROB_VAL_AMATEUR, ROB_VAL_SEMI_PRO, ROB_VAL_PRO };
|
||||||
static const int NbSkillLevels = sizeof(SkillLevelString) / sizeof(SkillLevelString[0]);
|
static const int NbSkillLevels = sizeof(SkillLevelString) / sizeof(SkillLevelString[0]);
|
||||||
|
@ -73,7 +73,8 @@ struct tPlayerInfo
|
||||||
public:
|
public:
|
||||||
|
|
||||||
tPlayerInfo(const char *name = HumanDriverModuleName, const char *dispname = 0,
|
tPlayerInfo(const char *name = HumanDriverModuleName, const char *dispname = 0,
|
||||||
int racenumber = 0, int skilllevel = 0, float *color = 0,
|
const char *defcarname = 0, int racenumber = 0, int skilllevel = 0,
|
||||||
|
float *color = 0,
|
||||||
tGearChangeMode gearchangemode = GEAR_MODE_AUTO, int autoreverse = 0,
|
tGearChangeMode gearchangemode = GEAR_MODE_AUTO, int autoreverse = 0,
|
||||||
int nbpitstops = 0)
|
int nbpitstops = 0)
|
||||||
{
|
{
|
||||||
|
@ -81,6 +82,8 @@ public:
|
||||||
setName(name);
|
setName(name);
|
||||||
_info.dispname = 0;
|
_info.dispname = 0;
|
||||||
setDispName(dispname);
|
setDispName(dispname);
|
||||||
|
_defcarname = 0;
|
||||||
|
setDefaultCarName(defcarname);
|
||||||
_racenumber = racenumber;
|
_racenumber = racenumber;
|
||||||
_gearchangemode = gearchangemode;
|
_gearchangemode = gearchangemode;
|
||||||
_nbpitstops = nbpitstops;
|
_nbpitstops = nbpitstops;
|
||||||
|
@ -98,6 +101,8 @@ public:
|
||||||
setName(src._info.name);
|
setName(src._info.name);
|
||||||
_info.dispname = 0;
|
_info.dispname = 0;
|
||||||
setDispName(src._info.dispname);
|
setDispName(src._info.dispname);
|
||||||
|
_defcarname = 0;
|
||||||
|
setDefaultCarName(src._defcarname);
|
||||||
_racenumber = src._racenumber;
|
_racenumber = src._racenumber;
|
||||||
_gearchangemode = src._gearchangemode;
|
_gearchangemode = src._gearchangemode;
|
||||||
_nbpitstops = src._nbpitstops;
|
_nbpitstops = src._nbpitstops;
|
||||||
|
@ -111,6 +116,7 @@ public:
|
||||||
|
|
||||||
const char *name() const { return _info.name; };
|
const char *name() const { return _info.name; };
|
||||||
const char *dispName() const { return _info.dispname; }
|
const char *dispName() const { return _info.dispname; }
|
||||||
|
const char *defaultCarName() const { return _defcarname; }
|
||||||
int raceNumber() const { return _racenumber; }
|
int raceNumber() const { return _racenumber; }
|
||||||
tGearChangeMode gearChangeMode() const { return _gearchangemode; }
|
tGearChangeMode gearChangeMode() const { return _gearchangemode; }
|
||||||
int nbPitStops() const { return _nbpitstops; }
|
int nbPitStops() const { return _nbpitstops; }
|
||||||
|
@ -132,10 +138,19 @@ public:
|
||||||
if (_info.dispname)
|
if (_info.dispname)
|
||||||
delete[] _info.dispname;
|
delete[] _info.dispname;
|
||||||
if (!dispname || strlen(dispname) == 0)
|
if (!dispname || strlen(dispname) == 0)
|
||||||
dispname = NO_PLAYER;
|
dispname = NoPlayer;
|
||||||
_info.dispname = new char[strlen(dispname)+1];
|
_info.dispname = new char[strlen(dispname)+1];
|
||||||
strcpy(_info.dispname, dispname); // Can't use strdup : free crashes in destructor !?
|
strcpy(_info.dispname, dispname); // Can't use strdup : free crashes in destructor !?
|
||||||
}
|
}
|
||||||
|
void setDefaultCarName(const char *defcarname)
|
||||||
|
{
|
||||||
|
if (_defcarname)
|
||||||
|
delete[] _defcarname;
|
||||||
|
if (!defcarname || strlen(defcarname) == 0)
|
||||||
|
defcarname = DefaultCarName;
|
||||||
|
_defcarname = new char[strlen(defcarname)+1];
|
||||||
|
strcpy(_defcarname, defcarname); // Can't use strdup : free crashes in destructor !?
|
||||||
|
}
|
||||||
void setRaceNumber(int raceNumber) { _racenumber = raceNumber; }
|
void setRaceNumber(int raceNumber) { _racenumber = raceNumber; }
|
||||||
void setGearChangeMode(tGearChangeMode gearChangeMode) { _gearchangemode = gearChangeMode; }
|
void setGearChangeMode(tGearChangeMode gearChangeMode) { _gearchangemode = gearChangeMode; }
|
||||||
void setNbPitStops(int nbPitStops) { _nbpitstops = nbPitStops; }
|
void setNbPitStops(int nbPitStops) { _nbpitstops = nbPitStops; }
|
||||||
|
@ -148,6 +163,8 @@ public:
|
||||||
delete[] _info.dispname;
|
delete[] _info.dispname;
|
||||||
if (_info.name)
|
if (_info.name)
|
||||||
delete[] _info.name;
|
delete[] _info.name;
|
||||||
|
if (_defcarname)
|
||||||
|
delete[] _defcarname;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Gear change mode enum to string conversion
|
// Gear change mode enum to string conversion
|
||||||
|
@ -169,6 +186,7 @@ public:
|
||||||
private:
|
private:
|
||||||
|
|
||||||
tInfo _info;
|
tInfo _info;
|
||||||
|
char* _defcarname;
|
||||||
int _racenumber;
|
int _racenumber;
|
||||||
tGearChangeMode _gearchangemode;
|
tGearChangeMode _gearchangemode;
|
||||||
int _nbpitstops;
|
int _nbpitstops;
|
||||||
|
@ -221,10 +239,10 @@ refreshEditVal(void)
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (strcmp((*CurrPlayer)->dispName(), NO_PLAYER)) {
|
if (strcmp((*CurrPlayer)->dispName(), NoPlayer)) {
|
||||||
GfuiEditboxSetString(ScrHandle, NameEditId, (*CurrPlayer)->dispName());
|
GfuiEditboxSetString(ScrHandle, NameEditId, (*CurrPlayer)->dispName());
|
||||||
} else {
|
} else {
|
||||||
GfuiEditboxSetString(ScrHandle, NameEditId, PLAYER_NAME_PROMPT);
|
GfuiEditboxSetString(ScrHandle, NameEditId, PlayerNamePrompt);
|
||||||
}
|
}
|
||||||
GfuiEnable(ScrHandle, NameEditId, GFUI_ENABLE);
|
GfuiEnable(ScrHandle, NameEditId, GFUI_ENABLE);
|
||||||
|
|
||||||
|
@ -302,6 +320,7 @@ PutPlayerSettings(unsigned index)
|
||||||
// Human driver params
|
// Human driver params
|
||||||
sprintf(drvSectionPath, "%s/%s/%u", ROB_SECT_ROBOTS, ROB_LIST_INDEX, index);
|
sprintf(drvSectionPath, "%s/%s/%u", ROB_SECT_ROBOTS, ROB_LIST_INDEX, index);
|
||||||
GfParmSetStr(PlayerHdle, drvSectionPath, ROB_ATTR_NAME, player->dispName());
|
GfParmSetStr(PlayerHdle, drvSectionPath, ROB_ATTR_NAME, player->dispName());
|
||||||
|
GfParmSetStr(PlayerHdle, drvSectionPath, ROB_ATTR_CAR, player->defaultCarName());
|
||||||
GfParmSetNum(PlayerHdle, drvSectionPath, ROB_ATTR_RACENUM, (char*)NULL, player->raceNumber());
|
GfParmSetNum(PlayerHdle, drvSectionPath, ROB_ATTR_RACENUM, (char*)NULL, player->raceNumber());
|
||||||
GfParmSetNum(PlayerHdle, drvSectionPath, ROB_ATTR_RED, (char*)NULL, player->color(0));
|
GfParmSetNum(PlayerHdle, drvSectionPath, ROB_ATTR_RED, (char*)NULL, player->color(0));
|
||||||
GfParmSetNum(PlayerHdle, drvSectionPath, ROB_ATTR_GREEN, (char*)NULL, player->color(1));
|
GfParmSetNum(PlayerHdle, drvSectionPath, ROB_ATTR_GREEN, (char*)NULL, player->color(1));
|
||||||
|
@ -485,7 +504,7 @@ ConfControls(void * /* dummy */ )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Load human driver (=player) info list (PlayersInfo) from preferences and human drivers files ;
|
/* Load human driver (= player) info list (PlayersInfo) from preferences and human drivers files ;
|
||||||
load associated scroll list */
|
load associated scroll list */
|
||||||
static int
|
static int
|
||||||
GenPlayerList(void)
|
GenPlayerList(void)
|
||||||
|
@ -494,6 +513,7 @@ GenPlayerList(void)
|
||||||
int i;
|
int i;
|
||||||
int j;
|
int j;
|
||||||
const char *driver;
|
const char *driver;
|
||||||
|
const char *defaultCar;
|
||||||
int skilllevel;
|
int skilllevel;
|
||||||
const char *str;
|
const char *str;
|
||||||
int racenumber;
|
int racenumber;
|
||||||
|
@ -526,6 +546,7 @@ GenPlayerList(void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
defaultCar = GfParmGetStr(PlayerHdle, sstring, ROB_ATTR_CAR, 0);
|
||||||
racenumber = (int)GfParmGetNum(PlayerHdle, sstring, ROB_ATTR_RACENUM, (char*)NULL, 0);
|
racenumber = (int)GfParmGetNum(PlayerHdle, sstring, ROB_ATTR_RACENUM, (char*)NULL, 0);
|
||||||
color[0] = (float)GfParmGetNum(PlayerHdle, sstring, ROB_ATTR_RED, (char*)NULL, 1.0);
|
color[0] = (float)GfParmGetNum(PlayerHdle, sstring, ROB_ATTR_RED, (char*)NULL, 1.0);
|
||||||
color[1] = (float)GfParmGetNum(PlayerHdle, sstring, ROB_ATTR_GREEN, (char*)NULL, 1.0);;
|
color[1] = (float)GfParmGetNum(PlayerHdle, sstring, ROB_ATTR_GREEN, (char*)NULL, 1.0);;
|
||||||
|
@ -533,6 +554,7 @@ GenPlayerList(void)
|
||||||
color[3] = 1.0;
|
color[3] = 1.0;
|
||||||
PlayersInfo.push_back(new tPlayerInfo(HumanDriverModuleName, // Driver module name
|
PlayersInfo.push_back(new tPlayerInfo(HumanDriverModuleName, // Driver module name
|
||||||
driver, // Player (display) name
|
driver, // Player (display) name
|
||||||
|
defaultCar, // Default car name.
|
||||||
racenumber, // Race number
|
racenumber, // Race number
|
||||||
skilllevel, // skill level
|
skilllevel, // skill level
|
||||||
color)); // Colors
|
color)); // Colors
|
||||||
|
@ -631,7 +653,7 @@ ChangeName(void * /* dummy */)
|
||||||
|
|
||||||
if (CurrPlayer != PlayersInfo.end()) {
|
if (CurrPlayer != PlayersInfo.end()) {
|
||||||
val = GfuiEditboxGetString(ScrHandle, NameEditId);
|
val = GfuiEditboxGetString(ScrHandle, NameEditId);
|
||||||
(*CurrPlayer)->setDispName(strcmp(val, PLAYER_NAME_PROMPT) ? val : NO_PLAYER);
|
(*CurrPlayer)->setDispName(strcmp(val, PlayerNamePrompt) ? val : NoPlayer);
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdtScrollList();
|
UpdtScrollList();
|
||||||
|
|
Loading…
Reference in a new issue