Fixed #227 : Car name in practice results (thanks Simon) + display car name in title of various relevant results menus + moved track name in main menu title for same ones

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

Former-commit-id: 61b13198e29be99ceec3234344d262aa8daec562
Former-commit-id: 645fb1d83fead9c96b04b172bee9b5cdfea3c893
This commit is contained in:
pouillot 2010-11-12 13:00:33 +00:00
parent 6a265c112d
commit 780c3d9eb8
5 changed files with 64 additions and 41 deletions

View file

@ -25,6 +25,7 @@
#include <cstdlib> #include <cstdlib>
#include <cstdio> #include <cstdio>
#include <portability.h>
#include <tgfclient.h> #include <tgfclient.h>
#include <raceman.h> #include <raceman.h>
#include <robot.h> #include <robot.h>
@ -47,7 +48,6 @@ static int reBigMsgId;
static float black[4] = {0.0, 0.0, 0.0, 0.0}; static float black[4] = {0.0, 0.0, 0.0, 0.0};
/************************************************************************** /**************************************************************************
* Normal race screen (3D animated scene mode = non "blind" mode) * Normal race screen (3D animated scene mode = non "blind" mode)
*/ */
@ -302,8 +302,11 @@ static float white[4] = {1.0, 1.0, 1.0, 1.0};
static float red[4] = {1.0, 0.0, 0.0, 1.0}; static float red[4] = {1.0, 0.0, 0.0, 1.0};
static float *reColor[] = {white, red}; static float *reColor[] = {white, red};
static const char *aRaceTypeNames[3] = {"Practice", "Qualifications", "Race"};
static void *reResScreenHdle = 0; static void *reResScreenHdle = 0;
static int reResMainTitleId;
static int reResTitleId; static int reResTitleId;
static int reResMsgId[NMaxResultLines]; static int reResMsgId[NMaxResultLines];
@ -365,7 +368,6 @@ ReResScreenInit(void)
int i; int i;
int y, dy; int y, dy;
const char *img; const char *img;
static const char *title[3] = {"Practice", "Qualifications", "Race"};
if (reResScreenHdle) { if (reResScreenHdle) {
GfuiScreenRelease(reResScreenHdle); GfuiScreenRelease(reResScreenHdle);
@ -377,8 +379,8 @@ ReResScreenInit(void)
CreateStaticControls(menuXMLDescHdle, reResScreenHdle); CreateStaticControls(menuXMLDescHdle, reResScreenHdle);
// Create variable main title (race type/stage) label. // Create variable main title (race type/stage) label.
int mainTitleId = CreateLabelControl(reResScreenHdle, menuXMLDescHdle, "title"); reResMainTitleId = CreateLabelControl(reResScreenHdle, menuXMLDescHdle, "title");
GfuiLabelSetText(reResScreenHdle, mainTitleId, title[ReInfo->s->_raceType]); GfuiLabelSetText(reResScreenHdle, reResMainTitleId, aRaceTypeNames[ReInfo->s->_raceType]);
// Create background image if any specified. // Create background image if any specified.
img = GfParmGetStr(ReInfo->params, RM_SECT_HEADER, RM_ATTR_RUNIMG, 0); img = GfParmGetStr(ReInfo->params, RM_SECT_HEADER, RM_ATTR_RUNIMG, 0);
@ -418,10 +420,21 @@ ReResScreenInit(void)
} }
void void
ReResScreenSetTitle(const char *title) ReResScreenSetTrackName(const char *pszTrackName)
{ {
if (reResScreenHdle) { if (reResScreenHdle) {
GfuiLabelSetText(reResScreenHdle, reResTitleId, title); char pszTitle[128];
snprintf(pszTitle, sizeof(pszTitle), "%s on %s",
aRaceTypeNames[ReInfo->s->_raceType], pszTrackName);
GfuiLabelSetText(reResScreenHdle, reResMainTitleId, pszTitle);
}
}
void
ReResScreenSetTitle(const char *pszTitle)
{
if (reResScreenHdle) {
GfuiLabelSetText(reResScreenHdle, reResTitleId, pszTitle);
} }
} }

View file

