From ef041d3735c6639065fde5e7a5c6e12dc69c4bd0 Mon Sep 17 00:00:00 2001 From: ADAM David Alan Martin Date: Fri, 26 Apr 2024 02:38:50 -0400 Subject: [PATCH] And now the shofixti are all C++! --- sc2/src/uqm/gendef.c | 3 +- sc2/src/uqm/plandata.c | 3 +- sc2/src/uqm/planets/generate/Makeinfo | 2 +- .../{genshof.c => genshof-modern.cpp} | 74 +++++++++---------- 4 files changed, 37 insertions(+), 45 deletions(-) rename sc2/src/uqm/planets/generate/{genshof.c => genshof-modern.cpp} (71%) diff --git a/sc2/src/uqm/gendef.c b/sc2/src/uqm/gendef.c index f082932b8..48926cff0 100644 --- a/sc2/src/uqm/gendef.c +++ b/sc2/src/uqm/gendef.c @@ -34,7 +34,6 @@ extern GenerateFunctions generateOrzFunctions; extern GenerateFunctions generatePkunkFunctions; extern GenerateFunctions generateRainbowWorldFunctions; extern GenerateFunctions generateSaMatraFunctions; -extern GenerateFunctions generateShofixtiFunctions; extern GenerateFunctions generateSlylandroFunctions; extern GenerateFunctions generateSolFunctions; extern GenerateFunctions generateSpathiFunctions; @@ -63,7 +62,7 @@ getGenerateFunctions (STAR_DESC *const star, void **sup ) case SOL_DEFINED: return &generateSolFunctions; case SHOFIXTI_DEFINED: - return &generateShofixtiFunctions; + abort(); case START_COLONY_DEFINED: return &generateColonyFunctions; case SPATHI_DEFINED: diff --git a/sc2/src/uqm/plandata.c b/sc2/src/uqm/plandata.c index 06553524f..6e949481b 100644 --- a/sc2/src/uqm/plandata.c +++ b/sc2/src/uqm/plandata.c @@ -22,6 +22,7 @@ #include "planets/elemdata.h" extern struct GeneratorBase slyDef; +extern struct GeneratorBase shofDef; // This array has to be sorted in Y coordinate order then X coordinate order. // Items out of order can cause crashes (better, actually) or "ghost" @@ -550,7 +551,7 @@ STAR_DESC starmap_array[] = {{1752, 1450}, MAKE_STAR (DWARF_STAR, YELLOW_BODY, -1), SOL_DEFINED, 0, 129}, - {{1848, 1469}, MAKE_STAR (DWARF_STAR, BLUE_BODY, -1), SHOFIXTI_DEFINED, 4, 82}, + {{1848, 1469}, MAKE_STAR (DWARF_STAR, BLUE_BODY, -1), CXX_DEFINED, 4, 82, &shofDef}, {{1751, 1479}, MAKE_STAR (GIANT_STAR, GREEN_BODY, -1), URQUAN_WRECK_DEFINED, 1, 59}, {{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 58f528991..74a3b0689 100644 --- a/sc2/src/uqm/planets/generate/Makeinfo +++ b/sc2/src/uqm/planets/generate/Makeinfo @@ -1,6 +1,6 @@ uqm_CFILES="gendefault.c genand.c genburv.c genchmmr.c gencol.c gendru.c genilw.c genmel.c genmyc.c genorz.c genpet.c genpku.c genrain.c - gensam.c genshof.c gensly.c gensol.c genspa.c gensup.c gensyr.c + gensam.c gensly.c gensol.c genspa.c gensup.c gensyr.c genthrad.c gentrap.c genutw.c genvault.c genvux.c genwreck.c genyeh.c genzfpscout.c genzoq.c" uqm_HFILES="genall.h gendefault.h" diff --git a/sc2/src/uqm/planets/generate/genshof.c b/sc2/src/uqm/planets/generate/genshof-modern.cpp similarity index 71% rename from sc2/src/uqm/planets/generate/genshof.c rename to sc2/src/uqm/planets/generate/genshof-modern.cpp index 0285a4f6e..30e6e3f9f 100644 --- a/sc2/src/uqm/planets/generate/genshof.c +++ b/sc2/src/uqm/planets/generate/genshof-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 @@ -23,34 +24,31 @@ #include "../../state.h" #include "../planets.h" +namespace +{ + using namespace Planets::exports; -static bool GenerateShofixti_initNpcs (SOLARSYS_STATE *solarSys); -static bool GenerateShofixti_reinitNpcs (SOLARSYS_STATE *solarSys); -static bool GenerateShofixti_uninitNpcs (SOLARSYS_STATE *solarSys); -static bool GenerateShofixti_generatePlanets (SOLARSYS_STATE *solarSys); + class GenerateShofixti + : public DefaultGenerator + { + void initNpcs( SolarSystem *const ) override; + void reinitNpcs( SolarSystem *const ) override; + void uninitNpcs( SolarSystem *const ) override; -static void check_old_shofixti (void); + bool generatePlanets( SolarSystem *const ) override; + + static void check_old_shofixti (); + }; +} + +extern "C" +{ + GenerateShofixti shofDef; +} -const GenerateFunctions generateShofixtiFunctions = { - /* .initNpcs = */ GenerateShofixti_initNpcs, - /* .reinitNpcs = */ GenerateShofixti_reinitNpcs, - /* .uninitNpcs = */ GenerateShofixti_uninitNpcs, - /* .generatePlanets = */ GenerateShofixti_generatePlanets, - /* .generateMoons = */ GenerateDefault_generateMoons, - /* .generateName = */ GenerateDefault_generateName, - /* .generateOrbital = */ GenerateDefault_generateOrbital, - /* .generateMinerals = */ GenerateDefault_generateMinerals, - /* .generateEnergy = */ GenerateDefault_generateEnergy, - /* .generateLife = */ GenerateDefault_generateLife, - /* .pickupMinerals = */ GenerateDefault_pickupMinerals, - /* .pickupEnergy = */ GenerateDefault_pickupEnergy, - /* .pickupLife = */ GenerateDefault_pickupLife, -}; - - -static bool -GenerateShofixti_initNpcs (SOLARSYS_STATE *solarSys) +void +GenerateShofixti::initNpcs( SolarSystem *const solarSys ) { if (!GET_GAME_STATE (SHOFIXTI_RECRUITED) && (!GET_GAME_STATE (SHOFIXTI_KIA) @@ -88,24 +86,19 @@ GenerateShofixti_initNpcs (SOLARSYS_STATE *solarSys) // This was originally a fallthrough to REINIT_NPCS. // XXX: is the call to check_old_shofixti() needed? - GenerateDefault_initNpcs (solarSys); + DefaultGenerator::initNpcs (solarSys); check_old_shofixti (); - - return true; } -static bool -GenerateShofixti_reinitNpcs (SOLARSYS_STATE *solarSys) +void +GenerateShofixti::reinitNpcs( SolarSystem *const solarSys ) { - GenerateDefault_reinitNpcs (solarSys); + DefaultGenerator::reinitNpcs (solarSys); check_old_shofixti (); - - (void) solarSys; - return true; } -static bool -GenerateShofixti_uninitNpcs (SOLARSYS_STATE *solarSys) +void +GenerateShofixti::uninitNpcs( SolarSystem *const solarSys ) { if (GLOBAL (BattleGroupRef) && !GET_GAME_STATE (SHOFIXTI_RECRUITED) @@ -122,12 +115,11 @@ GenerateShofixti_uninitNpcs (SOLARSYS_STATE *solarSys) } } - GenerateDefault_uninitNpcs (solarSys); - return true; + DefaultGenerator::uninitNpcs (solarSys); } -static bool -GenerateShofixti_generatePlanets (SOLARSYS_STATE *solarSys) +bool +GenerateShofixti::generatePlanets( SolarSystem *const solarSys ) { #define SHOF_SUN_COORD_X ( (SWORD) 2908 ) #define SHOF_SUN_COORD_Y ( (SWORD) 269 ) @@ -162,8 +154,8 @@ GenerateShofixti_generatePlanets (SOLARSYS_STATE *solarSys) } -static void -check_old_shofixti (void) +void +GenerateShofixti::check_old_shofixti (void) { HIPGROUP hGroup; IP_GROUP *GroupPtr;