From 01683705d0a86be56cce950913b79cc49d1a64bf Mon Sep 17 00:00:00 2001 From: ADAM David Alan Martin Date: Sun, 28 Apr 2024 17:05:29 -0400 Subject: [PATCH] Started deprecation and removal of the old star index system. --- sc2/src/uqm/gameev.c | 8 ++-- sc2/src/uqm/gendef.c | 5 +-- sc2/src/uqm/grpinfo.c | 42 ++++++++++--------- sc2/src/uqm/hyper.c | 8 ++-- sc2/src/uqm/load.c | 4 +- sc2/src/uqm/load_legacy.c | 4 +- sc2/src/uqm/plandata.c | 4 +- sc2/src/uqm/planets/devices.c | 10 ++--- sc2/src/uqm/planets/generate-base.cpp | 4 +- .../uqm/planets/generate/genspa-modern.cpp | 2 +- .../uqm/planets/generate/gensyr-modern.cpp | 2 +- sc2/src/uqm/planets/planets.h | 2 +- sc2/src/uqm/planets/solarsys.c | 6 +-- sc2/src/uqm/save.c | 2 +- sc2/src/uqm/uqmdebug.c | 4 +- 15 files changed, 56 insertions(+), 51 deletions(-) diff --git a/sc2/src/uqm/gameev.c b/sc2/src/uqm/gameev.c index 11b6bd587..352bafc93 100644 --- a/sc2/src/uqm/gameev.c +++ b/sc2/src/uqm/gameev.c @@ -76,7 +76,7 @@ EventHandler (BYTE selector) if (!GET_GAME_STATE (KOHR_AH_FRENZY) && LOBYTE (GLOBAL (CurrentActivity)) == IN_INTERPLANETARY && CurStarDescPtr - && CurStarDescPtr->Index == SAMATRA_DEFINED) + && !strcmp(CurStarDescPtr->supplement, "Sa-Matra")) AddEvent (RELATIVE_EVENT, 0, 7, 0, KOHR_AH_GENOCIDE_EVENT); else black_urquan_genocide (); @@ -90,7 +90,7 @@ EventHandler (BYTE selector) case ZOQFOT_DISTRESS_EVENT: if (LOBYTE (GLOBAL (CurrentActivity)) == IN_INTERPLANETARY && CurStarDescPtr - && CurStarDescPtr->Index == ZOQFOT_DEFINED) + && !strcmp(CurStarDescPtr->supplement, "Zoq-Fot-Pik")) AddEvent (RELATIVE_EVENT, 0, 7, 0, ZOQFOT_DISTRESS_EVENT); else { @@ -101,7 +101,7 @@ EventHandler (BYTE selector) case ZOQFOT_DEATH_EVENT: if (LOBYTE (GLOBAL (CurrentActivity)) == IN_INTERPLANETARY && CurStarDescPtr - && CurStarDescPtr->Index == ZOQFOT_DEFINED) + && !strcmp(CurStarDescPtr->supplement, "Zoq-Fot-Pik")) AddEvent (RELATIVE_EVENT, 0, 7, 0, ZOQFOT_DEATH_EVENT); else if (GET_GAME_STATE (ZOQFOT_DISTRESS)) { @@ -131,7 +131,7 @@ EventHandler (BYTE selector) case SPATHI_SHIELD_EVENT: if (LOBYTE (GLOBAL (CurrentActivity)) == IN_INTERPLANETARY && CurStarDescPtr - && CurStarDescPtr->Index == SPATHI_DEFINED) + && !strcmp(CurStarDescPtr->supplement, "Yuffo")) AddEvent (RELATIVE_EVENT, 0, 7, 0, SPATHI_SHIELD_EVENT); else { diff --git a/sc2/src/uqm/gendef.c b/sc2/src/uqm/gendef.c index aa223266a..22ef861b4 100644 --- a/sc2/src/uqm/gendef.c +++ b/sc2/src/uqm/gendef.c @@ -21,11 +21,10 @@ #include - const GenerateFunctions * getGenerateFunctions (STAR_DESC *const star) { - switch (star->Index) + switch (star->Index_deprecated) { // All of the generator enums are now disabled. // I can just remove the enum, after a quick play-test. @@ -37,6 +36,7 @@ getGenerateFunctions (STAR_DESC *const star) case THRADD_DEFINED: case TAALO_PROTECTOR_DEFINED: case ORZ_DEFINED: + case MAIDENS_DEFINED: case VUX_BEAST_DEFINED: case VUX_DEFINED: @@ -78,7 +78,6 @@ getGenerateFunctions (STAR_DESC *const star) case URQUAN_WRECK_DEFINED: default: abort(); - } } diff --git a/sc2/src/uqm/grpinfo.c b/sc2/src/uqm/grpinfo.c index 43f1b22b6..f0b82e228 100644 --- a/sc2/src/uqm/grpinfo.c +++ b/sc2/src/uqm/grpinfo.c @@ -216,28 +216,28 @@ BuildGroups (void) COUNT BestPercent = 0; POINT universe; HFLEETINFO hFleet, hNextFleet; - BYTE HomeWorld[] = + const char *HomeWorld[] = { 0, /* ARILOU_SHIP */ 0, /* CHMMR_SHIP */ 0, /* HUMAN_SHIP */ - ORZ_DEFINED, /* ORZ_SHIP */ - PKUNK_DEFINED, /* PKUNK_SHIP */ + "Orz", /* ORZ_SHIP */ + "Pkunk", /* PKUNK_SHIP */ 0, /* SHOFIXTI_SHIP */ - SPATHI_DEFINED, /* SPATHI_SHIP */ - SUPOX_DEFINED, /* SUPOX_SHIP */ - THRADD_DEFINED, /* THRADDASH_SHIP */ - UTWIG_DEFINED, /* UTWIG_SHIP */ - VUX_DEFINED, /* VUX_SHIP */ - YEHAT_DEFINED, /* YEHAT_SHIP */ + "Yuffo", /* SPATHI_SHIP */ + "Supox", /* SUPOX_SHIP */ + "Thraddash", /* THRADDASH_SHIP */ + "Utwig", /* UTWIG_SHIP */ + "VUX", /* VUX_SHIP */ + "Yehat", /* YEHAT_SHIP */ 0, /* MELNORME_SHIP */ - DRUUGE_DEFINED, /* DRUUGE_SHIP */ - ILWRATH_DEFINED, /* ILWRATH_SHIP */ - MYCON_DEFINED, /* MYCON_SHIP */ + "Druuge", /* DRUUGE_SHIP */ + "Ilwrath", /* ILWRATH_SHIP */ + "Mycon", /* MYCON_SHIP */ 0, /* SLYLANDRO_SHIP */ - UMGAH_DEFINED, /* UMGAH_SHIP */ + "Umgah", /* UMGAH_SHIP */ 0, /* URQUAN_SHIP */ - ZOQFOT_DEFINED, /* ZOQFOTPIK_SHIP */ + "Zoq-Fot-Pik", /* ZOQFOTPIK_SHIP */ 0, /* SYREEN_SHIP */ 0, /* BLACK_URQUAN_SHIP */ @@ -277,15 +277,15 @@ BuildGroups (void) { SIZE dx, dy; DWORD d_squared; - BYTE race_enc; - race_enc = HomeWorld[Index]; - if (race_enc && CurStarDescPtr->Index == race_enc) + const char *const race_name = HomeWorld[Index]; + if (race_name && !strcmp(CurStarDescPtr->supplement, race_name) && + (CurStarDescPtr->supArg == 0 || !strcmp(CurStarDescPtr->supArg, "Homeworld"))) { // In general, there are always ships at the Homeworld for // the races specified in HomeWorld[] array. BestIndex = Index; BestPercent = 70; - if (race_enc == SPATHI_DEFINED || race_enc == SUPOX_DEFINED) + if (!strcmp(race_name, "Spathi") || !strcmp(race_name, "Supox")) BestPercent = 2; // Terminate the loop! hNextFleet = 0; @@ -349,14 +349,16 @@ FoundHome: { RACE_ENCOUNTER_MAKEUP }; + const char *race_name = HomeWorld[Index]; which_group = 0; num_groups = ((COUNT)TFB_Random () % (BestPercent >> 1)) + 1; if (num_groups > MAX_BATTLE_GROUPS) num_groups = MAX_BATTLE_GROUPS; else if (num_groups < 5 - && (Index = HomeWorld[BestIndex]) - && CurStarDescPtr->Index == Index) + && (race_name = HomeWorld[BestIndex]) + && (!strcmp(CurStarDescPtr->supplement, race_name) && + (CurStarDescPtr->supArg == 0 || !strcmp(CurStarDescPtr->supArg, "Homeworld")))) num_groups = 5; do { diff --git a/sc2/src/uqm/hyper.c b/sc2/src/uqm/hyper.c index 3b7008573..9ef55a91f 100644 --- a/sc2/src/uqm/hyper.c +++ b/sc2/src/uqm/hyper.c @@ -1424,7 +1424,7 @@ SeedUniverse (void) // A player-created QuasiSpace portal is opening. static POINT portal_pt; - SD[i].Index = ((portalCounter - 1) >> 1) + 18; + SD[i].Index_deprecated = ((portalCounter - 1) >> 1) + 18; if (portalCounter == 1) portal_pt = universe; SD[i].star_pt = portal_pt; @@ -1439,11 +1439,11 @@ SeedUniverse (void) if (arilouSpaceCounter) { // The periodically appearing QuasiSpace portal is open. - SD[i].Index = arilouSpaceCounter >> 1; + SD[i].Index_deprecated = arilouSpaceCounter >> 1; if (arilouSpaceSide <= 1) { // The player is in HyperSpace - SD[i].Index += 18; + SD[i].Index_deprecated += 18; SD[i].star_pt.x = ARILOU_SPACE_X; SD[i].star_pt.y = ARILOU_SPACE_Y; } @@ -1492,7 +1492,7 @@ SeedUniverse (void) LockElement (hHyperSpaceElement, &HyperSpaceElementPtr); HyperSpaceElementPtr->current.image.frame = SetAbsFrameIndex ( hyperstars[1 + (GET_GAME_STATE (ARILOU_SPACE_SIDE) >> 1)], - SD[i].Index); + SD[i].Index_deprecated); HyperSpaceElementPtr->preprocess_func = NULL; HyperSpaceElementPtr->postprocess_func = NULL; HyperSpaceElementPtr->collision_func = arilou_space_collision; diff --git a/sc2/src/uqm/load.c b/sc2/src/uqm/load.c index 2e7dcbd30..598773d3d 100644 --- a/sc2/src/uqm/load.c +++ b/sc2/src/uqm/load.c @@ -445,7 +445,9 @@ LoadStarDesc (STAR_DESC *SDPtr, void *fh) read_16s(fh, &SDPtr->star_pt.x); read_16s(fh, &SDPtr->star_pt.y); read_8 (fh, &SDPtr->Type); - read_8 (fh, &SDPtr->Index); + // TODO: Do I need to load the strings, now that the save gets involved? + // Maybe I just need to overhaul the save system, at this point? + read_8 (fh, &SDPtr->Index_deprecated); read_8 (fh, &SDPtr->Prefix); read_8 (fh, &SDPtr->Postfix); } diff --git a/sc2/src/uqm/load_legacy.c b/sc2/src/uqm/load_legacy.c index 6470a52f1..17c78d38f 100644 --- a/sc2/src/uqm/load_legacy.c +++ b/sc2/src/uqm/load_legacy.c @@ -595,7 +595,9 @@ LoadStarDesc (STAR_DESC *SDPtr, DECODE_REF fh) cread_16s(fh, &SDPtr->star_pt.x); cread_16s(fh, &SDPtr->star_pt.y); cread_8 (fh, &SDPtr->Type); - cread_8 (fh, &SDPtr->Index); + // TODO: Do I need to load the strings, now that the save gets involved? + // Maybe I just need to overhaul the save system, at this point? + cread_8 (fh, &SDPtr->Index_deprecated); cread_8 (fh, &SDPtr->Prefix); cread_8 (fh, &SDPtr->Postfix); } diff --git a/sc2/src/uqm/plandata.c b/sc2/src/uqm/plandata.c index 3cbe92e62..1578f7239 100644 --- a/sc2/src/uqm/plandata.c +++ b/sc2/src/uqm/plandata.c @@ -574,8 +574,8 @@ STAR_DESC starmap_array[] = {{2354, 3291}, MAKE_STAR (SUPER_GIANT_STAR, RED_BODY, -1), 0, 1, 106, "Melnorme", "4"}, {{ 229, 3666}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 1, 76, "Ilwrath"}, - {{2416, 3687}, MAKE_STAR (GIANT_STAR, ORANGE_BODY, -1), 0, 5, 109, "Yuffo"}, - {{4125, 3770}, MAKE_STAR (DWARF_STAR, BLUE_BODY, -1), 0, 0, 114, "Syreen Gaia"}, + {{2416, 3687}, MAKE_STAR (GIANT_STAR, ORANGE_BODY, -1), 0, 5, 109, "Spathi"}, + {{4125, 3770}, MAKE_STAR (DWARF_STAR, BLUE_BODY, -1), 0, 0, 114, "Syreen"}, {{5937, 3937}, MAKE_STAR (DWARF_STAR, ORANGE_BODY, -1), 0, 5, 10, "Syreen Vault"}, {{7416, 5083}, MAKE_STAR (DWARF_STAR, GREEN_BODY, -1), 0, 3, 68, "Rainbow"}, diff --git a/sc2/src/uqm/planets/devices.c b/sc2/src/uqm/planets/devices.c index e781d5b1c..eca79a1f4 100644 --- a/sc2/src/uqm/planets/devices.c +++ b/sc2/src/uqm/planets/devices.c @@ -234,7 +234,7 @@ UseCaster (void) if (playerInPlanetOrbit () && matchWorld (pSolarSysState, pSolarSysState->pOrbitalDesc, 1, MATCH_PLANET) - && CurStarDescPtr->Index == CHMMR_DEFINED + && !strcmp(CurStarDescPtr->supplement, "Chmmr") && !GET_GAME_STATE (CHMMR_UNLEASHED)) { // In orbit around the Chenjesu/Mmrnmhrm home planet. @@ -255,7 +255,7 @@ UseCaster (void) BOOLEAN FoundIlwrath; HIPGROUP hGroup; - FoundIlwrath = (CurStarDescPtr->Index == ILWRATH_DEFINED) + FoundIlwrath = (!strcmp(CurStarDescPtr->supplement, "Ilwrath")) && StartSphereTracking (ILWRATH_SHIP); // In the Ilwrath home system and they are alive? @@ -280,7 +280,7 @@ UseCaster (void) ReinitQueue (&GLOBAL (ip_group_q)); assert (CountLinks (&GLOBAL (npc_built_ship_q)) == 0); - if (CurStarDescPtr->Index == ILWRATH_DEFINED) + if (!strcmp(CurStarDescPtr->supplement, "Ilwrath")) { // Ilwrath home system. SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 4); @@ -329,7 +329,7 @@ InvokeDevice (BYTE which_device) PlayMenuSound (MENU_SOUND_INVOKED); SleepThreadUntil (FadeScreen (FadeAllToWhite, ONE_SECOND * 1) + (ONE_SECOND * 2)); - if (CurStarDescPtr->Index != CHMMR_DEFINED + if (!strcmp(CurStarDescPtr->supplement, "Chmmr") || !matchWorld (pSolarSysState, pSolarSysState->pOrbitalDesc, 1, MATCH_PLANET)) @@ -394,7 +394,7 @@ InvokeDevice (BYTE which_device) assert (CountLinks (&GLOBAL (npc_built_ship_q)) == 0); } - if (CurStarDescPtr->Index == SAMATRA_DEFINED) + if (!strcmp(CurStarDescPtr->supplement, "Sa-Matra")) { SET_GAME_STATE (READY_TO_CONFUSE_URQUAN, 1); } diff --git a/sc2/src/uqm/planets/generate-base.cpp b/sc2/src/uqm/planets/generate-base.cpp index d3bc96d27..bf353666f 100644 --- a/sc2/src/uqm/planets/generate-base.cpp +++ b/sc2/src/uqm/planets/generate-base.cpp @@ -268,7 +268,7 @@ namespace Planets ::detail:: Generate_m std::cerr << " yes" << std::endl; - if( star.Index ) + if( star.Index_deprecated ) { const std::string mesg= "Solar system with modern generator (`"s + star.supplement + "`) has a legacy index!"; @@ -315,7 +315,7 @@ extern "C" // If there's a legacy builder, we must have no supplement. // We just go to the old way of doing things... - if( desc->Index ) + if( desc->Index_deprecated ) { assert( desc->supplement == nullptr ); solarSys->genFuncs= getGenerateFunctions( desc ); diff --git a/sc2/src/uqm/planets/generate/genspa-modern.cpp b/sc2/src/uqm/planets/generate/genspa-modern.cpp index 571799ac5..2f1995ac8 100644 --- a/sc2/src/uqm/planets/generate/genspa-modern.cpp +++ b/sc2/src/uqm/planets/generate/genspa-modern.cpp @@ -54,7 +54,7 @@ namespace auto init= [] { - Generator::add( "Yuffo", std::make_unique< GenerateSpathi >() ); + Generator::add( "Spathi", std::make_unique< GenerateSpathi >() ); return 0xDEADBEEF; }(); diff --git a/sc2/src/uqm/planets/generate/gensyr-modern.cpp b/sc2/src/uqm/planets/generate/gensyr-modern.cpp index 242a46050..179504935 100644 --- a/sc2/src/uqm/planets/generate/gensyr-modern.cpp +++ b/sc2/src/uqm/planets/generate/gensyr-modern.cpp @@ -38,7 +38,7 @@ namespace auto init= [] { - Generator::add( "Syreen Gaia", std::make_unique< GenerateSyreen >() ); + Generator::add( "Syreen", std::make_unique< GenerateSyreen >() ); return 0xDEADBEEF; }(); diff --git a/sc2/src/uqm/planets/planets.h b/sc2/src/uqm/planets/planets.h index f56235ec2..2f754a603 100644 --- a/sc2/src/uqm/planets/planets.h +++ b/sc2/src/uqm/planets/planets.h @@ -140,7 +140,7 @@ struct star_desc { POINT star_pt; BYTE Type; - BYTE Index; + BYTE Index_deprecated; BYTE Prefix; BYTE Postfix; diff --git a/sc2/src/uqm/planets/solarsys.c b/sc2/src/uqm/planets/solarsys.c index f805f004d..d351181a3 100644 --- a/sc2/src/uqm/planets/solarsys.c +++ b/sc2/src/uqm/planets/solarsys.c @@ -1753,7 +1753,7 @@ GetNamedPlanetaryBody (void) assert (pSolarSysState->pOrbitalDesc != NULL); - if (CurStarDescPtr->Index == SOL_DEFINED) + if (!strcmp(CurStarDescPtr->supplement, "Sol")) { // Planets and moons in Sol int planet; int moon; @@ -1821,7 +1821,7 @@ GetNamedPlanetaryBody (void) break; } } - else if (CurStarDescPtr->Index == SPATHI_DEFINED) + else if (!strcmp(CurStarDescPtr->supplement, "Spathi")) { if (matchWorld (pSolarSysState, pSolarSysState->pOrbitalDesc, 0, MATCH_PLANET)) @@ -1831,7 +1831,7 @@ GetNamedPlanetaryBody (void) #endif // NOTYET } } - else if (CurStarDescPtr->Index == SAMATRA_DEFINED) + else if (!strcmp(CurStarDescPtr->supplement, "Sa-Matra")) { if (matchWorld (pSolarSysState, pSolarSysState->pOrbitalDesc, 4, 0)) { // Sa-Matra diff --git a/sc2/src/uqm/save.c b/sc2/src/uqm/save.c index 8e39401b6..6af74bd5a 100644 --- a/sc2/src/uqm/save.c +++ b/sc2/src/uqm/save.c @@ -426,7 +426,7 @@ SaveStarDesc (const STAR_DESC *SDPtr, uio_Stream *fh) write_16 (fh, SDPtr->star_pt.x); write_16 (fh, SDPtr->star_pt.y); write_8 (fh, SDPtr->Type); - write_8 (fh, SDPtr->Index); + write_8 (fh, SDPtr->Index_deprecated); write_8 (fh, SDPtr->Prefix); write_8 (fh, SDPtr->Postfix); } diff --git a/sc2/src/uqm/uqmdebug.c b/sc2/src/uqm/uqmdebug.c index 231982411..9dc0d4e52 100644 --- a/sc2/src/uqm/uqmdebug.c +++ b/sc2/src/uqm/uqmdebug.c @@ -816,12 +816,12 @@ dumpSystem (FILE *out, const STAR_DESC *star, const SOLARSYS_STATE *system) snprintf (buf, sizeof buf, "%s %s", bodyColorString (STAR_COLOR(star->Type)), starTypeString (STAR_TYPE(star->Type))); - fprintf (out, "%-22s (%3d.%1d, %3d.%1d) %-19s %s\n", + fprintf (out, "%-22s (%3d.%1d, %3d.%1d) %-19s %s %s\n", name, star->star_pt.x / 10, star->star_pt.x % 10, star->star_pt.y / 10, star->star_pt.y % 10, buf, - starPresenceString (star->Index)); + star->supplement, star->supArg); (void) system; /* satisfy compiler */ }