@ -34,6 +34,7 @@ extern void ReSetRaceMsg(const char *msg);
extern void ReSetRaceBigMsg(const char *msg); extern void ReSetRaceBigMsg(const char *msg);
extern void *ReResScreenInit(void); extern void *ReResScreenInit(void);
extern void ReResScreenSetTrackName(const char *trackName);
extern void ReResScreenSetTitle(const char *title); extern void ReResScreenSetTitle(const char *title);
extern void ReResScreenAddText(const char *text); extern void ReResScreenAddText(const char *text);
extern void ReResScreenSetText(const char *text, int line, int clr); extern void ReResScreenSetText(const char *text, int line, int clr);

View file

@ -417,7 +417,8 @@ reRaceRealStart(void)
} else if (ReInfo->s->_raceType == RM_TYPE_PRACTICE && s->_ncars > 1) { } else if (ReInfo->s->_raceType == RM_TYPE_PRACTICE && s->_ncars > 1) {
ReUpdatePracticeCurRes(s->cars[0]); ReUpdatePracticeCurRes(s->cars[0]);
} else { } else {
snprintf(buf, 128, "%s on %s", s->cars[0]->_name, ReInfo->track->name); ReResScreenSetTrackName(ReInfo->track->name);
snprintf(buf, sizeof(buf), "%s (%s)", s->cars[0]->_name, s->cars[0]->_carName);
ReResScreenSetTitle(buf); ReResScreenSetTitle(buf);
} }
}//if displayMode != normal }//if displayMode != normal

View file

