The last of the single-system generators.

This commit is contained in:
2024-04-27 12:11:32 -04:00
parent a5c3ea37a1
commit 6bdacb1462
5 changed files with 82 additions and 95 deletions
+2 -6
View File
@@ -24,12 +24,10 @@
extern GenerateFunctions generateDefaultFunctions;
extern GenerateFunctions generateIlwrathFunctions;
extern GenerateFunctions generateMelnormeFunctions;
extern GenerateFunctions generateMyconFunctions;
extern GenerateFunctions generateOrzFunctions;
extern GenerateFunctions generateRainbowWorldFunctions;
extern GenerateFunctions generateSaMatraFunctions;
extern GenerateFunctions generateSolFunctions;
extern GenerateFunctions generateThraddashFunctions;
extern GenerateFunctions generateUtwigFunctions;
@@ -42,6 +40,8 @@ getGenerateFunctions (STAR_DESC *const star)
switch (star->Index)
{
// Legacy ones are disabled...
case SAMATRA_DEFINED:
case ILWRATH_DEFINED:
case SPATHI_DEFINED:
case TALKING_PET_DEFINED:
case ZOQFOT_DEFINED:
@@ -95,12 +95,8 @@ getGenerateFunctions (STAR_DESC *const star)
case VUX_BEAST_DEFINED:
case VUX_DEFINED:
return &generateVuxFunctions;
case SAMATRA_DEFINED:
return &generateSaMatraFunctions;
case RAINBOW_DEFINED:
return &generateRainbowWorldFunctions;
case ILWRATH_DEFINED:
return &generateIlwrathFunctions;
}
}
+2
View File
@@ -563,11 +563,13 @@ STAR_DESC starmap_array[] =
{{3587, 2566}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 7, 86, "Androsynth"},
{{9469, 2806}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 6, 61, "Druuge"},
{{ 229, 3666}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 1, 76, "Ilwrath"},
{{2416, 3687}, MAKE_STAR (GIANT_STAR, ORANGE_BODY, -1), 0, 5, 109, "Spathiwa"},
{{4125, 3770}, MAKE_STAR (DWARF_STAR, BLUE_BODY, -1), 0, 0, 114, "Syreen Gaia"},
{{5937, 3937}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 5, 10, "Syreen Vault"},
{{4000, 5437}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 1, 18, "Zoq-Fot-Pik"},
{{9645, 5791}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 0, 130, "Burvixese"},
{{6200, 5935}, MAKE_STAR (DWARF_STAR, YELLOW_BODY, -1), 0, 4, 21, "Sa-Matra"},
{{1978, 5968}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 2, 54, "Umgah and Talking Pet"},
{{7414, 9124}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 2, 47, "Supox"},
+3 -3
View File
@@ -1,6 +1,6 @@
uqm_CFILES="gendefault.c
genilw.c genmel.c genmyc.c genorz.c genrain.c
gensam.c gensol.c
genmel.c genmyc.c genorz.c genrain.c
gensol.c
genthrad.c genutw.c genvux.c"
uqm_HFILES="genall.h gendefault.h"
uqm_CXXFILES="cxx-generator.cpp gensly-modern.cpp genshof-modern.cpp
@@ -9,4 +9,4 @@ uqm_CXXFILES="cxx-generator.cpp gensly-modern.cpp genshof-modern.cpp
genvault-modern.cpp genchmmr-modern.cpp gendru-modern.cpp
gentrap-modern.cpp gensup-modern.cpp genspa-modern.cpp
genpet-modern.cpp genzoq-modern.cpp genyeh-modern.cpp
genpku-modern.cpp"
genilw-modern.cpp genpku-modern.cpp gensam-modern.cpp"
@@ -27,38 +27,37 @@
#include "libs/mathlib.h"
static bool GenerateIlwrath_generatePlanets (SOLARSYS_STATE *solarSys);
static bool GenerateIlwrath_generateOrbital (SOLARSYS_STATE *solarSys,
PLANET_DESC *world);
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);
namespace
{
using namespace Planets::exports;
const GenerateFunctions generateIlwrathFunctions = {
/* .initNpcs = */ GenerateDefault_initNpcs,
/* .reinitNpcs = */ GenerateDefault_reinitNpcs,
/* .uninitNpcs = */ GenerateDefault_uninitNpcs,
/* .generatePlanets = */ GenerateIlwrath_generatePlanets,
/* .generateMoons = */ GenerateDefault_generateMoons,
/* .generateName = */ GenerateDefault_generateName,
/* .generateOrbital = */ GenerateIlwrath_generateOrbital,
/* .generateMinerals = */ GenerateDefault_generateMinerals,
/* .generateEnergy = */ GenerateIlwrath_generateEnergy,
/* .generateLife = */ GenerateDefault_generateLife,
/* .pickupMinerals = */ GenerateDefault_pickupMinerals,
/* .pickupEnergy = */ GenerateIlwrath_pickupEnergy,
/* .pickupLife = */ GenerateDefault_pickupLife,
class GenerateIlwrath
: public DefaultGenerator
{
bool generatePlanets( SolarSystem *solarSys ) override;
bool generateOrbital( SolarSystem *solarSys,
PLANET_DESC *world ) override;
COUNT generateEnergy( const SOLARSYS_STATE *,
const PLANET_DESC *world, COUNT whichNode, NODE_INFO * ) override;
bool pickupEnergy( SOLARSYS_STATE *solarSys,
PLANET_DESC *world, COUNT whichNode ) override;
};
auto init= []
{
Generator::add( "Ilwrath", std::make_unique< GenerateIlwrath >() );
static bool
GenerateIlwrath_generatePlanets (SOLARSYS_STATE *solarSys)
return 0xDEADBEEF;
}();
}
bool
GenerateIlwrath::generatePlanets( SolarSystem *const solarSys )
{
COUNT angle;
GenerateDefault_generatePlanets (solarSys);
DefaultGenerator::generatePlanets (solarSys);
solarSys->PlanetDesc[0].data_index = PRIMORDIAL_WORLD;
solarSys->PlanetDesc[0].radius = EARTH_RADIUS * 204L / 100;
@@ -73,8 +72,8 @@ GenerateIlwrath_generatePlanets (SOLARSYS_STATE *solarSys)
return true;
}
static bool
GenerateIlwrath_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
bool
GenerateIlwrath::generateOrbital( SolarSystem *const solarSys, PLANET_DESC *const world)
{
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
{
@@ -111,7 +110,7 @@ GenerateIlwrath_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
}
}
GenerateDefault_generateOrbital (solarSys, world);
DefaultGenerator::generateOrbital( solarSys, world );
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
{
@@ -122,9 +121,9 @@ GenerateIlwrath_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
return true;
}
static COUNT
GenerateIlwrath_generateEnergy (const SOLARSYS_STATE *solarSys,
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
COUNT
GenerateIlwrath::generateEnergy( const SolarSystem *const solarSys,
const PLANET_DESC *const world, const COUNT whichNode, NODE_INFO *const info )
{
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
{
@@ -134,9 +133,9 @@ GenerateIlwrath_generateEnergy (const SOLARSYS_STATE *solarSys,
return 0;
}
static bool
GenerateIlwrath_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
COUNT whichNode)
bool
GenerateIlwrath::pickupEnergy( SOLARSYS_STATE *const solarSys, PLANET_DESC *const world,
const COUNT whichNode )
{
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
{
@@ -26,56 +26,51 @@
#include "../../state.h"
#include "libs/mathlib.h"
namespace
{
using namespace Planets::exports;
static bool GenerateSaMatra_initNpcs (SOLARSYS_STATE *solarSys);
static bool GenerateSaMatra_reinitNpcs (SOLARSYS_STATE *solarSys);
static bool GenerateSaMatra_generatePlanets (SOLARSYS_STATE *solarSys);
static bool GenerateSaMatra_generateMoons (SOLARSYS_STATE *solarSys,
PLANET_DESC *planet);
static bool GenerateSaMatra_generateOrbital (SOLARSYS_STATE *solarSys,
PLANET_DESC *world);
class GenerateSaMatra
: public DefaultGenerator
{
void initNpcs( SolarSystem *solarSys ) override;
void reinitNpcs( SolarSystem *solarSys ) override;
bool generatePlanets( SolarSystem *solarSys ) override;
bool generateMoons( SolarSystem *solarSys,
PLANET_DESC *planet ) override;
bool generateOrbital( SolarSystem *solarSys,
PLANET_DESC *world ) override;
static void BuildUrquanGuard (SOLARSYS_STATE *solarSys);
const GenerateFunctions generateSaMatraFunctions = {
/* .initNpcs = */ GenerateSaMatra_initNpcs,
/* .reinitNpcs = */ GenerateSaMatra_reinitNpcs,
/* .uninitNpcs = */ GenerateDefault_uninitNpcs,
/* .generatePlanets = */ GenerateSaMatra_generatePlanets,
/* .generateMoons = */ GenerateSaMatra_generateMoons,
/* .generateName = */ GenerateDefault_generateName,
/* .generateOrbital = */ GenerateSaMatra_generateOrbital,
/* .generateMinerals = */ GenerateDefault_generateMinerals,
/* .generateEnergy = */ GenerateDefault_generateEnergy,
/* .generateLife = */ GenerateDefault_generateLife,
/* .pickupMinerals = */ GenerateDefault_pickupMinerals,
/* .pickupEnergy = */ GenerateDefault_pickupEnergy,
/* .pickupLife = */ GenerateDefault_pickupLife,
static void BuildUrquanGuard();
};
auto init= []
{
Generator::add( "Sa-Matra", std::make_unique< GenerateSaMatra >() );
static bool
GenerateSaMatra_initNpcs (SOLARSYS_STATE *solarSys)
return 0xDEADBEEF;
}();
}
void
GenerateSaMatra::initNpcs( SolarSystem * )
{
if (!GET_GAME_STATE (URQUAN_MESSED_UP))
{
BuildUrquanGuard (solarSys);
BuildUrquanGuard();
}
else
{ // Exorcise Ur-Quan ghosts upon system reentry
PutGroupInfo (GROUPS_RANDOM, GROUP_SAVE_IP);
// wipe out the group
}
(void) solarSys;
return true;
}
static bool
GenerateSaMatra_reinitNpcs (SOLARSYS_STATE *solarSys)
void
GenerateSaMatra::reinitNpcs( SolarSystem * )
{
BOOLEAN GuardEngaged;
bool GuardEngaged;
HIPGROUP hGroup;
HIPGROUP hNextGroup;
@@ -84,7 +79,7 @@ GenerateSaMatra_reinitNpcs (SOLARSYS_STATE *solarSys)
EncounterRace = -1;
// Do not want guards to chase the player
GuardEngaged = FALSE;
GuardEngaged = false;
for (hGroup = GetHeadLink (&GLOBAL (ip_group_q));
hGroup; hGroup = hNextGroup)
{
@@ -106,7 +101,7 @@ GenerateSaMatra_reinitNpcs (SOLARSYS_STATE *solarSys)
GroupPtr->task &= ~REFORM_GROUP;
GroupPtr->group_counter = 0;
GuardEngaged = TRUE;
GuardEngaged = true;
}
UnlockIpGroup (&GLOBAL (ip_group_q), hGroup);
@@ -125,21 +120,18 @@ GenerateSaMatra_reinitNpcs (SOLARSYS_STATE *solarSys)
XFormIPLoc (&GLOBAL (ip_location),
&GLOBAL (ShipStamp.origin), TRUE);
}
(void) solarSys;
return true;
}
static bool
GenerateSaMatra_generatePlanets (SOLARSYS_STATE *solarSys)
bool
GenerateSaMatra::generatePlanets( SolarSystem *const solarSys )
{
GenerateDefault_generatePlanets (solarSys);
solarSys->PlanetDesc[4].NumPlanets = 1;
return true;
}
static bool
GenerateSaMatra_generateMoons (SOLARSYS_STATE *solarSys, PLANET_DESC *planet)
bool
GenerateSaMatra::generateMoons( SolarSystem *const solarSys, PLANET_DESC *const planet )
{
GenerateDefault_generateMoons (solarSys, planet);
@@ -161,8 +153,8 @@ GenerateSaMatra_generateMoons (SOLARSYS_STATE *solarSys, PLANET_DESC *planet)
return true;
}
static bool
GenerateSaMatra_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
bool
GenerateSaMatra::generateOrbital( SolarSystem *const solarSys, PLANET_DESC *const world )
{
/* Samatra */
if (matchWorld (solarSys, world, 4, 0))
@@ -198,7 +190,7 @@ GenerateSaMatra_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD)))
{
BOOLEAN UrquanSurvivors;
bool UrquanSurvivors;
UrquanSurvivors = GetHeadLink (&GLOBAL (npc_built_ship_q)) != 0;
@@ -227,8 +219,8 @@ GenerateSaMatra_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
return true;
}
static void
BuildUrquanGuard (SOLARSYS_STATE *solarSys)
void
GenerateSaMatra::BuildUrquanGuard()
{
BYTE ship1, ship2;
BYTE b0, b1;
@@ -318,7 +310,5 @@ BuildUrquanGuard (SOLARSYS_STATE *solarSys)
UnlockIpGroup (&GLOBAL (ip_group_q), hGroup);
hGroup = hNextGroup;
}
(void) solarSys;
}