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);
|
PLANET_DESC *planet);
|
||||||
typedef bool (*GenerateOrbitalFunction)(SOLARSYS_STATE *solarSys,
|
typedef bool (*GenerateOrbitalFunction)(SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world);
|
PLANET_DESC *world);
|
||||||
typedef bool (*GenerateNameFunction)(SOLARSYS_STATE *solarSys,
|
typedef bool (*GenerateNameFunction)(const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world);
|
const PLANET_DESC *world);
|
||||||
// The following functions return the number of objects being generated
|
// The following functions return the number of objects being generated
|
||||||
// (or the index of the current object in some cases)
|
// (or the index of the current object in some cases)
|
||||||
typedef COUNT (*GenerateMineralsFunction)(SOLARSYS_STATE *solarSys,
|
typedef COUNT (*GenerateMineralsFunction)(const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
typedef COUNT (*GenerateEnergyFunction)(SOLARSYS_STATE *solarSys,
|
typedef COUNT (*GenerateEnergyFunction)(const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
typedef COUNT (*GenerateLifeFunction)(SOLARSYS_STATE *solarSys,
|
typedef COUNT (*GenerateLifeFunction)(const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
// The following functions return true if the node should be removed
|
// The following functions return true if the node should be removed
|
||||||
// from the surface, i.e. picked up.
|
// from the surface, i.e. picked up.
|
||||||
typedef bool (*PickupMineralsFunction)(SOLARSYS_STATE *solarSys,
|
typedef bool (*PickupMineralsFunction)(SOLARSYS_STATE *solarSys,
|
||||||
|
|||||||
@@ -30,8 +30,8 @@
|
|||||||
static bool GenerateAndrosynth_generatePlanets (SOLARSYS_STATE *solarSys);
|
static bool GenerateAndrosynth_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||||
static bool GenerateAndrosynth_generateOrbital (SOLARSYS_STATE *solarSys,
|
static bool GenerateAndrosynth_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world);
|
PLANET_DESC *world);
|
||||||
static COUNT GenerateAndrosynth_generateEnergy (SOLARSYS_STATE *solarSys,
|
static COUNT GenerateAndrosynth_generateEnergy (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static bool GenerateAndrosynth_pickupEnergy (SOLARSYS_STATE *solarSys,
|
static bool GenerateAndrosynth_pickupEnergy (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
PLANET_DESC *world, COUNT whichNode);
|
||||||
|
|
||||||
@@ -152,12 +152,12 @@ GenerateAndrosynth_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GenerateAndrosynth_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateAndrosynth_generateEnergy (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
if (matchWorld (solarSys, world, 1, MATCH_PLANET))
|
if (matchWorld (solarSys, world, 1, MATCH_PLANET))
|
||||||
{
|
{
|
||||||
return GenerateDefault_generateRuins (solarSys, whichNode);
|
return GenerateDefault_generateRuins (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -30,8 +30,8 @@ static bool GenerateBurvixese_generateMoons (SOLARSYS_STATE *solarSys,
|
|||||||
PLANET_DESC *planet);
|
PLANET_DESC *planet);
|
||||||
static bool GenerateBurvixese_generateOrbital (SOLARSYS_STATE *solarSys,
|
static bool GenerateBurvixese_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world);
|
PLANET_DESC *world);
|
||||||
static COUNT GenerateBurvixese_generateEnergy (SOLARSYS_STATE *solarSys,
|
static COUNT GenerateBurvixese_generateEnergy (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static bool GenerateBurvixese_pickupEnergy (SOLARSYS_STATE *solarSys,
|
static bool GenerateBurvixese_pickupEnergy (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
PLANET_DESC *world, COUNT whichNode);
|
||||||
|
|
||||||
@@ -104,11 +104,11 @@ GenerateBurvixese_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
|
|||||||
rand_val = RandomContext_GetSeed (SysGenRNG);
|
rand_val = RandomContext_GetSeed (SysGenRNG);
|
||||||
|
|
||||||
solarSys->SysInfo.PlanetInfo.ScanSeed[BIOLOGICAL_SCAN] = rand_val;
|
solarSys->SysInfo.PlanetInfo.ScanSeed[BIOLOGICAL_SCAN] = rand_val;
|
||||||
GenerateLifeForms (&solarSys->SysInfo, GENERATE_ALL);
|
GenerateLifeForms (&solarSys->SysInfo, GENERATE_ALL, NULL);
|
||||||
rand_val = RandomContext_GetSeed (SysGenRNG);
|
rand_val = RandomContext_GetSeed (SysGenRNG);
|
||||||
|
|
||||||
solarSys->SysInfo.PlanetInfo.ScanSeed[MINERAL_SCAN] = rand_val;
|
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;
|
solarSys->SysInfo.PlanetInfo.ScanSeed[ENERGY_SCAN] = rand_val;
|
||||||
|
|
||||||
@@ -140,12 +140,12 @@ GenerateBurvixese_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GenerateBurvixese_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateBurvixese_generateEnergy (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
|
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
|
||||||
{
|
{
|
||||||
return GenerateDefault_generateRuins (solarSys, whichNode);
|
return GenerateDefault_generateRuins (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (matchWorld (solarSys, world, 0, 0))
|
if (matchWorld (solarSys, world, 0, 0))
|
||||||
@@ -157,7 +157,7 @@ GenerateBurvixese_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GenerateDefault_generateArtifact (solarSys, whichNode);
|
return GenerateDefault_generateArtifact (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -27,17 +27,6 @@
|
|||||||
#include "libs/mathlib.h"
|
#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 GeneratePlanets (SOLARSYS_STATE *system);
|
||||||
static void check_yehat_rebellion (void);
|
static void check_yehat_rebellion (void);
|
||||||
|
|
||||||
@@ -113,7 +102,8 @@ GenerateDefault_generateMoons (SOLARSYS_STATE *solarSys, PLANET_DESC *planet)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
GenerateDefault_generateName (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
|
GenerateDefault_generateName (const SOLARSYS_STATE *solarSys,
|
||||||
|
const PLANET_DESC *world)
|
||||||
{
|
{
|
||||||
COUNT i = planetIndex (solarSys, world);
|
COUNT i = planetIndex (solarSys, world);
|
||||||
utf8StringCopy (GLOBAL_SIS (PlanetName), sizeof (GLOBAL_SIS (PlanetName)),
|
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);
|
rand_val = RandomContext_GetSeed (SysGenRNG);
|
||||||
|
|
||||||
sysInfo->PlanetInfo.ScanSeed[BIOLOGICAL_SCAN] = rand_val;
|
sysInfo->PlanetInfo.ScanSeed[BIOLOGICAL_SCAN] = rand_val;
|
||||||
GenerateLifeForms (sysInfo, GENERATE_ALL);
|
GenerateLifeForms (sysInfo, GENERATE_ALL, NULL);
|
||||||
rand_val = RandomContext_GetSeed (SysGenRNG);
|
rand_val = RandomContext_GetSeed (SysGenRNG);
|
||||||
|
|
||||||
sysInfo->PlanetInfo.ScanSeed[MINERAL_SCAN] = rand_val;
|
sysInfo->PlanetInfo.ScanSeed[MINERAL_SCAN] = rand_val;
|
||||||
GenerateMineralDeposits (sysInfo, GENERATE_ALL);
|
GenerateMineralDeposits (sysInfo, GENERATE_ALL, NULL);
|
||||||
|
|
||||||
sysInfo->PlanetInfo.ScanSeed[ENERGY_SCAN] = rand_val;
|
sysInfo->PlanetInfo.ScanSeed[ENERGY_SCAN] = rand_val;
|
||||||
LoadPlanet (NULL);
|
LoadPlanet (NULL);
|
||||||
@@ -162,10 +152,10 @@ GenerateDefault_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
|
|||||||
}
|
}
|
||||||
|
|
||||||
COUNT
|
COUNT
|
||||||
GenerateDefault_generateMinerals (SOLARSYS_STATE *solarSys,
|
GenerateDefault_generateMinerals (const SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world, COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
return GenerateMineralDeposits (&solarSys->SysInfo, whichNode);
|
return GenerateMineralDeposits (&solarSys->SysInfo, whichNode, info);
|
||||||
(void) world;
|
(void) world;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -181,12 +171,13 @@ GenerateDefault_pickupMinerals (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
|||||||
}
|
}
|
||||||
|
|
||||||
COUNT
|
COUNT
|
||||||
GenerateDefault_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateDefault_generateEnergy (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
(void) whichNode;
|
(void) whichNode;
|
||||||
(void) solarSys;
|
(void) solarSys;
|
||||||
(void) world;
|
(void) world;
|
||||||
|
(void) info;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -204,10 +195,10 @@ GenerateDefault_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
|||||||
}
|
}
|
||||||
|
|
||||||
COUNT
|
COUNT
|
||||||
GenerateDefault_generateLife (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateDefault_generateLife (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
return GenerateLifeForms (&solarSys->SysInfo, whichNode);
|
return GenerateLifeForms (&solarSys->SysInfo, whichNode, info);
|
||||||
(void) world;
|
(void) world;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -223,18 +214,21 @@ GenerateDefault_pickupLife (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
|||||||
}
|
}
|
||||||
|
|
||||||
COUNT
|
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
|
// 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
|
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
|
// Generate a standard spread of city ruins of a destroyed civilization
|
||||||
return GenerateRandomNodes (&solarSys->SysInfo, ENERGY_SCAN, NUM_RACE_RUINS,
|
return GenerateRandomNodes (&solarSys->SysInfo, ENERGY_SCAN, NUM_RACE_RUINS,
|
||||||
0, whichNode);
|
0, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
|
|||||||
@@ -31,16 +31,16 @@ bool GenerateDefault_uninitNpcs (SOLARSYS_STATE *solarSys);
|
|||||||
bool GenerateDefault_generatePlanets (SOLARSYS_STATE *solarSys);
|
bool GenerateDefault_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||||
bool GenerateDefault_generateMoons (SOLARSYS_STATE *solarSys,
|
bool GenerateDefault_generateMoons (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *planet);
|
PLANET_DESC *planet);
|
||||||
bool GenerateDefault_generateName (SOLARSYS_STATE *solarSys,
|
bool GenerateDefault_generateName (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world);
|
const PLANET_DESC *world);
|
||||||
bool GenerateDefault_generateOrbital (SOLARSYS_STATE *solarSys,
|
bool GenerateDefault_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world);
|
PLANET_DESC *world);
|
||||||
COUNT GenerateDefault_generateMinerals (SOLARSYS_STATE *solarSys,
|
COUNT GenerateDefault_generateMinerals (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
COUNT GenerateDefault_generateEnergy (SOLARSYS_STATE *solarSys,
|
COUNT GenerateDefault_generateEnergy (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
COUNT GenerateDefault_generateLife (SOLARSYS_STATE *solarSys,
|
COUNT GenerateDefault_generateLife (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
bool GenerateDefault_pickupMinerals (SOLARSYS_STATE *, PLANET_DESC *world,
|
bool GenerateDefault_pickupMinerals (SOLARSYS_STATE *, PLANET_DESC *world,
|
||||||
COUNT whichNode);
|
COUNT whichNode);
|
||||||
bool GenerateDefault_pickupEnergy (SOLARSYS_STATE *, PLANET_DESC *world,
|
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,
|
bool GenerateDefault_pickupLife (SOLARSYS_STATE *, PLANET_DESC *world,
|
||||||
COUNT whichNode);
|
COUNT whichNode);
|
||||||
|
|
||||||
COUNT GenerateDefault_generateArtifact (SOLARSYS_STATE *, COUNT whichNode);
|
COUNT GenerateDefault_generateArtifact (const SOLARSYS_STATE *,
|
||||||
COUNT GenerateDefault_generateRuins (SOLARSYS_STATE *, COUNT whichNode);
|
COUNT whichNode, NODE_INFO *info);
|
||||||
|
COUNT GenerateDefault_generateRuins (const SOLARSYS_STATE *,
|
||||||
|
COUNT whichNode, NODE_INFO *info);
|
||||||
bool GenerateDefault_landerReport (SOLARSYS_STATE *);
|
bool GenerateDefault_landerReport (SOLARSYS_STATE *);
|
||||||
bool GenerateDefault_landerReportCycle (SOLARSYS_STATE *);
|
bool GenerateDefault_landerReportCycle (SOLARSYS_STATE *);
|
||||||
|
|
||||||
|
|||||||
@@ -33,8 +33,8 @@
|
|||||||
static bool GenerateDruuge_generatePlanets (SOLARSYS_STATE *solarSys);
|
static bool GenerateDruuge_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||||
static bool GenerateDruuge_generateOrbital (SOLARSYS_STATE *solarSys,
|
static bool GenerateDruuge_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world);
|
PLANET_DESC *world);
|
||||||
static COUNT GenerateDruuge_generateEnergy (SOLARSYS_STATE *solarSys,
|
static COUNT GenerateDruuge_generateEnergy (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static bool GenerateDruuge_pickupEnergy (SOLARSYS_STATE *solarSys,
|
static bool GenerateDruuge_pickupEnergy (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
PLANET_DESC *world, COUNT whichNode);
|
||||||
|
|
||||||
@@ -156,12 +156,12 @@ GenerateDruuge_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GenerateDruuge_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateDruuge_generateEnergy (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
|
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
|
||||||
{
|
{
|
||||||
return GenerateDefault_generateRuins (solarSys, whichNode);
|
return GenerateDefault_generateRuins (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -30,8 +30,8 @@
|
|||||||
static bool GenerateIlwrath_generatePlanets (SOLARSYS_STATE *solarSys);
|
static bool GenerateIlwrath_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||||
static bool GenerateIlwrath_generateOrbital (SOLARSYS_STATE *solarSys,
|
static bool GenerateIlwrath_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world);
|
PLANET_DESC *world);
|
||||||
static COUNT GenerateIlwrath_generateEnergy (SOLARSYS_STATE *solarSys,
|
static COUNT GenerateIlwrath_generateEnergy (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static bool GenerateIlwrath_pickupEnergy (SOLARSYS_STATE *solarSys,
|
static bool GenerateIlwrath_pickupEnergy (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
PLANET_DESC *world, COUNT whichNode);
|
||||||
|
|
||||||
@@ -123,12 +123,12 @@ GenerateIlwrath_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GenerateIlwrath_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateIlwrath_generateEnergy (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
|
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
|
||||||
{
|
{
|
||||||
return GenerateDefault_generateRuins (solarSys, whichNode);
|
return GenerateDefault_generateRuins (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -35,10 +35,10 @@
|
|||||||
static bool GenerateMycon_generatePlanets (SOLARSYS_STATE *solarSys);
|
static bool GenerateMycon_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||||
static bool GenerateMycon_generateOrbital (SOLARSYS_STATE *solarSys,
|
static bool GenerateMycon_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world);
|
PLANET_DESC *world);
|
||||||
static COUNT GenerateMycon_generateEnergy (SOLARSYS_STATE *solarSys,
|
static COUNT GenerateMycon_generateEnergy (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static COUNT GenerateMycon_generateLife (SOLARSYS_STATE *solarSys,
|
static COUNT GenerateMycon_generateLife (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static bool GenerateMycon_pickupEnergy (SOLARSYS_STATE *solarSys,
|
static bool GenerateMycon_pickupEnergy (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
PLANET_DESC *world, COUNT whichNode);
|
||||||
|
|
||||||
@@ -189,8 +189,8 @@ GenerateMycon_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GenerateMycon_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateMycon_generateEnergy (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
if (CurStarDescPtr->Index == SUN_DEVICE_DEFINED
|
if (CurStarDescPtr->Index == SUN_DEVICE_DEFINED
|
||||||
&& matchWorld (solarSys, world, 0, MATCH_PLANET))
|
&& matchWorld (solarSys, world, 0, MATCH_PLANET))
|
||||||
@@ -202,7 +202,7 @@ GenerateMycon_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GenerateDefault_generateArtifact (solarSys, whichNode);
|
return GenerateDefault_generateArtifact (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((CurStarDescPtr->Index == EGG_CASE0_DEFINED
|
if ((CurStarDescPtr->Index == EGG_CASE0_DEFINED
|
||||||
@@ -219,7 +219,7 @@ GenerateMycon_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GenerateDefault_generateArtifact (solarSys, whichNode);
|
return GenerateDefault_generateArtifact (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -275,12 +275,14 @@ GenerateMycon_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GenerateMycon_generateLife (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateMycon_generateLife (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
|
// Gee, I wonder why there isn't any life in Mycon systems...
|
||||||
(void) whichNode;
|
(void) whichNode;
|
||||||
(void) solarSys;
|
(void) solarSys;
|
||||||
(void) world;
|
(void) world;
|
||||||
|
(void) info;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,8 +34,8 @@
|
|||||||
static bool GenerateOrz_generatePlanets (SOLARSYS_STATE *solarSys);
|
static bool GenerateOrz_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||||
static bool GenerateOrz_generateOrbital (SOLARSYS_STATE *solarSys,
|
static bool GenerateOrz_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world);
|
PLANET_DESC *world);
|
||||||
static COUNT GenerateOrz_generateEnergy (SOLARSYS_STATE *solarSys,
|
static COUNT GenerateOrz_generateEnergy (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static bool GenerateOrz_pickupEnergy (SOLARSYS_STATE *solarSys,
|
static bool GenerateOrz_pickupEnergy (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
PLANET_DESC *world, COUNT whichNode);
|
||||||
|
|
||||||
@@ -168,8 +168,8 @@ GenerateOrz_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GenerateOrz_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateOrz_generateEnergy (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
if (CurStarDescPtr->Index == TAALO_PROTECTOR_DEFINED
|
if (CurStarDescPtr->Index == TAALO_PROTECTOR_DEFINED
|
||||||
&& matchWorld (solarSys, world, 1, 2))
|
&& matchWorld (solarSys, world, 1, 2))
|
||||||
@@ -181,13 +181,13 @@ GenerateOrz_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GenerateDefault_generateArtifact (solarSys, whichNode);
|
return GenerateDefault_generateArtifact (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CurStarDescPtr->Index == ORZ_DEFINED
|
if (CurStarDescPtr->Index == ORZ_DEFINED
|
||||||
&& matchWorld (solarSys, world, 0, MATCH_PLANET))
|
&& matchWorld (solarSys, world, 0, MATCH_PLANET))
|
||||||
{
|
{
|
||||||
return GenerateDefault_generateRuins (solarSys, whichNode);
|
return GenerateDefault_generateRuins (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -33,8 +33,8 @@
|
|||||||
static bool GenerateTalkingPet_generatePlanets (SOLARSYS_STATE *solarSys);
|
static bool GenerateTalkingPet_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||||
static bool GenerateTalkingPet_generateOrbital (SOLARSYS_STATE *solarSys,
|
static bool GenerateTalkingPet_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world);
|
PLANET_DESC *world);
|
||||||
static COUNT GenerateTalkingPet_generateEnergy (SOLARSYS_STATE *solarSys,
|
static COUNT GenerateTalkingPet_generateEnergy (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static bool GenerateTalkingPet_pickupEnergy (SOLARSYS_STATE *solarSys,
|
static bool GenerateTalkingPet_pickupEnergy (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
PLANET_DESC *world, COUNT whichNode);
|
||||||
|
|
||||||
@@ -161,12 +161,12 @@ GenerateTalkingPet_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GenerateTalkingPet_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateTalkingPet_generateEnergy (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
|
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
|
||||||
{
|
{
|
||||||
return GenerateDefault_generateRuins (solarSys, whichNode);
|
return GenerateDefault_generateRuins (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -31,8 +31,8 @@
|
|||||||
static bool GeneratePkunk_generatePlanets (SOLARSYS_STATE *solarSys);
|
static bool GeneratePkunk_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||||
static bool GeneratePkunk_generateOrbital (SOLARSYS_STATE *solarSys,
|
static bool GeneratePkunk_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world);
|
PLANET_DESC *world);
|
||||||
static COUNT GeneratePkunk_generateEnergy (SOLARSYS_STATE *solarSys,
|
static COUNT GeneratePkunk_generateEnergy (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static bool GeneratePkunk_pickupEnergy (SOLARSYS_STATE *solarSys,
|
static bool GeneratePkunk_pickupEnergy (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
PLANET_DESC *world, COUNT whichNode);
|
||||||
|
|
||||||
@@ -146,12 +146,12 @@ GeneratePkunk_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GeneratePkunk_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GeneratePkunk_generateEnergy (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
|
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
|
||||||
{
|
{
|
||||||
return GenerateDefault_generateRuins (solarSys, whichNode);
|
return GenerateDefault_generateRuins (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -35,14 +35,14 @@ static bool GenerateSol_reinitNpcs (SOLARSYS_STATE *solarSys);
|
|||||||
static bool GenerateSol_generatePlanets (SOLARSYS_STATE *solarSys);
|
static bool GenerateSol_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||||
static bool GenerateSol_generateMoons (SOLARSYS_STATE *solarSys,
|
static bool GenerateSol_generateMoons (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *planet);
|
PLANET_DESC *planet);
|
||||||
static bool GenerateSol_generateName (SOLARSYS_STATE *solarSys,
|
static bool GenerateSol_generateName (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world);
|
const PLANET_DESC *world);
|
||||||
static bool GenerateSol_generateOrbital (SOLARSYS_STATE *solarSys,
|
static bool GenerateSol_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world);
|
PLANET_DESC *world);
|
||||||
static COUNT GenerateSol_generateEnergy (SOLARSYS_STATE *solarSys,
|
static COUNT GenerateSol_generateEnergy (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static COUNT GenerateSol_generateLife (SOLARSYS_STATE *solarSys,
|
static COUNT GenerateSol_generateLife (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static bool GenerateSol_pickupEnergy (SOLARSYS_STATE *solarSys,
|
static bool GenerateSol_pickupEnergy (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
PLANET_DESC *world, COUNT whichNode);
|
||||||
|
|
||||||
@@ -241,7 +241,8 @@ GenerateSol_generateMoons (SOLARSYS_STATE *solarSys, PLANET_DESC *planet)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
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);
|
COUNT planetNr = planetIndex (solarSys, world);
|
||||||
utf8StringCopy (GLOBAL_SIS (PlanetName), sizeof (GLOBAL_SIS (PlanetName)),
|
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);
|
rand_val = RandomContext_GetSeed (SysGenRNG);
|
||||||
|
|
||||||
solarSys->SysInfo.PlanetInfo.ScanSeed[MINERAL_SCAN] = rand_val;
|
solarSys->SysInfo.PlanetInfo.ScanSeed[MINERAL_SCAN] = rand_val;
|
||||||
GenerateMineralDeposits (&solarSys->SysInfo, GENERATE_ALL);
|
GenerateMineralDeposits (&solarSys->SysInfo, GENERATE_ALL, NULL);
|
||||||
rand_val = RandomContext_GetSeed (SysGenRNG);
|
rand_val = RandomContext_GetSeed (SysGenRNG);
|
||||||
|
|
||||||
planetNr = planetIndex (solarSys, world);
|
planetNr = planetIndex (solarSys, world);
|
||||||
@@ -514,8 +515,8 @@ GenerateSol_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GenerateSol_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateSol_generateEnergy (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
if (matchWorld (solarSys, world, 8, MATCH_PLANET))
|
if (matchWorld (solarSys, world, 8, MATCH_PLANET))
|
||||||
{
|
{
|
||||||
@@ -527,8 +528,11 @@ GenerateSol_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
solarSys->SysInfo.PlanetInfo.CurPt.x = 20;
|
if (info)
|
||||||
solarSys->SysInfo.PlanetInfo.CurPt.y = MAP_HEIGHT - 8;
|
{
|
||||||
|
info->loc_pt.x = 20;
|
||||||
|
info->loc_pt.y = MAP_HEIGHT - 8;
|
||||||
|
}
|
||||||
|
|
||||||
return 1; // only matters when count is requested
|
return 1; // only matters when count is requested
|
||||||
}
|
}
|
||||||
@@ -543,8 +547,11 @@ GenerateSol_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
solarSys->SysInfo.PlanetInfo.CurPt.x = MAP_WIDTH * 3 / 4;
|
if (info)
|
||||||
solarSys->SysInfo.PlanetInfo.CurPt.y = MAP_HEIGHT * 1 / 4;
|
{
|
||||||
|
info->loc_pt.x = MAP_WIDTH * 3 / 4;
|
||||||
|
info->loc_pt.y = MAP_HEIGHT * 1 / 4;
|
||||||
|
}
|
||||||
|
|
||||||
return 1; // only matters when count is requested
|
return 1; // only matters when count is requested
|
||||||
}
|
}
|
||||||
@@ -595,14 +602,14 @@ GenerateSol_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GenerateSol_generateLife (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateSol_generateLife (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
if (matchWorld (solarSys, world, 2, 1))
|
if (matchWorld (solarSys, world, 2, 1))
|
||||||
{
|
{
|
||||||
/* Earth Moon */
|
/* Earth Moon */
|
||||||
return GenerateRandomNodes (&solarSys->SysInfo, BIOLOGICAL_SCAN, 10,
|
return GenerateRandomNodes (&solarSys->SysInfo, BIOLOGICAL_SCAN, 10,
|
||||||
NUM_CREATURE_TYPES + 1, whichNode);
|
NUM_CREATURE_TYPES + 1, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -35,10 +35,10 @@ static bool GenerateSpathi_generateMoons (SOLARSYS_STATE *solarSys,
|
|||||||
PLANET_DESC *planet);
|
PLANET_DESC *planet);
|
||||||
static bool GenerateSpathi_generateOrbital (SOLARSYS_STATE *solarSys,
|
static bool GenerateSpathi_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world);
|
PLANET_DESC *world);
|
||||||
static COUNT GenerateSpathi_generateEnergy (SOLARSYS_STATE *solarSys,
|
static COUNT GenerateSpathi_generateEnergy (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static COUNT GenerateSpathi_generateLife (SOLARSYS_STATE *solarSys,
|
static COUNT GenerateSpathi_generateLife (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static bool GenerateSpathi_pickupEnergy (SOLARSYS_STATE *solarSys,
|
static bool GenerateSpathi_pickupEnergy (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
PLANET_DESC *world, COUNT whichNode);
|
||||||
static bool GenerateSpathi_pickupLife (SOLARSYS_STATE *solarSys,
|
static bool GenerateSpathi_pickupLife (SOLARSYS_STATE *solarSys,
|
||||||
@@ -148,11 +148,11 @@ GenerateSpathi_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
|
|||||||
rand_val = RandomContext_GetSeed (SysGenRNG);
|
rand_val = RandomContext_GetSeed (SysGenRNG);
|
||||||
|
|
||||||
solarSys->SysInfo.PlanetInfo.ScanSeed[BIOLOGICAL_SCAN] = rand_val;
|
solarSys->SysInfo.PlanetInfo.ScanSeed[BIOLOGICAL_SCAN] = rand_val;
|
||||||
GenerateLifeForms (&solarSys->SysInfo, GENERATE_ALL);
|
GenerateLifeForms (&solarSys->SysInfo, GENERATE_ALL, NULL);
|
||||||
rand_val = RandomContext_GetSeed (SysGenRNG);
|
rand_val = RandomContext_GetSeed (SysGenRNG);
|
||||||
|
|
||||||
solarSys->SysInfo.PlanetInfo.ScanSeed[MINERAL_SCAN] = rand_val;
|
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;
|
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);
|
rand_val = RandomContext_GetSeed (SysGenRNG);
|
||||||
|
|
||||||
solarSys->SysInfo.PlanetInfo.ScanSeed[MINERAL_SCAN] = rand_val;
|
solarSys->SysInfo.PlanetInfo.ScanSeed[MINERAL_SCAN] = rand_val;
|
||||||
GenerateMineralDeposits (&solarSys->SysInfo, GENERATE_ALL);
|
GenerateMineralDeposits (&solarSys->SysInfo, GENERATE_ALL, NULL);
|
||||||
rand_val = RandomContext_GetSeed (SysGenRNG);
|
rand_val = RandomContext_GetSeed (SysGenRNG);
|
||||||
|
|
||||||
solarSys->SysInfo.PlanetInfo.ScanSeed[BIOLOGICAL_SCAN] = rand_val;
|
solarSys->SysInfo.PlanetInfo.ScanSeed[BIOLOGICAL_SCAN] = rand_val;
|
||||||
@@ -207,8 +207,8 @@ GenerateSpathi_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GenerateSpathi_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateSpathi_generateEnergy (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
if (matchWorld (solarSys, world, 0, 0))
|
if (matchWorld (solarSys, world, 0, 0))
|
||||||
{
|
{
|
||||||
@@ -219,7 +219,7 @@ GenerateSpathi_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GenerateDefault_generateArtifact (solarSys, whichNode);
|
return GenerateDefault_generateArtifact (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -247,14 +247,14 @@ GenerateSpathi_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GenerateSpathi_generateLife (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateSpathi_generateLife (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
|
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
|
||||||
{
|
{
|
||||||
#define NUM_EVIL_ONES 32
|
#define NUM_EVIL_ONES 32
|
||||||
return GenerateRandomNodes (&solarSys->SysInfo, BIOLOGICAL_SCAN, NUM_EVIL_ONES,
|
return GenerateRandomNodes (&solarSys->SysInfo, BIOLOGICAL_SCAN, NUM_EVIL_ONES,
|
||||||
NUM_CREATURE_TYPES, whichNode);
|
NUM_CREATURE_TYPES, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -31,8 +31,8 @@
|
|||||||
static bool GenerateSupox_generatePlanets (SOLARSYS_STATE *solarSys);
|
static bool GenerateSupox_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||||
static bool GenerateSupox_generateOrbital (SOLARSYS_STATE *solarSys,
|
static bool GenerateSupox_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world);
|
PLANET_DESC *world);
|
||||||
static COUNT GenerateSupox_generateEnergy (SOLARSYS_STATE *solarSys,
|
static COUNT GenerateSupox_generateEnergy (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static bool GenerateSupox_pickupEnergy (SOLARSYS_STATE *solarSys,
|
static bool GenerateSupox_pickupEnergy (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
PLANET_DESC *world, COUNT whichNode);
|
||||||
|
|
||||||
@@ -146,12 +146,12 @@ GenerateSupox_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GenerateSupox_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateSupox_generateEnergy (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
|
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
|
||||||
{
|
{
|
||||||
return GenerateDefault_generateRuins (solarSys, whichNode);
|
return GenerateDefault_generateRuins (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -34,8 +34,8 @@
|
|||||||
static bool GenerateThraddash_generatePlanets (SOLARSYS_STATE *solarSys);
|
static bool GenerateThraddash_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||||
static bool GenerateThraddash_generateOrbital (SOLARSYS_STATE *solarSys,
|
static bool GenerateThraddash_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world);
|
PLANET_DESC *world);
|
||||||
static COUNT GenerateThraddash_generateEnergy (SOLARSYS_STATE *solarSys,
|
static COUNT GenerateThraddash_generateEnergy (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static bool GenerateThraddash_pickupEnergy (SOLARSYS_STATE *solarSys,
|
static bool GenerateThraddash_pickupEnergy (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
PLANET_DESC *world, COUNT whichNode);
|
||||||
|
|
||||||
@@ -161,13 +161,13 @@ GenerateThraddash_generateOrbital (SOLARSYS_STATE *solarSys,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GenerateThraddash_generateEnergy (SOLARSYS_STATE *solarSys,
|
GenerateThraddash_generateEnergy (const SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world, COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
if (CurStarDescPtr->Index == THRADD_DEFINED
|
if (CurStarDescPtr->Index == THRADD_DEFINED
|
||||||
&& matchWorld (solarSys, world, 0, MATCH_PLANET))
|
&& matchWorld (solarSys, world, 0, MATCH_PLANET))
|
||||||
{
|
{
|
||||||
return GenerateDefault_generateRuins (solarSys, whichNode);
|
return GenerateDefault_generateRuins (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CurStarDescPtr->Index == AQUA_HELIX_DEFINED
|
if (CurStarDescPtr->Index == AQUA_HELIX_DEFINED
|
||||||
@@ -180,7 +180,7 @@ GenerateThraddash_generateEnergy (SOLARSYS_STATE *solarSys,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GenerateDefault_generateArtifact (solarSys, whichNode);
|
return GenerateDefault_generateArtifact (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ static bool GenerateUtwig_initNpcs (SOLARSYS_STATE *solarSys);
|
|||||||
static bool GenerateUtwig_generatePlanets (SOLARSYS_STATE *solarSys);
|
static bool GenerateUtwig_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||||
static bool GenerateUtwig_generateOrbital (SOLARSYS_STATE *solarSys,
|
static bool GenerateUtwig_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world);
|
PLANET_DESC *world);
|
||||||
static COUNT GenerateUtwig_generateEnergy (SOLARSYS_STATE *solarSys,
|
static COUNT GenerateUtwig_generateEnergy (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static bool GenerateUtwig_pickupEnergy (SOLARSYS_STATE *solarSys,
|
static bool GenerateUtwig_pickupEnergy (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
PLANET_DESC *world, COUNT whichNode);
|
||||||
|
|
||||||
@@ -212,13 +212,13 @@ GenerateUtwig_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GenerateUtwig_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateUtwig_generateEnergy (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
if (CurStarDescPtr->Index == UTWIG_DEFINED
|
if (CurStarDescPtr->Index == UTWIG_DEFINED
|
||||||
&& matchWorld (solarSys, world, 0, MATCH_PLANET))
|
&& matchWorld (solarSys, world, 0, MATCH_PLANET))
|
||||||
{
|
{
|
||||||
return GenerateDefault_generateRuins (solarSys, whichNode);
|
return GenerateDefault_generateRuins (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CurStarDescPtr->Index == BOMB_DEFINED
|
if (CurStarDescPtr->Index == BOMB_DEFINED
|
||||||
@@ -231,7 +231,7 @@ GenerateUtwig_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GenerateDefault_generateArtifact (solarSys, whichNode);
|
return GenerateDefault_generateArtifact (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -27,8 +27,8 @@
|
|||||||
|
|
||||||
static bool GenerateVault_generateOrbital (SOLARSYS_STATE *solarSys,
|
static bool GenerateVault_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world);
|
PLANET_DESC *world);
|
||||||
static COUNT GenerateVault_generateEnergy (SOLARSYS_STATE *solarSys,
|
static COUNT GenerateVault_generateEnergy (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static bool GenerateVault_pickupEnergy (SOLARSYS_STATE *solarSys,
|
static bool GenerateVault_pickupEnergy (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
PLANET_DESC *world, COUNT whichNode);
|
||||||
|
|
||||||
@@ -79,12 +79,12 @@ GenerateVault_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GenerateVault_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateVault_generateEnergy (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
if (matchWorld (solarSys, world, 0, 0))
|
if (matchWorld (solarSys, world, 0, 0))
|
||||||
{
|
{
|
||||||
return GenerateDefault_generateArtifact (solarSys, whichNode);
|
return GenerateDefault_generateArtifact (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -36,10 +36,10 @@
|
|||||||
static bool GenerateVux_generatePlanets (SOLARSYS_STATE *solarSys);
|
static bool GenerateVux_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||||
static bool GenerateVux_generateOrbital (SOLARSYS_STATE *solarSys,
|
static bool GenerateVux_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world);
|
PLANET_DESC *world);
|
||||||
static COUNT GenerateVux_generateEnergy (SOLARSYS_STATE *solarSys,
|
static COUNT GenerateVux_generateEnergy (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static COUNT GenerateVux_generateLife (SOLARSYS_STATE *solarSys,
|
static COUNT GenerateVux_generateLife (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static bool GenerateVux_pickupEnergy (SOLARSYS_STATE *, PLANET_DESC *world,
|
static bool GenerateVux_pickupEnergy (SOLARSYS_STATE *, PLANET_DESC *world,
|
||||||
COUNT whichNode);
|
COUNT whichNode);
|
||||||
static bool GenerateVux_pickupLife (SOLARSYS_STATE *, PLANET_DESC *world,
|
static bool GenerateVux_pickupLife (SOLARSYS_STATE *, PLANET_DESC *world,
|
||||||
@@ -211,8 +211,8 @@ GenerateVux_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GenerateVux_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateVux_generateEnergy (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
if (CurStarDescPtr->Index == MAIDENS_DEFINED
|
if (CurStarDescPtr->Index == MAIDENS_DEFINED
|
||||||
&& matchWorld (solarSys, world, 0, MATCH_PLANET))
|
&& matchWorld (solarSys, world, 0, MATCH_PLANET))
|
||||||
@@ -224,8 +224,11 @@ GenerateVux_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
solarSys->SysInfo.PlanetInfo.CurPt.x = MAP_WIDTH / 3;
|
if (info)
|
||||||
solarSys->SysInfo.PlanetInfo.CurPt.y = MAP_HEIGHT * 5 / 8;
|
{
|
||||||
|
info->loc_pt.x = MAP_WIDTH / 3;
|
||||||
|
info->loc_pt.y = MAP_HEIGHT * 5 / 8;
|
||||||
|
}
|
||||||
|
|
||||||
return 1; // only matters when count is requested
|
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
|
if (CurStarDescPtr->Index == VUX_DEFINED
|
||||||
&& matchWorld (solarSys, world, 0, MATCH_PLANET))
|
&& matchWorld (solarSys, world, 0, MATCH_PLANET))
|
||||||
{
|
{
|
||||||
return GenerateDefault_generateRuins (solarSys, whichNode);
|
return GenerateDefault_generateRuins (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -270,56 +273,37 @@ GenerateVux_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GenerateVux_generateLife (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateVux_generateLife (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
if (CurStarDescPtr->Index == MAIDENS_DEFINED
|
if (CurStarDescPtr->Index == MAIDENS_DEFINED
|
||||||
&& matchWorld (solarSys, world, 0, MATCH_PLANET))
|
&& matchWorld (solarSys, world, 0, MATCH_PLANET))
|
||||||
{
|
{
|
||||||
COUNT i;
|
static const SBYTE life[] =
|
||||||
|
|
||||||
RandomContext_SeedRandom (SysGenRNG,
|
|
||||||
solarSys->SysInfo.PlanetInfo.ScanSeed[BIOLOGICAL_SCAN]);
|
|
||||||
|
|
||||||
for (i = 0; i <= whichNode && i < 12; ++i)
|
|
||||||
{
|
{
|
||||||
GenerateRandomLocation (&solarSys->SysInfo);
|
9, 9, 9, 9, /* Carousel Beast */
|
||||||
if (i < 4)
|
14, 14, 14, 14, /* Amorphous Trandicula */
|
||||||
solarSys->SysInfo.PlanetInfo.CurType = 9;
|
18, 18, 18, 18, /* Penguin Cyclops */
|
||||||
else if (i < 8)
|
-1 /* term */
|
||||||
solarSys->SysInfo.PlanetInfo.CurType = 14;
|
};
|
||||||
else /* if (i < 12) */
|
return GeneratePresetLife (&solarSys->SysInfo, life, whichNode, info);
|
||||||
solarSys->SysInfo.PlanetInfo.CurType = 18;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 12; // only matters when count is requested
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CurStarDescPtr->Index == VUX_BEAST_DEFINED
|
if (CurStarDescPtr->Index == VUX_BEAST_DEFINED
|
||||||
&& matchWorld (solarSys, world, 0, MATCH_PLANET))
|
&& matchWorld (solarSys, world, 0, MATCH_PLANET))
|
||||||
{
|
{
|
||||||
COUNT i;
|
static const SBYTE life[] =
|
||||||
|
|
||||||
RandomContext_SeedRandom (SysGenRNG,
|
|
||||||
solarSys->SysInfo.PlanetInfo.ScanSeed[BIOLOGICAL_SCAN]);
|
|
||||||
|
|
||||||
for (i = 0; i <= whichNode && i < 11; ++i)
|
|
||||||
{
|
{
|
||||||
GenerateRandomLocation (&solarSys->SysInfo);
|
NUM_CREATURE_TYPES + 2, /* VUX Beast */
|
||||||
if (i == 0) /* VUX Beast */
|
// Must be the first node, see pickupLife() below
|
||||||
solarSys->SysInfo.PlanetInfo.CurType = NUM_CREATURE_TYPES + 2;
|
3, 3, 3, 3, 3, /* Whackin' Bush */
|
||||||
else if (i <= 5)
|
8, 8, 8, 8, 8, /* Glowing Medusa */
|
||||||
/* {SPEED_MOTIONLESS | DANGER_NORMAL, MAKE_BYTE (5, 3)}, */
|
-1 /* term */
|
||||||
solarSys->SysInfo.PlanetInfo.CurType = 3;
|
};
|
||||||
else /* if (i <= 10) */
|
return GeneratePresetLife (&solarSys->SysInfo, life, whichNode, info);
|
||||||
/* {BEHAVIOR_UNPREDICTABLE | SPEED_SLOW | DANGER_NORMAL, MAKE_BYTE (3, 8)}, */
|
|
||||||
solarSys->SysInfo.PlanetInfo.CurType = 8;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 11; // only matters when count is requested
|
return GenerateDefault_generateLife (solarSys, world, whichNode, info);
|
||||||
}
|
|
||||||
|
|
||||||
return GenerateDefault_generateLife (solarSys, world, whichNode);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
|
|||||||
@@ -27,8 +27,8 @@
|
|||||||
|
|
||||||
static bool GenerateWreck_generateOrbital (SOLARSYS_STATE *solarSys,
|
static bool GenerateWreck_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world);
|
PLANET_DESC *world);
|
||||||
static COUNT GenerateWreck_generateEnergy (SOLARSYS_STATE *solarSys,
|
static COUNT GenerateWreck_generateEnergy (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static bool GenerateWreck_pickupEnergy (SOLARSYS_STATE *solarSys,
|
static bool GenerateWreck_pickupEnergy (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
PLANET_DESC *world, COUNT whichNode);
|
||||||
|
|
||||||
@@ -73,12 +73,12 @@ GenerateWreck_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GenerateWreck_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateWreck_generateEnergy (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
if (matchWorld (solarSys, world, 6, MATCH_PLANET))
|
if (matchWorld (solarSys, world, 6, MATCH_PLANET))
|
||||||
{
|
{
|
||||||
return GenerateDefault_generateArtifact (solarSys, whichNode);
|
return GenerateDefault_generateArtifact (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -30,8 +30,8 @@
|
|||||||
static bool GenerateYehat_generatePlanets (SOLARSYS_STATE *solarSys);
|
static bool GenerateYehat_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||||
static bool GenerateYehat_generateOrbital (SOLARSYS_STATE *solarSys,
|
static bool GenerateYehat_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world);
|
PLANET_DESC *world);
|
||||||
static COUNT GenerateYehat_generateEnergy (SOLARSYS_STATE *solarSys,
|
static COUNT GenerateYehat_generateEnergy (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static bool GenerateYehat_pickupEnergy (SOLARSYS_STATE *solarSys,
|
static bool GenerateYehat_pickupEnergy (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
PLANET_DESC *world, COUNT whichNode);
|
||||||
|
|
||||||
@@ -113,12 +113,12 @@ GenerateYehat_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GenerateYehat_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateYehat_generateEnergy (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
|
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
|
||||||
{
|
{
|
||||||
return GenerateDefault_generateRuins (solarSys, whichNode);
|
return GenerateDefault_generateRuins (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -30,8 +30,8 @@ static bool GenerateZoqFotPik_initNpcs (SOLARSYS_STATE *solarSys);
|
|||||||
static bool GenerateZoqFotPik_generatePlanets (SOLARSYS_STATE *solarSys);
|
static bool GenerateZoqFotPik_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||||
static bool GenerateZoqFotPik_generateOrbital (SOLARSYS_STATE *solarSys,
|
static bool GenerateZoqFotPik_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world);
|
PLANET_DESC *world);
|
||||||
static COUNT GenerateZoqFotPik_generateEnergy (SOLARSYS_STATE *solarSys,
|
static COUNT GenerateZoqFotPik_generateEnergy (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
|
||||||
static bool GenerateZoqFotPik_pickupEnergy (SOLARSYS_STATE *solarSys,
|
static bool GenerateZoqFotPik_pickupEnergy (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world, COUNT whichNode);
|
PLANET_DESC *world, COUNT whichNode);
|
||||||
|
|
||||||
@@ -143,12 +143,12 @@ GenerateZoqFotPik_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
GenerateZoqFotPik_generateEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
GenerateZoqFotPik_generateEnergy (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT whichNode)
|
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
|
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
|
||||||
{
|
{
|
||||||
return GenerateDefault_generateRuins (solarSys, whichNode);
|
return GenerateDefault_generateRuins (solarSys, whichNode, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -279,25 +279,6 @@ typedef struct
|
|||||||
DWORD ScanSeed[NUM_SCAN_TYPES];
|
DWORD ScanSeed[NUM_SCAN_TYPES];
|
||||||
DWORD ScanRetrieveMask[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;
|
STRING DiscoveryString;
|
||||||
FONT LanderFont;
|
FONT LanderFont;
|
||||||
FRAME LanderFontEff;
|
FRAME LanderFontEff;
|
||||||
|
|||||||
@@ -88,6 +88,7 @@ enum
|
|||||||
|
|
||||||
typedef struct planet_desc PLANET_DESC;
|
typedef struct planet_desc PLANET_DESC;
|
||||||
typedef struct star_desc STAR_DESC;
|
typedef struct star_desc STAR_DESC;
|
||||||
|
typedef struct node_info NODE_INFO;
|
||||||
typedef struct planet_orbit PLANET_ORBIT;
|
typedef struct planet_orbit PLANET_ORBIT;
|
||||||
typedef struct solarsys_state SOLARSYS_STATE;
|
typedef struct solarsys_state SOLARSYS_STATE;
|
||||||
|
|
||||||
@@ -131,7 +132,26 @@ struct star_desc
|
|||||||
BYTE Postfix;
|
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
|
struct planet_orbit
|
||||||
{
|
{
|
||||||
@@ -264,7 +284,6 @@ extern void FreeLanderFont (PLANET_INFO *info);
|
|||||||
extern void ExploreSolarSys (void);
|
extern void ExploreSolarSys (void);
|
||||||
extern void DrawStarBackGround (void);
|
extern void DrawStarBackGround (void);
|
||||||
extern void XFormIPLoc (POINT *pIn, POINT *pOut, BOOLEAN ToDisplay);
|
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 DrawOval (RECT *pRect, BYTE num_off_pixels);
|
||||||
extern void DrawFilledOval (RECT *pRect);
|
extern void DrawFilledOval (RECT *pRect);
|
||||||
extern void FillOrbits (SOLARSYS_STATE *system, BYTE NumPlanets,
|
extern void FillOrbits (SOLARSYS_STATE *system, BYTE NumPlanets,
|
||||||
|
|||||||
+18
-26
@@ -935,20 +935,20 @@ DrawScannedStuff (COUNT y, COUNT scan)
|
|||||||
}
|
}
|
||||||
|
|
||||||
COUNT
|
COUNT
|
||||||
callGenerateForScanType (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
|
callGenerateForScanType (const SOLARSYS_STATE *solarSys,
|
||||||
COUNT node, BYTE scanType)
|
const PLANET_DESC *world, COUNT node, BYTE scanType, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
switch (scanType)
|
switch (scanType)
|
||||||
{
|
{
|
||||||
case MINERAL_SCAN:
|
case MINERAL_SCAN:
|
||||||
return (*solarSys->genFuncs->generateMinerals) (
|
return (*solarSys->genFuncs->generateMinerals) (
|
||||||
solarSys, world, node);
|
solarSys, world, node, info);
|
||||||
case ENERGY_SCAN:
|
case ENERGY_SCAN:
|
||||||
return (*solarSys->genFuncs->generateEnergy) (
|
return (*solarSys->genFuncs->generateEnergy) (
|
||||||
solarSys, world, node);
|
solarSys, world, node, info);
|
||||||
case BIOLOGICAL_SCAN:
|
case BIOLOGICAL_SCAN:
|
||||||
return (*solarSys->genFuncs->generateLife) (
|
return (*solarSys->genFuncs->generateLife) (
|
||||||
solarSys, world, node);
|
solarSys, world, node, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
assert (false);
|
assert (false);
|
||||||
@@ -1293,19 +1293,16 @@ ScanSystem (void)
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
generateBioNode (SOLARSYS_STATE *system, ELEMENT *NodeElementPtr,
|
generateBioNode (SOLARSYS_STATE *system, ELEMENT *NodeElementPtr,
|
||||||
BYTE *life_init_tab)
|
BYTE *life_init_tab, COUNT creatureType)
|
||||||
{
|
{
|
||||||
COUNT i;
|
COUNT i;
|
||||||
COUNT creatureType;
|
|
||||||
|
|
||||||
creatureType = system->SysInfo.PlanetInfo.CurType;
|
|
||||||
|
|
||||||
// NOTE: TFB_Random() calls here are NOT part of the deterministic planet
|
// NOTE: TFB_Random() calls here are NOT part of the deterministic planet
|
||||||
// generation PRNG flow.
|
// generation PRNG flow.
|
||||||
if (CreatureData[creatureType].Attributes & SPEED_MASK)
|
if (CreatureData[creatureType].Attributes & SPEED_MASK)
|
||||||
{
|
{
|
||||||
// Place moving creatures at a random location.
|
// Place moving creatures at a random location.
|
||||||
i = (COUNT)TFB_Random ();
|
i = TFB_Random ();
|
||||||
NodeElementPtr->current.location.x =
|
NodeElementPtr->current.location.x =
|
||||||
(LOBYTE (i) % (MAP_WIDTH - (8 << 1))) + 8;
|
(LOBYTE (i) % (MAP_WIDTH - (8 << 1))) + 8;
|
||||||
NodeElementPtr->current.location.y =
|
NodeElementPtr->current.location.y =
|
||||||
@@ -1361,12 +1358,13 @@ GeneratePlanetSide (void)
|
|||||||
NUM_SCANDOT_TRANSITIONS * (scan - ENERGY_SCAN));
|
NUM_SCANDOT_TRANSITIONS * (scan - ENERGY_SCAN));
|
||||||
|
|
||||||
num_nodes = callGenerateForScanType (pSolarSysState,
|
num_nodes = callGenerateForScanType (pSolarSysState,
|
||||||
pSolarSysState->pOrbitalDesc, ~0, scan);
|
pSolarSysState->pOrbitalDesc, GENERATE_ALL, scan, NULL);
|
||||||
|
|
||||||
while (num_nodes--)
|
while (num_nodes--)
|
||||||
{
|
{
|
||||||
HELEMENT hNodeElement;
|
HELEMENT hNodeElement;
|
||||||
ELEMENT *NodeElementPtr;
|
ELEMENT *NodeElementPtr;
|
||||||
|
NODE_INFO info;
|
||||||
|
|
||||||
if (isNodeRetrieved (&pSolarSysState->SysInfo.PlanetInfo,
|
if (isNodeRetrieved (&pSolarSysState->SysInfo.PlanetInfo,
|
||||||
scan, num_nodes))
|
scan, num_nodes))
|
||||||
@@ -1380,30 +1378,24 @@ GeneratePlanetSide (void)
|
|||||||
|
|
||||||
callGenerateForScanType (pSolarSysState,
|
callGenerateForScanType (pSolarSysState,
|
||||||
pSolarSysState->pOrbitalDesc, num_nodes,
|
pSolarSysState->pOrbitalDesc, num_nodes,
|
||||||
scan);
|
scan, &info);
|
||||||
|
|
||||||
NodeElementPtr->scan_node = MAKE_WORD (scan, num_nodes + 1);
|
NodeElementPtr->scan_node = MAKE_WORD (scan, num_nodes + 1);
|
||||||
NodeElementPtr->playerNr = PS_NON_PLAYER;
|
NodeElementPtr->playerNr = PS_NON_PLAYER;
|
||||||
NodeElementPtr->current.location.x =
|
NodeElementPtr->current.location.x = info.loc_pt.x;
|
||||||
pSolarSysState->SysInfo.PlanetInfo.CurPt.x;
|
NodeElementPtr->current.location.y = info.loc_pt.y;
|
||||||
NodeElementPtr->current.location.y =
|
|
||||||
pSolarSysState->SysInfo.PlanetInfo.CurPt.y;
|
|
||||||
|
|
||||||
SetPrimType (&DisplayArray[NodeElementPtr->PrimIndex], STAMP_PRIM);
|
SetPrimType (&DisplayArray[NodeElementPtr->PrimIndex], STAMP_PRIM);
|
||||||
if (scan == MINERAL_SCAN)
|
if (scan == MINERAL_SCAN)
|
||||||
{
|
{
|
||||||
COUNT EType;
|
NodeElementPtr->turn_wait = info.type;
|
||||||
|
NodeElementPtr->mass_points = HIBYTE (info.density);
|
||||||
EType = pSolarSysState->SysInfo.PlanetInfo.CurType;
|
|
||||||
NodeElementPtr->turn_wait = (BYTE)EType;
|
|
||||||
NodeElementPtr->mass_points = HIBYTE (
|
|
||||||
pSolarSysState->SysInfo.PlanetInfo.CurDensity);
|
|
||||||
NodeElementPtr->current.image.frame = SetAbsFrameIndex (
|
NodeElementPtr->current.image.frame = SetAbsFrameIndex (
|
||||||
MiscDataFrame, (NUM_SCANDOT_TRANSITIONS * 2)
|
MiscDataFrame, (NUM_SCANDOT_TRANSITIONS * 2)
|
||||||
+ ElementCategory (EType) * 5);
|
+ ElementCategory (info.type) * 5);
|
||||||
NodeElementPtr->next.image.frame = SetRelFrameIndex (
|
NodeElementPtr->next.image.frame = SetRelFrameIndex (
|
||||||
NodeElementPtr->current.image.frame, LOBYTE (
|
NodeElementPtr->current.image.frame,
|
||||||
pSolarSysState->SysInfo.PlanetInfo.CurDensity) + 1);
|
LOBYTE (info.density) + 1);
|
||||||
DisplayArray[NodeElementPtr->PrimIndex].Object.Stamp.frame =
|
DisplayArray[NodeElementPtr->PrimIndex].Object.Stamp.frame =
|
||||||
IncFrameIndex (NodeElementPtr->next.image.frame);
|
IncFrameIndex (NodeElementPtr->next.image.frame);
|
||||||
}
|
}
|
||||||
@@ -1423,7 +1415,7 @@ GeneratePlanetSide (void)
|
|||||||
else /* (scan == BIOLOGICAL_SCAN) */
|
else /* (scan == BIOLOGICAL_SCAN) */
|
||||||
{
|
{
|
||||||
generateBioNode (pSolarSysState, NodeElementPtr,
|
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 RepairBackRect (RECT *pRect);
|
||||||
extern void GeneratePlanetSide (void);
|
extern void GeneratePlanetSide (void);
|
||||||
extern COUNT callGenerateForScanType (SOLARSYS_STATE *solarSys,
|
extern COUNT callGenerateForScanType (const SOLARSYS_STATE *,
|
||||||
PLANET_DESC *world, COUNT node, BYTE scanType);
|
const PLANET_DESC *world, COUNT node, BYTE scanType, NODE_INFO *);
|
||||||
// Returns true if the node should be removed from the surface
|
// Returns true if the node should be removed from the surface
|
||||||
extern bool callPickupForScanType (SOLARSYS_STATE *solarSys,
|
extern bool callPickupForScanType (SOLARSYS_STATE *solarSys,
|
||||||
PLANET_DESC *world, COUNT node, BYTE scanType);
|
PLANET_DESC *world, COUNT node, BYTE scanType);
|
||||||
|
|||||||
@@ -45,12 +45,16 @@ typedef struct
|
|||||||
|
|
||||||
#define GENERATE_ALL ((COUNT)~0)
|
#define GENERATE_ALL ((COUNT)~0)
|
||||||
|
|
||||||
extern COUNT GenerateMineralDeposits (SYSTEM_INFO *SysInfoPtr,
|
extern COUNT GenerateMineralDeposits (const SYSTEM_INFO *, COUNT whichDeposit,
|
||||||
COUNT whichDeposit);
|
NODE_INFO *info);
|
||||||
extern COUNT GenerateLifeForms (SYSTEM_INFO *SysInfoPtr, COUNT whichLife);
|
extern COUNT GenerateLifeForms (const SYSTEM_INFO *, COUNT whichLife,
|
||||||
extern void GenerateRandomLocation (SYSTEM_INFO *);
|
NODE_INFO *info);
|
||||||
extern COUNT GenerateRandomNodes (SYSTEM_INFO *, COUNT scan, COUNT numNodes,
|
extern void GenerateRandomLocation (POINT *loc);
|
||||||
COUNT type, COUNT whichNode);
|
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 DWARF_ELEMENT_DENSITY 1
|
||||||
#define GIANT_ELEMENT_DENSITY 3
|
#define GIANT_ELEMENT_DENSITY 3
|
||||||
|
|||||||
@@ -28,7 +28,8 @@ const BYTE *Elements;
|
|||||||
const PlanetFrame *PlanData;
|
const PlanetFrame *PlanData;
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
CalcMineralDeposits (SYSTEM_INFO *SysInfoPtr, COUNT which_deposit)
|
CalcMineralDeposits (const SYSTEM_INFO *SysInfoPtr, COUNT which_deposit,
|
||||||
|
NODE_INFO *info)
|
||||||
{
|
{
|
||||||
BYTE j;
|
BYTE j;
|
||||||
COUNT num_deposits;
|
COUNT num_deposits;
|
||||||
@@ -62,27 +63,26 @@ CalcMineralDeposits (SYSTEM_INFO *SysInfoPtr, COUNT which_deposit)
|
|||||||
else
|
else
|
||||||
deposit_quality_gross = 2;
|
deposit_quality_gross = 2;
|
||||||
|
|
||||||
GenerateRandomLocation (SysInfoPtr);
|
GenerateRandomLocation (&info->loc_pt);
|
||||||
|
|
||||||
SysInfoPtr->PlanetInfo.CurDensity =
|
info->density = MAKE_WORD (
|
||||||
MAKE_WORD (
|
deposit_quality_gross, deposit_quality_fine / 10 + 1);
|
||||||
deposit_quality_gross, deposit_quality_fine / 10 + 1
|
info->type = eptr->ElementType;
|
||||||
);
|
|
||||||
SysInfoPtr->PlanetInfo.CurType = eptr->ElementType;
|
|
||||||
#ifdef DEBUG_SURFACE
|
#ifdef DEBUG_SURFACE
|
||||||
log_add (log_Debug, "\t\t%d units of %Fs",
|
log_add (log_Debug, "\t\t%d units of %Fs",
|
||||||
SysInfoPtr->PlanetInfo.CurDensity,
|
info->density,
|
||||||
Elements[eptr->ElementType].name);
|
Elements[eptr->ElementType].name);
|
||||||
#endif /* DEBUG_SURFACE */
|
#endif /* DEBUG_SURFACE */
|
||||||
if (num_deposits >= which_deposit
|
if (num_deposits >= which_deposit
|
||||||
|| ++num_deposits == sizeof (DWORD) * 8)
|
|| ++num_deposits == sizeof (DWORD) * 8)
|
||||||
goto ExitCalcMinerals;
|
{ // reached the maximum or the requested node
|
||||||
|
return num_deposits;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
++eptr;
|
++eptr;
|
||||||
} while (--j);
|
} while (--j);
|
||||||
|
|
||||||
ExitCalcMinerals:
|
return num_deposits;
|
||||||
return (num_deposits);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns:
|
// Returns:
|
||||||
@@ -90,15 +90,20 @@ ExitCalcMinerals:
|
|||||||
// for whichLife<32 : the index of the last node (no known usage exists)
|
// for whichLife<32 : the index of the last node (no known usage exists)
|
||||||
// Sets the SysGenRNG to the required state first.
|
// Sets the SysGenRNG to the required state first.
|
||||||
COUNT
|
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,
|
RandomContext_SeedRandom (SysGenRNG,
|
||||||
SysInfoPtr->PlanetInfo.ScanSeed[MINERAL_SCAN]);
|
SysInfoPtr->PlanetInfo.ScanSeed[MINERAL_SCAN]);
|
||||||
return CalcMineralDeposits (SysInfoPtr, whichDeposit);
|
return CalcMineralDeposits (SysInfoPtr, whichDeposit, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
static COUNT
|
static COUNT
|
||||||
CalcLifeForms (SYSTEM_INFO *SysInfoPtr, COUNT which_life)
|
CalcLifeForms (const SYSTEM_INFO *SysInfoPtr, COUNT which_life,
|
||||||
|
NODE_INFO *info)
|
||||||
{
|
{
|
||||||
COUNT num_life_forms;
|
COUNT num_life_forms;
|
||||||
|
|
||||||
@@ -127,26 +132,28 @@ CalcLifeForms (SYSTEM_INFO *SysInfoPtr, COUNT which_life)
|
|||||||
num_creatures = 1 + HIBYTE (rand_val) % 10;
|
num_creatures = 1 + HIBYTE (rand_val) % 10;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
GenerateRandomLocation (SysInfoPtr);
|
GenerateRandomLocation (&info->loc_pt);
|
||||||
SysInfoPtr->PlanetInfo.CurType = index;
|
info->type = index;
|
||||||
|
info->density = 0;
|
||||||
|
|
||||||
if (num_life_forms >= which_life
|
if (num_life_forms >= which_life
|
||||||
|| ++num_life_forms == sizeof (DWORD) * 8)
|
|| ++num_life_forms == sizeof (DWORD) * 8)
|
||||||
{
|
{ // reached the maximum or the requested node
|
||||||
num_types = 1;
|
return num_life_forms;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
} while (--num_creatures);
|
} while (--num_creatures);
|
||||||
} while (--num_types);
|
} while (--num_types);
|
||||||
}
|
}
|
||||||
#ifdef DEBUG_SURFACE
|
#ifdef DEBUG_SURFACE
|
||||||
else
|
else
|
||||||
|
{
|
||||||
log_add (log_Debug, "It's dead, Jim! (%d >= %d)", life_var,
|
log_add (log_Debug, "It's dead, Jim! (%d >= %d)", life_var,
|
||||||
SysInfoPtr->PlanetInfo.LifeChance);
|
SysInfoPtr->PlanetInfo.LifeChance);
|
||||||
|
}
|
||||||
#endif /* DEBUG_SURFACE */
|
#endif /* DEBUG_SURFACE */
|
||||||
}
|
}
|
||||||
|
|
||||||
return (num_life_forms);
|
return num_life_forms;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns:
|
// 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)
|
// for whichLife<32 : the index of the last lifeform (no known usage exists)
|
||||||
// Sets the SysGenRNG to the required state first.
|
// Sets the SysGenRNG to the required state first.
|
||||||
COUNT
|
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,
|
RandomContext_SeedRandom (SysGenRNG,
|
||||||
SysInfoPtr->PlanetInfo.ScanSeed[BIOLOGICAL_SCAN]);
|
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
|
void
|
||||||
GenerateRandomLocation (SYSTEM_INFO *SysInfoPtr)
|
GenerateRandomLocation (POINT *loc)
|
||||||
{
|
{
|
||||||
UWORD rand_val;
|
UWORD rand_val;
|
||||||
|
|
||||||
rand_val = RandomContext_Random (SysGenRNG);
|
rand_val = RandomContext_Random (SysGenRNG);
|
||||||
SysInfoPtr->PlanetInfo.CurPt.x =
|
loc->x = 8 + LOBYTE (rand_val) % (MAP_WIDTH - (8 << 1));
|
||||||
(LOBYTE (rand_val) % (MAP_WIDTH - (8 << 1))) + 8;
|
loc->y = 8 + HIBYTE (rand_val) % (MAP_HEIGHT - (8 << 1));
|
||||||
SysInfoPtr->PlanetInfo.CurPt.y =
|
|
||||||
(HIBYTE (rand_val) % (MAP_HEIGHT - (8 << 1))) + 8;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns:
|
// Returns:
|
||||||
@@ -178,20 +223,25 @@ GenerateRandomLocation (SYSTEM_INFO *SysInfoPtr)
|
|||||||
// for whichNode<32 : the index of the last node (no known usage exists)
|
// for whichNode<32 : the index of the last node (no known usage exists)
|
||||||
// Sets the SysGenRNG to the required state first.
|
// Sets the SysGenRNG to the required state first.
|
||||||
COUNT
|
COUNT
|
||||||
GenerateRandomNodes (SYSTEM_INFO *SysInfoPtr, COUNT scan, COUNT numNodes,
|
GenerateRandomNodes (const SYSTEM_INFO *SysInfoPtr, COUNT scan, COUNT numNodes,
|
||||||
COUNT type, COUNT whichNode)
|
COUNT type, COUNT whichNode, NODE_INFO *info)
|
||||||
{
|
{
|
||||||
COUNT i;
|
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)
|
for (i = 0; i < numNodes; ++i)
|
||||||
{
|
{
|
||||||
GenerateRandomLocation (SysInfoPtr);
|
GenerateRandomLocation (&info->loc_pt);
|
||||||
// CurType is irrelevant for energy nodes
|
// type is irrelevant for energy nodes
|
||||||
SysInfoPtr->PlanetInfo.CurType = type;
|
info->type = type;
|
||||||
// CurDensity is irrelevant for energy and bio nodes
|
// density is irrelevant for energy and bio nodes
|
||||||
SysInfoPtr->PlanetInfo.CurDensity = 0;
|
info->density = 0;
|
||||||
|
|
||||||
if (i >= whichNode)
|
if (i >= whichNode)
|
||||||
break;
|
break;
|
||||||
|
|||||||
+23
-26
@@ -973,8 +973,7 @@ dumpPlanetCallback (const PLANET_DESC *planet, void *arg)
|
|||||||
void
|
void
|
||||||
dumpPlanet (FILE *out, const PLANET_DESC *planet)
|
dumpPlanet (FILE *out, const PLANET_DESC *planet)
|
||||||
{
|
{
|
||||||
(*pSolarSysState->genFuncs->generateName) (
|
(*pSolarSysState->genFuncs->generateName) (pSolarSysState, planet);
|
||||||
pSolarSysState, (PLANET_DESC *) planet);
|
|
||||||
fprintf (out, "- %-37s %s\n", GLOBAL_SIS (PlanetName),
|
fprintf (out, "- %-37s %s\n", GLOBAL_SIS (PlanetName),
|
||||||
planetTypeString (planet->data_index & ~PLANET_SHIELDED));
|
planetTypeString (planet->data_index & ~PLANET_SHIELDED));
|
||||||
dumpWorld (out, planet);
|
dumpWorld (out, planet);
|
||||||
@@ -1055,16 +1054,16 @@ calculateBioValue (const SOLARSYS_STATE *system, const PLANET_DESC *world)
|
|||||||
|
|
||||||
assert (system->pOrbitalDesc == world);
|
assert (system->pOrbitalDesc == world);
|
||||||
|
|
||||||
numBio = callGenerateForScanType ((SOLARSYS_STATE *) system,
|
numBio = callGenerateForScanType (system, world, GENERATE_ALL,
|
||||||
(PLANET_DESC *) world, ~0, BIOLOGICAL_SCAN);
|
BIOLOGICAL_SCAN, NULL);
|
||||||
|
|
||||||
result = 0;
|
result = 0;
|
||||||
for (i = 0; i < numBio; i++)
|
for (i = 0; i < numBio; i++)
|
||||||
{
|
{
|
||||||
callGenerateForScanType ((SOLARSYS_STATE *) system,
|
NODE_INFO info;
|
||||||
(PLANET_DESC *) world, i, BIOLOGICAL_SCAN);
|
callGenerateForScanType (system, world, i, BIOLOGICAL_SCAN, &info);
|
||||||
result += BIO_CREDIT_VALUE * LONIBBLE (CreatureData[
|
result += BIO_CREDIT_VALUE *
|
||||||
system->SysInfo.PlanetInfo.CurType].ValueAndHitPoints);
|
LONIBBLE (CreatureData[info.type].ValueAndHitPoints);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -1078,17 +1077,17 @@ generateBioIndex(const SOLARSYS_STATE *system, const PLANET_DESC *world,
|
|||||||
|
|
||||||
assert (system->pOrbitalDesc == world);
|
assert (system->pOrbitalDesc == world);
|
||||||
|
|
||||||
numBio = callGenerateForScanType ((SOLARSYS_STATE *) system,
|
numBio = callGenerateForScanType (system, world, GENERATE_ALL,
|
||||||
(PLANET_DESC *) world, ~0, BIOLOGICAL_SCAN);
|
BIOLOGICAL_SCAN, NULL);
|
||||||
|
|
||||||
for (i = 0; i < NUM_CREATURE_TYPES + NUM_SPECIAL_CREATURE_TYPES; i++)
|
for (i = 0; i < NUM_CREATURE_TYPES + NUM_SPECIAL_CREATURE_TYPES; i++)
|
||||||
bio[i] = 0;
|
bio[i] = 0;
|
||||||
|
|
||||||
for (i = 0; i < numBio; i++)
|
for (i = 0; i < numBio; i++)
|
||||||
{
|
{
|
||||||
callGenerateForScanType ((SOLARSYS_STATE *) system,
|
NODE_INFO info;
|
||||||
(PLANET_DESC *) world, i, BIOLOGICAL_SCAN);
|
callGenerateForScanType (system, world, i, BIOLOGICAL_SCAN, &info);
|
||||||
bio[system->SysInfo.PlanetInfo.CurType]++;
|
bio[info.type]++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1101,17 +1100,16 @@ calculateMineralValue (const SOLARSYS_STATE *system, const PLANET_DESC *world)
|
|||||||
|
|
||||||
assert (system->pOrbitalDesc == world);
|
assert (system->pOrbitalDesc == world);
|
||||||
|
|
||||||
numDeposits = callGenerateForScanType ((SOLARSYS_STATE *) system,
|
numDeposits = callGenerateForScanType (system, world, GENERATE_ALL,
|
||||||
(PLANET_DESC *) world, ~0, MINERAL_SCAN);
|
MINERAL_SCAN, NULL);
|
||||||
|
|
||||||
result = 0;
|
result = 0;
|
||||||
for (i = 0; i < numDeposits; i++)
|
for (i = 0; i < numDeposits; i++)
|
||||||
{
|
{
|
||||||
callGenerateForScanType ((SOLARSYS_STATE *) system,
|
NODE_INFO info;
|
||||||
(PLANET_DESC *) world, i, MINERAL_SCAN);
|
callGenerateForScanType (system, world, i, MINERAL_SCAN, &info);
|
||||||
result += HIBYTE (system->SysInfo.PlanetInfo.CurDensity) *
|
result += HIBYTE (info.density) *
|
||||||
GLOBAL (ElementWorth[ElementCategory (
|
GLOBAL (ElementWorth[ElementCategory (info.type)]);
|
||||||
system->SysInfo.PlanetInfo.CurType)]);
|
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -1125,18 +1123,17 @@ generateMineralIndex(const SOLARSYS_STATE *system, const PLANET_DESC *world,
|
|||||||
|
|
||||||
assert (system->pOrbitalDesc == world);
|
assert (system->pOrbitalDesc == world);
|
||||||
|
|
||||||
numDeposits = callGenerateForScanType ((SOLARSYS_STATE *) system,
|
numDeposits = callGenerateForScanType (system, world, GENERATE_ALL,
|
||||||
(PLANET_DESC *) world, ~0, MINERAL_SCAN);
|
MINERAL_SCAN, NULL);
|
||||||
|
|
||||||
for (i = 0; i < NUM_ELEMENT_CATEGORIES; i++)
|
for (i = 0; i < NUM_ELEMENT_CATEGORIES; i++)
|
||||||
minerals[i] = 0;
|
minerals[i] = 0;
|
||||||
|
|
||||||
for (i = 0; i < numDeposits; i++)
|
for (i = 0; i < numDeposits; i++)
|
||||||
{
|
{
|
||||||
callGenerateForScanType ((SOLARSYS_STATE *) system,
|
NODE_INFO info;
|
||||||
(PLANET_DESC *) world, i, MINERAL_SCAN);
|
callGenerateForScanType (system, world, i, MINERAL_SCAN, &info);
|
||||||
minerals[ElementCategory(system->SysInfo.PlanetInfo.CurType)] +=
|
minerals[ElementCategory (info.type)] += HIBYTE (info.density);
|
||||||
HIBYTE (system->SysInfo.PlanetInfo.CurDensity);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user