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

git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@3695 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
avolkov
2011-09-09 21:36:34 +00:00
parent d2358e1e51
commit 094c7d6e15
28 changed files with 354 additions and 322 deletions
+8 -8
View File
@@ -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,
+5 -5
View File
@@ -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;
+8 -8
View File
@@ -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;
+20 -26
View File
@@ -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
+12 -10
View File
@@ -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 *);
+5 -5
View File
@@ -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;
+5 -5
View File
@@ -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;
+12 -10
View File
@@ -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;
}
+6 -6
View File
@@ -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;
+5 -5
View File
@@ -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;
+5 -5
View File
@@ -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;
+24 -17
View File
@@ -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;
+13 -13
View File
@@ -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;
+5 -5
View File
@@ -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;
+6 -6
View File
@@ -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;
+6 -6
View File
@@ -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;
+5 -5
View File
@@ -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;
+30 -46
View File
@@ -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;
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 11; // only matters when count is requested
}
return GenerateDefault_generateLife (solarSys, world, whichNode);
return GenerateDefault_generateLife (solarSys, world, whichNode, info);
}
static bool
+5 -5
View File
@@ -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;
+5 -5
View File
@@ -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;
+5 -5
View File
@@ -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;
-19
View File
@@ -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;
+21 -2
View File
@@ -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,
+18 -26
View File
@@ -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);
}
}
+2 -2
View File
@@ -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);
+10 -6
View File
@@ -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
+85 -35
View File
@@ -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;
+23 -26
View File
@@ -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);
}
}