From 9ef52bdc9f93fdf9c5c0792a38ea79fe5f79e3f2 Mon Sep 17 00:00:00 2001 From: Meep-Eep Date: Sat, 14 Nov 2009 17:06:12 +0000 Subject: [PATCH] Cleanup. git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@3300 8092fc87-c524-0410-9efc-e669fe64eaf9 --- sc2/src/uqm/planets/solarsys.c | 53 +++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/sc2/src/uqm/planets/solarsys.c b/sc2/src/uqm/planets/solarsys.c index 3f51512e8..bfd373fdc 100644 --- a/sc2/src/uqm/planets/solarsys.c +++ b/sc2/src/uqm/planets/solarsys.c @@ -1571,9 +1571,35 @@ endInterPlanetary (void) } } +// Find the closest planet to a point, in interplanetary. static PLANET_DESC * -closestPlanetInterPlanetary (void) { - +closestPlanetInterPlanetary (const POINT *point) { + BYTE i; + BYTE numPlanets; + DWORD bestDistSquared; + PLANET_DESC *bestPlanet = NULL; + + assert(pSolarSysState != NULL); + + numPlanets = pSolarSysState->SunDesc[0].NumPlanets; + + bestDistSquared = (DWORD) -1; // Maximum value of DWORD. + for (i = 0; i < numPlanets; i++) + { + PLANET_DESC *planet = &pSolarSysState->PlanetDesc[i]; + + SIZE dx = point->x - planet->image.origin.x; + SIZE dy = point->y - planet->image.origin.y; + + DWORD distSquared = (DWORD) ((long) dx * dx + (long) dy * dy); + if (distSquared < bestDistSquared) + { + bestDistSquared = distSquared; + bestPlanet = planet; + } + } + + return bestPlanet; } static void @@ -1597,27 +1623,8 @@ UninitSolarSys (void) if (GLOBAL (ip_planet) == 0) { - BYTE i; - DWORD best_dist; - PLANET_DESC *pCurDesc; - - best_dist = ~0L; - for (i = 0, pCurDesc = pSolarSysState->PlanetDesc; - i < pSolarSysState->SunDesc[0].NumPlanets; - ++i, ++pCurDesc) - { - SIZE dx, dy; - DWORD dist; - - dx = GLOBAL (ShipStamp.origin.x) - pCurDesc->image.origin.x; - dy = GLOBAL (ShipStamp.origin.y) - pCurDesc->image.origin.y; - dist = (DWORD) ((long) dx * dx + (long) dy * dy); - if (dist < best_dist) - { - best_dist = dist; - pSolarSysState->pBaseDesc = pCurDesc; - } - } + pSolarSysState->pBaseDesc = + closestPlanetInterPlanetary (&GLOBAL (ShipStamp.origin)); (*pSolarSysState->GenFunc) (GENERATE_NAME); }