Dynamic generation registry for Ur-Quan wreck planet.

This commit is contained in:
2024-04-26 05:20:42 -04:00
parent dab2f8ede6
commit 2cd1265945
4 changed files with 34 additions and 37 deletions
+1 -3
View File
@@ -45,7 +45,6 @@ extern GenerateFunctions generateTrapFunctions;
extern GenerateFunctions generateUtwigFunctions;
extern GenerateFunctions generateVaultFunctions;
extern GenerateFunctions generateVuxFunctions;
extern GenerateFunctions generateWreckFunctions;
extern GenerateFunctions generateYehatFunctions;
extern GenerateFunctions generateZoqFotPikFunctions;
extern GenerateFunctions generateZoqFotPikScoutFunctions;
@@ -61,6 +60,7 @@ getGenerateFunctions (STAR_DESC *const star)
case SLYLANDRO_DEFINED:
case START_COLONY_DEFINED:
case CXX_DEFINED:
case URQUAN_WRECK_DEFINED:
default:
abort();
@@ -109,8 +109,6 @@ getGenerateFunctions (STAR_DESC *const star)
return &generateOrzFunctions;
case SHIP_VAULT_DEFINED:
return &generateVaultFunctions;
case URQUAN_WRECK_DEFINED:
return &generateWreckFunctions;
case MAIDENS_DEFINED:
case VUX_BEAST_DEFINED:
case VUX_DEFINED:
+1 -1
View File
@@ -550,7 +550,7 @@ STAR_DESC starmap_array[] =
{{1848, 1469}, MAKE_STAR (DWARF_STAR, BLUE_BODY, -1), 0, 4, 82, "Shofixti"},
{{1751, 1479}, MAKE_STAR (GIANT_STAR, GREEN_BODY, -1), URQUAN_WRECK_DEFINED, 1, 59},
{{1751, 1479}, MAKE_STAR (GIANT_STAR, GREEN_BODY, -1), 0, 1, 59, "Wreck"},
{{1707, 1501}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 0, 52},
+2 -2
View File
@@ -1,8 +1,8 @@
uqm_CFILES="gendefault.c genand.c genburv.c genchmmr.c gendru.c
genilw.c genmel.c genmyc.c genorz.c genpet.c genpku.c genrain.c
gensam.c gensol.c genspa.c gensup.c gensyr.c
genthrad.c gentrap.c genutw.c genvault.c genvux.c genwreck.c
genthrad.c gentrap.c genutw.c genvault.c genvux.c
genyeh.c genzfpscout.c genzoq.c"
uqm_HFILES="genall.h gendefault.h"
uqm_CXXFILES="cxx-generator.cpp gensly-modern.cpp genshof-modern.cpp
gencol-modern.cpp"
gencol-modern.cpp genwreck-modern.cpp"
@@ -1,4 +1,5 @@
//Copyright Paul Reiche, Fred Ford. 1992-2002
// Adapted by ADAM David Alan Martin 2024
/*
* This program is free software; you can redistribute it and/or modify
@@ -25,35 +26,33 @@
#include "libs/mathlib.h"
static bool GenerateWreck_generateOrbital (SOLARSYS_STATE *solarSys,
PLANET_DESC *world);
static COUNT GenerateWreck_generateEnergy (const SOLARSYS_STATE *,
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *);
static bool GenerateWreck_pickupEnergy (SOLARSYS_STATE *solarSys,
PLANET_DESC *world, COUNT whichNode);
namespace
{
using namespace Planets::exports;
#define CRASH_PLANET 6
class GenerateWreck
: public DefaultGenerator
{
static constexpr int CRASH_PLANET= 6;
const GenerateFunctions generateWreckFunctions = {
/* .initNpcs = */ GenerateDefault_initNpcs,
/* .reinitNpcs = */ GenerateDefault_reinitNpcs,
/* .uninitNpcs = */ GenerateDefault_uninitNpcs,
/* .generatePlanets = */ GenerateDefault_generatePlanets,
/* .generateMoons = */ GenerateDefault_generateMoons,
/* .generateName = */ GenerateDefault_generateName,
/* .generateOrbital = */ GenerateWreck_generateOrbital,
/* .generateMinerals = */ GenerateDefault_generateMinerals,
/* .generateEnergy = */ GenerateWreck_generateEnergy,
/* .generateLife = */ GenerateDefault_generateLife,
/* .pickupMinerals = */ GenerateDefault_pickupMinerals,
/* .pickupEnergy = */ GenerateWreck_pickupEnergy,
/* .pickupLife = */ GenerateDefault_pickupLife,
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( "Wreck", std::make_unique< GenerateWreck >() );
static bool
GenerateWreck_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
return 0xDEADBEEF;
}();
}
bool
GenerateWreck::generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
{
if (matchWorld (solarSys, world, CRASH_PLANET, MATCH_PLANET))
{
@@ -70,13 +69,13 @@ GenerateWreck_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world)
}
}
GenerateDefault_generateOrbital (solarSys, world);
DefaultGenerator::generateOrbital (solarSys, world);
return true;
}
static COUNT
GenerateWreck_generateEnergy (const SOLARSYS_STATE *solarSys,
const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info)
COUNT
GenerateWreck::generateEnergy( const SolarSystem *const solarSys,
const PLANET_DESC *const world, const COUNT whichNode, NODE_INFO *const info )
{
if (matchWorld (solarSys, world, CRASH_PLANET, MATCH_PLANET))
{
@@ -86,9 +85,9 @@ GenerateWreck_generateEnergy (const SOLARSYS_STATE *solarSys,
return 0;
}
static bool
GenerateWreck_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world,
COUNT whichNode)
bool
GenerateWreck::pickupEnergy( SolarSystem *const solarSys, PLANET_DESC *const world,
const COUNT whichNode )
{
if (matchWorld (solarSys, world, CRASH_PLANET, MATCH_PLANET))
{