diff --git a/sc2/src/uqm/planets/generate.h b/sc2/src/uqm/planets/generate.h index 16f3ee220..9942e8283 100644 --- a/sc2/src/uqm/planets/generate.h +++ b/sc2/src/uqm/planets/generate.h @@ -56,16 +56,16 @@ typedef bool (*GenerateMoonsFunction)(SOLARSYS_STATE *solarSys, 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, diff --git a/sc2/src/uqm/planets/generate/genand.c b/sc2/src/uqm/planets/generate/genand.c index 755b5a172..457b5ff96 100644 --- a/sc2/src/uqm/planets/generate/genand.c +++ b/sc2/src/uqm/planets/generate/genand.c @@ -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 @@ GenerateAndrosynth_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, } 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; diff --git a/sc2/src/uqm/planets/generate/genburv.c b/sc2/src/uqm/planets/generate/genburv.c index 2268671b9..aa5b6bdfa 100644 --- a/sc2/src/uqm/planets/generate/genburv.c +++ b/sc2/src/uqm/planets/generate/genburv.c @@ -30,8 +30,8 @@ static bool GenerateBurvixese_generateMoons (SOLARSYS_STATE *solarSys, 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 @@ GenerateBurvixese_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) 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 @@ GenerateBurvixese_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) } 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 @@ GenerateBurvixese_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, return 0; } - return GenerateDefault_generateArtifact (solarSys, whichNode); + return GenerateDefault_generateArtifact (solarSys, whichNode, info); } return 0; diff --git a/sc2/src/uqm/planets/generate/gendefault.c b/sc2/src/uqm/planets/generate/gendefault.c index f0846f2cd..a88b89cb7 100644 --- a/sc2/src/uqm/planets/generate/gendefault.c +++ b/sc2/src/uqm/planets/generate/gendefault.c @@ -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 @@ GenerateDefault_generateMoons (SOLARSYS_STATE *solarSys, PLANET_DESC *planet) } 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 @@ GenerateDefault_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) 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 @@ GenerateDefault_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) } 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 @@ GenerateDefault_pickupMinerals (SOLARSYS_STATE *solarSys, PLANET_DESC *world, } 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 @@ GenerateDefault_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, } 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 @@ GenerateDefault_pickupLife (SOLARSYS_STATE *solarSys, PLANET_DESC *world, } 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 diff --git a/sc2/src/uqm/planets/generate/gendefault.h b/sc2/src/uqm/planets/generate/gendefault.h index 3cf0935b0..a6d0e71b5 100644 --- a/sc2/src/uqm/planets/generate/gendefault.h +++ b/sc2/src/uqm/planets/generate/gendefault.h @@ -31,16 +31,16 @@ 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_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_pickupEnergy (SOLARSYS_STATE *, PLANET_DESC *world, 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 *); diff --git a/sc2/src/uqm/planets/generate/gendru.c b/sc2/src/uqm/planets/generate/gendru.c index 811d36ca4..e531cd14b 100644 --- a/sc2/src/uqm/planets/generate/gendru.c +++ b/sc2/src/uqm/planets/generate/gendru.c @@ -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 @@ GenerateDruuge_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, } 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; diff --git a/sc2/src/uqm/planets/generate/genilw.c b/sc2/src/uqm/planets/generate/genilw.c index 62a5819c8..b4dd0163e 100644 --- a/sc2/src/uqm/planets/generate/genilw.c +++ b/sc2/src/uqm/planets/generate/genilw.c @@ -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 @@ GenerateIlwrath_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) } 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; diff --git a/sc2/src/uqm/planets/generate/genmyc.c b/sc2/src/uqm/planets/generate/genmyc.c index ef0a3536a..98be1b9fc 100644 --- a/sc2/src/uqm/planets/generate/genmyc.c +++ b/sc2/src/uqm/planets/generate/genmyc.c @@ -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 @@ GenerateMycon_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) } 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 @@ GenerateMycon_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, return 0; } - return GenerateDefault_generateArtifact (solarSys, whichNode); + return GenerateDefault_generateArtifact (solarSys, whichNode, info); } if ((CurStarDescPtr->Index == EGG_CASE0_DEFINED @@ -219,7 +219,7 @@ GenerateMycon_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, return 0; } - return GenerateDefault_generateArtifact (solarSys, whichNode); + return GenerateDefault_generateArtifact (solarSys, whichNode, info); } return 0; @@ -275,12 +275,14 @@ GenerateMycon_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, } 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; } diff --git a/sc2/src/uqm/planets/generate/genorz.c b/sc2/src/uqm/planets/generate/genorz.c index d34c4d9da..6175ee1d9 100644 --- a/sc2/src/uqm/planets/generate/genorz.c +++ b/sc2/src/uqm/planets/generate/genorz.c @@ -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 @@ GenerateOrz_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) } 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 @@ GenerateOrz_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, 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; diff --git a/sc2/src/uqm/planets/generate/genpet.c b/sc2/src/uqm/planets/generate/genpet.c index 847cfc344..426d8db78 100644 --- a/sc2/src/uqm/planets/generate/genpet.c +++ b/sc2/src/uqm/planets/generate/genpet.c @@ -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 @@ GenerateTalkingPet_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world } 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; diff --git a/sc2/src/uqm/planets/generate/genpku.c b/sc2/src/uqm/planets/generate/genpku.c index 4c44c50e8..20704c839 100644 --- a/sc2/src/uqm/planets/generate/genpku.c +++ b/sc2/src/uqm/planets/generate/genpku.c @@ -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 @@ GeneratePkunk_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, } 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; diff --git a/sc2/src/uqm/planets/generate/gensol.c b/sc2/src/uqm/planets/generate/gensol.c index 7e26b0ed5..d6041f363 100644 --- a/sc2/src/uqm/planets/generate/gensol.c +++ b/sc2/src/uqm/planets/generate/gensol.c @@ -35,14 +35,14 @@ static bool GenerateSol_reinitNpcs (SOLARSYS_STATE *solarSys); 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 @@ GenerateSol_generateMoons (SOLARSYS_STATE *solarSys, PLANET_DESC *planet) } 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 @@ GenerateSol_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) 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 @@ GenerateSol_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) } 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 @@ GenerateSol_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, 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 @@ GenerateSol_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, 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 @@ GenerateSol_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, } 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; diff --git a/sc2/src/uqm/planets/generate/genspa.c b/sc2/src/uqm/planets/generate/genspa.c index 95255c72e..19a250850 100644 --- a/sc2/src/uqm/planets/generate/genspa.c +++ b/sc2/src/uqm/planets/generate/genspa.c @@ -35,10 +35,10 @@ static bool GenerateSpathi_generateMoons (SOLARSYS_STATE *solarSys, 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 @@ GenerateSpathi_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) 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 @@ GenerateSpathi_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) 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 @@ GenerateSpathi_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) } 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 @@ GenerateSpathi_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, return 0; } - return GenerateDefault_generateArtifact (solarSys, whichNode); + return GenerateDefault_generateArtifact (solarSys, whichNode, info); } return 0; @@ -247,14 +247,14 @@ GenerateSpathi_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, } 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; diff --git a/sc2/src/uqm/planets/generate/gensup.c b/sc2/src/uqm/planets/generate/gensup.c index 5f1291bed..5e12d3410 100644 --- a/sc2/src/uqm/planets/generate/gensup.c +++ b/sc2/src/uqm/planets/generate/gensup.c @@ -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 @@ GenerateSupox_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, } 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; diff --git a/sc2/src/uqm/planets/generate/genthrad.c b/sc2/src/uqm/planets/generate/genthrad.c index 0e570f34e..a5a5c8204 100644 --- a/sc2/src/uqm/planets/generate/genthrad.c +++ b/sc2/src/uqm/planets/generate/genthrad.c @@ -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 @@ GenerateThraddash_generateOrbital (SOLARSYS_STATE *solarSys, } 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 @@ GenerateThraddash_generateEnergy (SOLARSYS_STATE *solarSys, return 0; } - return GenerateDefault_generateArtifact (solarSys, whichNode); + return GenerateDefault_generateArtifact (solarSys, whichNode, info); } return 0; diff --git a/sc2/src/uqm/planets/generate/genutw.c b/sc2/src/uqm/planets/generate/genutw.c index a8650be3d..3417804ba 100644 --- a/sc2/src/uqm/planets/generate/genutw.c +++ b/sc2/src/uqm/planets/generate/genutw.c @@ -35,8 +35,8 @@ static bool GenerateUtwig_initNpcs (SOLARSYS_STATE *solarSys); 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 @@ GenerateUtwig_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) } 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 @@ GenerateUtwig_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, return 0; } - return GenerateDefault_generateArtifact (solarSys, whichNode); + return GenerateDefault_generateArtifact (solarSys, whichNode, info); } return 0; diff --git a/sc2/src/uqm/planets/generate/genvault.c b/sc2/src/uqm/planets/generate/genvault.c index e6985a266..e1898971f 100644 --- a/sc2/src/uqm/planets/generate/genvault.c +++ b/sc2/src/uqm/planets/generate/genvault.c @@ -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 @@ GenerateVault_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) } 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; diff --git a/sc2/src/uqm/planets/generate/genvux.c b/sc2/src/uqm/planets/generate/genvux.c index d428713d3..438f04dbc 100644 --- a/sc2/src/uqm/planets/generate/genvux.c +++ b/sc2/src/uqm/planets/generate/genvux.c @@ -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 @@ GenerateVux_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) } 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 @@ GenerateVux_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, 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 @@ GenerateVux_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, 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 @@ GenerateVux_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, } 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 diff --git a/sc2/src/uqm/planets/generate/genwreck.c b/sc2/src/uqm/planets/generate/genwreck.c index 669fe5cb0..05e956e29 100644 --- a/sc2/src/uqm/planets/generate/genwreck.c +++ b/sc2/src/uqm/planets/generate/genwreck.c @@ -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 @@ GenerateWreck_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) } 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; diff --git a/sc2/src/uqm/planets/generate/genyeh.c b/sc2/src/uqm/planets/generate/genyeh.c index e49347673..d91f35481 100644 --- a/sc2/src/uqm/planets/generate/genyeh.c +++ b/sc2/src/uqm/planets/generate/genyeh.c @@ -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 @@ GenerateYehat_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) } 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; diff --git a/sc2/src/uqm/planets/generate/genzoq.c b/sc2/src/uqm/planets/generate/genzoq.c index 2d9e0dab8..b9a134221 100644 --- a/sc2/src/uqm/planets/generate/genzoq.c +++ b/sc2/src/uqm/planets/generate/genzoq.c @@ -30,8 +30,8 @@ static bool GenerateZoqFotPik_initNpcs (SOLARSYS_STATE *solarSys); 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 @@ GenerateZoqFotPik_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) } 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; diff --git a/sc2/src/uqm/planets/plandata.h b/sc2/src/uqm/planets/plandata.h index b2152883b..d696510b1 100644 --- a/sc2/src/uqm/planets/plandata.h +++ b/sc2/src/uqm/planets/plandata.h @@ -279,25 +279,6 @@ typedef struct 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; diff --git a/sc2/src/uqm/planets/planets.h b/sc2/src/uqm/planets/planets.h index e8e3ff42e..d61257b7d 100644 --- a/sc2/src/uqm/planets/planets.h +++ b/sc2/src/uqm/planets/planets.h @@ -88,6 +88,7 @@ enum 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 @@ struct star_desc 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 FreeLanderFont (PLANET_INFO *info); 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, diff --git a/sc2/src/uqm/planets/scan.c b/sc2/src/uqm/planets/scan.c index 534a604d1..60c1fc105 100644 --- a/sc2/src/uqm/planets/scan.c +++ b/sc2/src/uqm/planets/scan.c @@ -935,20 +935,20 @@ DrawScannedStuff (COUNT y, COUNT scan) } 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 @@ ScanSystem (void) 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 @@ GeneratePlanetSide (void) 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 @@ GeneratePlanetSide (void) 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 @@ GeneratePlanetSide (void) else /* (scan == BIOLOGICAL_SCAN) */ { generateBioNode (pSolarSysState, NodeElementPtr, - life_init_tab); + life_init_tab, info.type); } } diff --git a/sc2/src/uqm/planets/scan.h b/sc2/src/uqm/planets/scan.h index ba53e9c0a..cae5dfd89 100644 --- a/sc2/src/uqm/planets/scan.h +++ b/sc2/src/uqm/planets/scan.h @@ -50,8 +50,8 @@ extern void ScanSystem (void); 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); diff --git a/sc2/src/uqm/planets/sundata.h b/sc2/src/uqm/planets/sundata.h index 36c88eb4d..454720adc 100644 --- a/sc2/src/uqm/planets/sundata.h +++ b/sc2/src/uqm/planets/sundata.h @@ -45,12 +45,16 @@ typedef struct #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 diff --git a/sc2/src/uqm/planets/surface.c b/sc2/src/uqm/planets/surface.c index 619933380..79f9e7564 100644 --- a/sc2/src/uqm/planets/surface.c +++ b/sc2/src/uqm/planets/surface.c @@ -28,7 +28,8 @@ const BYTE *Elements; 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 @@ CalcMineralDeposits (SYSTEM_INFO *SysInfoPtr, COUNT which_deposit) 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 @@ ExitCalcMinerals: // 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 @@ CalcLifeForms (SYSTEM_INFO *SysInfoPtr, COUNT which_life) 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 @@ CalcLifeForms (SYSTEM_INFO *SysInfoPtr, COUNT which_life) // 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 @@ GenerateRandomLocation (SYSTEM_INFO *SysInfoPtr) // 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; diff --git a/sc2/src/uqm/uqmdebug.c b/sc2/src/uqm/uqmdebug.c index 53a4aa304..526dfdc6b 100644 --- a/sc2/src/uqm/uqmdebug.c +++ b/sc2/src/uqm/uqmdebug.c @@ -973,8 +973,7 @@ dumpPlanetCallback (const PLANET_DESC *planet, void *arg) 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 @@ calculateBioValue (const SOLARSYS_STATE *system, const PLANET_DESC *world) 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 @@ generateBioIndex(const SOLARSYS_STATE *system, const PLANET_DESC *world, 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 @@ calculateMineralValue (const SOLARSYS_STATE *system, const PLANET_DESC *world) 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 @@ generateMineralIndex(const SOLARSYS_STATE *system, const PLANET_DESC *world, assert (system->pOrbitalDesc == world); - numDeposits = callGenerateForScanType ((SOLARSYS_STATE *) system, - (PLANET_DESC *) world, ~0, MINERAL_SCAN); + numDeposits = callGenerateForScanType (system, world, GENERATE_ALL, + MINERAL_SCAN, NULL); for (i = 0; i < NUM_ELEMENT_CATEGORIES; i++) minerals[i] = 0; for (i = 0; i < numDeposits; i++) { - callGenerateForScanType ((SOLARSYS_STATE *) system, - (PLANET_DESC *) world, i, MINERAL_SCAN); - minerals[ElementCategory(system->SysInfo.PlanetInfo.CurType)] += - HIBYTE (system->SysInfo.PlanetInfo.CurDensity); + NODE_INFO info; + callGenerateForScanType (system, world, i, MINERAL_SCAN, &info); + minerals[ElementCategory (info.type)] += HIBYTE (info.density); } }