- added pit panel in Mile Speedway

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

Former-commit-id: 780860603ec76561b357d0fc3ee205f41fa02e68
Former-commit-id: 54253d3e6f640d24336e11995feb4da6fffea960
This commit is contained in:
torcs-ng 2015-09-12 22:41:11 +00:00
parent 2dbe8f8d9c
commit d1a3be0d50
2 changed files with 851 additions and 823 deletions

View file

@ -825,7 +825,7 @@ void grLoadBackgroundSky(void)
bgsky = "background-sky.ac"; bgsky = "background-sky.ac";
snprintf(buf2, sizeof(buf2), "tracks/%s/%s;data/textures;.", grTrack->category, grTrack->internalname); snprintf(buf2, sizeof(buf2), "tracks/%s/%s;data/textures;.", grTrack->category, grTrack->internalname);
ssgTexturePath(buf2); ssgTexturePath(buf2);
snprintf(buf2, sizeof(buf2), "data/objects"); snprintf(buf2, sizeof(buf2), "tracks/%s/%s;data/objects", grTrack->category, grTrack->internalname);
ssgModelPath(buf2); ssgModelPath(buf2);
desc2 = grssgLoadAC3D(bgsky, NULL); desc2 = grssgLoadAC3D(bgsky, NULL);
@ -1010,22 +1010,26 @@ grShutdownBackground(void)
if (BackSkyAnchor) if (BackSkyAnchor)
BackSkyAnchor = 0; BackSkyAnchor = 0;
if (grEnvState) { if (grEnvState)
{
ssgDeRefDelete(grEnvState); ssgDeRefDelete(grEnvState);
grEnvState = 0; grEnvState = 0;
} }
if (grEnvShadowState) { if (grEnvShadowState)
{
ssgDeRefDelete(grEnvShadowState); ssgDeRefDelete(grEnvShadowState);
grEnvShadowState = 0; grEnvShadowState = 0;
} }
if (grEnvShadowStateOnCars) { if (grEnvShadowStateOnCars)
{
ssgDeRefDelete(grEnvShadowStateOnCars); ssgDeRefDelete(grEnvShadowStateOnCars);
grEnvShadowStateOnCars = 0; grEnvShadowStateOnCars = 0;
} }
if(grEnvSelector) { if(grEnvSelector)
{
delete grEnvSelector; delete grEnvSelector;
grEnvSelector = 0; grEnvSelector = 0;
} }

View file

