From: <av...@us...> - 2011-09-09 21:36:42
|
Revision: 3695 http://sc2.svn.sourceforge.net/sc2/?rev=3695&view=rev Author: avolkov Date: 2011-09-09 21:36:34 +0000 (Fri, 09 Sep 2011) Log Message: ----------- Refactor scan nodes generation funcs: get rid of PLANET_INFO.CurXXX fields and pass a struct to generation funcs to fill instead; makes SOLARSYS_STATE const for the funcs; gets rid of unconst casts; bug #50 Modified Paths: -------------- trunk/sc2/src/uqm/planets/generate/genand.c trunk/sc2/src/uqm/planets/generate/genburv.c trunk/sc2/src/uqm/planets/generate/gendefault.c trunk/sc2/src/uqm/planets/generate/gendefault.h trunk/sc2/src/uqm/planets/generate/gendru.c trunk/sc2/src/uqm/planets/generate/genilw.c trunk/sc2/src/uqm/planets/generate/genmyc.c trunk/sc2/src/uqm/planets/generate/genorz.c trunk/sc2/src/uqm/planets/generate/genpet.c trunk/sc2/src/uqm/planets/generate/genpku.c trunk/sc2/src/uqm/planets/generate/gensol.c trunk/sc2/src/uqm/planets/generate/genspa.c trunk/sc2/src/uqm/planets/generate/gensup.c trunk/sc2/src/uqm/planets/generate/genthrad.c trunk/sc2/src/uqm/planets/generate/genutw.c trunk/sc2/src/uqm/planets/generate/genvault.c trunk/sc2/src/uqm/planets/generate/genvux.c trunk/sc2/src/uqm/planets/generate/genwreck.c trunk/sc2/src/uqm/planets/generate/genyeh.c trunk/sc2/src/uqm/planets/generate/genzoq.c trunk/sc2/src/uqm/planets/generate.h trunk/sc2/src/uqm/planets/plandata.h trunk/sc2/src/uqm/planets/planets.h trunk/sc2/src/uqm/planets/scan.c trunk/sc2/src/uqm/planets/scan.h trunk/sc2/src/uqm/planets/sundata.h trunk/sc2/src/uqm/planets/surface.c trunk/sc2/src/uqm/uqmdebug.c Modified: trunk/sc2/src/uqm/planets/generate/genand.c =================================================================== --- trunk/sc2/src/uqm/planets/generate/genand.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/generate/genand.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -30,8 +30,8 @@ static bool GenerateAndrosynth_generatePlanets (SOLARSYS_STATE *solarSys); static bool GenerateAndrosynth_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world); -static COUNT GenerateAndrosynth_generateEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +static COUNT GenerateAndrosynth_generateEnergy (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); static bool GenerateAndrosynth_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode); @@ -152,12 +152,12 @@ } static COUNT -GenerateAndrosynth_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateAndrosynth_generateEnergy (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (matchWorld (solarSys, world, 1, MATCH_PLANET)) { - return GenerateDefault_generateRuins (solarSys, whichNode); + return GenerateDefault_generateRuins (solarSys, whichNode, info); } return 0; Modified: trunk/sc2/src/uqm/planets/generate/genburv.c =================================================================== --- trunk/sc2/src/uqm/planets/generate/genburv.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/generate/genburv.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -30,8 +30,8 @@ PLANET_DESC *planet); static bool GenerateBurvixese_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world); -static COUNT GenerateBurvixese_generateEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +static COUNT GenerateBurvixese_generateEnergy (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); static bool GenerateBurvixese_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode); @@ -104,11 +104,11 @@ rand_val = RandomContext_GetSeed (SysGenRNG); solarSys->SysInfo.PlanetInfo.ScanSeed[BIOLOGICAL_SCAN] = rand_val; - GenerateLifeForms (&solarSys->SysInfo, GENERATE_ALL); + GenerateLifeForms (&solarSys->SysInfo, GENERATE_ALL, NULL); rand_val = RandomContext_GetSeed (SysGenRNG); solarSys->SysInfo.PlanetInfo.ScanSeed[MINERAL_SCAN] = rand_val; - GenerateMineralDeposits (&solarSys->SysInfo, GENERATE_ALL); + GenerateMineralDeposits (&solarSys->SysInfo, GENERATE_ALL, NULL); solarSys->SysInfo.PlanetInfo.ScanSeed[ENERGY_SCAN] = rand_val; @@ -140,12 +140,12 @@ } static COUNT -GenerateBurvixese_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateBurvixese_generateEnergy (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { - return GenerateDefault_generateRuins (solarSys, whichNode); + return GenerateDefault_generateRuins (solarSys, whichNode, info); } if (matchWorld (solarSys, world, 0, 0)) @@ -157,7 +157,7 @@ return 0; } - return GenerateDefault_generateArtifact (solarSys, whichNode); + return GenerateDefault_generateArtifact (solarSys, whichNode, info); } return 0; Modified: trunk/sc2/src/uqm/planets/generate/gendefault.c =================================================================== --- trunk/sc2/src/uqm/planets/generate/gendefault.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/generate/gendefault.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -27,17 +27,6 @@ #include "libs/mathlib.h" -bool GenerateDefault_initNpcs (SOLARSYS_STATE *solarSys); -bool GenerateDefault_reinitNpcs (SOLARSYS_STATE *solarSys); -bool GenerateDefault_uninitNpcs (SOLARSYS_STATE *solarSys); -bool GenerateDefault_generatePlanets (SOLARSYS_STATE *solarSys); -bool GenerateDefault_generateMoons (SOLARSYS_STATE *solarSys, - PLANET_DESC *planet); -bool GenerateDefault_generateName (SOLARSYS_STATE *solarSys, - PLANET_DESC *world); -bool GenerateDefault_generateOrbital (SOLARSYS_STATE *solarSys, - PLANET_DESC *world); - static void GeneratePlanets (SOLARSYS_STATE *system); static void check_yehat_rebellion (void); @@ -113,7 +102,8 @@ } bool -GenerateDefault_generateName (SOLARSYS_STATE *solarSys, PLANET_DESC *world) +GenerateDefault_generateName (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world) { COUNT i = planetIndex (solarSys, world); utf8StringCopy (GLOBAL_SIS (PlanetName), sizeof (GLOBAL_SIS (PlanetName)), @@ -149,11 +139,11 @@ rand_val = RandomContext_GetSeed (SysGenRNG); sysInfo->PlanetInfo.ScanSeed[BIOLOGICAL_SCAN] = rand_val; - GenerateLifeForms (sysInfo, GENERATE_ALL); + GenerateLifeForms (sysInfo, GENERATE_ALL, NULL); rand_val = RandomContext_GetSeed (SysGenRNG); sysInfo->PlanetInfo.ScanSeed[MINERAL_SCAN] = rand_val; - GenerateMineralDeposits (sysInfo, GENERATE_ALL); + GenerateMineralDeposits (sysInfo, GENERATE_ALL, NULL); sysInfo->PlanetInfo.ScanSeed[ENERGY_SCAN] = rand_val; LoadPlanet (NULL); @@ -162,10 +152,10 @@ } COUNT -GenerateDefault_generateMinerals (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode) +GenerateDefault_generateMinerals (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { - return GenerateMineralDeposits (&solarSys->SysInfo, whichNode); + return GenerateMineralDeposits (&solarSys->SysInfo, whichNode, info); (void) world; } @@ -181,12 +171,13 @@ } COUNT -GenerateDefault_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateDefault_generateEnergy (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { (void) whichNode; (void) solarSys; (void) world; + (void) info; return 0; } @@ -204,10 +195,10 @@ } COUNT -GenerateDefault_generateLife (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateDefault_generateLife (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { - return GenerateLifeForms (&solarSys->SysInfo, whichNode); + return GenerateLifeForms (&solarSys->SysInfo, whichNode, info); (void) world; } @@ -223,18 +214,21 @@ } COUNT -GenerateDefault_generateArtifact (SOLARSYS_STATE *solarSys, COUNT whichNode) +GenerateDefault_generateArtifact (const SOLARSYS_STATE *solarSys, + COUNT whichNode, NODE_INFO *info) { // Generate an energy node at a random location - return GenerateRandomNodes (&solarSys->SysInfo, ENERGY_SCAN, 1, 0, whichNode); + return GenerateRandomNodes (&solarSys->SysInfo, ENERGY_SCAN, 1, 0, + whichNode, info); } COUNT -GenerateDefault_generateRuins (SOLARSYS_STATE *solarSys, COUNT whichNode) +GenerateDefault_generateRuins (const SOLARSYS_STATE *solarSys, + COUNT whichNode, NODE_INFO *info) { // Generate a standard spread of city ruins of a destroyed civilization return GenerateRandomNodes (&solarSys->SysInfo, ENERGY_SCAN, NUM_RACE_RUINS, - 0, whichNode); + 0, whichNode, info); } static inline void Modified: trunk/sc2/src/uqm/planets/generate/gendefault.h =================================================================== --- trunk/sc2/src/uqm/planets/generate/gendefault.h 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/generate/gendefault.h 2011-09-09 21:36:34 UTC (rev 3695) @@ -31,16 +31,16 @@ bool GenerateDefault_generatePlanets (SOLARSYS_STATE *solarSys); bool GenerateDefault_generateMoons (SOLARSYS_STATE *solarSys, PLANET_DESC *planet); -bool GenerateDefault_generateName (SOLARSYS_STATE *solarSys, - PLANET_DESC *world); +bool GenerateDefault_generateName (const SOLARSYS_STATE *, + const PLANET_DESC *world); bool GenerateDefault_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world); -COUNT GenerateDefault_generateMinerals (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); -COUNT GenerateDefault_generateEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); -COUNT GenerateDefault_generateLife (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +COUNT GenerateDefault_generateMinerals (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); +COUNT GenerateDefault_generateEnergy (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); +COUNT GenerateDefault_generateLife (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); bool GenerateDefault_pickupMinerals (SOLARSYS_STATE *, PLANET_DESC *world, COUNT whichNode); bool GenerateDefault_pickupEnergy (SOLARSYS_STATE *, PLANET_DESC *world, @@ -48,8 +48,10 @@ bool GenerateDefault_pickupLife (SOLARSYS_STATE *, PLANET_DESC *world, COUNT whichNode); -COUNT GenerateDefault_generateArtifact (SOLARSYS_STATE *, COUNT whichNode); -COUNT GenerateDefault_generateRuins (SOLARSYS_STATE *, COUNT whichNode); +COUNT GenerateDefault_generateArtifact (const SOLARSYS_STATE *, + COUNT whichNode, NODE_INFO *info); +COUNT GenerateDefault_generateRuins (const SOLARSYS_STATE *, + COUNT whichNode, NODE_INFO *info); bool GenerateDefault_landerReport (SOLARSYS_STATE *); bool GenerateDefault_landerReportCycle (SOLARSYS_STATE *); Modified: trunk/sc2/src/uqm/planets/generate/gendru.c =================================================================== --- trunk/sc2/src/uqm/planets/generate/gendru.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/generate/gendru.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -33,8 +33,8 @@ static bool GenerateDruuge_generatePlanets (SOLARSYS_STATE *solarSys); static bool GenerateDruuge_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world); -static COUNT GenerateDruuge_generateEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +static COUNT GenerateDruuge_generateEnergy (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); static bool GenerateDruuge_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode); @@ -156,12 +156,12 @@ } static COUNT -GenerateDruuge_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateDruuge_generateEnergy (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { - return GenerateDefault_generateRuins (solarSys, whichNode); + return GenerateDefault_generateRuins (solarSys, whichNode, info); } return 0; Modified: trunk/sc2/src/uqm/planets/generate/genilw.c =================================================================== --- trunk/sc2/src/uqm/planets/generate/genilw.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/generate/genilw.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -30,8 +30,8 @@ static bool GenerateIlwrath_generatePlanets (SOLARSYS_STATE *solarSys); static bool GenerateIlwrath_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world); -static COUNT GenerateIlwrath_generateEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +static COUNT GenerateIlwrath_generateEnergy (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); static bool GenerateIlwrath_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode); @@ -123,12 +123,12 @@ } static COUNT -GenerateIlwrath_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateIlwrath_generateEnergy (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { - return GenerateDefault_generateRuins (solarSys, whichNode); + return GenerateDefault_generateRuins (solarSys, whichNode, info); } return 0; Modified: trunk/sc2/src/uqm/planets/generate/genmyc.c =================================================================== --- trunk/sc2/src/uqm/planets/generate/genmyc.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/generate/genmyc.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -35,10 +35,10 @@ static bool GenerateMycon_generatePlanets (SOLARSYS_STATE *solarSys); static bool GenerateMycon_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world); -static COUNT GenerateMycon_generateEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); -static COUNT GenerateMycon_generateLife (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +static COUNT GenerateMycon_generateEnergy (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); +static COUNT GenerateMycon_generateLife (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); static bool GenerateMycon_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode); @@ -189,8 +189,8 @@ } static COUNT -GenerateMycon_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateMycon_generateEnergy (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (CurStarDescPtr->Index == SUN_DEVICE_DEFINED && matchWorld (solarSys, world, 0, MATCH_PLANET)) @@ -202,7 +202,7 @@ return 0; } - return GenerateDefault_generateArtifact (solarSys, whichNode); + return GenerateDefault_generateArtifact (solarSys, whichNode, info); } if ((CurStarDescPtr->Index == EGG_CASE0_DEFINED @@ -219,7 +219,7 @@ return 0; } - return GenerateDefault_generateArtifact (solarSys, whichNode); + return GenerateDefault_generateArtifact (solarSys, whichNode, info); } return 0; @@ -275,12 +275,14 @@ } static COUNT -GenerateMycon_generateLife (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateMycon_generateLife (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { + // Gee, I wonder why there isn't any life in Mycon systems... (void) whichNode; (void) solarSys; (void) world; + (void) info; return 0; } Modified: trunk/sc2/src/uqm/planets/generate/genorz.c =================================================================== --- trunk/sc2/src/uqm/planets/generate/genorz.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/generate/genorz.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -34,8 +34,8 @@ static bool GenerateOrz_generatePlanets (SOLARSYS_STATE *solarSys); static bool GenerateOrz_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world); -static COUNT GenerateOrz_generateEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +static COUNT GenerateOrz_generateEnergy (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); static bool GenerateOrz_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode); @@ -168,8 +168,8 @@ } static COUNT -GenerateOrz_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateOrz_generateEnergy (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (CurStarDescPtr->Index == TAALO_PROTECTOR_DEFINED && matchWorld (solarSys, world, 1, 2)) @@ -181,13 +181,13 @@ return 0; } - return GenerateDefault_generateArtifact (solarSys, whichNode); + return GenerateDefault_generateArtifact (solarSys, whichNode, info); } if (CurStarDescPtr->Index == ORZ_DEFINED && matchWorld (solarSys, world, 0, MATCH_PLANET)) { - return GenerateDefault_generateRuins (solarSys, whichNode); + return GenerateDefault_generateRuins (solarSys, whichNode, info); } return 0; Modified: trunk/sc2/src/uqm/planets/generate/genpet.c =================================================================== --- trunk/sc2/src/uqm/planets/generate/genpet.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/generate/genpet.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -33,8 +33,8 @@ static bool GenerateTalkingPet_generatePlanets (SOLARSYS_STATE *solarSys); static bool GenerateTalkingPet_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world); -static COUNT GenerateTalkingPet_generateEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +static COUNT GenerateTalkingPet_generateEnergy (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); static bool GenerateTalkingPet_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode); @@ -161,12 +161,12 @@ } static COUNT -GenerateTalkingPet_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateTalkingPet_generateEnergy (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { - return GenerateDefault_generateRuins (solarSys, whichNode); + return GenerateDefault_generateRuins (solarSys, whichNode, info); } return 0; Modified: trunk/sc2/src/uqm/planets/generate/genpku.c =================================================================== --- trunk/sc2/src/uqm/planets/generate/genpku.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/generate/genpku.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -31,8 +31,8 @@ static bool GeneratePkunk_generatePlanets (SOLARSYS_STATE *solarSys); static bool GeneratePkunk_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world); -static COUNT GeneratePkunk_generateEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +static COUNT GeneratePkunk_generateEnergy (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); static bool GeneratePkunk_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode); @@ -146,12 +146,12 @@ } static COUNT -GeneratePkunk_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GeneratePkunk_generateEnergy (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { - return GenerateDefault_generateRuins (solarSys, whichNode); + return GenerateDefault_generateRuins (solarSys, whichNode, info); } return 0; Modified: trunk/sc2/src/uqm/planets/generate/gensol.c =================================================================== --- trunk/sc2/src/uqm/planets/generate/gensol.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/generate/gensol.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -35,14 +35,14 @@ static bool GenerateSol_generatePlanets (SOLARSYS_STATE *solarSys); static bool GenerateSol_generateMoons (SOLARSYS_STATE *solarSys, PLANET_DESC *planet); -static bool GenerateSol_generateName (SOLARSYS_STATE *solarSys, - PLANET_DESC *world); +static bool GenerateSol_generateName (const SOLARSYS_STATE *, + const PLANET_DESC *world); static bool GenerateSol_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world); -static COUNT GenerateSol_generateEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); -static COUNT GenerateSol_generateLife (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +static COUNT GenerateSol_generateEnergy (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); +static COUNT GenerateSol_generateLife (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); static bool GenerateSol_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode); @@ -241,7 +241,8 @@ } static bool -GenerateSol_generateName (SOLARSYS_STATE *solarSys, PLANET_DESC *world) +GenerateSol_generateName (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world) { COUNT planetNr = planetIndex (solarSys, world); utf8StringCopy (GLOBAL_SIS (PlanetName), sizeof (GLOBAL_SIS (PlanetName)), @@ -274,7 +275,7 @@ rand_val = RandomContext_GetSeed (SysGenRNG); solarSys->SysInfo.PlanetInfo.ScanSeed[MINERAL_SCAN] = rand_val; - GenerateMineralDeposits (&solarSys->SysInfo, GENERATE_ALL); + GenerateMineralDeposits (&solarSys->SysInfo, GENERATE_ALL, NULL); rand_val = RandomContext_GetSeed (SysGenRNG); planetNr = planetIndex (solarSys, world); @@ -514,8 +515,8 @@ } static COUNT -GenerateSol_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateSol_generateEnergy (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (matchWorld (solarSys, world, 8, MATCH_PLANET)) { @@ -527,8 +528,11 @@ return 0; } - solarSys->SysInfo.PlanetInfo.CurPt.x = 20; - solarSys->SysInfo.PlanetInfo.CurPt.y = MAP_HEIGHT - 8; + if (info) + { + info->loc_pt.x = 20; + info->loc_pt.y = MAP_HEIGHT - 8; + } return 1; // only matters when count is requested } @@ -543,8 +547,11 @@ return 0; } - solarSys->SysInfo.PlanetInfo.CurPt.x = MAP_WIDTH * 3 / 4; - solarSys->SysInfo.PlanetInfo.CurPt.y = MAP_HEIGHT * 1 / 4; + if (info) + { + info->loc_pt.x = MAP_WIDTH * 3 / 4; + info->loc_pt.y = MAP_HEIGHT * 1 / 4; + } return 1; // only matters when count is requested } @@ -595,14 +602,14 @@ } static COUNT -GenerateSol_generateLife (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateSol_generateLife (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (matchWorld (solarSys, world, 2, 1)) { /* Earth Moon */ return GenerateRandomNodes (&solarSys->SysInfo, BIOLOGICAL_SCAN, 10, - NUM_CREATURE_TYPES + 1, whichNode); + NUM_CREATURE_TYPES + 1, whichNode, info); } return 0; Modified: trunk/sc2/src/uqm/planets/generate/genspa.c =================================================================== --- trunk/sc2/src/uqm/planets/generate/genspa.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/generate/genspa.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -35,10 +35,10 @@ PLANET_DESC *planet); static bool GenerateSpathi_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world); -static COUNT GenerateSpathi_generateEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); -static COUNT GenerateSpathi_generateLife (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +static COUNT GenerateSpathi_generateEnergy (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); +static COUNT GenerateSpathi_generateLife (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); static bool GenerateSpathi_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode); static bool GenerateSpathi_pickupLife (SOLARSYS_STATE *solarSys, @@ -148,11 +148,11 @@ rand_val = RandomContext_GetSeed (SysGenRNG); solarSys->SysInfo.PlanetInfo.ScanSeed[BIOLOGICAL_SCAN] = rand_val; - GenerateLifeForms (&solarSys->SysInfo, GENERATE_ALL); + GenerateLifeForms (&solarSys->SysInfo, GENERATE_ALL, NULL); rand_val = RandomContext_GetSeed (SysGenRNG); solarSys->SysInfo.PlanetInfo.ScanSeed[MINERAL_SCAN] = rand_val; - GenerateMineralDeposits (&solarSys->SysInfo, GENERATE_ALL); + GenerateMineralDeposits (&solarSys->SysInfo, GENERATE_ALL, NULL); solarSys->SysInfo.PlanetInfo.ScanSeed[ENERGY_SCAN] = rand_val; @@ -185,7 +185,7 @@ rand_val = RandomContext_GetSeed (SysGenRNG); solarSys->SysInfo.PlanetInfo.ScanSeed[MINERAL_SCAN] = rand_val; - GenerateMineralDeposits (&solarSys->SysInfo, GENERATE_ALL); + GenerateMineralDeposits (&solarSys->SysInfo, GENERATE_ALL, NULL); rand_val = RandomContext_GetSeed (SysGenRNG); solarSys->SysInfo.PlanetInfo.ScanSeed[BIOLOGICAL_SCAN] = rand_val; @@ -207,8 +207,8 @@ } static COUNT -GenerateSpathi_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateSpathi_generateEnergy (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (matchWorld (solarSys, world, 0, 0)) { @@ -219,7 +219,7 @@ return 0; } - return GenerateDefault_generateArtifact (solarSys, whichNode); + return GenerateDefault_generateArtifact (solarSys, whichNode, info); } return 0; @@ -247,14 +247,14 @@ } static COUNT -GenerateSpathi_generateLife (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateSpathi_generateLife (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { #define NUM_EVIL_ONES 32 return GenerateRandomNodes (&solarSys->SysInfo, BIOLOGICAL_SCAN, NUM_EVIL_ONES, - NUM_CREATURE_TYPES, whichNode); + NUM_CREATURE_TYPES, whichNode, info); } return 0; Modified: trunk/sc2/src/uqm/planets/generate/gensup.c =================================================================== --- trunk/sc2/src/uqm/planets/generate/gensup.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/generate/gensup.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -31,8 +31,8 @@ static bool GenerateSupox_generatePlanets (SOLARSYS_STATE *solarSys); static bool GenerateSupox_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world); -static COUNT GenerateSupox_generateEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +static COUNT GenerateSupox_generateEnergy (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); static bool GenerateSupox_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode); @@ -146,12 +146,12 @@ } static COUNT -GenerateSupox_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateSupox_generateEnergy (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { - return GenerateDefault_generateRuins (solarSys, whichNode); + return GenerateDefault_generateRuins (solarSys, whichNode, info); } return 0; Modified: trunk/sc2/src/uqm/planets/generate/genthrad.c =================================================================== --- trunk/sc2/src/uqm/planets/generate/genthrad.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/generate/genthrad.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -34,8 +34,8 @@ static bool GenerateThraddash_generatePlanets (SOLARSYS_STATE *solarSys); static bool GenerateThraddash_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world); -static COUNT GenerateThraddash_generateEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +static COUNT GenerateThraddash_generateEnergy (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); static bool GenerateThraddash_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode); @@ -161,13 +161,13 @@ } static COUNT -GenerateThraddash_generateEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode) +GenerateThraddash_generateEnergy (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (CurStarDescPtr->Index == THRADD_DEFINED && matchWorld (solarSys, world, 0, MATCH_PLANET)) { - return GenerateDefault_generateRuins (solarSys, whichNode); + return GenerateDefault_generateRuins (solarSys, whichNode, info); } if (CurStarDescPtr->Index == AQUA_HELIX_DEFINED @@ -180,7 +180,7 @@ return 0; } - return GenerateDefault_generateArtifact (solarSys, whichNode); + return GenerateDefault_generateArtifact (solarSys, whichNode, info); } return 0; Modified: trunk/sc2/src/uqm/planets/generate/genutw.c =================================================================== --- trunk/sc2/src/uqm/planets/generate/genutw.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/generate/genutw.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -35,8 +35,8 @@ static bool GenerateUtwig_generatePlanets (SOLARSYS_STATE *solarSys); static bool GenerateUtwig_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world); -static COUNT GenerateUtwig_generateEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +static COUNT GenerateUtwig_generateEnergy (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); static bool GenerateUtwig_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode); @@ -212,13 +212,13 @@ } static COUNT -GenerateUtwig_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateUtwig_generateEnergy (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (CurStarDescPtr->Index == UTWIG_DEFINED && matchWorld (solarSys, world, 0, MATCH_PLANET)) { - return GenerateDefault_generateRuins (solarSys, whichNode); + return GenerateDefault_generateRuins (solarSys, whichNode, info); } if (CurStarDescPtr->Index == BOMB_DEFINED @@ -231,7 +231,7 @@ return 0; } - return GenerateDefault_generateArtifact (solarSys, whichNode); + return GenerateDefault_generateArtifact (solarSys, whichNode, info); } return 0; Modified: trunk/sc2/src/uqm/planets/generate/genvault.c =================================================================== --- trunk/sc2/src/uqm/planets/generate/genvault.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/generate/genvault.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -27,8 +27,8 @@ static bool GenerateVault_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world); -static COUNT GenerateVault_generateEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +static COUNT GenerateVault_generateEnergy (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); static bool GenerateVault_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode); @@ -79,12 +79,12 @@ } static COUNT -GenerateVault_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateVault_generateEnergy (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (matchWorld (solarSys, world, 0, 0)) { - return GenerateDefault_generateArtifact (solarSys, whichNode); + return GenerateDefault_generateArtifact (solarSys, whichNode, info); } return 0; Modified: trunk/sc2/src/uqm/planets/generate/genvux.c =================================================================== --- trunk/sc2/src/uqm/planets/generate/genvux.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/generate/genvux.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -36,10 +36,10 @@ static bool GenerateVux_generatePlanets (SOLARSYS_STATE *solarSys); static bool GenerateVux_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world); -static COUNT GenerateVux_generateEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); -static COUNT GenerateVux_generateLife (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +static COUNT GenerateVux_generateEnergy (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); +static COUNT GenerateVux_generateLife (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); static bool GenerateVux_pickupEnergy (SOLARSYS_STATE *, PLANET_DESC *world, COUNT whichNode); static bool GenerateVux_pickupLife (SOLARSYS_STATE *, PLANET_DESC *world, @@ -211,8 +211,8 @@ } static COUNT -GenerateVux_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateVux_generateEnergy (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (CurStarDescPtr->Index == MAIDENS_DEFINED && matchWorld (solarSys, world, 0, MATCH_PLANET)) @@ -224,8 +224,11 @@ return 0; } - solarSys->SysInfo.PlanetInfo.CurPt.x = MAP_WIDTH / 3; - solarSys->SysInfo.PlanetInfo.CurPt.y = MAP_HEIGHT * 5 / 8; + if (info) + { + info->loc_pt.x = MAP_WIDTH / 3; + info->loc_pt.y = MAP_HEIGHT * 5 / 8; + } return 1; // only matters when count is requested } @@ -233,7 +236,7 @@ if (CurStarDescPtr->Index == VUX_DEFINED && matchWorld (solarSys, world, 0, MATCH_PLANET)) { - return GenerateDefault_generateRuins (solarSys, whichNode); + return GenerateDefault_generateRuins (solarSys, whichNode, info); } return 0; @@ -270,56 +273,37 @@ } static COUNT -GenerateVux_generateLife (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateVux_generateLife (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (CurStarDescPtr->Index == MAIDENS_DEFINED && matchWorld (solarSys, world, 0, MATCH_PLANET)) { - COUNT i; - - RandomContext_SeedRandom (SysGenRNG, - solarSys->SysInfo.PlanetInfo.ScanSeed[BIOLOGICAL_SCAN]); - - for (i = 0; i <= whichNode && i < 12; ++i) + static const SBYTE life[] = { - GenerateRandomLocation (&solarSys->SysInfo); - if (i < 4) - solarSys->SysInfo.PlanetInfo.CurType = 9; - else if (i < 8) - solarSys->SysInfo.PlanetInfo.CurType = 14; - else /* if (i < 12) */ - solarSys->SysInfo.PlanetInfo.CurType = 18; - } - - return 12; // only matters when count is requested + 9, 9, 9, 9, /* Carousel Beast */ + 14, 14, 14, 14, /* Amorphous Trandicula */ + 18, 18, 18, 18, /* Penguin Cyclops */ + -1 /* term */ + }; + return GeneratePresetLife (&solarSys->SysInfo, life, whichNode, info); } if (CurStarDescPtr->Index == VUX_BEAST_DEFINED && matchWorld (solarSys, world, 0, MATCH_PLANET)) { - COUNT i; - - RandomContext_SeedRandom (SysGenRNG, - solarSys->SysInfo.PlanetInfo.ScanSeed[BIOLOGICAL_SCAN]); - - for (i = 0; i <= whichNode && i < 11; ++i) + static const SBYTE life[] = { - GenerateRandomLocation (&solarSys->SysInfo); - if (i == 0) /* VUX Beast */ - solarSys->SysInfo.PlanetInfo.CurType = NUM_CREATURE_TYPES + 2; - else if (i <= 5) - /* {SPEED_MOTIONLESS | DANGER_NORMAL, MAKE_BYTE (5, 3)}, */ - solarSys->SysInfo.PlanetInfo.CurType = 3; - else /* if (i <= 10) */ - /* {BEHAVIOR_UNPREDICTABLE | SPEED_SLOW | DANGER_NORMAL, MAKE_BYTE (3, 8)}, */ - solarSys->SysInfo.PlanetInfo.CurType = 8; - } - - return 11; // only matters when count is requested + NUM_CREATURE_TYPES + 2, /* VUX Beast */ + // Must be the first node, see pickupLife() below + 3, 3, 3, 3, 3, /* Whackin' Bush */ + 8, 8, 8, 8, 8, /* Glowing Medusa */ + -1 /* term */ + }; + return GeneratePresetLife (&solarSys->SysInfo, life, whichNode, info); } - return GenerateDefault_generateLife (solarSys, world, whichNode); + return GenerateDefault_generateLife (solarSys, world, whichNode, info); } static bool Modified: trunk/sc2/src/uqm/planets/generate/genwreck.c =================================================================== --- trunk/sc2/src/uqm/planets/generate/genwreck.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/generate/genwreck.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -27,8 +27,8 @@ static bool GenerateWreck_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world); -static COUNT GenerateWreck_generateEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +static COUNT GenerateWreck_generateEnergy (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); static bool GenerateWreck_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode); @@ -73,12 +73,12 @@ } static COUNT -GenerateWreck_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateWreck_generateEnergy (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (matchWorld (solarSys, world, 6, MATCH_PLANET)) { - return GenerateDefault_generateArtifact (solarSys, whichNode); + return GenerateDefault_generateArtifact (solarSys, whichNode, info); } return 0; Modified: trunk/sc2/src/uqm/planets/generate/genyeh.c =================================================================== --- trunk/sc2/src/uqm/planets/generate/genyeh.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/generate/genyeh.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -30,8 +30,8 @@ static bool GenerateYehat_generatePlanets (SOLARSYS_STATE *solarSys); static bool GenerateYehat_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world); -static COUNT GenerateYehat_generateEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +static COUNT GenerateYehat_generateEnergy (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); static bool GenerateYehat_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode); @@ -113,12 +113,12 @@ } static COUNT -GenerateYehat_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateYehat_generateEnergy (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { - return GenerateDefault_generateRuins (solarSys, whichNode); + return GenerateDefault_generateRuins (solarSys, whichNode, info); } return 0; Modified: trunk/sc2/src/uqm/planets/generate/genzoq.c =================================================================== --- trunk/sc2/src/uqm/planets/generate/genzoq.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/generate/genzoq.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -30,8 +30,8 @@ static bool GenerateZoqFotPik_generatePlanets (SOLARSYS_STATE *solarSys); static bool GenerateZoqFotPik_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world); -static COUNT GenerateZoqFotPik_generateEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +static COUNT GenerateZoqFotPik_generateEnergy (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); static bool GenerateZoqFotPik_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT whichNode); @@ -143,12 +143,12 @@ } static COUNT -GenerateZoqFotPik_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +GenerateZoqFotPik_generateEnergy (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { - return GenerateDefault_generateRuins (solarSys, whichNode); + return GenerateDefault_generateRuins (solarSys, whichNode, info); } return 0; Modified: trunk/sc2/src/uqm/planets/generate.h =================================================================== --- trunk/sc2/src/uqm/planets/generate.h 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/generate.h 2011-09-09 21:36:34 UTC (rev 3695) @@ -56,16 +56,16 @@ PLANET_DESC *planet); typedef bool (*GenerateOrbitalFunction)(SOLARSYS_STATE *solarSys, PLANET_DESC *world); -typedef bool (*GenerateNameFunction)(SOLARSYS_STATE *solarSys, - PLANET_DESC *world); +typedef bool (*GenerateNameFunction)(const SOLARSYS_STATE *, + const PLANET_DESC *world); // The following functions return the number of objects being generated // (or the index of the current object in some cases) -typedef COUNT (*GenerateMineralsFunction)(SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); -typedef COUNT (*GenerateEnergyFunction)(SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); -typedef COUNT (*GenerateLifeFunction)(SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +typedef COUNT (*GenerateMineralsFunction)(const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); +typedef COUNT (*GenerateEnergyFunction)(const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); +typedef COUNT (*GenerateLifeFunction)(const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); // The following functions return true if the node should be removed // from the surface, i.e. picked up. typedef bool (*PickupMineralsFunction)(SOLARSYS_STATE *solarSys, Modified: trunk/sc2/src/uqm/planets/plandata.h =================================================================== --- trunk/sc2/src/uqm/planets/plandata.h 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/plandata.h 2011-09-09 21:36:34 UTC (rev 3695) @@ -279,25 +279,6 @@ DWORD ScanSeed[NUM_SCAN_TYPES]; DWORD ScanRetrieveMask[NUM_SCAN_TYPES]; - // The CurPt, CurDensity and CurType fields are filled in - // when a GENERATE_MINERAL, GENERATE_ENERGY, or GENERATE_LIFE - // call is made. - POINT CurPt; - // Position of the mineral/bio/energy node on the planet. - COUNT CurDensity; - // For bio and energy: undefined - // For minerals the low byte is the gross size of the - // deposit (this determines the image), and the high - // byte is the fine size (the actual quantity). - COUNT CurType; - // For minerals: the type of element - // For bio: the type of the creature. - // 0 through NUM_CREATURE_TYPES - 1 are normal creatures, - // NUM_CREATURE_TYPES is an Evil One - // NUM_CREATURE_TYPES + 1 is a Brainbox Bulldozer - // NUM_CREATURE_TYPES + 2 is Zex' Beauty - // For energy: undefined - STRING DiscoveryString; FONT LanderFont; FRAME LanderFontEff; Modified: trunk/sc2/src/uqm/planets/planets.h =================================================================== --- trunk/sc2/src/uqm/planets/planets.h 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/planets.h 2011-09-09 21:36:34 UTC (rev 3695) @@ -88,6 +88,7 @@ typedef struct planet_desc PLANET_DESC; typedef struct star_desc STAR_DESC; +typedef struct node_info NODE_INFO; typedef struct planet_orbit PLANET_ORBIT; typedef struct solarsys_state SOLARSYS_STATE; @@ -131,7 +132,26 @@ BYTE Postfix; }; -typedef void (*PLAN_GEN_FUNC) (BYTE control); +struct node_info +{ + // This structire is filled in when a generateMinerals, generateEnergy, + // or generateLife call is made. + POINT loc_pt; + // Position of the mineral/bio/energy node on the planet. + COUNT density; + // For bio and energy: undefined + // For minerals the low byte is the gross size of the + // deposit (this determines the image), and the high + // byte is the fine size (the actual quantity). + COUNT type; + // For minerals: the type of element + // For bio: the type of the creature. + // 0 through NUM_CREATURE_TYPES - 1 are normal creatures, + // NUM_CREATURE_TYPES is an Evil One + // NUM_CREATURE_TYPES + 1 is a Brainbox Bulldozer + // NUM_CREATURE_TYPES + 2 is Zex' Beauty + // For energy: undefined +}; struct planet_orbit { @@ -264,7 +284,6 @@ extern void ExploreSolarSys (void); extern void DrawStarBackGround (void); extern void XFormIPLoc (POINT *pIn, POINT *pOut, BOOLEAN ToDisplay); -extern PLAN_GEN_FUNC GenerateIP (BYTE Index); extern void DrawOval (RECT *pRect, BYTE num_off_pixels); extern void DrawFilledOval (RECT *pRect); extern void FillOrbits (SOLARSYS_STATE *system, BYTE NumPlanets, Modified: trunk/sc2/src/uqm/planets/scan.c =================================================================== --- trunk/sc2/src/uqm/planets/scan.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/scan.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -935,20 +935,20 @@ } COUNT -callGenerateForScanType (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT node, BYTE scanType) +callGenerateForScanType (const SOLARSYS_STATE *solarSys, + const PLANET_DESC *world, COUNT node, BYTE scanType, NODE_INFO *info) { switch (scanType) { case MINERAL_SCAN: return (*solarSys->genFuncs->generateMinerals) ( - solarSys, world, node); + solarSys, world, node, info); case ENERGY_SCAN: return (*solarSys->genFuncs->generateEnergy) ( - solarSys, world, node); + solarSys, world, node, info); case BIOLOGICAL_SCAN: return (*solarSys->genFuncs->generateLife) ( - solarSys, world, node); + solarSys, world, node, info); } assert (false); @@ -1293,19 +1293,16 @@ static void generateBioNode (SOLARSYS_STATE *system, ELEMENT *NodeElementPtr, - BYTE *life_init_tab) + BYTE *life_init_tab, COUNT creatureType) { COUNT i; - COUNT creatureType; - creatureType = system->SysInfo.PlanetInfo.CurType; - // NOTE: TFB_Random() calls here are NOT part of the deterministic planet // generation PRNG flow. if (CreatureData[creatureType].Attributes & SPEED_MASK) { // Place moving creatures at a random location. - i = (COUNT)TFB_Random (); + i = TFB_Random (); NodeElementPtr->current.location.x = (LOBYTE (i) % (MAP_WIDTH - (8 << 1))) + 8; NodeElementPtr->current.location.y = @@ -1361,12 +1358,13 @@ NUM_SCANDOT_TRANSITIONS * (scan - ENERGY_SCAN)); num_nodes = callGenerateForScanType (pSolarSysState, - pSolarSysState->pOrbitalDesc, ~0, scan); + pSolarSysState->pOrbitalDesc, GENERATE_ALL, scan, NULL); while (num_nodes--) { HELEMENT hNodeElement; ELEMENT *NodeElementPtr; + NODE_INFO info; if (isNodeRetrieved (&pSolarSysState->SysInfo.PlanetInfo, scan, num_nodes)) @@ -1380,30 +1378,24 @@ callGenerateForScanType (pSolarSysState, pSolarSysState->pOrbitalDesc, num_nodes, - scan); + scan, &info); NodeElementPtr->scan_node = MAKE_WORD (scan, num_nodes + 1); NodeElementPtr->playerNr = PS_NON_PLAYER; - NodeElementPtr->current.location.x = - pSolarSysState->SysInfo.PlanetInfo.CurPt.x; - NodeElementPtr->current.location.y = - pSolarSysState->SysInfo.PlanetInfo.CurPt.y; + NodeElementPtr->current.location.x = info.loc_pt.x; + NodeElementPtr->current.location.y = info.loc_pt.y; SetPrimType (&DisplayArray[NodeElementPtr->PrimIndex], STAMP_PRIM); if (scan == MINERAL_SCAN) { - COUNT EType; - - EType = pSolarSysState->SysInfo.PlanetInfo.CurType; - NodeElementPtr->turn_wait = (BYTE)EType; - NodeElementPtr->mass_points = HIBYTE ( - pSolarSysState->SysInfo.PlanetInfo.CurDensity); + NodeElementPtr->turn_wait = info.type; + NodeElementPtr->mass_points = HIBYTE (info.density); NodeElementPtr->current.image.frame = SetAbsFrameIndex ( MiscDataFrame, (NUM_SCANDOT_TRANSITIONS * 2) - + ElementCategory (EType) * 5); + + ElementCategory (info.type) * 5); NodeElementPtr->next.image.frame = SetRelFrameIndex ( - NodeElementPtr->current.image.frame, LOBYTE ( - pSolarSysState->SysInfo.PlanetInfo.CurDensity) + 1); + NodeElementPtr->current.image.frame, + LOBYTE (info.density) + 1); DisplayArray[NodeElementPtr->PrimIndex].Object.Stamp.frame = IncFrameIndex (NodeElementPtr->next.image.frame); } @@ -1423,7 +1415,7 @@ else /* (scan == BIOLOGICAL_SCAN) */ { generateBioNode (pSolarSysState, NodeElementPtr, - life_init_tab); + life_init_tab, info.type); } } Modified: trunk/sc2/src/uqm/planets/scan.h =================================================================== --- trunk/sc2/src/uqm/planets/scan.h 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/scan.h 2011-09-09 21:36:34 UTC (rev 3695) @@ -50,8 +50,8 @@ extern void RepairBackRect (RECT *pRect); extern void GeneratePlanetSide (void); -extern COUNT callGenerateForScanType (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT node, BYTE scanType); +extern COUNT callGenerateForScanType (const SOLARSYS_STATE *, + const PLANET_DESC *world, COUNT node, BYTE scanType, NODE_INFO *); // Returns true if the node should be removed from the surface extern bool callPickupForScanType (SOLARSYS_STATE *solarSys, PLANET_DESC *world, COUNT node, BYTE scanType); Modified: trunk/sc2/src/uqm/planets/sundata.h =================================================================== --- trunk/sc2/src/uqm/planets/sundata.h 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/sundata.h 2011-09-09 21:36:34 UTC (rev 3695) @@ -45,12 +45,16 @@ #define GENERATE_ALL ((COUNT)~0) -extern COUNT GenerateMineralDeposits (SYSTEM_INFO *SysInfoPtr, - COUNT whichDeposit); -extern COUNT GenerateLifeForms (SYSTEM_INFO *SysInfoPtr, COUNT whichLife); -extern void GenerateRandomLocation (SYSTEM_INFO *); -extern COUNT GenerateRandomNodes (SYSTEM_INFO *, COUNT scan, COUNT numNodes, - COUNT type, COUNT whichNode); +extern COUNT GenerateMineralDeposits (const SYSTEM_INFO *, COUNT whichDeposit, + NODE_INFO *info); +extern COUNT GenerateLifeForms (const SYSTEM_INFO *, COUNT whichLife, + NODE_INFO *info); +extern void GenerateRandomLocation (POINT *loc); +extern COUNT GenerateRandomNodes (const SYSTEM_INFO *, COUNT scan, COUNT numNodes, + COUNT type, COUNT whichNode, NODE_INFO *info); +// Generate lifeforms from a preset lifeTypes[] array +extern COUNT GeneratePresetLife (const SYSTEM_INFO *, + const SBYTE *lifeTypes, COUNT whichLife, NODE_INFO *info); #define DWARF_ELEMENT_DENSITY 1 #define GIANT_ELEMENT_DENSITY 3 Modified: trunk/sc2/src/uqm/planets/surface.c =================================================================== --- trunk/sc2/src/uqm/planets/surface.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/planets/surface.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -28,7 +28,8 @@ const PlanetFrame *PlanData; static COUNT -CalcMineralDeposits (SYSTEM_INFO *SysInfoPtr, COUNT which_deposit) +CalcMineralDeposits (const SYSTEM_INFO *SysInfoPtr, COUNT which_deposit, + NODE_INFO *info) { BYTE j; COUNT num_deposits; @@ -62,27 +63,26 @@ else deposit_quality_gross = 2; - GenerateRandomLocation (SysInfoPtr); + GenerateRandomLocation (&info->loc_pt); - SysInfoPtr->PlanetInfo.CurDensity = - MAKE_WORD ( - deposit_quality_gross, deposit_quality_fine / 10 + 1 - ); - SysInfoPtr->PlanetInfo.CurType = eptr->ElementType; + info->density = MAKE_WORD ( + deposit_quality_gross, deposit_quality_fine / 10 + 1); + info->type = eptr->ElementType; #ifdef DEBUG_SURFACE log_add (log_Debug, "\t\t%d units of %Fs", - SysInfoPtr->PlanetInfo.CurDensity, + info->density, Elements[eptr->ElementType].name); #endif /* DEBUG_SURFACE */ if (num_deposits >= which_deposit || ++num_deposits == sizeof (DWORD) * 8) - goto ExitCalcMinerals; + { // reached the maximum or the requested node + return num_deposits; + } } ++eptr; } while (--j); -ExitCalcMinerals: - return (num_deposits); + return num_deposits; } // Returns: @@ -90,15 +90,20 @@ // for whichLife<32 : the index of the last node (no known usage exists) // Sets the SysGenRNG to the required state first. COUNT -GenerateMineralDeposits (SYSTEM_INFO *SysInfoPtr, COUNT whichDeposit) +GenerateMineralDeposits (const SYSTEM_INFO *SysInfoPtr, COUNT whichDeposit, + NODE_INFO *info) { + NODE_INFO temp_info; + if (!info) // user not interested in info but we need space for it + info = &temp_info; RandomContext_SeedRandom (SysGenRNG, SysInfoPtr->PlanetInfo.ScanSeed[MINERAL_SCAN]); - return CalcMineralDeposits (SysInfoPtr, whichDeposit); + return CalcMineralDeposits (SysInfoPtr, whichDeposit, info); } static COUNT -CalcLifeForms (SYSTEM_INFO *SysInfoPtr, COUNT which_life) +CalcLifeForms (const SYSTEM_INFO *SysInfoPtr, COUNT which_life, + NODE_INFO *info) { COUNT num_life_forms; @@ -127,26 +132,28 @@ num_creatures = 1 + HIBYTE (rand_val) % 10; do { - GenerateRandomLocation (SysInfoPtr); - SysInfoPtr->PlanetInfo.CurType = index; + GenerateRandomLocation (&info->loc_pt); + info->type = index; + info->density = 0; if (num_life_forms >= which_life || ++num_life_forms == sizeof (DWORD) * 8) - { - num_types = 1; - break; + { // reached the maximum or the requested node + return num_life_forms; } } while (--num_creatures); } while (--num_types); } #ifdef DEBUG_SURFACE else + { log_add (log_Debug, "It's dead, Jim! (%d >= %d)", life_var, SysInfoPtr->PlanetInfo.LifeChance); + } #endif /* DEBUG_SURFACE */ } - return (num_life_forms); + return num_life_forms; } // Returns: @@ -154,23 +161,61 @@ // for whichLife<32 : the index of the last lifeform (no known usage exists) // Sets the SysGenRNG to the required state first. COUNT -GenerateLifeForms (SYSTEM_INFO *SysInfoPtr, COUNT whichLife) +GenerateLifeForms (const SYSTEM_INFO *SysInfoPtr, COUNT whichLife, + NODE_INFO *info) { + NODE_INFO temp_info; + if (!info) // user not interested in info but we need space for it + info = &temp_info; RandomContext_SeedRandom (SysGenRNG, SysInfoPtr->PlanetInfo.ScanSeed[BIOLOGICAL_SCAN]); - return CalcLifeForms (SysInfoPtr, whichLife); + return CalcLifeForms (SysInfoPtr, whichLife, info); } +// Returns: +// for whichLife==~0 : the number of lifeforms generated +// for whichLife<32 : the index of the last lifeform (no known usage exists) +// Sets the SysGenRNG to the required state first. +// lifeTypes[] is terminated with -1 +COUNT +GeneratePresetLife (const SYSTEM_INFO *SysInfoPtr, const SBYTE *lifeTypes, + COUNT whichLife, NODE_INFO *info) +{ + COUNT i; + NODE_INFO temp_info; + + if (!info) // user not interested in info but we need space for it + info = &temp_info; + + // This function may look unnecessarily complicated, but it must be + // kept this way to preserve the universe. That is done by preserving + // the order and number of Random() calls. + + RandomContext_SeedRandom (SysGenRNG, + SysInfoPtr->PlanetInfo.ScanSeed[BIOLOGICAL_SCAN]); + + for (i = 0; lifeTypes[i] >= 0; ++i) + { + GenerateRandomLocation (&info->loc_pt); + info->type = lifeTypes[i]; + // density is irrelevant for bio nodes + info->density = 0; + + if (i >= whichLife) + break; + } + + return i; +} + void -GenerateRandomLocation (SYSTEM_INFO *SysInfoPtr) +GenerateRandomLocation (POINT *loc) { UWORD rand_val; rand_val = RandomContext_Random (SysGenRNG); - SysInfoPtr->PlanetInfo.CurPt.x = - (LOBYTE (rand_val) % (MAP_WIDTH - (8 << 1))) + 8; - SysInfoPtr->PlanetInfo.CurPt.y = - (HIBYTE (rand_val) % (MAP_HEIGHT - (8 << 1))) + 8; + loc->x = 8 + LOBYTE (rand_val) % (MAP_WIDTH - (8 << 1)); + loc->y = 8 + HIBYTE (rand_val) % (MAP_HEIGHT - (8 << 1)); } // Returns: @@ -178,20 +223,25 @@ // for whichNode<32 : the index of the last node (no known usage exists) // Sets the SysGenRNG to the required state first. COUNT -GenerateRandomNodes (SYSTEM_INFO *SysInfoPtr, COUNT scan, COUNT numNodes, - COUNT type, COUNT whichNode) +GenerateRandomNodes (const SYSTEM_INFO *SysInfoPtr, COUNT scan, COUNT numNodes, + COUNT type, COUNT whichNode, NODE_INFO *info) { COUNT i; + NODE_INFO temp_info; - RandomContext_SeedRandom (SysGenRNG, SysInfoPtr->PlanetInfo.ScanSeed[scan]); + if (!info) // user not interested in info but we need space for it + info = &temp_info; + RandomContext_SeedRandom (SysGenRNG, + SysInfoPtr->PlanetInfo.ScanSeed[scan]); + for (i = 0; i < numNodes; ++i) { - GenerateRandomLocation (SysInfoPtr); - // CurType is irrelevant for energy nodes - SysInfoPtr->PlanetInfo.CurType = type; - // CurDensity is irrelevant for energy and bio nodes - SysInfoPtr->PlanetInfo.CurDensity = 0; + GenerateRandomLocation (&info->loc_pt); + // type is irrelevant for energy nodes + info->type = type; + // density is irrelevant for energy and bio nodes + info->density = 0; if (i >= whichNode) break; Modified: trunk/sc2/src/uqm/uqmdebug.c =================================================================== --- trunk/sc2/src/uqm/uqmdebug.c 2011-09-09 01:59:12 UTC (rev 3694) +++ trunk/sc2/src/uqm/uqmdebug.c 2011-09-09 21:36:34 UTC (rev 3695) @@ -973,8 +973,7 @@ void dumpPlanet (FILE *out, const PLANET_DESC *planet) { - (*pSolarSysState->genFuncs->generateName) ( - pSolarSysState, (PLANET_DESC *) planet); + (*pSolarSysState->genFuncs->generateName) (pSolarSysState, planet); fprintf (out, "- %-37s %s\n", GLOBAL_SIS (PlanetName), planetTypeString (planet->data_index & ~PLANET_SHIELDED)); dumpWorld (out, planet); @@ -1055,16 +1054,16 @@ assert (system->pOrbitalDesc == world); - numBio = callGenerateForScanType ((SOLARSYS_STATE *) system, - (PLANET_DESC *) world, ~0, BIOLOGICAL_SCAN); + numBio = callGenerateForScanType (system, world, GENERATE_ALL, + BIOLOGICAL_SCAN, NULL); result = 0; for (i = 0; i < numBio; i++) { - callGenerateForScanType ((SOLARSYS_STATE *) system, - (PLANET_DESC *) world, i, BIOLOGICAL_SCAN); - result += BIO_CREDIT_VALUE * LONIBBLE (CreatureData[ - system->SysInfo.PlanetInfo.CurType].ValueAndHitPoints); + NODE_INFO info; + callGenerateForScanType (system, world, i, BIOLOGICAL_SCAN, &info); + result += BIO_CREDIT_VALUE * + LONIBBLE (CreatureData[info.type].ValueAndHitPoints); } return result; } @@ -1078,17 +1077,17 @@ assert (system->pOrbitalDesc == world); - numBio = callGenerateForScanType ((SOLARSYS_STATE *) system, - (PLANET_DESC *) world, ~0, BIOLOGICAL_SCAN); + numBio = callGenerateForScanType (system, world, GENERATE_ALL, + BIOLOGICAL_SCAN, NULL); for (i = 0; i < NUM_CREATURE_TYPES + NUM_SPECIAL_CREATURE_TYPES; i++) bio[i] = 0; for (i = 0; i < numBio; i++) { - callGenerateForScanType ((SOLARSYS_STATE *) system, - (PLANET_DESC *) world, i, BIOLOGICAL_SCAN); - bio[system->SysInfo.PlanetInfo.CurType]++; + NODE_INFO info; + callGenerateForScanType (system, world, i, BIOLOGICAL_SCAN, &info); + bio[info.type]++; } } @@ -1101,17 +1100,16 @@ assert (system->pOrbitalDesc == world); - numDeposits = callGenerateForScanType ((SOLARSYS_STATE *) system, - (PLANET_DESC *) world, ~0, MINERAL_SCAN); + numDeposits = callGenerateForScanType (system, world, GENERATE_ALL, + MINERAL_SCAN, NULL); result = 0; for (i = 0; i < numDeposits; i++) { - callGenerateForScanType ((SOLARSYS_STATE *) system, - (PLANET_DESC *) world, i, MINERAL_SCAN); - result += HIBYTE (system->SysInfo.PlanetInfo.CurDensity) * - GLOBAL (ElementWorth[ElementCategory ( - system->SysInfo.PlanetInfo.CurType)]); + NODE_INFO info; + callGenerateForScanType (system, world, i, MINERAL_SCAN, &info); + result += HIBYTE (info.density) * + GLOBAL (ElementWorth[ElementCategory (info.type)]); } return result; } @@ -1125,18 +1123,17 @@ assert (system->pOrbitalDesc == world); - ... [truncated message content] |