From 64842659c679f7a93a403c08d123ba2e854d32e5 Mon Sep 17 00:00:00 2001 From: ADAM David Alan Martin Date: Fri, 26 Apr 2024 02:57:52 -0400 Subject: [PATCH] Default generation now goes thru C++ --- sc2/src/uqm/gendef.c | 12 +++++++++--- sc2/src/uqm/planets/generate-base.cpp | 17 +++++++++++++++++ sc2/src/uqm/planets/generate.h | 2 +- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/sc2/src/uqm/gendef.c b/sc2/src/uqm/gendef.c index 48926cff0..b4a20b266 100644 --- a/sc2/src/uqm/gendef.c +++ b/sc2/src/uqm/gendef.c @@ -19,6 +19,8 @@ #include "gendef.h" #include "planets/generate.h" +#include + extern GenerateFunctions generateDefaultFunctions; @@ -53,10 +55,14 @@ extern GenerateFunctions generateZoqFotPikScoutFunctions; extern GenerateFunctions *getGenerateCxxFunctions( void ); +extern struct GeneratorBase cxxDefaultPlanetGen; + + const GenerateFunctions * getGenerateFunctions (STAR_DESC *const star, void **sup ) { - *sup= 0; + *sup= star->supplement; + switch (star->Index) { case SOL_DEFINED: @@ -133,11 +139,11 @@ getGenerateFunctions (STAR_DESC *const star, void **sup ) case ILWRATH_DEFINED: return &generateIlwrathFunctions; default: - return &generateDefaultFunctions; + *sup= &cxxDefaultPlanetGen; + // FALLTHROUGH // Eventually everything should go thru this. case CXX_DEFINED: - *sup= star->supplement; return getGenerateCxxFunctions(); } } diff --git a/sc2/src/uqm/planets/generate-base.cpp b/sc2/src/uqm/planets/generate-base.cpp index 5383a0ac8..1696d35c7 100644 --- a/sc2/src/uqm/planets/generate-base.cpp +++ b/sc2/src/uqm/planets/generate-base.cpp @@ -168,4 +168,21 @@ namespace Planets ::detail:: Generate_m { return GenerateDefault_pickupLife( solarSys, world, whichNode ); } + + namespace + { + class RealDefaultGenerator + : public DefaultGenerator + { + public: + ~RealDefaultGenerator() override= default; + }; + } + +} + + +extern "C" +{ + Planets::detail::Generate_m::RealDefaultGenerator cxxDefaultPlanetGen; } diff --git a/sc2/src/uqm/planets/generate.h b/sc2/src/uqm/planets/generate.h index 34a498e18..2f76dbddc 100644 --- a/sc2/src/uqm/planets/generate.h +++ b/sc2/src/uqm/planets/generate.h @@ -167,7 +167,7 @@ namespace Planets ::detail:: Generate_m : public Generator { public: - ~DefaultGenerator() override; + ~DefaultGenerator() override= 0; void initNpcs(SolarSystem *solarSys) override; void reinitNpcs(SolarSystem *solarSys) override;