diff --git a/sc2/src/uqm/gendef.c b/sc2/src/uqm/gendef.c index 634717a04..a6dd5c1ec 100644 --- a/sc2/src/uqm/gendef.c +++ b/sc2/src/uqm/gendef.c @@ -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: diff --git a/sc2/src/uqm/plandata.c b/sc2/src/uqm/plandata.c index 75d73a2ed..dd41cfd59 100644 --- a/sc2/src/uqm/plandata.c +++ b/sc2/src/uqm/plandata.c @@ -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}, diff --git a/sc2/src/uqm/planets/generate/Makeinfo b/sc2/src/uqm/planets/generate/Makeinfo index ccf8bf495..3888f35b8 100644 --- a/sc2/src/uqm/planets/generate/Makeinfo +++ b/sc2/src/uqm/planets/generate/Makeinfo @@ -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" diff --git a/sc2/src/uqm/planets/generate/genwreck.c b/sc2/src/uqm/planets/generate/genwreck-modern.cpp similarity index 57% rename from sc2/src/uqm/planets/generate/genwreck.c rename to sc2/src/uqm/planets/generate/genwreck-modern.cpp index ef1be9f85..d9b59ddf1 100644 --- a/sc2/src/uqm/planets/generate/genwreck.c +++ b/sc2/src/uqm/planets/generate/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; + 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; + }; -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, -}; + auto init= [] + { + Generator::add( "Wreck", std::make_unique< GenerateWreck >() ); + return 0xDEADBEEF; + }(); +} -static bool -GenerateWreck_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) +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)) {