From bce2dc0933ebdff4c06f6b2f68ba2ef79f43d0a5 Mon Sep 17 00:00:00 2001 From: avolkov Date: Thu, 10 Dec 2009 20:52:20 +0000 Subject: [PATCH] Remove the last dependencies on pSolarSysState->MenuState.Initialized; replaced with SOLARSYS_STATE.InOrbit git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@3418 8092fc87-c524-0410-9efc-e669fe64eaf9 --- sc2/src/uqm/planets/generate/genchmmr.c | 4 -- sc2/src/uqm/planets/generate/gendru.c | 2 - sc2/src/uqm/planets/generate/genilw.c | 2 - sc2/src/uqm/planets/generate/genmyc.c | 2 - sc2/src/uqm/planets/generate/genorz.c | 2 - sc2/src/uqm/planets/generate/genpet.c | 2 - sc2/src/uqm/planets/generate/genpku.c | 2 - sc2/src/uqm/planets/generate/gensam.c | 2 - sc2/src/uqm/planets/generate/gensly.c | 2 - sc2/src/uqm/planets/generate/genspa.c | 2 - sc2/src/uqm/planets/generate/gensup.c | 2 - sc2/src/uqm/planets/generate/gensyr.c | 2 - sc2/src/uqm/planets/generate/genthrad.c | 2 - sc2/src/uqm/planets/generate/genutw.c | 4 -- sc2/src/uqm/planets/generate/genvux.c | 2 - sc2/src/uqm/planets/generate/genyeh.c | 2 - sc2/src/uqm/planets/generate/genzoq.c | 4 -- sc2/src/uqm/planets/planets.c | 6 +- sc2/src/uqm/planets/planets.h | 3 + sc2/src/uqm/planets/solarsys.c | 88 ++++++++++++------------- 20 files changed, 45 insertions(+), 92 deletions(-) diff --git a/sc2/src/uqm/planets/generate/genchmmr.c b/sc2/src/uqm/planets/generate/genchmmr.c index 1cee3e582..71f962bdb 100644 --- a/sc2/src/uqm/planets/generate/genchmmr.c +++ b/sc2/src/uqm/planets/generate/genchmmr.c @@ -92,10 +92,8 @@ GenerateChmmr_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) { if (GET_GAME_STATE (CHMMR_UNLEASHED)) { - solarSys->MenuState.Initialized += 2; SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 7); InitCommunication (CHMMR_CONVERSATION); - solarSys->MenuState.Initialized -= 2; if (GET_GAME_STATE (CHMMR_BOMB_STATE) == 2) { @@ -115,11 +113,9 @@ GenerateChmmr_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) CloneShipFragment (ILWRATH_SHIP, &GLOBAL (npc_built_ship_q), INFINITE_FLEET); - solarSys->MenuState.Initialized += 2; SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 6); GLOBAL (CurrentActivity) |= START_INTERPLANETARY; InitCommunication (ILWRATH_CONVERSATION); - solarSys->MenuState.Initialized -= 2; if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD))) { diff --git a/sc2/src/uqm/planets/generate/gendru.c b/sc2/src/uqm/planets/generate/gendru.c index 9013f14a9..3b6c089ba 100644 --- a/sc2/src/uqm/planets/generate/gendru.c +++ b/sc2/src/uqm/planets/generate/gendru.c @@ -93,11 +93,9 @@ GenerateDruuge_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) CloneShipFragment (DRUUGE_SHIP, &GLOBAL (npc_built_ship_q), INFINITE_FLEET); - solarSys->MenuState.Initialized += 2; GLOBAL (CurrentActivity) |= START_INTERPLANETARY; SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 7); InitCommunication (DRUUGE_CONVERSATION); - solarSys->MenuState.Initialized -= 2; if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD))) { GLOBAL (CurrentActivity) &= ~START_INTERPLANETARY; diff --git a/sc2/src/uqm/planets/generate/genilw.c b/sc2/src/uqm/planets/generate/genilw.c index 6f723f021..3581af4e2 100644 --- a/sc2/src/uqm/planets/generate/genilw.c +++ b/sc2/src/uqm/planets/generate/genilw.c @@ -83,11 +83,9 @@ GenerateIlwrath_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) CloneShipFragment (ILWRATH_SHIP, &GLOBAL (npc_built_ship_q), INFINITE_FLEET); - solarSys->MenuState.Initialized += 2; GLOBAL (CurrentActivity) |= START_INTERPLANETARY; SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 7); InitCommunication (ILWRATH_CONVERSATION); - solarSys->MenuState.Initialized -= 2; if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD))) { diff --git a/sc2/src/uqm/planets/generate/genmyc.c b/sc2/src/uqm/planets/generate/genmyc.c index a8e5ccd1a..a1099f3f2 100644 --- a/sc2/src/uqm/planets/generate/genmyc.c +++ b/sc2/src/uqm/planets/generate/genmyc.c @@ -106,7 +106,6 @@ GenerateMycon_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) &GLOBAL (npc_built_ship_q), 0); } - solarSys->MenuState.Initialized += 2; GLOBAL (CurrentActivity) |= START_INTERPLANETARY; if (CurStarDescPtr->Index == MYCON_DEFINED) { @@ -117,7 +116,6 @@ GenerateMycon_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 6); } InitCommunication (MYCON_CONVERSATION); - solarSys->MenuState.Initialized -= 2; if (GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD)) return true; diff --git a/sc2/src/uqm/planets/generate/genorz.c b/sc2/src/uqm/planets/generate/genorz.c index 1b5fb2642..fb82fa3f1 100644 --- a/sc2/src/uqm/planets/generate/genorz.c +++ b/sc2/src/uqm/planets/generate/genorz.c @@ -108,10 +108,8 @@ GenerateOrz_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) } SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 6); } - solarSys->MenuState.Initialized += 2; GLOBAL (CurrentActivity) |= START_INTERPLANETARY; InitCommunication (ORZ_CONVERSATION); - solarSys->MenuState.Initialized -= 2; if (GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD)) return true; diff --git a/sc2/src/uqm/planets/generate/genpet.c b/sc2/src/uqm/planets/generate/genpet.c index 32ea1c673..4ba57fc3f 100644 --- a/sc2/src/uqm/planets/generate/genpet.c +++ b/sc2/src/uqm/planets/generate/genpet.c @@ -86,7 +86,6 @@ GenerateTalkingPet_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world if (ActivateStarShip (UMGAH_SHIP, SPHERE_TRACKING)) { - solarSys->MenuState.Initialized += 2; GLOBAL (CurrentActivity) |= START_INTERPLANETARY; SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 7); if (!GET_GAME_STATE (UMGAH_ZOMBIE_BLOBBIES)) @@ -106,7 +105,6 @@ GenerateTalkingPet_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world } InitCommunication (TALKING_PET_CONVERSATION); } - solarSys->MenuState.Initialized -= 2; } if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD))) diff --git a/sc2/src/uqm/planets/generate/genpku.c b/sc2/src/uqm/planets/generate/genpku.c index a823f7d47..699a785c7 100644 --- a/sc2/src/uqm/planets/generate/genpku.c +++ b/sc2/src/uqm/planets/generate/genpku.c @@ -84,11 +84,9 @@ GeneratePkunk_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) CloneShipFragment (PKUNK_SHIP, &GLOBAL (npc_built_ship_q), INFINITE_FLEET); - solarSys->MenuState.Initialized += 2; GLOBAL (CurrentActivity) |= START_INTERPLANETARY; SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 7); InitCommunication (PKUNK_CONVERSATION); - solarSys->MenuState.Initialized -= 2; if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD))) { diff --git a/sc2/src/uqm/planets/generate/gensam.c b/sc2/src/uqm/planets/generate/gensam.c index 1d4828f0e..2da768511 100644 --- a/sc2/src/uqm/planets/generate/gensam.c +++ b/sc2/src/uqm/planets/generate/gensam.c @@ -188,7 +188,6 @@ GenerateSaMatra_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) } } - solarSys->MenuState.Initialized += 2; GLOBAL (CurrentActivity) |= START_INTERPLANETARY; SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 7); SET_GAME_STATE (URQUAN_PROTECTING_SAMATRA, 1); @@ -219,7 +218,6 @@ GenerateSaMatra_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) InitCommunication (YEHAT_REBEL_CONVERSATION); } } - solarSys->MenuState.Initialized -= 2; return true; } diff --git a/sc2/src/uqm/planets/generate/gensly.c b/sc2/src/uqm/planets/generate/gensly.c index a7a16b3ed..2e69b2473 100644 --- a/sc2/src/uqm/planets/generate/gensly.c +++ b/sc2/src/uqm/planets/generate/gensly.c @@ -57,9 +57,7 @@ GenerateSlylandro_generateOrbital (SOLARSYS_STATE *solarSys, { if (matchWorld (solarSys, world, 3, MATCH_PLANET)) { - solarSys->MenuState.Initialized += 2; InitCommunication (SLYLANDRO_HOME_CONVERSATION); - solarSys->MenuState.Initialized -= 2; return true; } diff --git a/sc2/src/uqm/planets/generate/genspa.c b/sc2/src/uqm/planets/generate/genspa.c index 9c87bcd95..82bd50dff 100644 --- a/sc2/src/uqm/planets/generate/genspa.c +++ b/sc2/src/uqm/planets/generate/genspa.c @@ -123,11 +123,9 @@ GenerateSpathi_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) CloneShipFragment (SPATHI_SHIP, &GLOBAL (npc_built_ship_q), INFINITE_FLEET); - solarSys->MenuState.Initialized += 2; SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 7); GLOBAL (CurrentActivity) |= START_INTERPLANETARY; InitCommunication (SPATHI_CONVERSATION); - solarSys->MenuState.Initialized -= 2; if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD))) { diff --git a/sc2/src/uqm/planets/generate/gensup.c b/sc2/src/uqm/planets/generate/gensup.c index 810a17eb3..32d7f9dbc 100644 --- a/sc2/src/uqm/planets/generate/gensup.c +++ b/sc2/src/uqm/planets/generate/gensup.c @@ -84,11 +84,9 @@ GenerateSupox_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) CloneShipFragment (SUPOX_SHIP, &GLOBAL (npc_built_ship_q), INFINITE_FLEET); - solarSys->MenuState.Initialized += 2; GLOBAL (CurrentActivity) |= START_INTERPLANETARY; SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 7); InitCommunication (SUPOX_CONVERSATION); - solarSys->MenuState.Initialized -= 2; if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD))) { diff --git a/sc2/src/uqm/planets/generate/gensyr.c b/sc2/src/uqm/planets/generate/gensyr.c index d33526642..4a775e5ee 100644 --- a/sc2/src/uqm/planets/generate/gensyr.c +++ b/sc2/src/uqm/planets/generate/gensyr.c @@ -88,9 +88,7 @@ GenerateSyreen_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) if (matchWorld (solarSys, world, 0, 0)) { /* Starbase */ - solarSys->MenuState.Initialized += 2; InitCommunication (SYREEN_CONVERSATION); - solarSys->MenuState.Initialized -= 2; return true; } diff --git a/sc2/src/uqm/planets/generate/genthrad.c b/sc2/src/uqm/planets/generate/genthrad.c index 57c68aa70..5b366b944 100644 --- a/sc2/src/uqm/planets/generate/genthrad.c +++ b/sc2/src/uqm/planets/generate/genthrad.c @@ -102,7 +102,6 @@ GenerateThraddash_generateOrbital (SOLARSYS_STATE *solarSys, CloneShipFragment (THRADDASH_SHIP, &GLOBAL (npc_built_ship_q), INFINITE_FLEET); - solarSys->MenuState.Initialized += 2; GLOBAL (CurrentActivity) |= START_INTERPLANETARY; if (CurStarDescPtr->Index == THRADD_DEFINED) { @@ -113,7 +112,6 @@ GenerateThraddash_generateOrbital (SOLARSYS_STATE *solarSys, SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 6); } InitCommunication (THRADD_CONVERSATION); - solarSys->MenuState.Initialized -= 2; if (GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD)) return true; diff --git a/sc2/src/uqm/planets/generate/genutw.c b/sc2/src/uqm/planets/generate/genutw.c index 7f2e76078..c056e984c 100644 --- a/sc2/src/uqm/planets/generate/genutw.c +++ b/sc2/src/uqm/planets/generate/genutw.c @@ -112,7 +112,6 @@ GenerateUtwig_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) CloneShipFragment (UTWIG_SHIP, &GLOBAL (npc_built_ship_q), INFINITE_FLEET); - solarSys->MenuState.Initialized += 2; GLOBAL (CurrentActivity) |= START_INTERPLANETARY; if (CurStarDescPtr->Index == UTWIG_DEFINED) { @@ -123,7 +122,6 @@ GenerateUtwig_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 6); } InitCommunication (UTWIG_CONVERSATION); - solarSys->MenuState.Initialized -= 2; if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD))) { @@ -149,11 +147,9 @@ GenerateUtwig_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) CloneShipFragment (DRUUGE_SHIP, &GLOBAL (npc_built_ship_q), 0); } - solarSys->MenuState.Initialized += 2; GLOBAL (CurrentActivity) |= START_INTERPLANETARY; SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 6); InitCommunication (DRUUGE_CONVERSATION); - solarSys->MenuState.Initialized -= 2; if (GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD)) return true; diff --git a/sc2/src/uqm/planets/generate/genvux.c b/sc2/src/uqm/planets/generate/genvux.c index e1dbf4f5a..c82f639cf 100644 --- a/sc2/src/uqm/planets/generate/genvux.c +++ b/sc2/src/uqm/planets/generate/genvux.c @@ -135,10 +135,8 @@ GenerateVux_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 6); } - solarSys->MenuState.Initialized += 2; GLOBAL (CurrentActivity) |= START_INTERPLANETARY; InitCommunication (VUX_CONVERSATION); - solarSys->MenuState.Initialized -= 2; if (GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD)) return true; diff --git a/sc2/src/uqm/planets/generate/genyeh.c b/sc2/src/uqm/planets/generate/genyeh.c index 3337e5b83..c60168217 100644 --- a/sc2/src/uqm/planets/generate/genyeh.c +++ b/sc2/src/uqm/planets/generate/genyeh.c @@ -82,11 +82,9 @@ GenerateYehat_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) CloneShipFragment (YEHAT_SHIP, &GLOBAL (npc_built_ship_q), INFINITE_FLEET); - solarSys->MenuState.Initialized += 2; GLOBAL (CurrentActivity) |= START_INTERPLANETARY; SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 7); InitCommunication (YEHAT_CONVERSATION); - solarSys->MenuState.Initialized -= 2; if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD))) { diff --git a/sc2/src/uqm/planets/generate/genzoq.c b/sc2/src/uqm/planets/generate/genzoq.c index cbc48ca2f..f46320d7f 100644 --- a/sc2/src/uqm/planets/generate/genzoq.c +++ b/sc2/src/uqm/planets/generate/genzoq.c @@ -93,11 +93,9 @@ GenerateZoqFotPik_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) CloneShipFragment (BLACK_URQUAN_SHIP, &GLOBAL (npc_built_ship_q), 0); - solarSys->MenuState.Initialized += 2; GLOBAL (CurrentActivity) |= START_INTERPLANETARY; SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 7); InitCommunication (BLACKURQ_CONVERSATION); - solarSys->MenuState.Initialized -= 2; if (GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD)) return true; @@ -114,11 +112,9 @@ GenerateZoqFotPik_generateOrbital (SOLARSYS_STATE *solarSys, PLANET_DESC *world) CloneShipFragment (ZOQFOTPIK_SHIP, &GLOBAL (npc_built_ship_q), INFINITE_FLEET); - solarSys->MenuState.Initialized += 2; GLOBAL (CurrentActivity) |= START_INTERPLANETARY; SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 1 << 7); InitCommunication (ZOQFOTPIK_CONVERSATION); - solarSys->MenuState.Initialized -= 2; if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD))) { diff --git a/sc2/src/uqm/planets/planets.c b/sc2/src/uqm/planets/planets.c index 9192239ab..7163abda7 100644 --- a/sc2/src/uqm/planets/planets.c +++ b/sc2/src/uqm/planets/planets.c @@ -207,7 +207,7 @@ LoadPlanet (FRAME SurfDefFrame) return; #endif - assert (pSolarSysState->MenuState.Initialized != 3); + assert (pSolarSysState->InOrbit && !pSolarSysState->TopoFrame); if (WaitMode) { @@ -228,7 +228,6 @@ LoadPlanet (FRAME SurfDefFrame) if (WaitMode) { - assert (pSolarSysState->MenuState.Initialized == 2); ZoomInPlanetSphere (); LockMutex (GraphicsLock); DrawOrbitalDisplay (DRAW_ORBITAL_UPDATE); @@ -240,9 +239,6 @@ LoadPlanet (FRAME SurfDefFrame) DrawOrbitalDisplay (DRAW_ORBITAL_FULL); UnlockMutex (GraphicsLock); } - - // XXX: Mark as in-orbit. This should go away eventually - pSolarSysState->MenuState.Initialized = 3; } void diff --git a/sc2/src/uqm/planets/planets.h b/sc2/src/uqm/planets/planets.h index e1ee275ee..0677e1719 100644 --- a/sc2/src/uqm/planets/planets.h +++ b/sc2/src/uqm/planets/planets.h @@ -228,6 +228,9 @@ struct solarsys_state Color Tint_rgb; FRAME TopoFrame; PLANET_ORBIT Orbit; + BOOLEAN InOrbit; + // Set to TRUE when player hits a world in an inner system + // Homeworld encounters count as 'in orbit' }; extern SOLARSYS_STATE *pSolarSysState; diff --git a/sc2/src/uqm/planets/solarsys.c b/sc2/src/uqm/planets/solarsys.c index ae41615d1..89b21b525 100644 --- a/sc2/src/uqm/planets/solarsys.c +++ b/sc2/src/uqm/planets/solarsys.c @@ -186,11 +186,7 @@ playerInSolarSystem (void) bool playerInPlanetOrbit (void) { - assert (!pSolarSysState || pSolarSysState->MenuState.Initialized < 4); - - return playerInSolarSystem () && - pSolarSysState->MenuState.Initialized == 3; - // XXX: This test will change eventually + return playerInSolarSystem () && pSolarSysState->InOrbit; } bool @@ -348,11 +344,12 @@ seedRandomForSolarSys (void) CurStarDescPtr->star_pt.y)); } -static BOOLEAN +// Returns an orbital PLANET_DESC when player is in orbit +static PLANET_DESC * LoadSolarSys (void) { COUNT i; - BOOLEAN orbital = FALSE; + PLANET_DESC *orbital = NULL; PLANET_DESC *pCurDesc; DWORD old_seed; #define NUM_TEMP_RANGES 5 @@ -433,18 +430,16 @@ LoadSolarSys (void) if (GLOBAL (in_orbit)) { // Only when loading a game into orbital - orbital = TRUE; i = GLOBAL (in_orbit) - 1; if (i == 0) { // Orbiting the planet itself - pSolarSysState->pOrbitalDesc = - pSolarSysState->pBaseDesc->pPrevDesc; + orbital = pSolarSysState->pBaseDesc->pPrevDesc; } else { // Orbiting a moon // -1 because planet itself is 1, and moons have to be 1-based i -= 1; - pSolarSysState->pOrbitalDesc = &pSolarSysState->MoonDesc[i]; + orbital = &pSolarSysState->MoonDesc[i]; } GLOBAL (ip_location) = pSolarSysState->SunDesc[0].location; GLOBAL (in_orbit) = 0; @@ -465,6 +460,25 @@ LoadSolarSys (void) return orbital; } +static void +saveNonOrbitalLocation (void) +{ + // XXX: Solar system reentry test depends on ShipFacing != 0 + GLOBAL (ShipFacing) = GetFrameIndex (GLOBAL (ShipStamp.frame)) + 1; + GLOBAL (in_orbit) = 0; + if (!playerInInnerSystem ()) + { + GLOBAL (ip_planet) = 0; + } + else + { + // ip_planet is 1-based because code tests for ip_planet!=0 + GLOBAL (ip_planet) = 1 + planetIndex (pSolarSysState, + pSolarSysState->pOrbitalDesc); + GLOBAL (ip_location) = pSolarSysState->SunDesc[0].location; + } +} + static void FreeSolarSys (void) { @@ -479,7 +493,7 @@ FreeSolarSys (void) pSolarSysState->MenuState.flash_task = 0; if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD))) - SaveSolarSysLocation (); + saveNonOrbitalLocation (); } DestroyDrawable (ReleaseDrawable (SolarSysFrame)); @@ -932,10 +946,7 @@ enterOrbital (PLANET_DESC *planet) { ZeroVelocityComponents (&GLOBAL (velocity)); pSolarSysState->pOrbitalDesc = planet; - - // XXX: This is nasty: signal enter orbital - assert (pSolarSysState->MenuState.Initialized == 1); - pSolarSysState->MenuState.Initialized = 2; + pSolarSysState->InOrbit = TRUE; } static BOOLEAN @@ -1286,7 +1297,8 @@ EnterPlanetOrbit (void) CHECK_ABORT | CHECK_LOAD)) && GLOBAL_SIS (CrewEnlisted) != (COUNT)~0) { // Reload the system and return to the inner view - LoadSolarSys (); + PLANET_DESC *orbital = LoadSolarSys (); + assert (!orbital); CheckZoomLevel (); ValidateOrbits (); ValidateInnerOrbits (); @@ -1304,7 +1316,7 @@ InitSolarSys (void) { BOOLEAN InnerSystem; BOOLEAN Reentry; - BOOLEAN orbital; + PLANET_DESC *orbital; LockMutex (GraphicsLock); @@ -1359,8 +1371,7 @@ InitSolarSys (void) if (orbital) { - // XXX: signal enter orbital - pSolarSysState->MenuState.Initialized = 2; + enterOrbital (orbital); } else { // Draw the borders, the system (inner or outer) and fade/transition @@ -1374,7 +1385,6 @@ InitSolarSys (void) DrawSISMessage (NULL); ResetSolarSys (); - pSolarSysState->MenuState.Initialized = 1; if (LastActivity == (CHECK_LOAD | CHECK_RESTART)) { // Starting a new game, NOT from load! @@ -1737,6 +1747,7 @@ ExploreSolarSys (void) SolarSysState.genFuncs = getGenerateFunctions (CurStarDescPtr->Index); InitSolarSys (); + SolarSysState.MenuState.Initialized = TRUE; SetMenuSounds (MENU_SOUND_NONE, MENU_SOUND_NONE); DoInput (&SolarSysState.MenuState, FALSE); UninitSolarSys (); @@ -1746,7 +1757,7 @@ ExploreSolarSys (void) UNICODE * GetNamedPlanetaryBody (void) { - if (!CurStarDescPtr || !playerInInnerSystem ()) + if (!CurStarDescPtr || !playerInSolarSystem () || !playerInInnerSystem ()) return NULL; // Not inside an inner system, so no name assert (pSolarSysState->pOrbitalDesc != NULL); @@ -1837,7 +1848,7 @@ GetPlanetOrMoonName (UNICODE *buf, COUNT bufsize) // Either not named or we already have a name utf8StringCopy (buf, bufsize, GLOBAL_SIS (PlanetName)); - if (!playerInInnerSystem () || + if (!playerInSolarSystem () || !playerInInnerSystem () || worldIsPlanet (pSolarSysState, pSolarSysState->pOrbitalDesc)) { // Outer or inner system or orbiting a planet return; @@ -1861,25 +1872,12 @@ SaveSolarSysLocation (void) assert (playerInSolarSystem ()); // This is a two-stage saving procedure - // Stage 1: called when saving from inner/outer view, and when - // entering orbital + // Stage 1: called when saving from inner/outer view // Stage 2: called when saving from orbital if (!playerInPlanetOrbit ()) { - // XXX: Solar system reentry test depends on ShipFacing != 0 - GLOBAL (ShipFacing) = GetFrameIndex (GLOBAL (ShipStamp.frame)) + 1; - GLOBAL (in_orbit) = 0; - if (!playerInInnerSystem ()) - { - GLOBAL (ip_planet) = 0; - } - else - { - GLOBAL (ip_planet) = 1 + planetIndex (pSolarSysState, - pSolarSysState->pOrbitalDesc); - GLOBAL (ip_location) = pSolarSysState->SunDesc[0].location; - } + saveNonOrbitalLocation (); } else { // In orbit around a planet. @@ -1895,6 +1893,7 @@ SaveSolarSysLocation (void) // GLOBAL (ip_planet) is already set assert (GLOBAL (ip_planet) != 0); + // has to be at least 1 because code tests for in_orbit!=0 moon = 1; /* the planet itself */ if (worldIsMoon (pSolarSysState, pSolarSysState->pOrbitalDesc)) { @@ -2013,18 +2012,13 @@ DoIpFlight (MENU_STATE *pMS) static TimeCount NextTime; BOOLEAN cancel = PulsedInputState.menu[KEY_MENU_CANCEL]; - if (!pMS->Initialized) - { - // XXX: This should be unreachable now - // XXX: pMS refers to pSolarSysState->MenuState - pMS->Initialized = 1; - } - else if (pMS->Initialized == 2) + (void) pMS; // suppress unused warning + + if (pSolarSysState->InOrbit) { // CheckShipLocation() or InitSolarSys() sent us to orbital EnterPlanetOrbit (); SetMenuSounds (MENU_SOUND_NONE, MENU_SOUND_NONE); - // XXX: pMS refers to pSolarSysState->MenuState - pMS->Initialized = 1; + pSolarSysState->InOrbit = FALSE; } else if (cancel || LastActivity == CHECK_LOAD) {