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:
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 *);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user