Skip to content

Commit

Permalink
Fix apsOilList, splitting out apsExtractorLists, and using the latter…
Browse files Browse the repository at this point in the history
… in a few places.
  • Loading branch information
perim committed Dec 15, 2010
1 parent 0ac282e commit 0e6cb3e
Show file tree
Hide file tree
Showing 9 changed files with 45 additions and 75 deletions.
4 changes: 3 additions & 1 deletion src/game.c
Expand Up @@ -2401,8 +2401,9 @@ BOOL loadGame(const char *pGameToLoad, BOOL keepObjects, BOOL freeMem, BOOL User
//clear all the messages?
apsProxDisp[player] = NULL;
apsSensorList[0] = NULL;
apsOilList[0] = NULL;
apsExtractorLists[player] = NULL;
}
apsOilList[0] = NULL;
initFactoryNumFlag();
}

Expand All @@ -2416,6 +2417,7 @@ BOOL loadGame(const char *pGameToLoad, BOOL keepObjects, BOOL freeMem, BOOL User
mission.apsStructLists[player] = NULL;
mission.apsFeatureLists[player] = NULL;
mission.apsFlagPosLists[player] = NULL;
mission.apsExtractorLists[player] = NULL;
}
mission.apsOilList[0] = NULL;
mission.apsSensorList[0] = NULL;
Expand Down
22 changes: 14 additions & 8 deletions src/keybind.c
Expand Up @@ -1576,19 +1576,25 @@ void kf_ToggleProximitys( void )
// --------------------------------------------------------------------------
void kf_JumpToResourceExtractor( void )
{
STRUCTURE *psStruct;
SDWORD xJump,yJump;
int xJump, yJump;

if (psOldRE && psOldRE->psNextFunc)
{
psOldRE = psOldRE->psNextFunc;
}
else
{
psOldRE = apsExtractorLists[selectedPlayer];
}

psStruct = getRExtractor(psOldRE);
if(psStruct)
if (psOldRE)
{
xJump = (psStruct->pos.x - ((visibleTiles.x/2)*TILE_UNITS));
yJump = (psStruct->pos.y - ((visibleTiles.y/2)*TILE_UNITS));
xJump = (psOldRE->pos.x - ((visibleTiles.x / 2) * TILE_UNITS));
yJump = (psOldRE->pos.y - ((visibleTiles.y / 2) * TILE_UNITS));
player.p.x = xJump;
player.p.z = yJump;
player.r.y = 0; // face north
setViewPos(map_coord(psStruct->pos.x), map_coord(psStruct->pos.y), true);
psOldRE = psStruct;
setViewPos(map_coord(psOldRE->pos.x), map_coord(psOldRE->pos.y), true);
}
else
{
Expand Down
12 changes: 11 additions & 1 deletion src/mission.c
Expand Up @@ -251,6 +251,7 @@ void initMission(void)
mission.apsDroidLists[inc] = NULL;
mission.apsFeatureLists[inc] = NULL;
mission.apsFlagPosLists[inc] = NULL;
mission.apsExtractorLists[inc] = NULL;
apsLimboDroids[inc] = NULL;
}
mission.apsSensorList[0] = NULL;
Expand Down Expand Up @@ -324,6 +325,8 @@ BOOL missionShutDown(void)
mission.apsFeatureLists[inc] = NULL;
apsFlagPosLists[inc] = mission.apsFlagPosLists[inc];
mission.apsFlagPosLists[inc] = NULL;
apsExtractorLists[inc] = mission.apsExtractorLists[inc];
mission.apsExtractorLists[inc] = NULL;
}
apsSensorList[0] = mission.apsSensorList[0];
apsOilList[0] = mission.apsOilList[0];
Expand Down Expand Up @@ -803,6 +806,7 @@ static void saveMissionData(void)
mission.apsDroidLists[inc] = apsDroidLists[inc];
mission.apsFeatureLists[inc] = apsFeatureLists[inc];
mission.apsFlagPosLists[inc] = apsFlagPosLists[inc];
mission.apsExtractorLists[inc] = apsExtractorLists[inc];
}
mission.apsSensorList[0] = apsSensorList[0];
mission.apsOilList[0] = apsOilList[0];
Expand Down Expand Up @@ -871,6 +875,9 @@ void restoreMissionData(void)

apsFlagPosLists[inc] = mission.apsFlagPosLists[inc];
mission.apsFlagPosLists[inc] = NULL;

