Add a SOLARSYS_STATE parameter to initNpcs(), reinitNpcs(), and uninitNpcs().
git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@3348 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
@@ -45,9 +45,9 @@ typedef struct GenerateFunctions GenerateFunctions;
|
||||
|
||||
// Any of these functions returning true means that the action has been
|
||||
// handled, and that the default function should not be called.
|
||||
typedef bool (*InitNpcsFunction)(void);
|
||||
typedef bool (*ReinitNpcsFunction)(void);
|
||||
typedef bool (*UninitNpcsFunction)(void);
|
||||
typedef bool (*InitNpcsFunction)(SOLARSYS_STATE *solarSys);
|
||||
typedef bool (*ReinitNpcsFunction)(SOLARSYS_STATE *solarSys);
|
||||
typedef bool (*UninitNpcsFunction)(SOLARSYS_STATE *solarSys);
|
||||
typedef bool (*GeneratePlanetsFunction)(SOLARSYS_STATE *solarSys);
|
||||
typedef bool (*GenerateMoonsFunction)(SOLARSYS_STATE *solarSys,
|
||||
PLANET_DESC *planet);
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
static bool GenerateColony_initNpcs (void);
|
||||
static bool GenerateColony_initNpcs (SOLARSYS_STATE *solarSys);
|
||||
static bool GenerateColony_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||
static bool GenerateColony_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||
PLANET_DESC *world);
|
||||
@@ -46,7 +46,7 @@ const GenerateFunctions generateColonyFunctions = {
|
||||
|
||||
|
||||
static bool
|
||||
GenerateColony_initNpcs (void)
|
||||
GenerateColony_initNpcs (SOLARSYS_STATE *solarSys)
|
||||
{
|
||||
HIPGROUP hGroup;
|
||||
|
||||
@@ -60,7 +60,7 @@ GenerateColony_initNpcs (void)
|
||||
SET_GAME_STATE_32 (COLONY_GRPOFFS0, GLOBAL (BattleGroupRef));
|
||||
}
|
||||
|
||||
GenerateDefault_initNpcs ();
|
||||
GenerateDefault_initNpcs (solarSys);
|
||||
|
||||
if (GLOBAL (BattleGroupRef)
|
||||
&& (hGroup = GetHeadLink (&GLOBAL (ip_group_q))))
|
||||
|
||||
@@ -25,9 +25,9 @@
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
bool GenerateDefault_initNpcs (void);
|
||||
bool GenerateDefault_reinitNpcs (void);
|
||||
bool GenerateDefault_uninitNpcs (void);
|
||||
bool GenerateDefault_initNpcs (SOLARSYS_STATE *solarSys);
|
||||
bool GenerateDefault_reinitNpcs (SOLARSYS_STATE *solarSys);
|
||||
bool GenerateDefault_uninitNpcs (SOLARSYS_STATE *solarSys);
|
||||
bool GenerateDefault_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||
bool GenerateDefault_generateMoons (SOLARSYS_STATE *solarSys,
|
||||
PLANET_DESC *planet);
|
||||
@@ -61,18 +61,20 @@ const GenerateFunctions generateDefaultFunctions = {
|
||||
|
||||
|
||||
bool
|
||||
GenerateDefault_initNpcs (void)
|
||||
GenerateDefault_initNpcs (SOLARSYS_STATE *solarSys)
|
||||
{
|
||||
if (!GetGroupInfo (GLOBAL (BattleGroupRef), GROUP_INIT_IP))
|
||||
{
|
||||
GLOBAL (BattleGroupRef) = 0;
|
||||
BuildGroups ();
|
||||
}
|
||||
|
||||
(void) solarSys;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
GenerateDefault_reinitNpcs (void)
|
||||
GenerateDefault_reinitNpcs (SOLARSYS_STATE *solarSys)
|
||||
{
|
||||
GetGroupInfo (GROUPS_RANDOM, GROUP_LOAD_IP);
|
||||
// This is not a great place to do the Yehat rebellion check, but
|
||||
@@ -80,15 +82,19 @@ GenerateDefault_reinitNpcs (void)
|
||||
// the Homeworld), I could not find a better place for it.
|
||||
// At least it is better than where it was originally.
|
||||
check_yehat_rebellion ();
|
||||
|
||||
(void) solarSys;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
GenerateDefault_uninitNpcs (void)
|
||||
GenerateDefault_uninitNpcs (SOLARSYS_STATE *solarSys)
|
||||
{
|
||||
PutGroupInfo (GROUPS_RANDOM, GROUP_SAVE_IP);
|
||||
ReinitQueue (&GLOBAL (npc_built_ship_q));
|
||||
ReinitQueue (&GLOBAL (ip_group_q));
|
||||
|
||||
(void) solarSys;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -21,9 +21,9 @@
|
||||
#include "../planets.h"
|
||||
#include "libs/compiler.h"
|
||||
|
||||
bool GenerateDefault_initNpcs (void);
|
||||
bool GenerateDefault_reinitNpcs (void);
|
||||
bool GenerateDefault_uninitNpcs (void);
|
||||
bool GenerateDefault_initNpcs (SOLARSYS_STATE *solarSys);
|
||||
bool GenerateDefault_reinitNpcs (SOLARSYS_STATE *solarSys);
|
||||
bool GenerateDefault_uninitNpcs (SOLARSYS_STATE *solarSys);
|
||||
bool GenerateDefault_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||
bool GenerateDefault_generateMoons (SOLARSYS_STATE *solarSys,
|
||||
PLANET_DESC *planet);
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
#include "libs/log.h"
|
||||
|
||||
|
||||
static bool GenerateMelnorme_initNpcs (void);
|
||||
static bool GenerateMelnorme_initNpcs (SOLARSYS_STATE *solarSys);
|
||||
|
||||
static int SelectMelnormeRefVar (void);
|
||||
static DWORD GetMelnormeRef (void);
|
||||
@@ -46,7 +46,7 @@ const GenerateFunctions generateMelnormeFunctions = {
|
||||
|
||||
|
||||
static bool
|
||||
GenerateMelnorme_initNpcs (void)
|
||||
GenerateMelnorme_initNpcs (SOLARSYS_STATE *solarSys)
|
||||
{
|
||||
GLOBAL (BattleGroupRef) = GetMelnormeRef ();
|
||||
if (GLOBAL (BattleGroupRef) == 0)
|
||||
@@ -57,7 +57,7 @@ GenerateMelnorme_initNpcs (void)
|
||||
SetMelnormeRef (GLOBAL (BattleGroupRef));
|
||||
}
|
||||
|
||||
GenerateDefault_initNpcs ();
|
||||
GenerateDefault_initNpcs (solarSys);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -27,8 +27,8 @@
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
static bool GenerateSaMatra_initNpcs (void);
|
||||
static bool GenerateSaMatra_reinitNpcs (void);
|
||||
static bool GenerateSaMatra_initNpcs (SOLARSYS_STATE *solarSys);
|
||||
static bool GenerateSaMatra_reinitNpcs (SOLARSYS_STATE *solarSys);
|
||||
static bool GenerateSaMatra_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||
static bool GenerateSaMatra_generateMoons (SOLARSYS_STATE *solarSys,
|
||||
PLANET_DESC *planet);
|
||||
@@ -53,7 +53,7 @@ const GenerateFunctions generateSaMatraFunctions = {
|
||||
|
||||
|
||||
static bool
|
||||
GenerateSaMatra_initNpcs (void)
|
||||
GenerateSaMatra_initNpcs (SOLARSYS_STATE *solarSys)
|
||||
{
|
||||
if (!GET_GAME_STATE (URQUAN_MESSED_UP))
|
||||
{
|
||||
@@ -65,11 +65,12 @@ GenerateSaMatra_initNpcs (void)
|
||||
// wipe out the group
|
||||
}
|
||||
|
||||
(void) solarSys;
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool
|
||||
GenerateSaMatra_reinitNpcs (void)
|
||||
GenerateSaMatra_reinitNpcs (SOLARSYS_STATE *solarSys)
|
||||
{
|
||||
BOOLEAN GuardEngaged;
|
||||
HIPGROUP hGroup;
|
||||
@@ -113,7 +114,7 @@ GenerateSaMatra_reinitNpcs (void)
|
||||
COUNT angle;
|
||||
POINT org;
|
||||
|
||||
XFormIPLoc (&pSolarSysState->PlanetDesc[4].image.origin, &org, FALSE);
|
||||
XFormIPLoc (&solarSys->PlanetDesc[4].image.origin, &org, FALSE);
|
||||
angle = ARCTAN (GLOBAL (ip_location.x) - org.x,
|
||||
GLOBAL (ip_location.y) - org.y);
|
||||
GLOBAL (ip_location.x) = org.x + COSINE (angle, 3000);
|
||||
|
||||
@@ -24,9 +24,9 @@
|
||||
#include "../planets.h"
|
||||
|
||||
|
||||
static bool GenerateShofixti_initNpcs (void);
|
||||
static bool GenerateShofixti_reinitNpcs (void);
|
||||
static bool GenerateShofixti_uninitNpcs (void);
|
||||
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);
|
||||
|
||||
static void check_old_shofixti (void);
|
||||
@@ -47,7 +47,7 @@ const GenerateFunctions generateShofixtiFunctions = {
|
||||
|
||||
|
||||
static bool
|
||||
GenerateShofixti_initNpcs (void)
|
||||
GenerateShofixti_initNpcs (SOLARSYS_STATE *solarSys)
|
||||
{
|
||||
if (!GET_GAME_STATE (SHOFIXTI_RECRUITED)
|
||||
&& (!GET_GAME_STATE (SHOFIXTI_KIA)
|
||||
@@ -85,22 +85,24 @@ GenerateShofixti_initNpcs (void)
|
||||
|
||||
// This was originally a fallthrough to REINIT_NPCS.
|
||||
// XXX: is the call to check_old_shofixti() needed?
|
||||
GenerateDefault_initNpcs ();
|
||||
GenerateDefault_initNpcs (solarSys);
|
||||
check_old_shofixti ();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool
|
||||
GenerateShofixti_reinitNpcs (void)
|
||||
GenerateShofixti_reinitNpcs (SOLARSYS_STATE *solarSys)
|
||||
{
|
||||
GenerateDefault_reinitNpcs ();
|
||||
GenerateDefault_reinitNpcs (solarSys);
|
||||
check_old_shofixti ();
|
||||
|
||||
(void) solarSys;
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool
|
||||
GenerateShofixti_uninitNpcs (void)
|
||||
GenerateShofixti_uninitNpcs (SOLARSYS_STATE *solarSys)
|
||||
{
|
||||
if (GLOBAL (BattleGroupRef)
|
||||
&& !GET_GAME_STATE (SHOFIXTI_RECRUITED)
|
||||
@@ -117,7 +119,7 @@ GenerateShofixti_uninitNpcs (void)
|
||||
}
|
||||
}
|
||||
|
||||
GenerateDefault_uninitNpcs ();
|
||||
GenerateDefault_uninitNpcs (solarSys);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -30,8 +30,8 @@
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
static bool GenerateSol_initNpcs (void);
|
||||
static bool GenerateSol_reinitNpcs (void);
|
||||
static bool GenerateSol_initNpcs (SOLARSYS_STATE *solarSys);
|
||||
static bool GenerateSol_reinitNpcs (SOLARSYS_STATE *solarSys);
|
||||
static bool GenerateSol_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||
static bool GenerateSol_generateMoons (SOLARSYS_STATE *solarSys,
|
||||
PLANET_DESC *planet);
|
||||
@@ -63,7 +63,7 @@ const GenerateFunctions generateSolFunctions = {
|
||||
|
||||
|
||||
static bool
|
||||
GenerateSol_initNpcs (void)
|
||||
GenerateSol_initNpcs (SOLARSYS_STATE *solarSys)
|
||||
{
|
||||
GLOBAL (BattleGroupRef) = GET_GAME_STATE_32 (URQUAN_PROBE_GRPOFFS0);
|
||||
if (GLOBAL (BattleGroupRef) == 0)
|
||||
@@ -75,17 +75,17 @@ GenerateSol_initNpcs (void)
|
||||
}
|
||||
|
||||
if (!init_probe ())
|
||||
GenerateDefault_initNpcs ();
|
||||
GenerateDefault_initNpcs (solarSys);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool
|
||||
GenerateSol_reinitNpcs (void)
|
||||
GenerateSol_reinitNpcs (SOLARSYS_STATE *solarSys)
|
||||
{
|
||||
if (GET_GAME_STATE (CHMMR_BOMB_STATE) != 3)
|
||||
{
|
||||
GenerateDefault_reinitNpcs ();
|
||||
GenerateDefault_reinitNpcs (solarSys);
|
||||
check_probe ();
|
||||
}
|
||||
else
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
static bool GenerateUtwig_initNpcs (void);
|
||||
static bool GenerateUtwig_initNpcs (SOLARSYS_STATE *solarSys);
|
||||
static bool GenerateUtwig_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||
static bool GenerateUtwig_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||
PLANET_DESC *world);
|
||||
@@ -52,7 +52,7 @@ const GenerateFunctions generateUtwigFunctions = {
|
||||
|
||||
|
||||
static bool
|
||||
GenerateUtwig_initNpcs (void)
|
||||
GenerateUtwig_initNpcs (SOLARSYS_STATE *solarSys)
|
||||
{
|
||||
if (CurStarDescPtr->Index == BOMB_DEFINED
|
||||
&& !GET_GAME_STATE (UTWIG_BOMB))
|
||||
@@ -62,7 +62,7 @@ GenerateUtwig_initNpcs (void)
|
||||
}
|
||||
else
|
||||
{
|
||||
GenerateDefault_initNpcs ();
|
||||
GenerateDefault_initNpcs (solarSys);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
#include "../../state.h"
|
||||
|
||||
|
||||
static bool GenerateZoqFotPikScout_initNpcs (void);
|
||||
static bool GenerateZoqFotPikScout_reinitNpcs (void);
|
||||
static bool GenerateZoqFotPikScout_initNpcs (SOLARSYS_STATE *solarSys);
|
||||
static bool GenerateZoqFotPikScout_reinitNpcs (SOLARSYS_STATE *solarSys);
|
||||
|
||||
|
||||
const GenerateFunctions generateZoqFotPikScoutFunctions = {
|
||||
@@ -42,7 +42,7 @@ const GenerateFunctions generateZoqFotPikScoutFunctions = {
|
||||
|
||||
|
||||
static bool
|
||||
GenerateZoqFotPikScout_initNpcs (void)
|
||||
GenerateZoqFotPikScout_initNpcs (SOLARSYS_STATE *solarSys)
|
||||
{
|
||||
if (!GET_GAME_STATE (MET_ZOQFOT))
|
||||
{
|
||||
@@ -57,18 +57,18 @@ GenerateZoqFotPikScout_initNpcs (void)
|
||||
}
|
||||
}
|
||||
|
||||
GenerateDefault_initNpcs ();
|
||||
GenerateDefault_initNpcs (solarSys);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool
|
||||
GenerateZoqFotPikScout_reinitNpcs (void)
|
||||
GenerateZoqFotPikScout_reinitNpcs (SOLARSYS_STATE *solarSys)
|
||||
{
|
||||
HIPGROUP hGroup;
|
||||
IP_GROUP *GroupPtr;
|
||||
|
||||
GenerateDefault_reinitNpcs ();
|
||||
GenerateDefault_reinitNpcs (solarSys);
|
||||
|
||||
if (!GLOBAL (BattleGroupRef))
|
||||
return true; // nothing to check
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
#include "libs/mathlib.h"
|
||||
|
||||
|
||||
static bool GenerateZoqFotPik_initNpcs (void);
|
||||
static bool GenerateZoqFotPik_initNpcs (SOLARSYS_STATE *solarSys);
|
||||
static bool GenerateZoqFotPik_generatePlanets (SOLARSYS_STATE *solarSys);
|
||||
static bool GenerateZoqFotPik_generateOrbital (SOLARSYS_STATE *solarSys,
|
||||
PLANET_DESC *world);
|
||||
@@ -49,10 +49,10 @@ const GenerateFunctions generateZoqFotPikFunctions = {
|
||||
|
||||
|
||||
static bool
|
||||
GenerateZoqFotPik_initNpcs (void)
|
||||
GenerateZoqFotPik_initNpcs (SOLARSYS_STATE *solarSys)
|
||||
{
|
||||
if (GET_GAME_STATE (ZOQFOT_DISTRESS) != 1)
|
||||
GenerateDefault_initNpcs ();
|
||||
GenerateDefault_initNpcs (solarSys);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1476,7 +1476,7 @@ InitSolarSys (void)
|
||||
|
||||
if (Reentry)
|
||||
{
|
||||
(*pSolarSysState->genFuncs->reinitNpcs) ();
|
||||
(*pSolarSysState->genFuncs->reinitNpcs) (pSolarSysState);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1485,7 +1485,7 @@ InitSolarSys (void)
|
||||
GLOBAL (BattleGroupRef) = 0;
|
||||
ReinitQueue (&GLOBAL (ip_group_q));
|
||||
ReinitQueue (&GLOBAL (npc_built_ship_q));
|
||||
(*pSolarSysState->genFuncs->initNpcs) ();
|
||||
(*pSolarSysState->genFuncs->initNpcs) (pSolarSysState);
|
||||
}
|
||||
|
||||
if (pSolarSysState->MenuState.Initialized == 0)
|
||||
@@ -1555,7 +1555,7 @@ endInterPlanetary (void)
|
||||
{
|
||||
// These are game state changing ops and so cannot be
|
||||
// called once another game has been loaded!
|
||||
(*pSolarSysState->genFuncs->uninitNpcs) ();
|
||||
(*pSolarSysState->genFuncs->uninitNpcs) (pSolarSysState);
|
||||
SET_GAME_STATE (USED_BROADCASTER, 0);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user