@ -310,6 +310,7 @@ ReStoreRaceResults(const char *race)
car = s->cars[0]; car = s->cars[0];
sprintf(path, "%s/%s/%s", ReInfo->track->name, RE_SECT_RESULTS, race); sprintf(path, "%s/%s/%s", ReInfo->track->name, RE_SECT_RESULTS, race);
GfParmSetStr(results, path, RM_ATTR_DRVNAME, car->_name); GfParmSetStr(results, path, RM_ATTR_DRVNAME, car->_name);
GfParmSetStr(results, path, RE_ATTR_CAR, car->_carName);
break; break;
} }
/* Otherwise, fall through */ /* Otherwise, fall through */
@ -455,18 +456,23 @@ ReUpdateQualifCurRes(tCarElt *car)
double time_left; double time_left;
ReResScreenSetTrackName(ReInfo->track->name);
if (ReInfo->s->_ncars == 1) if (ReInfo->s->_ncars == 1)
{ {
ReResEraseScreen(); ReResEraseScreen();
maxLines = ReResGetLines(); maxLines = ReResGetLines();
sprintf(buf, "%s on %s - Lap %d", car->_name, ReInfo->track->name, car->_laps); snprintf(buf, sizeof(buf), "cars/%s/%s.xml", car->_carName, car->_carName);
ReResScreenSetTitle(buf);
sprintf(buf, "cars/%s/%s.xml", car->_carName, car->_carName);
carparam = GfParmReadFile(buf, GFPARM_RMODE_STD); carparam = GfParmReadFile(buf, GFPARM_RMODE_STD);
carName = GfParmGetName(carparam); carName = GfParmGetName(carparam);
if (ReInfo->s->_raceType == RM_TYPE_PRACTICE)
snprintf(buf, sizeof(buf), "%s (%s)", car->_name, carName);
else
snprintf(buf, sizeof(buf), "%s (%s) - Lap %d", car->_name, carName, car->_laps);
ReResScreenSetTitle(buf);
printed = 0; printed = 0;
sprintf(path, "%s/%s/%s/%s", ReInfo->track->name, RE_SECT_RESULTS, race, RE_SECT_RANK); sprintf(path, "%s/%s/%s/%s", ReInfo->track->name, RE_SECT_RESULTS, race, RE_SECT_RANK);
nCars = GfParmGetEltNb(results, path); nCars = GfParmGetEltNb(results, path);
@ -507,12 +513,12 @@ ReUpdateQualifCurRes(tCarElt *car)
if (ReInfo->s->_totTime > ReInfo->s->currentTime) if (ReInfo->s->_totTime > ReInfo->s->currentTime)
{ {
time_left = ReInfo->s->_totTime - ReInfo->s->currentTime; time_left = ReInfo->s->_totTime - ReInfo->s->currentTime;
sprintf( buf, "%s - %d:%02d:%02d", ReInfo->track->name, (int)floor( time_left / 3600.0f ), (int)floor( time_left / 60.0f ) % 60, sprintf( buf, "%d:%02d:%02d", (int)floor( time_left / 3600.0f ), (int)floor( time_left / 60.0f ) % 60,
(int)floor( time_left ) % 60 ); (int)floor( time_left ) % 60 );
} }
else else
{ {
sprintf( buf, "%s - %d laps", ReInfo->track->name, ReInfo->s->_totLaps ); sprintf( buf, "%d laps", ReInfo->s->_totLaps );
} }
ReResScreenSetTitle(buf); ReResScreenSetTitle(buf);
@ -556,17 +562,18 @@ ReUpdateRaceCurRes()
char *tmp_str; char *tmp_str;
double time_left; double time_left;
ReResScreenSetTrackName(ReInfo->track->name);
ncars = ReInfo->s->_ncars; ncars = ReInfo->s->_ncars;
if (ncars > ReResGetLines()) if (ncars > ReResGetLines())
ncars = ReResGetLines(); ncars = ReResGetLines();
if (ReInfo->s->_totTime > ReInfo->s->currentTime) if (ReInfo->s->_totTime > ReInfo->s->currentTime)
{ {
time_left = ReInfo->s->_totTime - ReInfo->s->currentTime; time_left = ReInfo->s->_totTime - ReInfo->s->currentTime;
sprintf( buf, "%s - %d:%02d:%02d", ReInfo->track->name, (int)floor( time_left / 3600.0f ), (int)floor( time_left / 60.0f ) % 60, (int)floor( time_left ) % 60 ); sprintf( buf, "%d:%02d:%02d", (int)floor( time_left / 3600.0f ), (int)floor( time_left / 60.0f ) % 60, (int)floor( time_left ) % 60 );
} }
else else
{ {
sprintf( buf, "%s - %d laps", ReInfo->track->name, ReInfo->s->_totLaps ); sprintf( buf, "%d laps", ReInfo->s->_totLaps );
} }
ReResScreenSetTitle(buf); ReResScreenSetTitle(buf);

View file

@ -28,9 +28,9 @@
#include <windows.h> #include <windows.h>
#endif #endif
#include <portability.h>
#include <tgfclient.h> #include <tgfclient.h>
#include "portability.h"
#include "racescreens.h" #include "racescreens.h"
#include "driver.h" //rmdGetDriverType #include "driver.h" //rmdGetDriverType
@ -82,8 +82,7 @@ rmPracticeResults(void *prevHdle, tRmInfo *info, int start)
const char *race = info->_reRaceName; const char *race = info->_reRaceName;
int i; int i;
int y; int y;
static const unsigned maxBufSize = 256; static char buf[256];
static char buf[maxBufSize];
static char path[1024]; static char path[1024];
char *str; char *str;
static float fgcolor[4] = {1.0, 0.0, 1.0, 1.0}; static float fgcolor[4] = {1.0, 0.0, 1.0, 1.0};
@ -96,11 +95,16 @@ rmPracticeResults(void *prevHdle, tRmInfo *info, int start)
void *menuXMLDescHdle = LoadMenuXML("practiceresultsmenu.xml"); void *menuXMLDescHdle = LoadMenuXML("practiceresultsmenu.xml");
CreateStaticControls(menuXMLDescHdle,rmScrHdle); CreateStaticControls(menuXMLDescHdle,rmScrHdle);
sprintf(path, "%s/%s/%s", info->track->name, RE_SECT_RESULTS, race); snprintf(buf, sizeof(buf), "Practice Results on %s", info->track->name);
sprintf(buf, "%s on %s", GfParmGetStr(results, path, RM_ATTR_DRVNAME, NULL), info->track->name); const int titleId = CreateLabelControl(rmScrHdle, menuXMLDescHdle, "title");
GfuiLabelSetText(rmScrHdle, titleId, buf);
const int messId = CreateLabelControl(rmScrHdle, menuXMLDescHdle, "playertitle"); snprintf(path, sizeof(path), "%s/%s/%s", info->track->name, RE_SECT_RESULTS, race);
GfuiLabelSetText(rmScrHdle, messId, buf); snprintf(buf, sizeof(buf), "%s (%s)", GfParmGetStr(results, path, RM_ATTR_DRVNAME, NULL),
GfParmGetStr(results, path, RM_ATTR_CAR, NULL));
const int subTitleId = CreateLabelControl(rmScrHdle, menuXMLDescHdle, "playertitle");
GfuiLabelSetText(rmScrHdle, subTitleId, buf);
const int offset = 90; const int offset = 90;
@ -204,9 +208,8 @@ rmRaceResults(void *prevHdle, tRmInfo *info, int start)
{ {
void *results = info->results; void *results = info->results;
const char *race = info->_reRaceName; const char *race = info->_reRaceName;
static const unsigned maxBufSize = 256; static char buf[256];
static char buf[maxBufSize]; static char path[512];
static char path[1024];
char *str; char *str;
static float fgcolor[4] = {1.0, 0.0, 1.0, 1.0}; static float fgcolor[4] = {1.0, 0.0, 1.0, 1.0};
static float green[4] = {0.196, 0.804, 0.196, 1.0};//Lime green, #32CD32 static float green[4] = {0.196, 0.804, 0.196, 1.0};//Lime green, #32CD32
@ -219,8 +222,8 @@ rmRaceResults(void *prevHdle, tRmInfo *info, int start)
CreateStaticControls(menuXMLDescHdle,rmScrHdle); CreateStaticControls(menuXMLDescHdle,rmScrHdle);
sprintf(buf, "%s", info->track->name); sprintf(buf, "%s", info->track->name);
const int messId = CreateLabelControl(rmScrHdle, menuXMLDescHdle, "racetitle"); const int subTitleId = CreateLabelControl(rmScrHdle, menuXMLDescHdle, "racetitle");
GfuiLabelSetText(rmScrHdle, messId, buf); GfuiLabelSetText(rmScrHdle, subTitleId, buf);
//Column positions //Column positions
@ -280,7 +283,7 @@ rmRaceResults(void *prevHdle, tRmInfo *info, int start)
xDriver, y, GFUI_ALIGN_HL_VB, 0); xDriver, y, GFUI_ALIGN_HL_VB, 0);
//Driver type //Driver type
rmdGetDriverType(GfParmGetStr(results, path, RE_ATTR_MODULE, ""), buf, maxBufSize); rmdGetDriverType(GfParmGetStr(results, path, RE_ATTR_MODULE, ""), buf, sizeof(buf));
GfuiLabelCreate(rmScrHdle, buf, GFUI_FONT_MEDIUM_C, xType, y, GFUI_ALIGN_HL_VB, 0); GfuiLabelCreate(rmScrHdle, buf, GFUI_FONT_MEDIUM_C, xType, y, GFUI_ALIGN_HL_VB, 0);
//Car //Car
@ -288,7 +291,7 @@ rmRaceResults(void *prevHdle, tRmInfo *info, int start)
xCar, y, GFUI_ALIGN_HL_VB, 0); xCar, y, GFUI_ALIGN_HL_VB, 0);
GfuiLabelCreate(rmScrHdle, GfParmGetStr(results, path, RE_ATTR_NAME, NULL), GFUI_FONT_MEDIUM_C, xDriver, y, GFUI_ALIGN_HL_VB, 0); GfuiLabelCreate(rmScrHdle, GfParmGetStr(results, path, RE_ATTR_NAME, NULL), GFUI_FONT_MEDIUM_C, xDriver, y, GFUI_ALIGN_HL_VB, 0);
rmdGetDriverType(GfParmGetStr(results, path, RE_ATTR_MODULE, NULL), buf, maxBufSize); rmdGetDriverType(GfParmGetStr(results, path, RE_ATTR_MODULE, NULL), buf, sizeof(buf));
GfuiLabelCreate(rmScrHdle, buf, GFUI_FONT_MEDIUM_C, xType, y, GFUI_ALIGN_HL_VB, 0); GfuiLabelCreate(rmScrHdle, buf, GFUI_FONT_MEDIUM_C, xType, y, GFUI_ALIGN_HL_VB, 0);
GfuiLabelCreate(rmScrHdle, GfParmGetStr(results, path, RE_ATTR_CAR, NULL), GFUI_FONT_MEDIUM_C, GfuiLabelCreate(rmScrHdle, GfParmGetStr(results, path, RE_ATTR_CAR, NULL), GFUI_FONT_MEDIUM_C,
xCar, y, GFUI_ALIGN_HL_VB, 0); xCar, y, GFUI_ALIGN_HL_VB, 0);
@ -375,9 +378,8 @@ rmQualifResults(void *prevHdle, tRmInfo *info, int start)
const char *race = info->_reRaceName; const char *race = info->_reRaceName;
int i; int i;
int y; int y;
static const unsigned maxBufSize = 256; static char buf[256];
static char buf[maxBufSize]; static char path[512];
static char path[1024];
char *str; char *str;
static float fgcolor[4] = {1.0, 0.0, 1.0, 1.0}; static float fgcolor[4] = {1.0, 0.0, 1.0, 1.0};
int laps, totLaps; int laps, totLaps;
@ -389,8 +391,8 @@ rmQualifResults(void *prevHdle, tRmInfo *info, int start)
CreateStaticControls(menuXMLDescHdle,rmScrHdle); CreateStaticControls(menuXMLDescHdle,rmScrHdle);
sprintf(buf, "%s", info->track->name); sprintf(buf, "%s", info->track->name);
const int messId = CreateLabelControl(rmScrHdle, menuXMLDescHdle, "racetitle"); const int subTitleId = CreateLabelControl(rmScrHdle, menuXMLDescHdle, "racetitle");
GfuiLabelSetText(rmScrHdle, messId, buf); GfuiLabelSetText(rmScrHdle, subTitleId, buf);
const int offset = 50; const int offset = 50;
const int xRank = offset + 30; const int xRank = offset + 30;
@ -423,7 +425,7 @@ rmQualifResults(void *prevHdle, tRmInfo *info, int start)
GfuiLabelCreate(rmScrHdle, GfParmGetStr(results, path, RE_ATTR_NAME, NULL), GFUI_FONT_MEDIUM_C, GfuiLabelCreate(rmScrHdle, GfParmGetStr(results, path, RE_ATTR_NAME, NULL), GFUI_FONT_MEDIUM_C,
xDriver, y, GFUI_ALIGN_HL_VB, 0); xDriver, y, GFUI_ALIGN_HL_VB, 0);
rmdGetDriverType(GfParmGetStr(results, path, RE_ATTR_MODULE, NULL), buf, maxBufSize); rmdGetDriverType(GfParmGetStr(results, path, RE_ATTR_MODULE, NULL), buf, sizeof(buf));
GfuiLabelCreate(rmScrHdle, buf, GFUI_FONT_MEDIUM_C, GfuiLabelCreate(rmScrHdle, buf, GFUI_FONT_MEDIUM_C,
xType, y, GFUI_ALIGN_HL_VB, 0); xType, y, GFUI_ALIGN_HL_VB, 0);
GfuiLabelCreate(rmScrHdle, GfParmGetStr(results, path, RE_ATTR_CAR, NULL), GFUI_FONT_MEDIUM_C, GfuiLabelCreate(rmScrHdle, GfParmGetStr(results, path, RE_ATTR_CAR, NULL), GFUI_FONT_MEDIUM_C,
@ -493,9 +495,8 @@ rmShowStandings(void *prevHdle, tRmInfo *info, int start)
{ {
int i; int i;
int y; int y;
static const unsigned maxBufSize = 256; static char buf[256];
static char buf[maxBufSize]; static char path[512];
static char path[1024];
static float fgcolor[4] = {1.0, 0.0, 1.0, 1.0}; static float fgcolor[4] = {1.0, 0.0, 1.0, 1.0};
int nbCars; int nbCars;
void *results = info->results; void *results = info->results;
@ -508,8 +509,8 @@ rmShowStandings(void *prevHdle, tRmInfo *info, int start)
//Set title //Set title
sprintf(buf, "%s Standings", race); sprintf(buf, "%s Standings", race);
const int messId = CreateLabelControl(rmScrHdle, menuXMLDescHdle, "racetitle"); const int subTitleId = CreateLabelControl(rmScrHdle, menuXMLDescHdle, "racetitle");
GfuiLabelSetText(rmScrHdle, messId, buf); GfuiLabelSetText(rmScrHdle, subTitleId, buf);
//Show header //Show header
const int offset = 50; const int offset = 50;
@ -541,7 +542,7 @@ rmShowStandings(void *prevHdle, tRmInfo *info, int start)
xDriver, y, GFUI_ALIGN_HL_VB, 0); xDriver, y, GFUI_ALIGN_HL_VB, 0);
//Driver type //Driver type
rmdGetDriverType(GfParmGetStr(results, path, RE_ATTR_MODULE, NULL), buf, maxBufSize); rmdGetDriverType(GfParmGetStr(results, path, RE_ATTR_MODULE, NULL), buf, sizeof(buf));
GfuiLabelCreate(rmScrHdle, buf, GFUI_FONT_MEDIUM_C, GfuiLabelCreate(rmScrHdle, buf, GFUI_FONT_MEDIUM_C,
xType, y, GFUI_ALIGN_HL_VB, 0); xType, y, GFUI_ALIGN_HL_VB, 0);