apsExtractorLists[inc] = mission.apsExtractorLists[inc];
mission.apsExtractorLists[inc] = NULL;
}
apsSensorList[0] = mission.apsSensorList[0];
apsOilList[0] = mission.apsOilList[0];
Expand Down Expand Up @@ -1460,13 +1467,16 @@ void swapMissionPointers(void)
pVoid = (void*)apsFlagPosLists[inc];
apsFlagPosLists[inc] = mission.apsFlagPosLists[inc];
mission.apsFlagPosLists[inc] = (FLAG_POSITION *)pVoid;
pVoid = (void*)apsExtractorLists[inc];
apsExtractorLists[inc] = mission.apsExtractorLists[inc];
mission.apsExtractorLists[inc] = (STRUCTURE *)pVoid;
}
pVoid = (void*)apsSensorList[0];
apsSensorList[0] = mission.apsSensorList[0];
mission.apsSensorList[0] = (BASE_OBJECT *)pVoid;
pVoid = (void*)apsOilList[0];
apsOilList[0] = mission.apsOilList[0];
mission.apsOilList[0] = (BASE_OBJECT *)pVoid;
mission.apsOilList[0] = (FEATURE *)pVoid;
}

void endMission(void)
Expand Down
4 changes: 2 additions & 2 deletions src/missiondef.h
Expand Up @@ -63,11 +63,11 @@ typedef struct _mission
UDWORD scrollMinY;
UDWORD scrollMaxX;
UDWORD scrollMaxY;
STRUCTURE *apsStructLists[MAX_PLAYERS]; //original object lists
STRUCTURE *apsStructLists[MAX_PLAYERS], *apsExtractorLists[MAX_PLAYERS]; //original object lists
DROID *apsDroidLists[MAX_PLAYERS];
FEATURE *apsFeatureLists[MAX_PLAYERS];
BASE_OBJECT *apsSensorList[1];
BASE_OBJECT *apsOilList[1];
FEATURE *apsOilList[1];
//struct _proximity_display *apsProxDisp[MAX_PLAYERS];
FLAG_POSITION *apsFlagPosLists[MAX_PLAYERS];
int32_t asCurrentPower[MAX_PLAYERS];
Expand Down
19 changes: 10 additions & 9 deletions src/objmem.c
Expand Up @@ -63,8 +63,9 @@ uint32_t synchObjID;
DROID *apsDroidLists[MAX_PLAYERS];
STRUCTURE *apsStructLists[MAX_PLAYERS];
FEATURE *apsFeatureLists[MAX_PLAYERS]; ///< Only player zero is valid for features. TODO: Reduce to single list.
STRUCTURE *apsExtractorLists[MAX_PLAYERS];
FEATURE *apsOilList[1];
BASE_OBJECT *apsSensorList[1]; ///< List of sensors in the game.
BASE_OBJECT *apsOilList[1];

/*The list of Flag Positions allocated */
FLAG_POSITION *apsFlagPosLists[MAX_PLAYERS];
Expand Down Expand Up @@ -589,9 +590,9 @@ void addStructure(STRUCTURE *psStructToAdd)
{
addObjectToFuncList(apsSensorList, (BASE_OBJECT*)psStructToAdd, 0);
}
else if (psStructToAdd->type == REF_RESOURCE_EXTRACTOR)
else if (psStructToAdd->pStructureType->type == REF_RESOURCE_EXTRACTOR)
{
addObjectToFuncList(apsOilList, (BASE_OBJECT*)psStructToAdd, 0);
addObjectToFuncList((BASE_OBJECT **)apsExtractorLists, (BASE_OBJECT *)psStructToAdd, psStructToAdd->player);
}
}

Expand All @@ -610,9 +611,9 @@ void killStruct(STRUCTURE *psBuilding)
{
removeObjectFromFuncList(apsSensorList, (BASE_OBJECT*)psBuilding, 0);
}
else if (psBuilding->type == REF_RESOURCE_EXTRACTOR)
else if (psBuilding->pStructureType->type == REF_RESOURCE_EXTRACTOR)
{
removeObjectFromFuncList(apsOilList, (BASE_OBJECT*)psBuilding, 0);
removeObjectFromFuncList((BASE_OBJECT **)apsExtractorLists, (BASE_OBJECT *)psBuilding, psBuilding->player);
}

for (i = 0; i < STRUCT_MAXWEAPS; i++)
Expand Down Expand Up @@ -674,9 +675,9 @@ void removeStructureFromList(STRUCTURE *psStructToRemove, STRUCTURE *pList[MAX_P
{
removeObjectFromFuncList(apsSensorList, (BASE_OBJECT*)psStructToRemove, 0);
}
else if (psStructToRemove->type == REF_RESOURCE_EXTRACTOR)
else if (psStructToRemove->pStructureType->type == REF_RESOURCE_EXTRACTOR)
{
removeObjectFromFuncList(apsOilList, (BASE_OBJECT*)psStructToRemove, 0);
removeObjectFromFuncList((BASE_OBJECT **)apsExtractorLists, (BASE_OBJECT *)psStructToRemove, psStructToRemove->player);
}
}

Expand All @@ -694,7 +695,7 @@ void addFeature(FEATURE *psFeatureToAdd)
addObjectToList((BASE_OBJECT**)apsFeatureLists, (BASE_OBJECT*)psFeatureToAdd, 0);
if (psFeatureToAdd->psStats->subType == FEAT_OIL_RESOURCE)
{
addObjectToFuncList(apsOilList, (BASE_OBJECT*)psFeatureToAdd, 0);
addObjectToFuncList((BASE_OBJECT **)apsOilList, (BASE_OBJECT *)psFeatureToAdd, 0);
}
}