@ -279,10 +279,12 @@ void grCustomizePits(void)
// Draw the pit identification on the wall if any. // Draw the pit identification on the wall if any.
switch (pits->type) { switch (pits->type)
{
case TR_PIT_ON_TRACK_SIDE: case TR_PIT_ON_TRACK_SIDE:
GfLogTrace("Creating track side pit buildings (%d slots) ...\n", pits->nMaxPits); GfLogTrace("Creating track side pit buildings (%d slots) ...\n", pits->nMaxPits);
for (int i = 0; i < pits->nMaxPits; i++) { for (int i = 0; i < pits->nMaxPits; i++)
{
//GfLogDebug("Pit Nbr: %d\n", i); //GfLogDebug("Pit Nbr: %d\n", i);
ssgVertexArray *pit_vtx = new ssgVertexArray(4); ssgVertexArray *pit_vtx = new ssgVertexArray(4);
ssgTexCoordArray *pit_tex = new ssgTexCoordArray(4); ssgTexCoordArray *pit_tex = new ssgTexCoordArray(4);
@ -297,7 +299,8 @@ void grCustomizePits(void)
// If we have at least one car in the pit, use the team pit logo of driver 0. // If we have at least one car in the pit, use the team pit logo of driver 0.
ssgState *st = 0; ssgState *st = 0;
if (pits->driversPits[i].car[0]) { if (pits->driversPits[i].car[0])
{
snprintf(buf, sizeof(buf), snprintf(buf, sizeof(buf),
"%sdrivers/%s/%d;%sdrivers/%s;drivers/%s/%d;drivers/%s", "%sdrivers/%s/%d;%sdrivers/%s;drivers/%s/%d;drivers/%s",
GfLocalDir(), GfLocalDir(),
@ -313,7 +316,8 @@ void grCustomizePits(void)
// update the logo file name accordingly. // update the logo file name accordingly.
int skinnedLogo = FALSE; int skinnedLogo = FALSE;
if (strlen(pits->driversPits[i].car[0]->_skinName) != 0 if (strlen(pits->driversPits[i].car[0]->_skinName) != 0
&& pits->driversPits[i].car[0]->_skinTargets & RM_CAR_SKIN_TARGET_PIT_DOOR) { && pits->driversPits[i].car[0]->_skinTargets & RM_CAR_SKIN_TARGET_PIT_DOOR)
{
skinnedLogo = TRUE; skinnedLogo = TRUE;
strLogoFileName += '-'; strLogoFileName += '-';
strLogoFileName += pits->driversPits[i].car[0]->_skinName; strLogoFileName += pits->driversPits[i].car[0]->_skinName;
@ -325,18 +329,21 @@ void grCustomizePits(void)
const std::string strPNGLogoFileName = strLogoFileName + ".png"; const std::string strPNGLogoFileName = strLogoFileName + ".png";
st = grSsgLoadTexStateEx(strPNGLogoFileName.c_str(), buf, FALSE, FALSE, FALSE); st = grSsgLoadTexStateEx(strPNGLogoFileName.c_str(), buf, FALSE, FALSE, FALSE);
#endif #endif
if (!st) { if (!st)
{
const std::string strRGBLogoFileName = strLogoFileName + ".rgb"; const std::string strRGBLogoFileName = strLogoFileName + ".rgb";
st = grSsgLoadTexStateEx(strRGBLogoFileName.c_str(), buf, FALSE, FALSE, skinnedLogo); st = grSsgLoadTexStateEx(strRGBLogoFileName.c_str(), buf, FALSE, FALSE, skinnedLogo);
} }
} // if pits->driverPits[i].car[0] } // if pits->driverPits[i].car[0]
// If no car in the pit, or logo file not found, hope for the .rgb in data/textures. // If no car in the pit, or logo file not found, hope for the .rgb in data/textures.
if (!st) { if (!st)
{
snprintf(buf, sizeof(buf), "data/textures"); snprintf(buf, sizeof(buf), "data/textures");
const std::string strRGBLogoFileName = strLogoFileName + ".rgb"; const std::string strRGBLogoFileName = strLogoFileName + ".rgb";
st = grSsgLoadTexStateEx(strRGBLogoFileName.c_str(), buf, FALSE, FALSE, TRUE); st = grSsgLoadTexStateEx(strRGBLogoFileName.c_str(), buf, FALSE, FALSE, TRUE);
} }
st->setOpaque(); st->setOpaque();
reinterpret_cast<ssgSimpleState*>(st)->setShininess(50); reinterpret_cast<ssgSimpleState*>(st)->setShininess(50);
reinterpret_cast<ssgSimpleState*>(st)->disable(GL_BLEND); reinterpret_cast<ssgSimpleState*>(st)->disable(GL_BLEND);
@ -436,6 +443,14 @@ void grCustomizePits(void)
// Done. // Done.
ThePits->addKid(pit); ThePits->addKid(pit);
} // for i } // for i
#if 0
char buf3[256];
snprintf(buf3, sizeof(buf3), "%strack-pit.ac", GfLocalDir());
ssgSaveAC ( buf3, PitsAnchor );
#endif
break; break;
case TR_PIT_NO_BUILDING: case TR_PIT_NO_BUILDING:
@ -505,7 +520,8 @@ void grCustomizePits(void)
else else
bHasPitIndicator = false; bHasPitIndicator = false;
} else }
else
{ {
snprintf(buf, sizeof(buf), "data/textures"); snprintf(buf, sizeof(buf), "data/textures");
strLogoFileName = "tr-wall-gr"; strLogoFileName = "tr-wall-gr";
@ -721,6 +737,14 @@ void grCustomizePits(void)
} }
} // for i } // for i
} }
#if 0
char buf2[256];
snprintf(buf2, sizeof(buf2), "%strack-pit.ac", GfLocalDir());
ssgSaveAC ( buf2, PitsAnchor );
#endif
break; break;
case TR_PIT_ON_SEPARATE_PATH: case TR_PIT_ON_SEPARATE_PATH:
@ -757,5 +781,5 @@ void grLoadPitsIndicator(tdble x, tdble y, tdble z, char *buf, int Pitind)
desc = grssgLoadAC3D("normal_pit_indicator.ac", NULL); desc = grssgLoadAC3D("normal_pit_indicator.ac", NULL);
PitIndicatorLoc->addKid(desc); PitIndicatorLoc->addKid(desc);
PitsAnchor->addKid(PitIndicatorLoc); ThePits->addKid(PitIndicatorLoc);
} }