From aff534f6b5c3e173cf7ded4355c94349615a9466 Mon Sep 17 00:00:00 2001 From: ADAM David Alan Martin Date: Sat, 27 Apr 2024 00:15:57 -0400 Subject: [PATCH] Another 5 custom generators made C++ish. --- sc2/src/uqm/gendef.c | 21 +--- sc2/src/uqm/plandata.c | 5 + sc2/src/uqm/planets/generate/Makeinfo | 11 +- .../generate/{genpet.c => genpet-modern.cpp} | 79 +++++++------- .../generate/{genpku.c => genpku-modern.cpp} | 71 ++++++------ .../generate/{genspa.c => genspa-modern.cpp} | 101 +++++++++--------- .../generate/{genyeh.c => genyeh-modern.cpp} | 71 ++++++------ .../generate/{genzoq.c => genzoq-modern.cpp} | 85 +++++++-------- 8 files changed, 216 insertions(+), 228 deletions(-) rename sc2/src/uqm/planets/generate/{genpet.c => genpet-modern.cpp} (76%) rename sc2/src/uqm/planets/generate/{genpku.c => genpku-modern.cpp} (66%) rename sc2/src/uqm/planets/generate/{genspa.c => genspa-modern.cpp} (73%) rename sc2/src/uqm/planets/generate/{genyeh.c => genyeh-modern.cpp} (62%) rename sc2/src/uqm/planets/generate/{genzoq.c => genzoq-modern.cpp} (64%) diff --git a/sc2/src/uqm/gendef.c b/sc2/src/uqm/gendef.c index 22a9e8d3c..b7ce94f76 100644 --- a/sc2/src/uqm/gendef.c +++ b/sc2/src/uqm/gendef.c @@ -28,17 +28,12 @@ extern GenerateFunctions generateIlwrathFunctions; extern GenerateFunctions generateMelnormeFunctions; extern GenerateFunctions generateMyconFunctions; extern GenerateFunctions generateOrzFunctions; -extern GenerateFunctions generatePkunkFunctions; extern GenerateFunctions generateRainbowWorldFunctions; extern GenerateFunctions generateSaMatraFunctions; extern GenerateFunctions generateSolFunctions; -extern GenerateFunctions generateSpathiFunctions; -extern GenerateFunctions generateTalkingPetFunctions; extern GenerateFunctions generateThraddashFunctions; extern GenerateFunctions generateUtwigFunctions; extern GenerateFunctions generateVuxFunctions; -extern GenerateFunctions generateYehatFunctions; -extern GenerateFunctions generateZoqFotPikFunctions; const GenerateFunctions * @@ -47,11 +42,15 @@ getGenerateFunctions (STAR_DESC *const star) switch (star->Index) { // Legacy ones are disabled... + case SPATHI_DEFINED: + case TALKING_PET_DEFINED: + case ZOQFOT_DEFINED: + case YEHAT_DEFINED: + case PKUNK_DEFINED: case CHMMR_DEFINED: case DRUUGE_DEFINED: case MYCON_TRAP_DEFINED: case SUPOX_DEFINED: - case SHIP_VAULT_DEFINED: case ANDROSYNTH_DEFINED: case BURVIXESE_DEFINED: @@ -67,8 +66,6 @@ getGenerateFunctions (STAR_DESC *const star) case SOL_DEFINED: return &generateSolFunctions; - case SPATHI_DEFINED: - return &generateSpathiFunctions; case MELNORME0_DEFINED: case MELNORME1_DEFINED: case MELNORME2_DEFINED: @@ -79,8 +76,6 @@ getGenerateFunctions (STAR_DESC *const star) case MELNORME7_DEFINED: case MELNORME8_DEFINED: return &generateMelnormeFunctions; - case TALKING_PET_DEFINED: - return &generateTalkingPetFunctions; case BOMB_DEFINED: case UTWIG_DEFINED: return &generateUtwigFunctions; @@ -102,12 +97,6 @@ getGenerateFunctions (STAR_DESC *const star) return &generateVuxFunctions; case SAMATRA_DEFINED: return &generateSaMatraFunctions; - case ZOQFOT_DEFINED: - return &generateZoqFotPikFunctions; - case YEHAT_DEFINED: - return &generateYehatFunctions; - case PKUNK_DEFINED: - return &generatePkunkFunctions; case RAINBOW_DEFINED: return &generateRainbowWorldFunctions; case ILWRATH_DEFINED: diff --git a/sc2/src/uqm/plandata.c b/sc2/src/uqm/plandata.c index ac8bc5fb0..1d5658bdc 100644 --- a/sc2/src/uqm/plandata.c +++ b/sc2/src/uqm/plandata.c @@ -538,6 +538,8 @@ STAR_DESC starmap_array[] = #endif //{{2908, 269}, MAKE_STAR (DWARF_STAR, BLUE_BODY, -1), SHOFIXTI_DEFINED, 4, 82}, + {{4923, 294}, MAKE_STAR (DWARF_STAR, YELLOW_BODY, -1), 0, 3, 74, "Yehat"}, + {{ 522, 525}, MAKE_STAR (DWARF_STAR, YELLOW_BODY, -1), 0, 3, 92, "Pkunk"}, {{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"}, @@ -561,9 +563,12 @@ STAR_DESC starmap_array[] = {{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"}, + {{2416, 3687}, MAKE_STAR (GIANT_STAR, ORANGE_BODY, -1), 0, 5, 109, "Spathiwa"}, {{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"}, + {{4000, 5437}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 1, 18, "Zoq-Fot-Pik"}, {{9645, 5791}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 0, 130, "Burvixese"}, + {{1978, 5968}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 2, 54, "Umgah and Talking Pet"}, {{7414, 9124}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 2, 47, "Supox"}, diff --git a/sc2/src/uqm/planets/generate/Makeinfo b/sc2/src/uqm/planets/generate/Makeinfo index 2f9bdcc96..45dba09a8 100644 --- a/sc2/src/uqm/planets/generate/Makeinfo +++ b/sc2/src/uqm/planets/generate/Makeinfo @@ -1,11 +1,12 @@ uqm_CFILES="gendefault.c - genilw.c genmel.c genmyc.c genorz.c genpet.c genpku.c genrain.c - gensam.c gensol.c genspa.c - genthrad.c genutw.c genvux.c - genyeh.c genzoq.c" + genilw.c genmel.c genmyc.c genorz.c genrain.c + gensam.c gensol.c + genthrad.c genutw.c genvux.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 genchmmr-modern.cpp gendru-modern.cpp - gentrap-modern.cpp gensup-modern.cpp" + gentrap-modern.cpp gensup-modern.cpp genspa-modern.cpp + genpet-modern.cpp genzoq-modern.cpp genyeh-modern.cpp + genpku-modern.cpp" diff --git a/sc2/src/uqm/planets/generate/genpet.c b/sc2/src/uqm/planets/generate/genpet-modern.cpp similarity index 76% rename from sc2/src/uqm/planets/generate/genpet.c rename to sc2/src/uqm/planets/generate/genpet-modern.cpp index 4c5515c54..f60fa7335 100644 --- a/sc2/src/uqm/planets/generate/genpet.c +++ b/sc2/src/uqm/planets/generate/genpet-modern.cpp @@ -30,40 +30,39 @@ #include "libs/mathlib.h" -static bool GenerateTalkingPet_generatePlanets (SOLARSYS_STATE *solarSys); -static bool GenerateTalkingPet_generateOrbital (SOLARSYS_STATE *solarSys, - PLANET_DESC *world); -static COUNT GenerateTalkingPet_generateEnergy (const SOLARSYS_STATE *, - const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); -static bool GenerateTalkingPet_pickupEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +namespace +{ + using namespace Planets::exports; -static void ZapToUrquanEncounter (void); + class GenerateTalkingPet + : 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; + + static void ZapToUrquanEncounter(); + }; + + auto init= [] + { + Generator::add( "Umgah and Talking Pet", std::make_unique< GenerateTalkingPet >() ); + + return 0xDEADBEEF; + }(); +} -const GenerateFunctions generateTalkingPetFunctions = { - /* .initNpcs = */ GenerateDefault_initNpcs, - /* .reinitNpcs = */ GenerateDefault_reinitNpcs, - /* .uninitNpcs = */ GenerateDefault_uninitNpcs, - /* .generatePlanets = */ GenerateTalkingPet_generatePlanets, - /* .generateMoons = */ GenerateDefault_generateMoons, - /* .generateName = */ GenerateDefault_generateName, - /* .generateOrbital = */ GenerateTalkingPet_generateOrbital, - /* .generateMinerals = */ GenerateDefault_generateMinerals, - /* .generateEnergy = */ GenerateTalkingPet_generateEnergy, - /* .generateLife = */ GenerateDefault_generateLife, - /* .pickupMinerals = */ GenerateDefault_pickupMinerals, - /* .pickupEnergy = */ GenerateTalkingPet_pickupEnergy, - /* .pickupLife = */ GenerateDefault_pickupLife, -}; - - -static bool -GenerateTalkingPet_generatePlanets (SOLARSYS_STATE *solarSys) +bool +GenerateTalkingPet::generatePlanets( SolarSystem *const solarSys ) { COUNT angle; - GenerateDefault_generatePlanets (solarSys); + DefaultGenerator::generatePlanets (solarSys); solarSys->PlanetDesc[0].data_index = TELLURIC_WORLD; solarSys->PlanetDesc[0].radius = EARTH_RADIUS * 204L / 100; @@ -77,8 +76,8 @@ GenerateTalkingPet_generatePlanets (SOLARSYS_STATE *solarSys) return true; } -static bool -GenerateTalkingPet_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) +bool +GenerateTalkingPet::generateOrbital( SolarSystem *const solarSys, PLANET_DESC *const world ) { if (matchWorld (solarSys, world, 0, MATCH_PLANET) && (GET_GAME_STATE (UMGAH_ZOMBIE_BLOBBIES) @@ -118,7 +117,7 @@ GenerateTalkingPet_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world BOOLEAN UmgahSurvivors; UmgahSurvivors = GetHeadLink ( - &GLOBAL (npc_built_ship_q)) != 0; + &GLOBAL (npc_built_ship_q)) != 0 ? TRUE : FALSE; GLOBAL (CurrentActivity) &= ~START_INTERPLANETARY; if (GET_GAME_STATE (PLAYER_HYPNOTIZED)) @@ -152,7 +151,7 @@ GenerateTalkingPet_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world CaptureStringTable (LoadStringTable (RUINS_STRTAB)); } - GenerateDefault_generateOrbital (solarSys, world); + DefaultGenerator::generateOrbital (solarSys, world); if (matchWorld (solarSys, world, 0, MATCH_PLANET)) solarSys->SysInfo.PlanetInfo.Weather = 0; @@ -160,9 +159,9 @@ GenerateTalkingPet_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world return true; } -static COUNT -GenerateTalkingPet_generateEnergy (const SOLARSYS_STATE *solarSys, - const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) +COUNT +GenerateTalkingPet::generateEnergy( const SolarSystem *const solarSys, + const PLANET_DESC *const world, const COUNT whichNode, NODE_INFO *const info ) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { @@ -172,9 +171,9 @@ GenerateTalkingPet_generateEnergy (const SOLARSYS_STATE *solarSys, return 0; } -static bool -GenerateTalkingPet_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +bool +GenerateTalkingPet::pickupEnergy( SolarSystem *const solarSys, PLANET_DESC *const world, + const COUNT whichNode ) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { @@ -187,8 +186,8 @@ GenerateTalkingPet_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, return false; } -static void -ZapToUrquanEncounter (void) +void +GenerateTalkingPet::ZapToUrquanEncounter() { HENCOUNTER hEncounter; diff --git a/sc2/src/uqm/planets/generate/genpku.c b/sc2/src/uqm/planets/generate/genpku-modern.cpp similarity index 66% rename from sc2/src/uqm/planets/generate/genpku.c rename to sc2/src/uqm/planets/generate/genpku-modern.cpp index 64b996525..ef9096436 100644 --- a/sc2/src/uqm/planets/generate/genpku.c +++ b/sc2/src/uqm/planets/generate/genpku-modern.cpp @@ -28,38 +28,37 @@ #include "libs/mathlib.h" -static bool GeneratePkunk_generatePlanets (SOLARSYS_STATE *solarSys); -static bool GeneratePkunk_generateOrbital (SOLARSYS_STATE *solarSys, - PLANET_DESC *world); -static COUNT GeneratePkunk_generateEnergy (const SOLARSYS_STATE *, - const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); -static bool GeneratePkunk_pickupEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +namespace +{ + using namespace Planets::exports; + + class GeneratePkunk + : 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( "Pkunk", std::make_unique< GeneratePkunk >() ); + + return 0xDEADBEEF; + }(); +} -const GenerateFunctions generatePkunkFunctions = { - /* .initNpcs = */ GenerateDefault_initNpcs, - /* .reinitNpcs = */ GenerateDefault_reinitNpcs, - /* .uninitNpcs = */ GenerateDefault_uninitNpcs, - /* .generatePlanets = */ GeneratePkunk_generatePlanets, - /* .generateMoons = */ GenerateDefault_generateMoons, - /* .generateName = */ GenerateDefault_generateName, - /* .generateOrbital = */ GeneratePkunk_generateOrbital, - /* .generateMinerals = */ GenerateDefault_generateMinerals, - /* .generateEnergy = */ GeneratePkunk_generateEnergy, - /* .generateLife = */ GenerateDefault_generateLife, - /* .pickupMinerals = */ GenerateDefault_pickupMinerals, - /* .pickupEnergy = */ GeneratePkunk_pickupEnergy, - /* .pickupLife = */ GenerateDefault_pickupLife, -}; - - -static bool -GeneratePkunk_generatePlanets (SOLARSYS_STATE *solarSys) +bool +GeneratePkunk::generatePlanets( SolarSystem *const solarSys ) { COUNT angle; - GenerateDefault_generatePlanets (solarSys); + DefaultGenerator::generatePlanets (solarSys); solarSys->PlanetDesc[0].data_index = WATER_WORLD; solarSys->PlanetDesc[0].NumPlanets = 1; @@ -74,8 +73,8 @@ GeneratePkunk_generatePlanets (SOLARSYS_STATE *solarSys) return true; } -static bool -GeneratePkunk_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) +bool +GeneratePkunk::generateOrbital( SolarSystem *const solarSys, PLANET_DESC *const world ) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { @@ -117,13 +116,13 @@ GeneratePkunk_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) } } - GenerateDefault_generateOrbital (solarSys, world); + DefaultGenerator::generateOrbital (solarSys, world); return true; } -static bool -GeneratePkunk_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +bool +GeneratePkunk::pickupEnergy( SolarSystem *const solarSys, PLANET_DESC *const world, + const COUNT whichNode ) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { @@ -145,9 +144,9 @@ GeneratePkunk_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, return false; } -static COUNT -GeneratePkunk_generateEnergy (const SOLARSYS_STATE *solarSys, - const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) +COUNT +GeneratePkunk::generateEnergy( const SolarSystem *const solarSys, + const PLANET_DESC *const world, const COUNT whichNode, NODE_INFO *const info) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { diff --git a/sc2/src/uqm/planets/generate/genspa.c b/sc2/src/uqm/planets/generate/genspa-modern.cpp similarity index 73% rename from sc2/src/uqm/planets/generate/genspa.c rename to sc2/src/uqm/planets/generate/genspa-modern.cpp index 26bc412f0..a8e2b96c1 100644 --- a/sc2/src/uqm/planets/generate/genspa.c +++ b/sc2/src/uqm/planets/generate/genspa-modern.cpp @@ -30,40 +30,39 @@ #include "libs/mathlib.h" -static bool GenerateSpathi_generatePlanets (SOLARSYS_STATE *solarSys); -static bool GenerateSpathi_generateMoons (SOLARSYS_STATE *solarSys, - PLANET_DESC *planet); -static bool GenerateSpathi_generateOrbital (SOLARSYS_STATE *solarSys, - PLANET_DESC *world); -static COUNT GenerateSpathi_generateEnergy (const SOLARSYS_STATE *, - const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); -static COUNT GenerateSpathi_generateLife (const SOLARSYS_STATE *, - const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); -static bool GenerateSpathi_pickupEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); -static bool GenerateSpathi_pickupLife (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +namespace +{ + using namespace Planets::exports; + + class GenerateSpathi + : public DefaultGenerator + { + bool generatePlanets( SolarSystem *solarSys ) override; + bool generateMoons( SolarSystem *solarSys, + PLANET_DESC *planet ) override; + bool generateOrbital( SolarSystem *solarSys, + PLANET_DESC * world) override; + COUNT generateEnergy( const SolarSystem *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO * ) override; + COUNT generateLife( const SolarSystem *, + const PLANET_DESC *world, COUNT whichNode, NODE_INFO * ) override; + bool pickupEnergy( SolarSystem *solarSys, + PLANET_DESC *world, COUNT whichNode ) override; + bool pickupLife( SOLARSYS_STATE *solarSys, + PLANET_DESC *world, COUNT whichNode ) override; + }; + + auto init= [] + { + Generator::add( "Spathiwa", std::make_unique< GenerateSpathi >() ); + + return 0xDEADBEEF; + }(); +} -const GenerateFunctions generateSpathiFunctions = { - /* .initNpcs = */ GenerateDefault_initNpcs, - /* .reinitNpcs = */ GenerateDefault_reinitNpcs, - /* .uninitNpcs = */ GenerateDefault_uninitNpcs, - /* .generatePlanets = */ GenerateSpathi_generatePlanets, - /* .generateMoons = */ GenerateSpathi_generateMoons, - /* .generateName = */ GenerateDefault_generateName, - /* .generateOrbital = */ GenerateSpathi_generateOrbital, - /* .generateMinerals = */ GenerateDefault_generateMinerals, - /* .generateEnergy = */ GenerateSpathi_generateEnergy, - /* .generateLife = */ GenerateSpathi_generateLife, - /* .pickupMinerals = */ GenerateDefault_pickupMinerals, - /* .pickupEnergy = */ GenerateSpathi_pickupEnergy, - /* .pickupLife = */ GenerateSpathi_pickupLife, -}; - - -static bool -GenerateSpathi_generatePlanets (SOLARSYS_STATE *solarSys) +bool +GenerateSpathi::generatePlanets( SolarSystem *const solarSys ) { PLANET_DESC *pMinPlanet; COUNT angle; @@ -85,12 +84,12 @@ GenerateSpathi_generatePlanets (SOLARSYS_STATE *solarSys) return true; } -static bool -GenerateSpathi_generateMoons (SOLARSYS_STATE *solarSys, PLANET_DESC *planet) +bool +GenerateSpathi::generateMoons( SolarSystem *const solarSys, PLANET_DESC *const planet ) { COUNT angle; - GenerateDefault_generateMoons (solarSys, planet); + DefaultGenerator::generateMoons (solarSys, planet); if (matchWorld (solarSys, planet, 0, MATCH_PLANET)) { @@ -112,8 +111,8 @@ GenerateSpathi_generateMoons (SOLARSYS_STATE *solarSys, PLANET_DESC *planet) return true; } -static bool -GenerateSpathi_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) +bool +GenerateSpathi::generateOrbital( SolarSystem *const solarSys, PLANET_DESC *const world ) { DWORD rand_val; @@ -201,14 +200,14 @@ GenerateSpathi_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) return true; } - GenerateDefault_generateOrbital (solarSys, world); + DefaultGenerator::generateOrbital (solarSys, world); return true; } -static COUNT -GenerateSpathi_generateEnergy (const SOLARSYS_STATE *solarSys, - const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) +COUNT +GenerateSpathi::generateEnergy( const SolarSystem *const solarSys, + const PLANET_DESC *const world, const COUNT whichNode, NODE_INFO *const info ) { if (matchWorld (solarSys, world, 0, 0)) { @@ -225,9 +224,9 @@ GenerateSpathi_generateEnergy (const SOLARSYS_STATE *solarSys, return 0; } -static bool -GenerateSpathi_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +bool +GenerateSpathi::pickupEnergy( SolarSystem *const solarSys, PLANET_DESC *const world, + const COUNT whichNode ) { if (matchWorld (solarSys, world, 0, 0)) { @@ -246,9 +245,9 @@ GenerateSpathi_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, return false; } -static COUNT -GenerateSpathi_generateLife (const SOLARSYS_STATE *solarSys, - const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) +COUNT +GenerateSpathi::generateLife( const SolarSystem *const solarSys, + const PLANET_DESC *const world, const COUNT whichNode, NODE_INFO *const info ) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { @@ -260,9 +259,9 @@ GenerateSpathi_generateLife (const SOLARSYS_STATE *solarSys, return 0; } -static bool -GenerateSpathi_pickupLife (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +bool +GenerateSpathi::pickupLife( SolarSystem *const solarSys, PLANET_DESC *const world, + const COUNT whichNode ) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { @@ -279,5 +278,5 @@ GenerateSpathi_pickupLife (SOLARSYS_STATE *solarSys, PLANET_DESC *world, return true; // picked up } - return GenerateDefault_pickupLife (solarSys, world, whichNode); + return DefaultGenerator::pickupLife (solarSys, world, whichNode); } diff --git a/sc2/src/uqm/planets/generate/genyeh.c b/sc2/src/uqm/planets/generate/genyeh-modern.cpp similarity index 62% rename from sc2/src/uqm/planets/generate/genyeh.c rename to sc2/src/uqm/planets/generate/genyeh-modern.cpp index caae54332..9c632eb3a 100644 --- a/sc2/src/uqm/planets/generate/genyeh.c +++ b/sc2/src/uqm/planets/generate/genyeh-modern.cpp @@ -27,38 +27,37 @@ #include "libs/mathlib.h" -static bool GenerateYehat_generatePlanets (SOLARSYS_STATE *solarSys); -static bool GenerateYehat_generateOrbital (SOLARSYS_STATE *solarSys, - PLANET_DESC *world); -static COUNT GenerateYehat_generateEnergy (const SOLARSYS_STATE *, - const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); -static bool GenerateYehat_pickupEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); +namespace +{ + using namespace Planets::exports; + + class GenerateYehat + : 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( "Yehat", std::make_unique< GenerateYehat >() ); + + return 0xDEADBEEF; + }(); +} -const GenerateFunctions generateYehatFunctions = { - /* .initNpcs = */ GenerateDefault_initNpcs, - /* .reinitNpcs = */ GenerateDefault_reinitNpcs, - /* .uninitNpcs = */ GenerateDefault_uninitNpcs, - /* .generatePlanets = */ GenerateYehat_generatePlanets, - /* .generateMoons = */ GenerateDefault_generateMoons, - /* .generateName = */ GenerateDefault_generateName, - /* .generateOrbital = */ GenerateYehat_generateOrbital, - /* .generateMinerals = */ GenerateDefault_generateMinerals, - /* .generateEnergy = */ GenerateYehat_generateEnergy, - /* .generateLife = */ GenerateDefault_generateLife, - /* .pickupMinerals = */ GenerateDefault_pickupMinerals, - /* .pickupEnergy = */ GenerateYehat_pickupEnergy, - /* .pickupLife = */ GenerateDefault_pickupLife, -}; - - -static bool -GenerateYehat_generatePlanets (SOLARSYS_STATE *solarSys) +bool +GenerateYehat::generatePlanets( SolarSystem *const solarSys ) { COUNT angle; - GenerateDefault_generatePlanets (solarSys); + DefaultGenerator::generatePlanets (solarSys); solarSys->PlanetDesc[0].data_index = WATER_WORLD; solarSys->PlanetDesc[0].NumPlanets = 1; solarSys->PlanetDesc[0].radius = EARTH_RADIUS * 106L / 100; @@ -72,8 +71,8 @@ GenerateYehat_generatePlanets (SOLARSYS_STATE *solarSys) return true; } -static bool -GenerateYehat_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) +bool +GenerateYehat::generateOrbital( SolarSystem *const solarSys, PLANET_DESC *const world ) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { @@ -108,13 +107,13 @@ GenerateYehat_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) CaptureStringTable (LoadStringTable (RUINS_STRTAB)); } - GenerateDefault_generateOrbital (solarSys, world); + DefaultGenerator::generateOrbital( solarSys, world ); return true; } -static COUNT -GenerateYehat_generateEnergy (const SOLARSYS_STATE *solarSys, - const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) +COUNT +GenerateYehat::generateEnergy( const SolarSystem *const solarSys, + const PLANET_DESC *const world, const COUNT whichNode, NODE_INFO *const info) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { @@ -124,9 +123,9 @@ GenerateYehat_generateEnergy (const SOLARSYS_STATE *solarSys, return 0; } -static bool -GenerateYehat_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +bool +GenerateYehat::pickupEnergy( SolarSystem *const solarSys, PLANET_DESC *const world, + const COUNT whichNode ) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { diff --git a/sc2/src/uqm/planets/generate/genzoq.c b/sc2/src/uqm/planets/generate/genzoq-modern.cpp similarity index 64% rename from sc2/src/uqm/planets/generate/genzoq.c rename to sc2/src/uqm/planets/generate/genzoq-modern.cpp index 9b30f89fd..c230e980c 100644 --- a/sc2/src/uqm/planets/generate/genzoq.c +++ b/sc2/src/uqm/planets/generate/genzoq-modern.cpp @@ -26,48 +26,45 @@ #include "libs/mathlib.h" -static bool GenerateZoqFotPik_initNpcs (SOLARSYS_STATE *solarSys); -static bool GenerateZoqFotPik_generatePlanets (SOLARSYS_STATE *solarSys); -static bool GenerateZoqFotPik_generateOrbital (SOLARSYS_STATE *solarSys, - PLANET_DESC *world); -static COUNT GenerateZoqFotPik_generateEnergy (const SOLARSYS_STATE *, - const PLANET_DESC *world, COUNT whichNode, NODE_INFO *); -static bool GenerateZoqFotPik_pickupEnergy (SOLARSYS_STATE *solarSys, - PLANET_DESC *world, COUNT whichNode); - - -const GenerateFunctions generateZoqFotPikFunctions = { - /* .initNpcs = */ GenerateZoqFotPik_initNpcs, - /* .reinitNpcs = */ GenerateDefault_reinitNpcs, - /* .uninitNpcs = */ GenerateDefault_uninitNpcs, - /* .generatePlanets = */ GenerateZoqFotPik_generatePlanets, - /* .generateMoons = */ GenerateDefault_generateMoons, - /* .generateName = */ GenerateDefault_generateName, - /* .generateOrbital = */ GenerateZoqFotPik_generateOrbital, - /* .generateMinerals = */ GenerateDefault_generateMinerals, - /* .generateEnergy = */ GenerateZoqFotPik_generateEnergy, - /* .generateLife = */ GenerateDefault_generateLife, - /* .pickupMinerals = */ GenerateDefault_pickupMinerals, - /* .pickupEnergy = */ GenerateZoqFotPik_pickupEnergy, - /* .pickupLife = */ GenerateDefault_pickupLife, -}; - - -static bool -GenerateZoqFotPik_initNpcs (SOLARSYS_STATE *solarSys) +namespace { - if (GET_GAME_STATE (ZOQFOT_DISTRESS) != 1) - GenerateDefault_initNpcs (solarSys); + using namespace Planets::exports; - return true; + class GenerateZoqFotPik + : public DefaultGenerator + { + void initNpcs( SolarSystem *solarSys ) override; + 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( "Zoq-Fot-Pik", std::make_unique< GenerateZoqFotPik >() ); + + return 0xDEADBEEF; + }(); } -static bool -GenerateZoqFotPik_generatePlanets (SOLARSYS_STATE *solarSys) + +void +GenerateZoqFotPik::initNpcs( SolarSystem *const solarSys ) +{ + if (GET_GAME_STATE (ZOQFOT_DISTRESS) != 1) + DefaultGenerator::initNpcs (solarSys); +} + +bool +GenerateZoqFotPik::generatePlanets( SolarSystem *const solarSys ) { COUNT angle; - GenerateDefault_generatePlanets (solarSys); + DefaultGenerator::generatePlanets (solarSys); solarSys->PlanetDesc[0].data_index = REDUX_WORLD; solarSys->PlanetDesc[0].NumPlanets = 1; @@ -82,8 +79,8 @@ GenerateZoqFotPik_generatePlanets (SOLARSYS_STATE *solarSys) return true; } -static bool -GenerateZoqFotPik_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) +bool +GenerateZoqFotPik::generateOrbital( SolarSystem *const solarSys, PLANET_DESC *const world ) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { @@ -138,13 +135,13 @@ GenerateZoqFotPik_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) CaptureStringTable (LoadStringTable (RUINS_STRTAB)); } - GenerateDefault_generateOrbital (solarSys, world); + DefaultGenerator::generateOrbital (solarSys, world); return true; } -static COUNT -GenerateZoqFotPik_generateEnergy (const SOLARSYS_STATE *solarSys, - const PLANET_DESC *world, COUNT whichNode, NODE_INFO *info) +COUNT +GenerateZoqFotPik::generateEnergy( const SolarSystem *const solarSys, + const PLANET_DESC *const world, const COUNT whichNode, NODE_INFO *const info ) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) { @@ -154,9 +151,9 @@ GenerateZoqFotPik_generateEnergy (const SOLARSYS_STATE *solarSys, return 0; } -static bool -GenerateZoqFotPik_pickupEnergy (SOLARSYS_STATE *solarSys, PLANET_DESC *world, - COUNT whichNode) +bool +GenerateZoqFotPik::pickupEnergy( SolarSystem *const solarSys, PLANET_DESC *const world, + const COUNT whichNode) { if (matchWorld (solarSys, world, 0, MATCH_PLANET)) {