Expand All @@ -710,7 +711,7 @@ void killFeature(FEATURE *psDel)

if (psDel->psStats->subType == FEAT_OIL_RESOURCE)
{
removeObjectFromFuncList(apsOilList, (BASE_OBJECT*)psDel, 0);
removeObjectFromFuncList((BASE_OBJECT **)apsOilList, (BASE_OBJECT *)psDel, 0);
}
}

Expand Down
3 changes: 2 additions & 1 deletion src/objmem.h
Expand Up @@ -36,8 +36,9 @@ extern DROID *apsDroidLists[MAX_PLAYERS];
extern STRUCTURE *apsStructLists[MAX_PLAYERS];
extern FEATURE *apsFeatureLists[MAX_PLAYERS];
extern FLAG_POSITION *apsFlagPosLists[MAX_PLAYERS];
extern STRUCTURE *apsExtractorLists[MAX_PLAYERS];
extern BASE_OBJECT *apsSensorList[1];
extern BASE_OBJECT *apsOilList[1];
extern FEATURE *apsOilList[1];

/* The list of destroyed objects */
extern BASE_OBJECT *psDestroyedObj;
Expand Down
37 changes: 0 additions & 37 deletions src/power.c
Expand Up @@ -327,43 +327,6 @@ void newGameInitPower(void)
}
}

STRUCTURE *getRExtractor(STRUCTURE *psStruct)
{
STRUCTURE *psCurr;
STRUCTURE *psFirst;
BOOL bGonePastIt;

for(psCurr = apsStructLists[selectedPlayer],psFirst = NULL,bGonePastIt = false;
psCurr; psCurr = psCurr->psNext)
{
if( psCurr->pStructureType->type == REF_RESOURCE_EXTRACTOR )
{

if(!psFirst)
{
psFirst = psCurr;
}

if(!psStruct)
{
return(psCurr);
}
else if(psCurr!=psStruct && bGonePastIt)
{
return(psCurr);
}

if(psCurr==psStruct)
{
bGonePastIt = true;
}


}
}
return(psFirst);
}

/*defines which structure types draw power - returns true if use power*/
BOOL structUsesPower(STRUCTURE *psStruct)
{
Expand Down
5 changes: 0 additions & 5 deletions src/power.h
Expand Up @@ -75,11 +75,6 @@ void powerCalc(BOOL on);
/** Temp function to give all players some power when a new game has been loaded. */
void newGameInitPower(void);

/** Returns the next res. Ext. in the list from the one passed in. returns 1st one
in list if passed in is NULL and NULL if there's none?
*/
extern STRUCTURE *getRExtractor(STRUCTURE *psStruct);

/** Defines which structure types draw power - returns true if use power. */
extern BOOL structUsesPower(STRUCTURE *psStruct);

Expand Down
14 changes: 3 additions & 11 deletions src/structure.c
Expand Up @@ -5813,11 +5813,8 @@ void checkForResExtractors(STRUCTURE *psBuilding)
//check capacity against number of filled slots
if (slot < NUM_POWER_MODULES)
{
for (psCurr = apsStructLists[psBuilding->player]; psCurr != NULL;
psCurr = psCurr->psNext)
for (psCurr = apsExtractorLists[psBuilding->player]; psCurr != NULL; psCurr = psCurr->psNextFunc)
{
if (psCurr->pStructureType->type == REF_RESOURCE_EXTRACTOR)
{
psResExtractor = &psCurr->pFunctionality->resourceExtractor;

//check not connected and power left and built!
Expand Down Expand Up @@ -5846,7 +5843,6 @@ void checkForResExtractors(STRUCTURE *psBuilding)
break;
}
}
}
}
}
}
Expand Down Expand Up @@ -5961,14 +5957,10 @@ void releaseResExtractor(STRUCTURE *psRelease)
psRelease->pFunctionality->resourceExtractor.psPowerGen = NULL;

//there may be spare resource extractors
for (psCurr = apsStructLists[psRelease->player]; psCurr != NULL; psCurr =
psCurr->psNext)
for (psCurr = apsExtractorLists[psRelease->player]; psCurr != NULL; psCurr = psCurr->psNextFunc)
{
//check not connected and power left and built!
if (psCurr->pStructureType->type == REF_RESOURCE_EXTRACTOR
&& psCurr != psRelease
&& !psCurr->pFunctionality->resourceExtractor.active
&& psCurr->status == SS_BUILT)
if (psCurr != psRelease && !psCurr->pFunctionality->resourceExtractor.active && psCurr->status == SS_BUILT)
{
checkForPowerGen(psCurr);
}
Expand Down

0 comments on commit 0e6cb3e

Please sign in to comment.