Removed references to pMenuState from comm (required parameter carried forward); some header file cleanups; comments and minor cleanup of Starbase
git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@3318 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
+69
-61
@@ -50,10 +50,11 @@
|
|||||||
|
|
||||||
|
|
||||||
LOCDATA CommData;
|
LOCDATA CommData;
|
||||||
int cur_comm;
|
|
||||||
UNICODE shared_phrase_buf[2048];
|
UNICODE shared_phrase_buf[2048];
|
||||||
|
|
||||||
static BOOLEAN TalkingFinished;
|
static BOOLEAN TalkingFinished;
|
||||||
|
static CommIntroMode curIntroMode = CIM_DEFAULT;
|
||||||
|
static TimeCount fadeTime;
|
||||||
|
|
||||||
typedef struct response_entry
|
typedef struct response_entry
|
||||||
{
|
{
|
||||||
@@ -686,6 +687,47 @@ FlushTalkSegue (void)
|
|||||||
TalkingFinished = TRUE;
|
TalkingFinished = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
CommIntroTransition (void)
|
||||||
|
{
|
||||||
|
if (curIntroMode == CIM_CROSSFADE_SCREEN)
|
||||||
|
{
|
||||||
|
ScreenTransition (3, NULL);
|
||||||
|
UnbatchGraphics ();
|
||||||
|
}
|
||||||
|
else if (curIntroMode == CIM_CROSSFADE_SPACE)
|
||||||
|
{
|
||||||
|
RECT r;
|
||||||
|
r.corner.x = SIS_ORG_X;
|
||||||
|
r.corner.y = SIS_ORG_Y;
|
||||||
|
r.extent.width = SIS_SCREEN_WIDTH;
|
||||||
|
r.extent.height = SIS_SCREEN_HEIGHT;
|
||||||
|
ScreenTransition (3, &r);
|
||||||
|
UnbatchGraphics ();
|
||||||
|
}
|
||||||
|
else if (curIntroMode == CIM_CROSSFADE_WINDOW)
|
||||||
|
{
|
||||||
|
ScreenTransition (3, &CommWndRect);
|
||||||
|
UnbatchGraphics ();
|
||||||
|
}
|
||||||
|
else if (curIntroMode == CIM_FADE_IN_SCREEN)
|
||||||
|
{
|
||||||
|
BYTE clut_buf[] = {FadeAllToColor};
|
||||||
|
UnbatchGraphics ();
|
||||||
|
XFormColorMap ((COLORMAPPTR)clut_buf, fadeTime);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ // Uknown transition
|
||||||
|
// Have to unbatch anyway or no more graphics, ever
|
||||||
|
UnbatchGraphics ();
|
||||||
|
assert (0 && "Unknown comm intro transition");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset the mode for next time. Everything that needs a
|
||||||
|
// different one will let us know.
|
||||||
|
curIntroMode = CIM_DEFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
AlienTalkSegue (COUNT wait_track)
|
AlienTalkSegue (COUNT wait_track)
|
||||||
{
|
{
|
||||||
@@ -703,43 +745,7 @@ AlienTalkSegue (COUNT wait_track)
|
|||||||
DrawAlienFrame (NULL, 0, TRUE);
|
DrawAlienFrame (NULL, 0, TRUE);
|
||||||
UpdateSpeechGraphics (TRUE);
|
UpdateSpeechGraphics (TRUE);
|
||||||
|
|
||||||
if (LOBYTE (GLOBAL (CurrentActivity)) == WON_LAST_BATTLE
|
CommIntroTransition ();
|
||||||
|| (!GET_GAME_STATE (PLAYER_HYPNOTIZED)
|
|
||||||
&& !GET_GAME_STATE (CHMMR_EMERGING)
|
|
||||||
&& GET_GAME_STATE (CHMMR_BOMB_STATE) != 2
|
|
||||||
&& (pMenuState == 0 || !GET_GAME_STATE (MOONBASE_ON_SHIP)
|
|
||||||
|| GET_GAME_STATE (PROBE_ILWRATH_ENCOUNTER))))
|
|
||||||
{
|
|
||||||
RECT r;
|
|
||||||
|
|
||||||
if (pMenuState == 0 &&
|
|
||||||
LOBYTE (GLOBAL (CurrentActivity)) != WON_LAST_BATTLE)
|
|
||||||
{
|
|
||||||
r.corner.x = SIS_ORG_X;
|
|
||||||
r.corner.y = SIS_ORG_Y;
|
|
||||||
r.extent.width = SIS_SCREEN_WIDTH;
|
|
||||||
r.extent.height = SIS_SCREEN_HEIGHT;
|
|
||||||
ScreenTransition (3, &r);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ScreenTransition (3, &CommWndRect);
|
|
||||||
}
|
|
||||||
UnbatchGraphics ();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
BYTE clut_buf[] = {FadeAllToColor};
|
|
||||||
|
|
||||||
UnbatchGraphics ();
|
|
||||||
if (GET_GAME_STATE (MOONBASE_ON_SHIP)
|
|
||||||
|| GET_GAME_STATE (CHMMR_BOMB_STATE) == 2)
|
|
||||||
XFormColorMap ((COLORMAPPTR)clut_buf, ONE_SECOND * 2);
|
|
||||||
else if (GET_GAME_STATE (CHMMR_EMERGING))
|
|
||||||
XFormColorMap ((COLORMAPPTR)clut_buf, ONE_SECOND * 2);
|
|
||||||
else
|
|
||||||
XFormColorMap ((COLORMAPPTR)clut_buf, ONE_SECOND * 5);
|
|
||||||
}
|
|
||||||
pCurInputState->Initialized = TRUE;
|
pCurInputState->Initialized = TRUE;
|
||||||
|
|
||||||
PlayMusic (CommData.AlienSong, TRUE, 1);
|
PlayMusic (CommData.AlienSong, TRUE, 1);
|
||||||
@@ -1238,28 +1244,21 @@ HailAlien (void)
|
|||||||
SetContextClipRect (&r);
|
SetContextClipRect (&r);
|
||||||
CommWndRect.corner = r.corner;
|
CommWndRect.corner = r.corner;
|
||||||
|
|
||||||
if (pMenuState == 0)
|
DrawSISFrame ();
|
||||||
{
|
// TODO: find a better way to do this, perhaps set the titles
|
||||||
RepairSISBorder ();
|
// forward from callers.
|
||||||
UnlockMutex (GraphicsLock);
|
if (GET_GAME_STATE (GLOBAL_FLAGS_AND_DATA) == (BYTE)~0
|
||||||
DrawMenuStateStrings ((BYTE)~0, 1);
|
&& GET_GAME_STATE (STARBASE_AVAILABLE))
|
||||||
LockMutex (GraphicsLock);
|
{ // Talking to allied Starbase
|
||||||
|
DrawSISMessage (GAME_STRING (STARBASE_STRING_BASE + 1));
|
||||||
|
// "Starbase Commander"
|
||||||
|
DrawSISTitle (GAME_STRING (STARBASE_STRING_BASE + 0));
|
||||||
|
// "Starbase"
|
||||||
}
|
}
|
||||||
else /* in starbase */
|
else
|
||||||
{
|
{ // Default titles: star name + planet name
|
||||||
DrawSISFrame ();
|
DrawSISMessage (NULL);
|
||||||
if (GET_GAME_STATE (STARBASE_AVAILABLE))
|
DrawSISTitle (GLOBAL_SIS (PlanetName));
|
||||||
{
|
|
||||||
DrawSISMessage (GAME_STRING (STARBASE_STRING_BASE + 1));
|
|
||||||
// "Starbase Commander"
|
|
||||||
DrawSISTitle (GAME_STRING (STARBASE_STRING_BASE + 0));
|
|
||||||
// "Starbase"
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
DrawSISMessage (NULL);
|
|
||||||
DrawSISTitle (GLOBAL_SIS (PlanetName));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1297,6 +1296,13 @@ HailAlien (void)
|
|||||||
pCurInputState = 0;
|
pCurInputState = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
SetCommIntroMode (CommIntroMode newMode, TimeCount howLong)
|
||||||
|
{
|
||||||
|
curIntroMode = newMode;
|
||||||
|
fadeTime = howLong;
|
||||||
|
}
|
||||||
|
|
||||||
COUNT
|
COUNT
|
||||||
InitCommunication (CONVERSATION which_comm)
|
InitCommunication (CONVERSATION which_comm)
|
||||||
{
|
{
|
||||||
@@ -1400,9 +1406,7 @@ InitCommunication (CONVERSATION which_comm)
|
|||||||
|
|
||||||
if (status == HAIL)
|
if (status == HAIL)
|
||||||
{
|
{
|
||||||
cur_comm = which_comm;
|
|
||||||
HailAlien ();
|
HailAlien ();
|
||||||
cur_comm = 0;
|
|
||||||
}
|
}
|
||||||
else if (LocDataPtr)
|
else if (LocDataPtr)
|
||||||
{ // only when comm initied successfully
|
{ // only when comm initied successfully
|
||||||
@@ -1417,10 +1421,14 @@ InitCommunication (CONVERSATION which_comm)
|
|||||||
status = 0;
|
status = 0;
|
||||||
if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD)))
|
if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD)))
|
||||||
{
|
{
|
||||||
|
// The Sa-Matra battle is skipped when Cyborg is enabled.
|
||||||
|
// Most likely because the Cyborg is too dumb to know what
|
||||||
|
// to do in this battle.
|
||||||
if (LOBYTE (GLOBAL (CurrentActivity)) == IN_LAST_BATTLE
|
if (LOBYTE (GLOBAL (CurrentActivity)) == IN_LAST_BATTLE
|
||||||
&& (GLOBAL (glob_flags) & CYBORG_ENABLED))
|
&& (GLOBAL (glob_flags) & CYBORG_ENABLED))
|
||||||
ReinitQueue (&GLOBAL (npc_built_ship_q));
|
ReinitQueue (&GLOBAL (npc_built_ship_q));
|
||||||
|
|
||||||
|
// Clear the location flags
|
||||||
SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 0);
|
SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 0);
|
||||||
status = (GET_GAME_STATE (BATTLE_SEGUE)
|
status = (GET_GAME_STATE (BATTLE_SEGUE)
|
||||||
&& GetHeadLink (&GLOBAL (npc_built_ship_q)));
|
&& GetHeadLink (&GLOBAL (npc_built_ship_q)));
|
||||||
|
|||||||
@@ -20,6 +20,8 @@
|
|||||||
#include "globdata.h"
|
#include "globdata.h"
|
||||||
#include "libs/compiler.h"
|
#include "libs/compiler.h"
|
||||||
#include "libs/gfxlib.h"
|
#include "libs/gfxlib.h"
|
||||||
|
#include "commglue.h"
|
||||||
|
// for CONVERSATION
|
||||||
|
|
||||||
#ifdef COMM_INTERNAL
|
#ifdef COMM_INTERNAL
|
||||||
|
|
||||||
@@ -98,8 +100,16 @@ signaledStopTalkingAnim (void)
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define TEXT_X_OFFS 1
|
||||||
|
#define TEXT_Y_OFFS 1
|
||||||
|
#define SIS_TEXT_WIDTH (SIS_SCREEN_WIDTH - (TEXT_X_OFFS << 1))
|
||||||
|
|
||||||
extern void init_communication (void);
|
extern void init_communication (void);
|
||||||
extern void uninit_communication (void);
|
extern void uninit_communication (void);
|
||||||
|
|
||||||
|
extern COUNT InitCommunication (CONVERSATION which_comm);
|
||||||
|
extern void RaceCommunication (void);
|
||||||
|
|
||||||
extern void AlienTalkSegue (COUNT wait_track);
|
extern void AlienTalkSegue (COUNT wait_track);
|
||||||
BOOLEAN getLineWithinWidth(TEXT *pText, const unsigned char **startNext,
|
BOOLEAN getLineWithinWidth(TEXT *pText, const unsigned char **startNext,
|
||||||
SIZE maxWidth, COUNT maxChars);
|
SIZE maxWidth, COUNT maxChars);
|
||||||
@@ -108,6 +118,17 @@ extern BOOLEAN HaveSubtitlesChanged (void);
|
|||||||
|
|
||||||
extern RECT CommWndRect; /* comm window rect */
|
extern RECT CommWndRect; /* comm window rect */
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
CIM_CROSSFADE_SPACE,
|
||||||
|
CIM_CROSSFADE_WINDOW,
|
||||||
|
CIM_CROSSFADE_SCREEN,
|
||||||
|
CIM_FADE_IN_SCREEN,
|
||||||
|
|
||||||
|
CIM_DEFAULT = CIM_CROSSFADE_SPACE,
|
||||||
|
} CommIntroMode;
|
||||||
|
extern void SetCommIntroMode (CommIntroMode, TimeCount howLong);
|
||||||
|
|
||||||
extern void EnableTalkingAnim (BOOLEAN enable);
|
extern void EnableTalkingAnim (BOOLEAN enable);
|
||||||
|
|
||||||
#endif /* _COMM_H */
|
#endif /* _COMM_H */
|
||||||
|
|||||||
@@ -577,6 +577,7 @@ Intro (void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
SetCommIntroMode (CIM_FADE_IN_SCREEN, ONE_SECOND * 2);
|
||||||
NPCPhrase (WE_ARE_FREE);
|
NPCPhrase (WE_ARE_FREE);
|
||||||
|
|
||||||
if (NumVisits)
|
if (NumVisits)
|
||||||
|
|||||||
@@ -20,7 +20,6 @@
|
|||||||
#include "uqm/colors.h"
|
#include "uqm/colors.h"
|
||||||
#include "uqm/comm.h"
|
#include "uqm/comm.h"
|
||||||
#include "uqm/commglue.h"
|
#include "uqm/commglue.h"
|
||||||
#include "uqm/encount.h"
|
|
||||||
#include "libs/reslib.h"
|
#include "libs/reslib.h"
|
||||||
|
|
||||||
#endif /* _COMMALL_H */
|
#endif /* _COMMALL_H */
|
||||||
|
|||||||
@@ -26,6 +26,9 @@
|
|||||||
#include "libs/inplib.h"
|
#include "libs/inplib.h"
|
||||||
#include "libs/mathlib.h"
|
#include "libs/mathlib.h"
|
||||||
|
|
||||||
|
// XXX: temporary, for SOL_X/SOL_Y
|
||||||
|
#include "uqm/races.h"
|
||||||
|
|
||||||
|
|
||||||
#define NUM_HISTORY_ITEMS 9
|
#define NUM_HISTORY_ITEMS 9
|
||||||
#define NUM_EVENT_ITEMS 8
|
#define NUM_EVENT_ITEMS 8
|
||||||
|
|||||||
@@ -429,6 +429,7 @@ Intro (void)
|
|||||||
}
|
}
|
||||||
else if (GET_GAME_STATE (PLAYER_HYPNOTIZED))
|
else if (GET_GAME_STATE (PLAYER_HYPNOTIZED))
|
||||||
{
|
{
|
||||||
|
SetCommIntroMode (CIM_FADE_IN_SCREEN, ONE_SECOND * 5);
|
||||||
UrquanHypno ((RESPONSE_REF)0);
|
UrquanHypno ((RESPONSE_REF)0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -54,7 +54,6 @@ typedef enum {
|
|||||||
} CONVERSATION;
|
} CONVERSATION;
|
||||||
|
|
||||||
extern LOCDATA CommData;
|
extern LOCDATA CommData;
|
||||||
extern int cur_comm;
|
|
||||||
extern UNICODE shared_phrase_buf[2048];
|
extern UNICODE shared_phrase_buf[2048];
|
||||||
|
|
||||||
#define PLAYER_SAID(r,i) ((r)==(i))
|
#define PLAYER_SAID(r,i) ((r)==(i))
|
||||||
|
|||||||
@@ -19,11 +19,9 @@
|
|||||||
#include "credits.h"
|
#include "credits.h"
|
||||||
|
|
||||||
#include "controls.h"
|
#include "controls.h"
|
||||||
#include "encount.h"
|
|
||||||
#include "options.h"
|
#include "options.h"
|
||||||
#include "oscill.h"
|
#include "oscill.h"
|
||||||
#include "comm.h"
|
#include "comm.h"
|
||||||
#include "commglue.h"
|
|
||||||
#include "resinst.h"
|
#include "resinst.h"
|
||||||
#include "nameref.h"
|
#include "nameref.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
@@ -617,6 +615,7 @@ OutTakes (void)
|
|||||||
for (i = 0; (i < NUM_OUTTAKES) &&
|
for (i = 0; (i < NUM_OUTTAKES) &&
|
||||||
!(GLOBAL (CurrentActivity) & CHECK_ABORT); i++)
|
!(GLOBAL (CurrentActivity) & CHECK_ABORT); i++)
|
||||||
{
|
{
|
||||||
|
SetCommIntroMode (CIM_CROSSFADE_WINDOW, 0);
|
||||||
InitCommunication (outtake_list[i]);
|
InitCommunication (outtake_list[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,11 +19,12 @@
|
|||||||
#ifndef _ENCOUNT_H
|
#ifndef _ENCOUNT_H
|
||||||
#define _ENCOUNT_H
|
#define _ENCOUNT_H
|
||||||
|
|
||||||
|
// XXX: temporary, for CONVERSATION
|
||||||
#include "commglue.h"
|
#include "commglue.h"
|
||||||
#include "displist.h"
|
#include "displist.h"
|
||||||
#include "libs/gfxlib.h"
|
#include "libs/gfxlib.h"
|
||||||
#include "planets/planets.h"
|
#include "planets/planets.h"
|
||||||
#include "races.h"
|
#include "element.h"
|
||||||
|
|
||||||
|
|
||||||
typedef HLINK HENCOUNTER;
|
typedef HLINK HENCOUNTER;
|
||||||
@@ -124,10 +125,7 @@ enum
|
|||||||
|
|
||||||
#define UMGAH_DEFINED TALKING_PET_DEFINED
|
#define UMGAH_DEFINED TALKING_PET_DEFINED
|
||||||
|
|
||||||
#define TEXT_X_OFFS 1
|
// XXX: The stuff till EOC does not belong here
|
||||||
#define TEXT_Y_OFFS 1
|
|
||||||
#define SIS_TEXT_WIDTH (SIS_SCREEN_WIDTH - (TEXT_X_OFFS << 1))
|
|
||||||
|
|
||||||
extern STAR_DESC *CurStarDescPtr;
|
extern STAR_DESC *CurStarDescPtr;
|
||||||
extern STAR_DESC *star_array;
|
extern STAR_DESC *star_array;
|
||||||
|
|
||||||
@@ -137,6 +135,7 @@ extern STAR_DESC* FindStar (STAR_DESC *pLastStar, POINT *puniverse,
|
|||||||
SIZE xbounds, SIZE ybounds);
|
SIZE xbounds, SIZE ybounds);
|
||||||
|
|
||||||
extern void GetClusterName (const STAR_DESC *pSD, UNICODE buf[]);
|
extern void GetClusterName (const STAR_DESC *pSD, UNICODE buf[]);
|
||||||
|
// <<< EOC
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@@ -149,8 +148,9 @@ extern void EncounterBattle (void);
|
|||||||
extern void BuildBattle (COUNT which_player);
|
extern void BuildBattle (COUNT which_player);
|
||||||
extern COUNT InitEncounter (void);
|
extern COUNT InitEncounter (void);
|
||||||
extern COUNT UninitEncounter (void);
|
extern COUNT UninitEncounter (void);
|
||||||
|
|
||||||
|
// XXX: in comm.h, temporary, until solsys generation code is redone
|
||||||
extern COUNT InitCommunication (CONVERSATION which_comm);
|
extern COUNT InitCommunication (CONVERSATION which_comm);
|
||||||
extern void RaceCommunication (void);
|
|
||||||
|
|
||||||
extern void GenerateSOL (BYTE control);
|
extern void GenerateSOL (BYTE control);
|
||||||
extern void GenerateShofixti (BYTE control);
|
extern void GenerateShofixti (BYTE control);
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
#include "build.h"
|
#include "build.h"
|
||||||
#include "clock.h"
|
#include "clock.h"
|
||||||
|
// XXX: for CurStarDescPtr and XXX_DEFINED constants
|
||||||
#include "encount.h"
|
#include "encount.h"
|
||||||
#include "globdata.h"
|
#include "globdata.h"
|
||||||
#include "hyper.h"
|
#include "hyper.h"
|
||||||
|
|||||||
@@ -21,7 +21,9 @@
|
|||||||
#include "build.h"
|
#include "build.h"
|
||||||
#include "colors.h"
|
#include "colors.h"
|
||||||
#include "commglue.h"
|
#include "commglue.h"
|
||||||
|
// for CommData
|
||||||
#include "controls.h"
|
#include "controls.h"
|
||||||
|
// XXX: for FindStart(), GetClusterName()
|
||||||
#include "encount.h"
|
#include "encount.h"
|
||||||
#include "planets/lander.h"
|
#include "planets/lander.h"
|
||||||
#include "gamestr.h"
|
#include "gamestr.h"
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "build.h"
|
#include "build.h"
|
||||||
|
// XXX: for CurStarDescPtr and XXX_DEFINED constants
|
||||||
#include "encount.h"
|
#include "encount.h"
|
||||||
#include "libs/file.h"
|
#include "libs/file.h"
|
||||||
#include "globdata.h"
|
#include "globdata.h"
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
#include "process.h"
|
#include "process.h"
|
||||||
#include "grpinfo.h"
|
#include "grpinfo.h"
|
||||||
#include "encount.h"
|
#include "encount.h"
|
||||||
|
// for EncounterGroup, EncounterRace
|
||||||
#include "libs/mathlib.h"
|
#include "libs/mathlib.h"
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "colors.h"
|
#include "colors.h"
|
||||||
#include "commglue.h"
|
|
||||||
#include "controls.h"
|
#include "controls.h"
|
||||||
#include "options.h"
|
#include "options.h"
|
||||||
#include "setup.h"
|
#include "setup.h"
|
||||||
|
|||||||
@@ -16,8 +16,10 @@
|
|||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// XXX: for XXX_DEFINED constants
|
||||||
#include "encount.h"
|
#include "encount.h"
|
||||||
#include "resinst.h"
|
#include "resinst.h"
|
||||||
|
#include "planets/planets.h"
|
||||||
#include "planets/elemdata.h"
|
#include "planets/elemdata.h"
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
#include "../cons_res.h"
|
#include "../cons_res.h"
|
||||||
#include "../controls.h"
|
#include "../controls.h"
|
||||||
#include "../colors.h"
|
#include "../colors.h"
|
||||||
|
// XXX: for CurStarDescPtr and XXX_DEFINED
|
||||||
#include "../encount.h"
|
#include "../encount.h"
|
||||||
#include "../process.h"
|
#include "../process.h"
|
||||||
#include "../gamestr.h"
|
#include "../gamestr.h"
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "planets.h"
|
#include "planets.h"
|
||||||
|
// XXX: for CurStarDescPtr
|
||||||
#include "../encount.h"
|
#include "../encount.h"
|
||||||
#include "libs/compiler.h"
|
#include "libs/compiler.h"
|
||||||
#include "libs/mathlib.h"
|
#include "libs/mathlib.h"
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
#include "scan.h"
|
#include "scan.h"
|
||||||
#include "../colors.h"
|
#include "../colors.h"
|
||||||
#include "../controls.h"
|
#include "../controls.h"
|
||||||
|
// XXX: for stuff that does not belong there
|
||||||
#include "../encount.h"
|
#include "../encount.h"
|
||||||
#include "../gameopt.h"
|
#include "../gameopt.h"
|
||||||
#include "../gamestr.h"
|
#include "../gamestr.h"
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
#include "../cons_res.h"
|
#include "../cons_res.h"
|
||||||
#include "../controls.h"
|
#include "../controls.h"
|
||||||
#include "../encount.h"
|
#include "../encount.h"
|
||||||
|
// for EncounterGroup
|
||||||
#include "../gamestr.h"
|
#include "../gamestr.h"
|
||||||
#include "../nameref.h"
|
#include "../nameref.h"
|
||||||
#include "../resinst.h"
|
#include "../resinst.h"
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
#include "colors.h"
|
#include "colors.h"
|
||||||
#include "controls.h"
|
#include "controls.h"
|
||||||
#include "credits.h"
|
#include "credits.h"
|
||||||
|
// XXX: for star_array[]
|
||||||
#include "encount.h"
|
#include "encount.h"
|
||||||
#include "fmv.h"
|
#include "fmv.h"
|
||||||
#include "gamestr.h"
|
#include "gamestr.h"
|
||||||
|
|||||||
+2
-1
@@ -17,7 +17,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "colors.h"
|
#include "colors.h"
|
||||||
#include "commglue.h"
|
#include "races.h"
|
||||||
|
// XXX: including encount.h for stuff that does not belong there
|
||||||
#include "encount.h"
|
#include "encount.h"
|
||||||
#include "gamestr.h"
|
#include "gamestr.h"
|
||||||
#include "options.h"
|
#include "options.h"
|
||||||
|
|||||||
+54
-20
@@ -19,7 +19,9 @@
|
|||||||
#include "build.h"
|
#include "build.h"
|
||||||
#include "colors.h"
|
#include "colors.h"
|
||||||
#include "controls.h"
|
#include "controls.h"
|
||||||
|
// XXX: for CurStarDescPtr
|
||||||
#include "encount.h"
|
#include "encount.h"
|
||||||
|
#include "comm.h"
|
||||||
#include "gamestr.h"
|
#include "gamestr.h"
|
||||||
#include "load.h"
|
#include "load.h"
|
||||||
#include "starbase.h"
|
#include "starbase.h"
|
||||||
@@ -34,6 +36,8 @@
|
|||||||
|
|
||||||
MENU_STATE *pMenuState;
|
MENU_STATE *pMenuState;
|
||||||
|
|
||||||
|
static void CleanupAfterStarBase (void);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
DrawBaseStateStrings (STARBASE_STATE OldState, STARBASE_STATE NewState)
|
DrawBaseStateStrings (STARBASE_STATE OldState, STARBASE_STATE NewState)
|
||||||
{
|
{
|
||||||
@@ -289,6 +293,8 @@ rotateStarbase (MENU_STATE *pMS, FRAME AniFrame)
|
|||||||
BOOLEAN
|
BOOLEAN
|
||||||
DoStarBase (MENU_STATE *pMS)
|
DoStarBase (MENU_STATE *pMS)
|
||||||
{
|
{
|
||||||
|
// XXX: This function is full of hacks and otherwise strange code
|
||||||
|
|
||||||
if (GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD))
|
if (GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD))
|
||||||
{
|
{
|
||||||
pMS->CurState = DEPART_BASE;
|
pMS->CurState = DEPART_BASE;
|
||||||
@@ -344,9 +350,7 @@ DoStarBase (MENU_STATE *pMS)
|
|||||||
UnbatchGraphics ();
|
UnbatchGraphics ();
|
||||||
UnlockMutex (GraphicsLock);
|
UnlockMutex (GraphicsLock);
|
||||||
}
|
}
|
||||||
else if (PulsedInputState.menu[KEY_MENU_SELECT]
|
else if (PulsedInputState.menu[KEY_MENU_SELECT])
|
||||||
|| GET_GAME_STATE (MOONBASE_ON_SHIP)
|
|
||||||
|| GET_GAME_STATE (CHMMR_BOMB_STATE) == 2)
|
|
||||||
{
|
{
|
||||||
ExitStarBase:
|
ExitStarBase:
|
||||||
DestroyDrawable (ReleaseDrawable (pMS->CurFrame));
|
DestroyDrawable (ReleaseDrawable (pMS->CurFrame));
|
||||||
@@ -372,6 +376,8 @@ ExitStarBase:
|
|||||||
{
|
{
|
||||||
FlushInput ();
|
FlushInput ();
|
||||||
InitCommunication (COMMANDER_CONVERSATION);
|
InitCommunication (COMMANDER_CONVERSATION);
|
||||||
|
// XXX: InitCommunication() clears these flags, and we need them
|
||||||
|
// This marks that we are in Starbase.
|
||||||
SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, (BYTE)~0);
|
SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, (BYTE)~0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -453,22 +459,31 @@ VisitStarBase (void)
|
|||||||
CONTEXT OldContext;
|
CONTEXT OldContext;
|
||||||
StatMsgMode prevMsgMode = SMM_UNDEFINED;
|
StatMsgMode prevMsgMode = SMM_UNDEFINED;
|
||||||
|
|
||||||
|
// XXX: This should probably be moved out to Starcon2Main()
|
||||||
if (GET_GAME_STATE (CHMMR_BOMB_STATE) == 2)
|
if (GET_GAME_STATE (CHMMR_BOMB_STATE) == 2)
|
||||||
{
|
{ // We were just transported by Chmmr to the Starbase
|
||||||
CurStarDescPtr = 0;
|
// Force a reload of the SolarSys
|
||||||
goto TimePassage;
|
CurStarDescPtr = NULL;
|
||||||
|
// This marks that we are in Starbase.
|
||||||
|
SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, (BYTE)~0);
|
||||||
}
|
}
|
||||||
else if (!GET_GAME_STATE (STARBASE_AVAILABLE))
|
|
||||||
|
if (!GET_GAME_STATE (STARBASE_AVAILABLE))
|
||||||
{
|
{
|
||||||
HSHIPFRAG hStarShip;
|
HSHIPFRAG hStarShip;
|
||||||
SHIP_FRAGMENT *FragPtr;
|
SHIP_FRAGMENT *FragPtr;
|
||||||
|
|
||||||
pMenuState = 0;
|
pMenuState = 0;
|
||||||
|
|
||||||
|
// Unallied Starbase conversation
|
||||||
|
SetCommIntroMode (CIM_CROSSFADE_SCREEN, 0);
|
||||||
InitCommunication (COMMANDER_CONVERSATION);
|
InitCommunication (COMMANDER_CONVERSATION);
|
||||||
if (!GET_GAME_STATE (PROBE_ILWRATH_ENCOUNTER)
|
if (!GET_GAME_STATE (PROBE_ILWRATH_ENCOUNTER)
|
||||||
|| (GLOBAL (CurrentActivity) & CHECK_ABORT))
|
|| (GLOBAL (CurrentActivity) & CHECK_ABORT))
|
||||||
goto ExitStarBase;
|
{
|
||||||
|
CleanupAfterStarBase ();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Create an Ilwrath ship responding to the Ur-Quan
|
/* Create an Ilwrath ship responding to the Ur-Quan
|
||||||
* probe's broadcast */
|
* probe's broadcast */
|
||||||
@@ -483,18 +498,18 @@ VisitStarBase (void)
|
|||||||
InitCommunication (ILWRATH_CONVERSATION);
|
InitCommunication (ILWRATH_CONVERSATION);
|
||||||
if (GLOBAL_SIS (CrewEnlisted) == (COUNT)~0
|
if (GLOBAL_SIS (CrewEnlisted) == (COUNT)~0
|
||||||
|| (GLOBAL (CurrentActivity) & CHECK_ABORT))
|
|| (GLOBAL (CurrentActivity) & CHECK_ABORT))
|
||||||
return;
|
return; // Killed by Ilwrath
|
||||||
SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, (BYTE)~0);
|
|
||||||
|
// After Ilwrath battle, about-to-ally Starbase conversation
|
||||||
{
|
{
|
||||||
pMenuState = &MenuState;
|
pMenuState = &MenuState;
|
||||||
|
SetCommIntroMode (CIM_CROSSFADE_SCREEN, 0);
|
||||||
InitCommunication (COMMANDER_CONVERSATION);
|
InitCommunication (COMMANDER_CONVERSATION);
|
||||||
|
if (GLOBAL (CurrentActivity) & CHECK_ABORT)
|
||||||
TimePassage:
|
return;
|
||||||
|
// XXX: InitCommunication() clears these flags, and we need them
|
||||||
|
// This marks that we are in Starbase.
|
||||||
SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, (BYTE)~0);
|
SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, (BYTE)~0);
|
||||||
DoTimePassage ();
|
|
||||||
if (GLOBAL_SIS (CrewEnlisted) == (COUNT)~0)
|
|
||||||
return; // You are now dead! Thank you!
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -504,11 +519,23 @@ TimePassage:
|
|||||||
memset (&MenuState, 0, sizeof (MenuState));
|
memset (&MenuState, 0, sizeof (MenuState));
|
||||||
|
|
||||||
MenuState.InputFunc = DoStarBase;
|
MenuState.InputFunc = DoStarBase;
|
||||||
|
|
||||||
if (GET_GAME_STATE (MOONBASE_ON_SHIP)
|
if (GET_GAME_STATE (MOONBASE_ON_SHIP)
|
||||||
|| GET_GAME_STATE (CHMMR_BOMB_STATE) == 2)
|
|| GET_GAME_STATE (CHMMR_BOMB_STATE) == 2)
|
||||||
{
|
{ // Go immediately into a conversation with the Commander when the
|
||||||
MenuState.Initialized = TRUE;
|
// Starbase becomes available for the first time, or after Chmmr
|
||||||
MenuState.CurState = TALK_COMMANDER;
|
// install the bomb.
|
||||||
|
DoTimePassage ();
|
||||||
|
if (GLOBAL_SIS (CrewEnlisted) == (COUNT)~0)
|
||||||
|
return; // You are now dead! Thank you! (killed by Kohr-Ah)
|
||||||
|
|
||||||
|
SetCommIntroMode (CIM_FADE_IN_SCREEN, ONE_SECOND * 2);
|
||||||
|
InitCommunication (COMMANDER_CONVERSATION);
|
||||||
|
if (GLOBAL (CurrentActivity) & CHECK_ABORT)
|
||||||
|
return;
|
||||||
|
// XXX: InitCommunication() clears these flags, and we need them
|
||||||
|
// This marks that we are in Starbase.
|
||||||
|
SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, (BYTE)~0);
|
||||||
}
|
}
|
||||||
|
|
||||||
OldContext = SetContext (ScreenContext);
|
OldContext = SetContext (ScreenContext);
|
||||||
@@ -518,10 +545,17 @@ TimePassage:
|
|||||||
pMenuState = 0;
|
pMenuState = 0;
|
||||||
SetStatusMessageMode (prevMsgMode);
|
SetStatusMessageMode (prevMsgMode);
|
||||||
|
|
||||||
ExitStarBase:
|
CleanupAfterStarBase ();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
CleanupAfterStarBase (void)
|
||||||
|
{
|
||||||
if (!(GLOBAL (CurrentActivity) & (CHECK_LOAD | CHECK_ABORT)))
|
if (!(GLOBAL (CurrentActivity) & (CHECK_LOAD | CHECK_ABORT)))
|
||||||
{
|
{
|
||||||
|
// Mark as not in Starbase anymore
|
||||||
SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 0);
|
SET_GAME_STATE (GLOBAL_FLAGS_AND_DATA, 0);
|
||||||
|
// Fake a load so Starcon2Main takes us to IP
|
||||||
GLOBAL (CurrentActivity) = CHECK_LOAD;
|
GLOBAL (CurrentActivity) = CHECK_LOAD;
|
||||||
NextActivity = MAKE_WORD (IN_INTERPLANETARY, 0)
|
NextActivity = MAKE_WORD (IN_INTERPLANETARY, 0)
|
||||||
| START_INTERPLANETARY;
|
| START_INTERPLANETARY;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include "encount.h"
|
#include "comm.h"
|
||||||
#include "battle.h"
|
#include "battle.h"
|
||||||
#include "fmv.h"
|
#include "fmv.h"
|
||||||
#include "gameev.h"
|
#include "gameev.h"
|
||||||
|
|||||||
Reference in New Issue
Block a user