Dynamic Chmmr, Druuge, Supox, and Mycon Gambit.

Now there's still more to do...  But I think I can retire the
old funcptr based stuff soon.
This commit is contained in:
2024-04-26 21:45:17 -04:00
parent a9d0e3ce7c
commit 4f1b12d4c5
7 changed files with 138 additions and 146 deletions
+5 -12
View File
@@ -24,8 +24,6 @@
extern GenerateFunctions generateDefaultFunctions;
extern GenerateFunctions generateChmmrFunctions;
extern GenerateFunctions generateDruugeFunctions;
extern GenerateFunctions generateIlwrathFunctions;
extern GenerateFunctions generateMelnormeFunctions;
extern GenerateFunctions generateMyconFunctions;
@@ -35,10 +33,8 @@ extern GenerateFunctions generateRainbowWorldFunctions;
extern GenerateFunctions generateSaMatraFunctions;
extern GenerateFunctions generateSolFunctions;
extern GenerateFunctions generateSpathiFunctions;
extern GenerateFunctions generateSupoxFunctions;
extern GenerateFunctions generateTalkingPetFunctions;
extern GenerateFunctions generateThraddashFunctions;
extern GenerateFunctions generateTrapFunctions;
extern GenerateFunctions generateUtwigFunctions;
extern GenerateFunctions generateVuxFunctions;
extern GenerateFunctions generateYehatFunctions;
@@ -51,6 +47,11 @@ getGenerateFunctions (STAR_DESC *const star)
switch (star->Index)
{
// Legacy ones are disabled...
case CHMMR_DEFINED:
case DRUUGE_DEFINED:
case MYCON_TRAP_DEFINED:
case SUPOX_DEFINED:
case SHIP_VAULT_DEFINED:
case ANDROSYNTH_DEFINED:
case BURVIXESE_DEFINED:
@@ -80,12 +81,6 @@ getGenerateFunctions (STAR_DESC *const star)
return &generateMelnormeFunctions;
case TALKING_PET_DEFINED:
return &generateTalkingPetFunctions;
case CHMMR_DEFINED:
return &generateChmmrFunctions;
case MYCON_TRAP_DEFINED:
return &generateTrapFunctions;
case DRUUGE_DEFINED:
return &generateDruugeFunctions;
case BOMB_DEFINED:
case UTWIG_DEFINED:
return &generateUtwigFunctions;
@@ -113,8 +108,6 @@ getGenerateFunctions (STAR_DESC *const star)
return &generateYehatFunctions;
case PKUNK_DEFINED:
return &generatePkunkFunctions;
case SUPOX_DEFINED:
return &generateSupoxFunctions;
case RAINBOW_DEFINED:
return &generateRainbowWorldFunctions;
case ILWRATH_DEFINED:
+7
View File
@@ -538,6 +538,7 @@ STAR_DESC starmap_array[] =
#endif
//{{2908, 269}, MAKE_STAR (DWARF_STAR, BLUE_BODY, -1), SHOFIXTI_DEFINED, 4, 82},
{{6858, 577}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 0, 123, "Mycon Trap"},
{{1004, 1083}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 2, 27, "Slylandro"},
{{1776, 1395}, MAKE_STAR (DWARF_STAR, YELLOW_BODY, -1), 0, 0, 98, "Colony"},
@@ -555,11 +556,17 @@ STAR_DESC starmap_array[] =
{{1707, 1501}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 0, 52},
{{2104, 2083}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 0, 118, "Zoq-Fot-Pik Scout"},
{{ 742, 2268}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 0, 117, "Chmmr"},
{{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"},
{{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"},
{{9645, 5791}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 0, 130, "Burvixese"},
{{7414, 9124}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 2, 47, "Supox"},
{{MAX_X_UNIVERSE << 1, MAX_Y_UNIVERSE << 1}, 0, 0, 0, 0},
+5 -4
View File
@@ -1,10 +1,11 @@
uqm_CFILES="gendefault.c genchmmr.c gendru.c
uqm_CFILES="gendefault.c
genilw.c genmel.c genmyc.c genorz.c genpet.c genpku.c genrain.c
gensam.c gensol.c genspa.c gensup.c
genthrad.c gentrap.c genutw.c genvux.c
gensam.c gensol.c genspa.c
genthrad.c genutw.c genvux.c
genyeh.c genzoq.c"
uqm_HFILES="genall.h gendefault.h"
uqm_CXXFILES="cxx-generator.cpp gensly-modern.cpp genshof-modern.cpp
gencol-modern.cpp genwreck-modern.cpp genzfpscout-modern.cpp
genand-modern.cpp genburv-modern.cpp gensyr-modern.cpp
genvault-modern.cpp"
genvault-modern.cpp genchmmr-modern.cpp gendru-modern.cpp
gentrap-modern.cpp gensup-modern.cpp"
@@ -30,34 +30,32 @@
#include "../../starbase.h"
static bool GenerateChmmr_generatePlanets (SOLARSYS_STATE *solarSys);
static bool GenerateChmmr_generateMoons (SOLARSYS_STATE *solarSys,
PLANET_DESC *planet);
static bool GenerateChmmr_generateOrbital (SOLARSYS_STATE *solarSys,
PLANET_DESC *world);
namespace
{
using namespace Planets::exports;
const GenerateFunctions generateChmmrFunctions = {
/* .initNpcs = */ GenerateDefault_initNpcs,
/* .reinitNpcs = */ GenerateDefault_reinitNpcs,
/* .uninitNpcs = */ GenerateDefault_uninitNpcs,
/* .generatePlanets = */ GenerateChmmr_generatePlanets,
/* .generateMoons = */ GenerateChmmr_generateMoons,
/* .generateName = */ GenerateDefault_generateName,
/* .generateOrbital = */ GenerateChmmr_generateOrbital,
/* .generateMinerals = */ GenerateDefault_generateMinerals,
/* .generateEnergy = */ GenerateDefault_generateEnergy,
/* .generateLife = */ GenerateDefault_generateLife,
/* .pickupMinerals = */ GenerateDefault_pickupMinerals,
/* .pickupEnergy = */ GenerateDefault_pickupEnergy,
/* .pickupLife = */ GenerateDefault_pickupLife,
class GenerateChmmr
: public DefaultGenerator
{
bool generatePlanets( SolarSystem *solarSys ) override;
bool generateMoons( SolarSystem *solarSys,
PLANET_DESC *planet ) override;
bool generateOrbital( SolarSystem *solarSys,
PLANET_DESC *world ) override;
};
static bool
GenerateChmmr_generatePlanets (SOLARSYS_STATE *solarSys)
auto init= []
{
GenerateDefault_generatePlanets (solarSys);
Generator::add( "Chmmr", std::make_unique< GenerateChmmr >() );
return 0xDEADBEEF;
}();
}
bool
GenerateChmmr::generatePlanets( SolarSystem *const solarSys )
{
DefaultGenerator::generatePlanets (solarSys);
solarSys->PlanetDesc[1].data_index = SAPPHIRE_WORLD;
if( false ){ if (!GET_GAME_STATE (CHMMR_UNLEASHED))
@@ -67,10 +65,10 @@ GenerateChmmr_generatePlanets (SOLARSYS_STATE *solarSys)
return true;
}
static bool
GenerateChmmr_generateMoons (SOLARSYS_STATE *solarSys, PLANET_DESC *planet)
bool
GenerateChmmr::generateMoons( SolarSystem *const solarSys, PLANET_DESC *const planet )
{
GenerateDefault_generateMoons (solarSys, planet);
DefaultGenerator::generateMoons (solarSys, planet);
if (matchWorld (solarSys, planet, 1, MATCH_PLANET))
{
@@ -90,8 +88,8 @@ GenerateChmmr_generateMoons (SOLARSYS_STATE *solarSys, PLANET_DESC *planet)
return true;
}
static bool
GenerateChmmr_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
bool
GenerateChmmr::generateOrbital( SolarSystem *const solarSys, PLANET_DESC *const world )
{
if (matchWorld (solarSys, world, 1, MATCH_PLANET))
{
@@ -150,7 +148,7 @@ GenerateChmmr_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
return PrepareToVisitStarBase();
}
GenerateDefault_generateOrbital (solarSys, world);
DefaultGenerator::generateOrbital (solarSys, world);
return true;
}
@@ -29,39 +29,37 @@
#include <string.h>
namespace
{
using namespace Planets::exports;
static bool GenerateDruuge_generatePlanets (SOLARSYS_STATE *solarSys);
static bool GenerateDruuge_generateOrbital (SOLARSYS_STATE *solarSys,
PLANET_DESC *world);
static COUNT GenerateDruuge_generateEnergy (const SOLARSYS_STATE *,
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
static bool GenerateDruuge_pickupEnergy (SOLARSYS_STATE *solarSys,
PLANET_DESC *world, COUNT whichNode);
const GenerateFunctions generateDruugeFunctions = {
/* .initNpcs = */ GenerateDefault_initNpcs,
/* .reinitNpcs = */ GenerateDefault_reinitNpcs,
/* .uninitNpcs = */ GenerateDefault_uninitNpcs,
/* .generatePlanets = */ GenerateDruuge_generatePlanets,
/* .generateMoons = */ GenerateDefault_generateMoons,
/* .generateName = */ GenerateDefault_generateName,
/* .generateOrbital = */ GenerateDruuge_generateOrbital,
/* .generateMinerals = */ GenerateDefault_generateMinerals,
/* .generateEnergy = */ GenerateDruuge_generateEnergy,
/* .generateLife = */ GenerateDefault_generateLife,
/* .pickupMinerals = */ GenerateDefault_pickupMinerals,
/* .pickupEnergy = */ GenerateDruuge_pickupEnergy,
/* .pickupLife = */ GenerateDefault_pickupLife,
class GenerateDruuge
: public DefaultGenerator
{
bool generatePlanets( SolarSystem *solarSys ) override;
bool generateOrbital( SolarSystem *solarSys,
PLANET_DESC *world ) override;
COUNT generateEnergy( const SolarSystem *,
const PLANET_DESC *world, COUNT whichNode, NODE_INFO * ) override;
bool pickupEnergy( SolarSystem *solarSys,
PLANET_DESC *world, COUNT whichNode ) override;
};
auto init= []
{
Generator::add( "Druuge", std::make_unique< GenerateDruuge >() );
static bool
GenerateDruuge_generatePlanets (SOLARSYS_STATE *solarSys)
return 0xDEADBEEF;
}();
}
bool
GenerateDruuge::generatePlanets( SolarSystem *const solarSys )
{
COUNT angle;
GenerateDefault_generatePlanets (solarSys);
DefaultGenerator::generatePlanets (solarSys);
memmove (&solarSys->PlanetDesc[1], &solarSys->PlanetDesc[0],
sizeof (solarSys->PlanetDesc[0])
@@ -83,8 +81,8 @@ GenerateDruuge_generatePlanets (SOLARSYS_STATE *solarSys)
return true;
}
static bool
GenerateDruuge_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
bool
GenerateDruuge::generateOrbital( SolarSystem *const solarSys, PLANET_DESC *const world )
{
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
{
@@ -126,14 +124,14 @@ GenerateDruuge_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
}
}
GenerateDefault_generateOrbital (solarSys, world);
DefaultGenerator::generateOrbital (solarSys, world);
return true;
}
static bool
GenerateDruuge_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
COUNT whichNode)
bool
GenerateDruuge::pickupEnergy( SolarSystem *const solarSys, PLANET_DESC *const world,
const COUNT whichNode )
{
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
{
@@ -155,9 +153,9 @@ GenerateDruuge_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
return false;
}
static COUNT
GenerateDruuge_generateEnergy (const SOLARSYS_STATE *solarSys,
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
COUNT
GenerateDruuge::generateEnergy( const SolarSystem *const solarSys,
const PLANET_DESC *const world, const COUNT whichNode, NODE_INFO *const info )
{
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
{
@@ -27,39 +27,36 @@
#include "../../state.h"
#include "libs/mathlib.h"
namespace
{
using namespace Planets::exports;
static bool GenerateSupox_generatePlanets (SOLARSYS_STATE *solarSys);
static bool GenerateSupox_generateOrbital (SOLARSYS_STATE *solarSys,
PLANET_DESC *world);
static COUNT GenerateSupox_generateEnergy (const SOLARSYS_STATE *,
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
static bool GenerateSupox_pickupEnergy (SOLARSYS_STATE *solarSys,
PLANET_DESC *world, COUNT whichNode);
const GenerateFunctions generateSupoxFunctions = {
/* .initNpcs = */ GenerateDefault_initNpcs,
/* .reinitNpcs = */ GenerateDefault_reinitNpcs,
/* .uninitNpcs = */ GenerateDefault_uninitNpcs,
/* .generatePlanets = */ GenerateSupox_generatePlanets,
/* .generateMoons = */ GenerateDefault_generateMoons,
/* .generateName = */ GenerateDefault_generateName,
/* .generateOrbital = */ GenerateSupox_generateOrbital,
/* .generateMinerals = */ GenerateDefault_generateMinerals,
/* .generateEnergy = */ GenerateSupox_generateEnergy,
/* .generateLife = */ GenerateDefault_generateLife,
/* .pickupMinerals = */ GenerateDefault_pickupMinerals,
/* .pickupEnergy = */ GenerateSupox_pickupEnergy,
/* .pickupLife = */ GenerateDefault_pickupLife,
class GenerateSupox
: public DefaultGenerator
{
bool generatePlanets( SolarSystem *solarSys ) override;
bool generateOrbital( SolarSystem *solarSys,
PLANET_DESC *world ) override;
COUNT generateEnergy( const SolarSystem *,
const PLANET_DESC *world, COUNT whichNode, NODE_INFO * ) override;
bool pickupEnergy( SolarSystem *solarSys,
PLANET_DESC *world, COUNT whichNode ) override;
};
auto init= []
{
Generator::add( "Supox", std::make_unique< GenerateSupox >() );
static bool
GenerateSupox_generatePlanets (SOLARSYS_STATE *solarSys)
return 0xDEADBEEF;
}();
}
bool
GenerateSupox::generatePlanets( SolarSystem *const solarSys )
{
COUNT angle;
GenerateDefault_generatePlanets (solarSys);
DefaultGenerator::generatePlanets (solarSys);
solarSys->PlanetDesc[0].data_index = WATER_WORLD;
solarSys->PlanetDesc[0].NumPlanets = 2;
@@ -74,8 +71,8 @@ GenerateSupox_generatePlanets (SOLARSYS_STATE *solarSys)
return true;
}
static bool
GenerateSupox_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
bool
GenerateSupox::generateOrbital( SolarSystem *const solarSys, PLANET_DESC *const world )
{
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
{
@@ -117,14 +114,14 @@ GenerateSupox_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
}
}
GenerateDefault_generateOrbital (solarSys, world);
DefaultGenerator::generateOrbital (solarSys, world);
return true;
}
static bool
GenerateSupox_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
COUNT whichNode)
bool
GenerateSupox::pickupEnergy( SolarSystem *const solarSys, PLANET_DESC *const world,
const COUNT whichNode )
{
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
{
@@ -145,9 +142,9 @@ GenerateSupox_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
return false;
}
static COUNT
GenerateSupox_generateEnergy (const SOLARSYS_STATE *solarSys,
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
COUNT
GenerateSupox::generateEnergy( const SolarSystem *const solarSys,
const PLANET_DESC *const world, const COUNT whichNode, NODE_INFO *const info)
{
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
{
@@ -19,35 +19,33 @@
#include "genall.h"
#include "../planets.h"
namespace
{
using namespace Planets::exports;
static bool GenerateTrap_generatePlanets (SOLARSYS_STATE *solarSys);
static bool GenerateTrap_generateOrbital (SOLARSYS_STATE *solarSys,
PLANET_DESC *world);
const GenerateFunctions generateTrapFunctions = {
/* .initNpcs = */ GenerateDefault_initNpcs,
/* .reinitNpcs = */ GenerateDefault_reinitNpcs,
/* .uninitNpcs = */ GenerateDefault_uninitNpcs,
/* .generatePlanets = */ GenerateTrap_generatePlanets,
/* .generateMoons = */ GenerateDefault_generateMoons,
/* .generateName = */ GenerateDefault_generateName,
/* .generateOrbital = */ GenerateTrap_generateOrbital,
/* .generateMinerals = */ GenerateDefault_generateMinerals,
/* .generateEnergy = */ GenerateDefault_generateEnergy,
/* .generateLife = */ GenerateDefault_generateLife,
/* .pickupMinerals = */ GenerateDefault_pickupMinerals,
/* .pickupEnergy = */ GenerateDefault_pickupEnergy,
/* .pickupLife = */ GenerateDefault_pickupLife,
class GenerateTrap
: public DefaultGenerator
{
bool generatePlanets( SolarSystem *solarSys ) override;
bool generateOrbital( SolarSystem *solarSys,
PLANET_DESC *world ) override;
};
auto init= []
{
Generator::add( "Mycon Trap", std::make_unique< GenerateTrap >() );
static bool
GenerateTrap_generatePlanets (SOLARSYS_STATE *solarSys)
return 0xDEADBEEF;
}();
}
bool
GenerateTrap::generatePlanets( SolarSystem *const solarSys )
{
COUNT angle;
GenerateDefault_generatePlanets (solarSys);
DefaultGenerator::generatePlanets (solarSys);
solarSys->PlanetDesc[0].data_index = TELLURIC_WORLD;
solarSys->PlanetDesc[0].NumPlanets = 1;
@@ -62,10 +60,10 @@ GenerateTrap_generatePlanets (SOLARSYS_STATE *solarSys)
return true;
}
static bool
GenerateTrap_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
bool
GenerateTrap::generateOrbital( SolarSystem *const solarSys, PLANET_DESC *const world )
{
GenerateDefault_generateOrbital (solarSys, world);
DefaultGenerator::generateOrbital (solarSys, world);
if (matchWorld (solarSys, world, 0, MATCH_PLANET))
{