Expand Up
@@ -64,26 +64,21 @@
// #define IDTRANS_FORM 9000 //The Transporter base form
#define IDTRANS_TABFORM 9001 // The Transporter tabbed form
#define IDTRANS_CLOSE 9002 // The close button icon
// #define IDTRANS_CONTENTFORM 9003 //The Transporter Contents form
#define IDTRANS_CONTABFORM 9004 // The Transporter Contents tabbed form
#define IDTRANS_CONTCLOSE 9005 // The close icon on the Contents form
// #define IDTRANS_DROIDS 9006 //The Droid base form
#define IDTRANS_DROIDTAB 9007 // The Droid tab form
#define IDTRANS_DROIDCLOSE 9008 // The close icon for the Droid form
// #define IDTRANS_LAUNCH 9010 //The Transporter Launch button
#define IDTRANS_START 9100 // The first button on the Transporter tab form
#define IDTRANS_END 9199 // The last button on the Transporter tab form
#define IDTRANS_END 9199 // The last button on the Transporter tab form
#define IDTRANS_STATSTART 9200 // The status button for the first Transporter
#define IDTRANS_STATEND 9299 // The status button for the last Transporter
#define IDTRANS_CONTSTART 9300 // The first button on the Transporter contents tab form
#define IDTRANS_CONTEND 9399 // The last button on the Transporter contents tab form
#define IDTRANS_DROIDSTART 9400 // The first button on the Droid tab form
#define IDTRANS_DROIDEND 9499 // The last button on the Droid tab form
#define IDTRANS_REPAIRBARSTART 9600 // The first repair status bar on Droid button
#define IDTRANS_REPAIRBAREND 9699 // The last repair status bar on Droid button
// #define IDTRANS_CAPACITY 9500 //The capacity label
#define IDTRANS_REPAIRBARSTART 9600 // The first repair status bar on Droid button
#define IDTRANS_REPAIRBAREND 9699 // The last repair status bar on Droid button
/* Transporter screen positions */
#define TRANS_X OBJ_BACKX
Expand Down
Expand Up
@@ -159,57 +154,49 @@ static bool intAddTransContentsForm(void);
static bool intAddDroidsAvailForm (void );
void intRemoveTransContent (void );
static UDWORD transporterSpaceRequired (DROID const *psDroid);
static DROID* transInterfaceDroidList (void );
static DROID * transInterfaceDroidList (void );
static void intTransporterAddDroid (UDWORD id);
static void intRemoveTransDroidsAvail (void );
static void intRemoveTransDroidsAvailNoAnim (void );
static bool _intRefreshTransporter (void );
static bool _intAddTransporter (DROID *psSelected, bool offWorld);
static void _intProcessTransporter (UDWORD id);
// initialises Transporter variables
void initTransporters (void )
{
onMission = false ;
psCurrTransporter = NULL ;
}
// Call to refresh the transporter screen, ie when a droids boards it.
//
bool intRefreshTransporter (void )
{
// printf("intRefreshTransporter\n");
return _intRefreshTransporter ();
}
static bool _intRefreshTransporter (void )
{
// Is the transporter screen up?
if ( (intMode == INT_TRANSPORTER) &&
(widgGetFromID (psWScreen,IDTRANS_FORM) != NULL ))
if ( (intMode == INT_TRANSPORTER) &&
(widgGetFromID (psWScreen, IDTRANS_FORM) != NULL ))
{
bool Ret;
// Refresh it by re-adding it.
Ret = intAddTransporter (psCurrTransporter,onMission);
Ret = intAddTransporter (psCurrTransporter, onMission);
intMode = INT_TRANSPORTER;
return Ret;
}
return true ;
}
bool intAddTransporter (DROID *psSelected, bool offWorld)
{
return (_intAddTransporter (psSelected,offWorld));
return (_intAddTransporter (psSelected, offWorld));
}
/* Add the Transporter Interface*/
static bool _intAddTransporter (DROID *psSelected, bool offWorld)
{
Expand All
@@ -218,27 +205,28 @@ static bool _intAddTransporter(DROID *psSelected, bool offWorld)
onMission = offWorld;
psCurrTransporter = psSelected;
/* if transporter has died - close the interface - this can only happen in
multiPlayer where the transporter can be killed*/
if (bMultiPlayer)
{
if (psCurrTransporter && isDead ((BASE_OBJECT *)psCurrTransporter))
{
intRemoveTransNoAnim ();
return true ;
}
}
/* if transporter has died - close the interface - this can only happen in
multiPlayer where the transporter can be killed*/
if (bMultiPlayer)
{
if (psCurrTransporter && isDead ((BASE_OBJECT *)psCurrTransporter))
{
intRemoveTransNoAnim ();
return true ;
}
}
// Add the main Transporter form
// Is the form already up?
if (widgGetFromID (psWScreen,IDTRANS_FORM) != NULL )
if (widgGetFromID (psWScreen, IDTRANS_FORM) != NULL )
{
intRemoveTransNoAnim ();
Animate = false ;
}
if (intIsRefreshing ()) {
if (intIsRefreshing ())
{
Animate = false ;
}
Expand All
@@ -250,8 +238,8 @@ static bool _intAddTransporter(DROID *psSelected, bool offWorld)
sFormInit .y = (SWORD)TRANS_Y;
sFormInit .width = TRANS_WIDTH;
sFormInit .height = TRANS_HEIGHT;
// If the window was closed then do open animation.
if (Animate)
// If the window was closed then do open animation.
if (Animate)
{
sFormInit .pDisplay = intOpenPlainForm;
sFormInit .disableChildren = true ;
Expand All
@@ -277,7 +265,7 @@ static bool _intAddTransporter(DROID *psSelected, bool offWorld)
sButInit .height = CLOSE_HEIGHT;
sButInit .pTip = _ (" Close" );
sButInit .pDisplay = intDisplayImageHilight;
sButInit .UserData = PACKDWORD_TRI (0 ,IMAGE_CLOSEHILIGHT , IMAGE_CLOSE);
sButInit .UserData = PACKDWORD_TRI (0 , IMAGE_CLOSEHILIGHT , IMAGE_CLOSE);
if (!widgAddButton (psWScreen, &sButInit ))
{
return false ;
Expand Down
Expand Up
@@ -312,14 +300,15 @@ bool intAddTransporterContents(void)
{
bool Animate = true ;
// Is the form already up?
if (widgGetFromID (psWScreen,IDTRANS_CONTENTFORM) != NULL )
// Is the form already up?
if (widgGetFromID (psWScreen, IDTRANS_CONTENTFORM) != NULL )
{
intRemoveTransContentNoAnim ();
Animate = false ;
}
if (intIsRefreshing ()) {
if (intIsRefreshing ())
{
Animate = false ;
}
Expand All
@@ -331,8 +320,8 @@ bool intAddTransporterContents(void)
sFormInit .y = (SWORD)TRANSCONT_Y;
sFormInit .width = TRANSCONT_WIDTH;
sFormInit .height = TRANSCONT_HEIGHT;
// If the window was closed then do open animation.
if (Animate)
// If the window was closed then do open animation.
if (Animate)
{
sFormInit .pDisplay = intOpenPlainForm;
sFormInit .disableChildren = true ;
Expand All
@@ -358,7 +347,7 @@ bool intAddTransporterContents(void)
sButInit .height = CLOSE_HEIGHT;
sButInit .pTip = _ (" Close" );
sButInit .pDisplay = intDisplayImageHilight;
sButInit .UserData = PACKDWORD_TRI (0 ,IMAGE_CLOSEHILIGHT , IMAGE_CLOSE);
sButInit .UserData = PACKDWORD_TRI (0 , IMAGE_CLOSEHILIGHT , IMAGE_CLOSE);
if (!widgAddButton (psWScreen, &sButInit ))
{
return false ;
Expand All
@@ -369,7 +358,7 @@ bool intAddTransporterContents(void)
W_LABINIT sLabInit ;
sLabInit .formID = IDTRANS_CONTENTFORM;
sLabInit .id = IDTRANS_CAPACITY;
sLabInit .x = (SWORD)sButInit .x -40 ;
sLabInit .x = (SWORD)sButInit .x - 40 ;
sLabInit .y = 0 ;
sLabInit .width = 16 ;
sLabInit .height = 16 ;
Expand All
@@ -391,13 +380,13 @@ bool intAddTransporterContents(void)
sButFInit .x = OBJ_STARTX;
sButFInit .y = (UWORD)(STAT_SLDY - 1 );
sButFInit .width = iV_GetImageWidth (IntImages,IMAGE_LAUNCHUP);
sButFInit .height = iV_GetImageHeight (IntImages,IMAGE_LAUNCHUP);
sButFInit .width = iV_GetImageWidth (IntImages, IMAGE_LAUNCHUP);
sButFInit .height = iV_GetImageHeight (IntImages, IMAGE_LAUNCHUP);
sButFInit .pTip = _ (" Launch Transport" );
// sButInit.pText = "Launch";
sButFInit .pDisplay = intDisplayImageHilight;
sButFInit .UserData = PACKDWORD_TRI (0 ,IMAGE_LAUNCHDOWN,IMAGE_LAUNCHUP);
sButFInit .UserData = PACKDWORD_TRI (0 , IMAGE_LAUNCHDOWN, IMAGE_LAUNCHUP);
if (!widgAddForm (psWScreen, &sButFInit ))
{
Expand All
@@ -416,20 +405,20 @@ bool intAddTransporterContents(void)
/* This is used to display the transporter button and capacity when at the home base ONLY*/
bool intAddTransporterLaunch (DROID *psDroid)
{
UDWORD capacity;
DROID *psCurr, *psNext;
UDWORD capacity;
DROID *psCurr, *psNext;
if (bMultiPlayer)
{
return true ;
}
if (bMultiPlayer)
{
return true ;
}
// do this first so that if the interface is already up it syncs with this transporter
// do this first so that if the interface is already up it syncs with this transporter
// set up the static transporter
psCurrTransporter = psDroid;
// check the button is not already up
if (widgGetFromID (psWScreen,IDTRANS_LAUNCH) != NULL )
// check the button is not already up
if (widgGetFromID (psWScreen, IDTRANS_LAUNCH) != NULL )
{
return true ;
}
Expand All
@@ -440,11 +429,11 @@ bool intAddTransporterLaunch(DROID *psDroid)
sButInit .style = WFORM_CLICKABLE | WFORM_NOCLICKMOVE;
sButInit .x = RET_X;
sButInit .y = (SWORD)TIMER_Y;
sButInit .width = (UWORD)(10 + iV_GetImageWidth (IntImages,IMAGE_LAUNCHUP));
sButInit .height = iV_GetImageHeight (IntImages,IMAGE_LAUNCHUP);
sButInit .width = (UWORD)(10 + iV_GetImageWidth (IntImages, IMAGE_LAUNCHUP));
sButInit .height = iV_GetImageHeight (IntImages, IMAGE_LAUNCHUP);
sButInit .pTip = _ (" Launch Transport" );
sButInit .pDisplay = intDisplayImageHilight;
sButInit .UserData = PACKDWORD_TRI (0 ,IMAGE_LAUNCHDOWN,IMAGE_LAUNCHUP);
sButInit .UserData = PACKDWORD_TRI (0 , IMAGE_LAUNCHDOWN, IMAGE_LAUNCHUP);
if (!widgAddForm (psWScreen, &sButInit ))
{
return false ;
Expand All
@@ -465,24 +454,24 @@ bool intAddTransporterLaunch(DROID *psDroid)
return false ;
}
// when full flash the transporter button
if (psCurrTransporter && psCurrTransporter->psGroup )
{
capacity = TRANSPORTER_CAPACITY;
for (psCurr = psCurrTransporter->psGroup ->psList ; psCurr != NULL ;
psCurr = psNext)
{
psNext = psCurr->psGrpNext ;
if (psCurr != psCurrTransporter)
{
capacity -= transporterSpaceRequired (psCurr);
}
}
if (capacity <= 0 )
{
flashMissionButton (IDTRANS_LAUNCH);
}
}
// when full flash the transporter button
if (psCurrTransporter && psCurrTransporter->psGroup )
{
capacity = TRANSPORTER_CAPACITY;
for (psCurr = psCurrTransporter->psGroup ->psList ; psCurr != NULL ;
psCurr = psNext)
{
psNext = psCurr->psGrpNext ;
if (psCurr != psCurrTransporter)
{
capacity -= transporterSpaceRequired (psCurr);
}
}
if (capacity <= 0 )
{
flashMissionButton (IDTRANS_LAUNCH);
}
}
Expand All
@@ -492,7 +481,7 @@ bool intAddTransporterLaunch(DROID *psDroid)
/* Remove the Transporter Launch widget from the screen*/
void intRemoveTransporterLaunch (void )
{
if (widgGetFromID (psWScreen,IDTRANS_LAUNCH) != NULL )
if (widgGetFromID (psWScreen, IDTRANS_LAUNCH) != NULL )
{
widgDelete (psWScreen, IDTRANS_LAUNCH);
}
Expand All
@@ -519,17 +508,17 @@ bool intAddTransButtonForm(void)
sFormInit .minorPos = WFORM_TABNONE;
sFormInit .majorSize = OBJ_TABWIDTH;
sFormInit .majorOffset = OBJ_TABOFFSET;
sFormInit .tabVertOffset = (OBJ_TABHEIGHT/ 2 );
sFormInit .tabVertOffset = (OBJ_TABHEIGHT / 2 );
sFormInit .tabMajorThickness = OBJ_TABHEIGHT;
numButtons = 0 ;
/* work out the number of buttons */
for (psDroid = transInterfaceDroidList (); psDroid; psDroid = psDroid->psNext )
for (psDroid = transInterfaceDroidList (); psDroid; psDroid = psDroid->psNext )
{
// only interested in Transporter droids
if ((psDroid->droidType == DROID_TRANSPORTER || psDroid->droidType == DROID_SUPERTRANSPORTER) &&
(psDroid->action != DACTION_TRANSPORTOUT &&
psDroid->action != DACTION_TRANSPORTIN ) )
(psDroid->action != DACTION_TRANSPORTOUT &&
psDroid->action != DACTION_TRANSPORTIN) )
{
// set the first Transporter to be the current one if not already set
if (psCurrTransporter == NULL )
Expand All
@@ -542,18 +531,19 @@ bool intAddTransButtonForm(void)
// set the number of tabs required
sFormInit .numMajor = numForms ((OBJ_BUTWIDTH + OBJ_GAP) * numButtons,
OBJ_WIDTH - OBJ_GAP);
OBJ_WIDTH - OBJ_GAP);
sFormInit .pUserData = &StandardTab;
sFormInit .pTabDisplay = intDisplayTab;
if (sFormInit .numMajor > MAX_TAB_STD_SHOWN)
{ // we do NOT use smallTab icons here, so be safe and only display max # of
{
// we do NOT use smallTab icons here, so be safe and only display max # of
// standard sized tab icons.
sFormInit .numMajor = MAX_TAB_STD_SHOWN;
}
// set minor tabs to 1
for (i= 0 ; i< sFormInit .numMajor ; i++)
for (i = 0 ; i < sFormInit .numMajor ; i++)
{
sFormInit .aNumMinors [i] = 1 ;
}
Expand Down
Expand Up
@@ -584,20 +574,20 @@ bool intAddTransButtonForm(void)
ClearTopicBuffers ();
// add each button
for (psDroid = transInterfaceDroidList (); psDroid; psDroid = psDroid->psNext )
for (psDroid = transInterfaceDroidList (); psDroid; psDroid = psDroid->psNext )
{
if ((psDroid->droidType == DROID_TRANSPORTER || psDroid->droidType == DROID_SUPERTRANSPORTER) &&
(psDroid->action != DACTION_TRANSPORTOUT &&
psDroid->action != DACTION_TRANSPORTIN ) )
(psDroid->action != DACTION_TRANSPORTOUT &&
psDroid->action != DACTION_TRANSPORTIN) )
{
/* Set the tip and add the button */
sBFormInit .pTip = droidGetName (psDroid);
BufferID = sBFormInit .id - IDTRANS_START;
ASSERT ( BufferID < NUM_TOPICBUFFERS," BufferID > NUM_TOPICBUFFERS" );
BufferID = sBFormInit .id - IDTRANS_START;
ASSERT (BufferID < NUM_TOPICBUFFERS, " BufferID > NUM_TOPICBUFFERS" );
ClearTopicButtonBuffer (BufferID);
RENDERBUTTON_INUSE (&TopicBuffers[BufferID]);
TopicBuffers[BufferID].Data = (void *)psDroid;
TopicBuffers[BufferID].Data = (void *)psDroid;
sBFormInit .pUserData = &TopicBuffers[BufferID];
sBFormInit .pDisplay = intDisplayObjectButton;
Expand All
@@ -617,8 +607,8 @@ bool intAddTransButtonForm(void)
// now do status button
sBFormInit2 .pTip = NULL ;
BufferID = (sBFormInit2 .id - IDTRANS_STATSTART)* 2 + 1 ;
ASSERT ( BufferID < NUM_OBJECTBUFFERS," BufferID > NUM_OBJECTBUFFERS" );
BufferID = (sBFormInit2 .id - IDTRANS_STATSTART) * 2 + 1 ;
ASSERT (BufferID < NUM_OBJECTBUFFERS, " BufferID > NUM_OBJECTBUFFERS" );
ClearObjectButtonBuffer (BufferID);
RENDERBUTTON_INUSE (&ObjectBuffers[BufferID]);
sBFormInit2 .pUserData = &ObjectBuffers[BufferID];
Expand All
@@ -632,7 +622,7 @@ bool intAddTransButtonForm(void)
/* Update the init struct for the next buttons */
sBFormInit .id += 1 ;
ASSERT ( sBFormInit .id < IDTRANS_END," Too many Transporter buttons" );
ASSERT (sBFormInit .id < IDTRANS_END, " Too many Transporter buttons" );
sBFormInit .x += OBJ_BUTWIDTH + OBJ_GAP;
if (sBFormInit .x + OBJ_BUTWIDTH + OBJ_GAP > OBJ_WIDTH)
Expand All
@@ -642,7 +632,7 @@ bool intAddTransButtonForm(void)
}
sBFormInit2 .id += 1 ;
ASSERT ( sBFormInit2 .id < IDTRANS_STATEND," Too many Transporter status buttons" );
ASSERT (sBFormInit2 .id < IDTRANS_STATEND, " Too many Transporter status buttons" );
sBFormInit2 .x += OBJ_BUTWIDTH + OBJ_GAP;
if (sBFormInit2 .x + OBJ_BUTWIDTH + OBJ_GAP > OBJ_WIDTH)
Expand Down
Expand Up
@@ -676,7 +666,7 @@ bool intAddTransContentsForm(void)
sFormInit .minorPos = WFORM_TABNONE;
sFormInit .majorSize = OBJ_TABWIDTH;
sFormInit .majorOffset = OBJ_TABOFFSET;
sFormInit .tabVertOffset = (OBJ_TABHEIGHT/ 2 );
sFormInit .tabVertOffset = (OBJ_TABHEIGHT / 2 );
sFormInit .tabMajorThickness = OBJ_TABHEIGHT;
// set the number of tabs required
Expand All
@@ -687,7 +677,7 @@ bool intAddTransContentsForm(void)
sFormInit .numMajor = 1 ;
// set minor tabs to 1
for (i= 0 ; i< sFormInit .numMajor ; i++)
for (i = 0 ; i < sFormInit .numMajor ; i++)
{
sFormInit .aNumMinors [i] = 1 ;
}
Expand All
@@ -700,8 +690,6 @@ bool intAddTransContentsForm(void)
return false ;
}
/* Add the transporter contents buttons */
W_FORMINIT sBFormInit ;
sBFormInit .formID = IDTRANS_CONTABFORM;
Expand All
@@ -720,7 +708,7 @@ bool intAddTransContentsForm(void)
if (psCurrTransporter != NULL )
{
for (psDroid = psCurrTransporter->psGroup ->psList ; psDroid != NULL && psDroid !=
psCurrTransporter; psDroid = psNext)
psCurrTransporter; psDroid = psNext)
{
psNext = psDroid->psGrpNext ;
if (psDroid->selected )
Expand All
@@ -730,9 +718,9 @@ bool intAddTransContentsForm(void)
/* Set the tip and add the button */
sBFormInit .pTip = droidGetName (psDroid);
BufferID = GetStatBuffer ();
ASSERT ( BufferID >= 0 ," Unable to acquire stat buffer." );
ASSERT (BufferID >= 0 , " Unable to acquire stat buffer." );
RENDERBUTTON_INUSE (&StatBuffers[BufferID]);
StatBuffers[BufferID].Data = (void *)psDroid;
StatBuffers[BufferID].Data = (void *)psDroid;
sBFormInit .pUserData = &StatBuffers[BufferID];
sBFormInit .pDisplay = intDisplayTransportButton;
Expand All
@@ -743,7 +731,7 @@ bool intAddTransContentsForm(void)
/* Update the init struct for the next button */
sBFormInit .id += 1 ;
ASSERT ( sBFormInit .id < IDTRANS_CONTEND," Too many Transporter Droid buttons" );
ASSERT (sBFormInit .id < IDTRANS_CONTEND, " Too many Transporter Droid buttons" );
sBFormInit .x += OBJ_BUTWIDTH + OBJ_GAP;
if (sBFormInit .x + OBJ_BUTWIDTH + OBJ_GAP > TRANSCONT_WIDTH)
Expand Down
Expand Up
@@ -771,18 +759,17 @@ bool intAddDroidsAvailForm(void)
bool Animate = true ;
// Is the form already up?
if (widgGetFromID (psWScreen,IDTRANS_DROIDS) != NULL )
if (widgGetFromID (psWScreen, IDTRANS_DROIDS) != NULL )
{
intRemoveTransDroidsAvailNoAnim ();
Animate = false ;
}
if ( intIsRefreshing ()) {
if ( intIsRefreshing ())
{
Animate = false ;
}
/* Add the droids available form */
W_FORMINIT sFormInit ;
sFormInit .formID = 0 ;
Expand All
@@ -793,8 +780,8 @@ bool intAddDroidsAvailForm(void)
sFormInit .x = (SWORD)TRANSDROID_X;
sFormInit .y = (SWORD)TRANSDROID_Y;
// If the window was closed then do open animation.
if (Animate)
// If the window was closed then do open animation.
if (Animate)
{
sFormInit .pDisplay = intOpenPlainForm;
sFormInit .disableChildren = true ;
Expand All
@@ -810,7 +797,6 @@ bool intAddDroidsAvailForm(void)
return false ;
}
/* Add the close button */
W_BUTINIT sButInit ;
sButInit .formID = IDTRANS_DROIDS;
Expand All
@@ -821,13 +807,12 @@ bool intAddDroidsAvailForm(void)
sButInit .height = CLOSE_HEIGHT;
sButInit .pTip = _ (" Close" );
sButInit .pDisplay = intDisplayImageHilight;
sButInit .UserData = PACKDWORD_TRI (0 ,IMAGE_CLOSEHILIGHT , IMAGE_CLOSE);
sButInit .UserData = PACKDWORD_TRI (0 , IMAGE_CLOSEHILIGHT , IMAGE_CLOSE);
if (!widgAddButton (psWScreen, &sButInit ))
{
return false ;
}
// now add the tabbed droids available form
sFormInit = W_FORMINIT ();
sFormInit .formID = IDTRANS_DROIDS;
Expand All
@@ -841,10 +826,10 @@ bool intAddDroidsAvailForm(void)
sFormInit .majorPos = WFORM_TABTOP;
sFormInit .minorPos = WFORM_TABNONE;
sFormInit .majorSize = (OBJ_TABWIDTH/ 2 );
sFormInit .majorSize = (OBJ_TABWIDTH / 2 );
sFormInit .majorOffset = OBJ_TABOFFSET;
sFormInit .tabVertOffset = (OBJ_TABHEIGHT/ 2 );
sFormInit .tabVertOffset = (OBJ_TABHEIGHT / 2 );
sFormInit .tabMajorThickness = OBJ_TABHEIGHT;
sFormInit .tabMajorGap = OBJ_TABOFFSET;
Expand All
@@ -866,18 +851,19 @@ bool intAddDroidsAvailForm(void)
}
butPerForm = ((TRANSDROID_TABWIDTH - OBJ_GAP) /
(OBJ_BUTWIDTH + OBJ_GAP)) *
((TRANSDROID_TABHEIGHT - OBJ_GAP) /
(OBJ_BUTHEIGHT + OBJ_GAP));
(OBJ_BUTWIDTH + OBJ_GAP)) *
((TRANSDROID_TABHEIGHT - OBJ_GAP) /
(OBJ_BUTHEIGHT + OBJ_GAP));
sFormInit .numMajor = numForms (numButtons, butPerForm);
if (sFormInit .numMajor > MAX_TAB_SMALL_SHOWN)
{ // we DO use smallTab icons here, so be safe and only display max # of
{
// we DO use smallTab icons here, so be safe and only display max # of
// small sized tab icons. No scrolltabs here.
sFormInit .numMajor = MAX_TAB_SMALL_SHOWN;
}
// set minor tabs to 1
for (i= 0 ; i< sFormInit .numMajor ; i++)
for (i = 0 ; i < sFormInit .numMajor ; i++)
{
sFormInit .aNumMinors [i] = 1 ;
}
Expand All
@@ -891,8 +877,6 @@ bool intAddDroidsAvailForm(void)
return false ;
}
/* Add the droids available buttons */
W_FORMINIT sBFormInit ;
sBFormInit .formID = IDTRANS_DROIDTAB;
Expand All
@@ -907,7 +891,7 @@ bool intAddDroidsAvailForm(void)
ClearSystem0Buffers ();
/* Add the state of repair bar for each droid*/
/* Add the state of repair bar for each droid*/
W_BARINIT sBarInit ;
sBarInit .id = IDTRANS_REPAIRBARSTART;
sBarInit .x = STAT_TIMEBARX;
Expand All
@@ -930,12 +914,11 @@ bool intAddDroidsAvailForm(void)
if ((psDroid->droidType != DROID_TRANSPORTER && psDroid->droidType != DROID_SUPERTRANSPORTER))
{
/* Set the tip and add the button */
// sBFormInit.pTip = psDroid->pName;
sBFormInit .pTip = droidGetName (psDroid);
BufferID = GetSystem0Buffer ();
ASSERT ( BufferID >= 0 ," Unable to acquire stat buffer." );
ASSERT (BufferID >= 0 , " Unable to acquire stat buffer." );
RENDERBUTTON_INUSE (&System0Buffers[BufferID]);
System0Buffers[BufferID].Data = (void *)psDroid;
System0Buffers[BufferID].Data = (void *)psDroid;
sBFormInit .pUserData = &System0Buffers[BufferID];
sBFormInit .pDisplay = intDisplayTransportButton;
Expand All
@@ -944,12 +927,12 @@ bool intAddDroidsAvailForm(void)
return false ;
}
// add bar to indicate stare of repair
// add bar to indicate stare of repair
sBarInit .size = (UWORD) PERCENT (psDroid->body , psDroid->originalBody );
if (sBarInit .size > 100 )
{
sBarInit .size = 100 ;
}
if (sBarInit .size > 100 )
{
sBarInit .size = 100 ;
}
sBarInit .formID = sBFormInit .id ;
// sBarInit.iRange = TBAR_MAX_REPAIR;
Expand All
@@ -960,7 +943,7 @@ bool intAddDroidsAvailForm(void)
/* Update the init struct for the next button */
sBFormInit .id += 1 ;
ASSERT ( sBFormInit .id < IDTRANS_DROIDEND," Too many Droids Built buttons" );
ASSERT (sBFormInit .id < IDTRANS_DROIDEND, " Too many Droids Built buttons" );
sBFormInit .x += OBJ_BUTWIDTH + OBJ_GAP;
if (sBFormInit .x + OBJ_BUTWIDTH + OBJ_GAP > TRANSDROID_TABWIDTH)
Expand All
@@ -974,33 +957,32 @@ bool intAddDroidsAvailForm(void)
sBFormInit .y = AVAIL_STARTY;
sBFormInit .majorID += 1 ;
}
// and bar
sBarInit .id += 1 ;
// and bar
sBarInit .id += 1 ;
}
}
// reset which tab we were on
// reset which tab we were on
if (objMajor > (UWORD)(sFormInit .numMajor - 1 ))
{
// set to last if have lost a tab
widgSetTabs (psWScreen, IDTRANS_DROIDTAB, (UWORD)(sFormInit .numMajor - 1 ), objMinor);
}
else
{
// set to same tab we were on previously
widgSetTabs (psWScreen, IDTRANS_DROIDTAB, objMajor, objMinor);
}
{
// set to last if have lost a tab
widgSetTabs (psWScreen, IDTRANS_DROIDTAB, (UWORD)(sFormInit .numMajor - 1 ), objMinor);
}
else
{
// set to same tab we were on previously
widgSetTabs (psWScreen, IDTRANS_DROIDTAB, objMajor, objMinor);
}
return true ;
}
/* calculates how much space is remaining on the transporter - allows droids to take
up different amount depending on their body size - currently all are set to one!*/
UDWORD calcRemainingCapacity (DROID *psTransporter)
{
SDWORD capacity = TRANSPORTER_CAPACITY;
DROID *psDroid,*psNext;
DROID *psDroid, *psNext;
// If it's dead then just return 0.
if (isDead ((BASE_OBJECT *)psTransporter))
Expand All
@@ -1009,28 +991,30 @@ UDWORD calcRemainingCapacity(DROID *psTransporter)
}
for (psDroid = psTransporter->psGroup ->psList ; psDroid != NULL && psDroid !=
psTransporter; psDroid = psNext)
psTransporter; psDroid = psNext)
{
psNext = psDroid->psGrpNext ;
capacity -= transporterSpaceRequired (psDroid);
}
if (capacity < 0 ) capacity = 0 ;
if (capacity < 0 )
{
capacity = 0 ;
}
return (UDWORD)capacity;
}
bool transporterIsEmpty (const DROID* psTransporter)
bool transporterIsEmpty (const DROID * psTransporter)
{
ASSERT ((psTransporter->droidType == DROID_TRANSPORTER || psTransporter->droidType == DROID_SUPERTRANSPORTER), " Non-transporter droid given" );
// Assume dead droids and non-transporter droids to be empty
return (isDead ((const BASE_OBJECT*)psTransporter)
|| (psTransporter->droidType != DROID_TRANSPORTER
&& psTransporter->droidType != DROID_SUPERTRANSPORTER)
|| psTransporter->psGroup ->psList == NULL
|| psTransporter->psGroup ->psList == psTransporter);
return (isDead ((const BASE_OBJECT *)psTransporter)
|| (psTransporter->droidType != DROID_TRANSPORTER
&& psTransporter->droidType != DROID_SUPERTRANSPORTER)
|| psTransporter->psGroup ->psList == NULL
|| psTransporter->psGroup ->psList == psTransporter);
}
static void intSetTransCapacityLabel (char *Label)
Expand All
@@ -1041,32 +1025,28 @@ static void intSetTransCapacityLabel(char *Label)
{
capacity = calcRemainingCapacity (psCurrTransporter);
// change round the way the remaining capacity is displayed - show 0/10 when empty now
capacity = TRANSPORTER_CAPACITY - capacity;
Label[0 ] = (UBYTE)(' 0' + capacity / 10 );
Label[1 ] = (UBYTE)(' 0' + capacity % 10 );
Label[0 ] = (UBYTE)(' 0' + capacity / 10 );
Label[1 ] = (UBYTE)(' 0' + capacity % 10 );
}
}
/* updates the capacity of the current Transporter*/
void intUpdateTransCapacity (WIDGET *psWidget, W_CONTEXT *psContext)
{
W_LABEL *Label = (W_LABEL*)psWidget;
W_LABEL *Label = (W_LABEL *)psWidget;
intSetTransCapacityLabel (Label->aText );
}
/* Process return codes from the Transporter Screen*/
void intProcessTransporter (UDWORD id)
{
_intProcessTransporter (id);
}
static void _intProcessTransporter (UDWORD id)
{
if (id >= IDTRANS_START && id <= IDTRANS_END)
Expand Down
Expand Up
@@ -1128,41 +1108,40 @@ static void _intProcessTransporter(UDWORD id)
if (psCurrTransporter != NULL && !transporterFlying (psCurrTransporter))
{
intTransporterAddDroid (id);
/* don't need to explicitly refresh here since intRefreshScreen()
is called by intTransporterAddDroid()*/
/* don't need to explicitly refresh here since intRefreshScreen()
is called by intTransporterAddDroid()*/
/* refresh the Contents list */
// intAddTransporterContents();
/* refresh the Avail list */
// intAddDroidsAvailForm();
}
}
// Process form tab clicks.
// Process form tab clicks.
else if (id == IDTRANS_TABFORM)
{
// If tab clicked on Transporter screen then refresh rendered buttons.
{
// If tab clicked on Transporter screen then refresh rendered buttons.
RefreshObjectButtons ();
RefreshTopicButtons ();
}
else if (id == IDTRANS_CONTABFORM)
{
// If tab clicked on Transporter Contents screen then refresh rendered buttons.
}
else if (id == IDTRANS_CONTABFORM)
{
// If tab clicked on Transporter Contents screen then refresh rendered buttons.
RefreshStatsButtons ();
}
else if (id == IDTRANS_DROIDTAB)
{
// If tab clicked on Droids Available screen then refresh rendered buttons.
}
else if (id == IDTRANS_DROIDTAB)
{
// If tab clicked on Droids Available screen then refresh rendered buttons.
RefreshSystem0Buttons ();
}
}
}
/* Remove the Transporter widgets from the screen */
void intRemoveTrans (void )
{
W_TABFORM *Form;
// Start the window close animation.
Form = (W_TABFORM*)widgGetFromID (psWScreen,IDTRANS_FORM);
Form = (W_TABFORM *)widgGetFromID (psWScreen, IDTRANS_FORM);
if (Form)
{
Form->display = intClosePlainForm;
Expand All
@@ -1174,7 +1153,6 @@ void intRemoveTrans(void)
intRemoveTransContent ();
intRemoveTransDroidsAvail ();
intMode = INT_NORMAL;
}
/* Remove the Transporter Content widgets from the screen w/o animation!*/
Expand All
@@ -1190,19 +1168,17 @@ void intRemoveTransNoAnim(void)
/* Remove the Transporter Content widgets from the screen */
void intRemoveTransContent (void )
{
W_TABFORM *Form;
// Start the window close animation.
Form = (W_TABFORM*)widgGetFromID (psWScreen,IDTRANS_CONTENTFORM);
Form = (W_TABFORM *)widgGetFromID (psWScreen, IDTRANS_CONTENTFORM);
if (Form)
{
Form->display = intClosePlainForm;
Form->disableChildren = true ;
Form->pUserData = NULL ; // Used to signal when the close anim has finished.
ClosingTransCont = true ;
}
}
/* Remove the Transporter Content widgets from the screen w/o animation!*/
Expand All
@@ -1215,30 +1191,28 @@ void intRemoveTransContentNoAnim(void)
/* Remove the Transporter Droids Avail widgets from the screen */
void intRemoveTransDroidsAvail (void )
{
W_TABFORM *Form;
// Start the window close animation.
Form = (W_TABFORM*)widgGetFromID (psWScreen,IDTRANS_DROIDS);
Form = (W_TABFORM *)widgGetFromID (psWScreen, IDTRANS_DROIDS);
if (Form)
{
Form->display = intClosePlainForm;
Form->disableChildren = true ;
Form->pUserData = NULL ; // Used to signal when the close anim has finished.
ClosingTransDroids = true ;
// remember which tab we were on
widgGetTabs (psWScreen, IDTRANS_DROIDTAB, &objMajor, &objMinor);
// remember which tab we were on
widgGetTabs (psWScreen, IDTRANS_DROIDTAB, &objMajor, &objMinor);
}
}
/* Remove the Transporter Droids Avail widgets from the screen w/o animation!*/
void intRemoveTransDroidsAvailNoAnim (void )
{
if (widgGetFromID (psWScreen,IDTRANS_DROIDS) != NULL )
if (widgGetFromID (psWScreen, IDTRANS_DROIDS) != NULL )
{
// remember which tab we were on
widgGetTabs (psWScreen, IDTRANS_DROIDTAB, &objMajor, &objMinor);
// remember which tab we were on
widgGetTabs (psWScreen, IDTRANS_DROIDTAB, &objMajor, &objMinor);
// remove main screen
widgDelete (psWScreen, IDTRANS_DROIDS);
Expand All
@@ -1256,11 +1230,11 @@ void setCurrentTransporter(UDWORD id)
// loop thru all the droids to find the selected one
for (psDroid = transInterfaceDroidList (); psDroid != NULL ; psDroid =
psDroid->psNext )
psDroid->psNext )
{
if ((psDroid->droidType == DROID_TRANSPORTER || psDroid->droidType == DROID_SUPERTRANSPORTER) &&
(psDroid->action != DACTION_TRANSPORTOUT &&
psDroid->action != DACTION_TRANSPORTIN ) )
(psDroid->action != DACTION_TRANSPORTOUT &&
psDroid->action != DACTION_TRANSPORTIN) )
{
if (currID == id)
{
Expand All
@@ -1273,7 +1247,7 @@ void setCurrentTransporter(UDWORD id)
{
psCurrTransporter = psDroid;
// set the data for the transporter timer
widgSetUserData (psWScreen, IDTRANTIMER_DISPLAY, (void *)psCurrTransporter);
widgSetUserData (psWScreen, IDTRANTIMER_DISPLAY, (void *)psCurrTransporter);
}
}
Expand Down
Expand Up
@@ -1363,7 +1337,7 @@ void intTransporterAddDroid(UDWORD id)
DROID *psDroid, *psNext;
UDWORD currID;
ASSERT ( psCurrTransporter != NULL , " intTransporterAddUnit:can't remove units" );
ASSERT (psCurrTransporter != NULL , " intTransporterAddUnit:can't remove units" );
currID = IDTRANS_DROIDSTART;
for (psDroid = transInterfaceDroidList (); psDroid != NULL ; psDroid = psNext)
Expand All
@@ -1384,18 +1358,17 @@ void intTransporterAddDroid(UDWORD id)
}
}
/* Adds a droid to the transporter, removing it from the world */
void transporterAddDroid (DROID *psTransporter, DROID *psDroidToAdd)
{
bool bDroidRemoved;
ASSERT ( psTransporter != NULL , " Was passed a NULL transporter" );
ASSERT ( psDroidToAdd != NULL , " Was passed a NULL droid, can't add to transporter" );
ASSERT (psTransporter != NULL , " Was passed a NULL transporter" );
ASSERT (psDroidToAdd != NULL , " Was passed a NULL droid, can't add to transporter" );
if (!psTransporter || !psDroidToAdd)
{
debug (LOG_ERROR," We can't add the unit to the transporter!" );
debug (LOG_ERROR, " We can't add the unit to the transporter!" );
return ;
}
/* check for space */
Expand Down
Expand Up
@@ -1427,7 +1400,7 @@ void transporterAddDroid(DROID *psTransporter, DROID *psDroidToAdd)
}
else
{
debug (LOG_ERROR," droid %d not found, so nothing added to transporter!" ,psDroidToAdd->id );
debug (LOG_ERROR, " droid %d not found, so nothing added to transporter!" , psDroidToAdd->id );
}
if (onMission)
{
Expand All
@@ -1449,15 +1422,15 @@ bool checkTransporterSpace(DROID const *psTransporter, DROID const *psAssigned,
DROID *psDroid, *psNext;
UDWORD capacity;
ASSERT (psTransporter != NULL , " Invalid droid pointer" );
ASSERT (psAssigned != NULL , " Invalid droid pointer" );
ASSERT ((psTransporter->droidType == DROID_TRANSPORTER || psTransporter->droidType == DROID_SUPERTRANSPORTER), " Droid is not a Transporter" );
ASSERT (psTransporter->psGroup != NULL , " tranporter doesn't have a group" );
ASSERT (psTransporter != NULL , " Invalid droid pointer" );
ASSERT (psAssigned != NULL , " Invalid droid pointer" );
ASSERT ((psTransporter->droidType == DROID_TRANSPORTER || psTransporter->droidType == DROID_SUPERTRANSPORTER), " Droid is not a Transporter" );
ASSERT (psTransporter->psGroup != NULL , " tranporter doesn't have a group" );
// work out how much space is currently left
capacity = TRANSPORTER_CAPACITY;
for (psDroid = psTransporter->psGroup ->psList ; psDroid != NULL && psDroid !=
psTransporter; psDroid = psNext)
psTransporter; psDroid = psNext)
{
psNext = psDroid->psGrpNext ;
capacity -= transporterSpaceRequired (psDroid);
Expand All
@@ -1466,9 +1439,9 @@ bool checkTransporterSpace(DROID const *psTransporter, DROID const *psAssigned,
{
// when full flash the transporter button
if (mayFlash && capacity - transporterSpaceRequired (psAssigned) == 0 )
{
flashMissionButton (IDTRANS_LAUNCH);
}
{
flashMissionButton (IDTRANS_LAUNCH);
}
return true ;
}
else
Expand Down
Expand Up
@@ -1501,7 +1474,7 @@ UDWORD transporterSpaceRequired(DROID const *psDroid)
size = HEAVY_DROID;
break ;
default :
ASSERT ( false , " transporterSpaceRequired: Unknown Droid size" );
ASSERT (false , " transporterSpaceRequired: Unknown Droid size" );
size = 0 ;
break ;
}
Expand All
@@ -1510,7 +1483,7 @@ UDWORD transporterSpaceRequired(DROID const *psDroid)
}
/* sets which list of droids to use for the transporter interface*/
DROID * transInterfaceDroidList (void )
DROID *transInterfaceDroidList (void )
{
if (onMission)
{
Expand All
@@ -1522,59 +1495,47 @@ DROID * transInterfaceDroidList(void)
}
}
UDWORD transporterGetLaunchTime ( void )
UDWORD transporterGetLaunchTime (void )
{
return g_iLaunchTime;
}
void transporterSetLaunchTime (UDWORD time)
{
g_iLaunchTime = time ;
g_iLaunchTime = time ;
}
/* launches the defined transporter to the offworld map*/
bool launchTransporter (DROID *psTransporter)
{
UDWORD iX, iY;
// close the interface
intResetScreen (true );
// Hmmm...Only do this if were at our home base about to go off world.
// //deselect all droids/structs etc
// clearSelection();
// this launches the mission if on homebase when the button is pressed
if (!onMission)
{
// tell the transporter to move to the new offworld location
missionGetTransporterExit ( psTransporter->player , &iX, &iY );
missionGetTransporterExit (psTransporter->player , &iX, &iY);
orderDroidLoc (psTransporter, DORDER_TRANSPORTOUT, iX, iY, ModeQueue);
// g_iLaunchTime = gameTime;
transporterSetLaunchTime (gameTime);
transporterSetLaunchTime (gameTime);
}
// otherwise just launches the Transporter
else
{
if (psTransporter->droidType != DROID_TRANSPORTER && psTransporter->droidType != DROID_SUPERTRANSPORTER)
{
ASSERT ( false , " Invalid Transporter Droid" );
ASSERT (false , " Invalid Transporter Droid" );
return false ;
}
// remove out of stored list and add to current Droid list
// removeDroid(psTransporter, mission.apsDroidLists);
// addDroid(psTransporter, apsDroidLists);
// need to put the Transporter down at a specified location
// psTransporter->pos.x = getLandingX(psTransporter->player);
// psTransporter->pos.y = getLandingY(psTransporter->player);
// unloadTransporter(psTransporter, psTransporter->pos.x, psTransporter->pos.y, false);
orderDroid (psTransporter, DORDER_TRANSPORTIN, ModeImmediate);
/* set action transporter waits for timer */
actionDroid ( psTransporter, DACTION_TRANSPORTWAITTOFLYIN );
actionDroid (psTransporter, DACTION_TRANSPORTWAITTOFLYIN);
missionSetReinforcementTime ( gameTime );
missionSetReinforcementTime (gameTime);
}
return true ;
Expand All
@@ -1590,23 +1551,23 @@ bool updateTransporter(DROID *psTransporter)
ASSERT_OR_RETURN (true , (psTransporter->droidType == DROID_TRANSPORTER || psTransporter->droidType == DROID_SUPERTRANSPORTER), " Invalid droid type" );
// if not moving to mission site, exit
if ( psTransporter->action != DACTION_TRANSPORTOUT &&
psTransporter->action != DACTION_TRANSPORTIN )
if (psTransporter->action != DACTION_TRANSPORTOUT &&
psTransporter->action != DACTION_TRANSPORTIN)
{
return true ;
}
/* if the transporter (selectedPlayer only) is moving droids to safety and
all remaining droids are destoyed then we need to flag the end of mission
as long as we're not flying out*/
if (psTransporter->player == selectedPlayer && getDroidsToSafetyFlag ()
&& psTransporter->action != DACTION_TRANSPORTOUT)
{
// if there aren't any droids left...
if (!missionDroidsRemaining (selectedPlayer))
{
// Set the Transporter to have arrived at its destination
psTransporter->action = DACTION_NONE;
/* if the transporter (selectedPlayer only) is moving droids to safety and
all remaining droids are destoyed then we need to flag the end of mission
as long as we're not flying out*/
if (psTransporter->player == selectedPlayer && getDroidsToSafetyFlag ()
&& psTransporter->action != DACTION_TRANSPORTOUT)
{
// if there aren't any droids left...
if (!missionDroidsRemaining (selectedPlayer))
{
// Set the Transporter to have arrived at its destination
psTransporter->action = DACTION_NONE;
// the script can call startMission for this callback for offworld missions
eventFireCallbackTrigger ((TRIGGER_TYPE)CALL_START_NEXT_LEVEL);
Expand All
@@ -1615,49 +1576,44 @@ bool updateTransporter(DROID *psTransporter)
// clear order
psTransporter->order = DroidOrder (DORDER_NONE);
return true ;
}
}
return true ;
}
}
// moving to a location
// if we're coming back for more droids then we want the transporter to
// fly to edge of map before turning round again
if ( psTransporter->sMove .Status == MOVEINACTIVE ||
psTransporter->sMove .Status == MOVEHOVER ||
(psTransporter->action == DACTION_TRANSPORTOUT && !missionIsOffworld () &&
(gameTime> transporterGetLaunchTime ()+ TRANSPORTOUT_TIME) &&
!getDroidsToSafetyFlag () ) )
{
audio_StopObjTrack ( psTransporter, ID_SOUND_BLIMP_FLIGHT );
if ( psTransporter->action == DACTION_TRANSPORTIN )
// if we're coming back for more droids then we want the transporter to
// fly to edge of map before turning round again
if (psTransporter->sMove .Status == MOVEINACTIVE ||
psTransporter->sMove .Status == MOVEHOVER ||
(psTransporter->action == DACTION_TRANSPORTOUT && !missionIsOffworld () &&
(gameTime > transporterGetLaunchTime () + TRANSPORTOUT_TIME) &&
!getDroidsToSafetyFlag ()) )
{
audio_StopObjTrack (psTransporter, ID_SOUND_BLIMP_FLIGHT);
if (psTransporter->action == DACTION_TRANSPORTIN)
{
/* !!!! GJ Hack - should be landing audio !!!! */
audio_PlayObjDynamicTrack ( psTransporter, ID_SOUND_BLIMP_TAKE_OFF, NULL );
audio_PlayObjDynamicTrack (psTransporter, ID_SOUND_BLIMP_TAKE_OFF, NULL );
}
// DON@T PLAY AUDIO FOR THE FIRST TRANSPORTER LOAD...AB 9/2/99
// show if selectedPlayer's transporter
// if ( onMission && psTransporter->action == DACTION_TRANSPORTIN &&
// psTransporter->player == selectedPlayer)
// changed onMission to missionForReInforcements() to cater for cam2A/cam3A - AB 4/2/99
if (!bFirstTransporter && missionForReInforcements () &&
psTransporter->action == DACTION_TRANSPORTIN &&
psTransporter->player == selectedPlayer)
if (!bFirstTransporter && missionForReInforcements () &&
psTransporter->action == DACTION_TRANSPORTIN &&
psTransporter->player == selectedPlayer)
{
// play reinforcements have arrived message
audio_QueueTrackPos ( ID_SOUND_TRANSPORT_LANDING,
psTransporter->pos .x , psTransporter->pos .y , psTransporter->pos .z );
addConsoleMessage (_ (" Reinforcements landing" ),LEFT_JUSTIFY,SYSTEM_MESSAGE);
// play reinforcements have arrived message
audio_QueueTrackPos (ID_SOUND_TRANSPORT_LANDING,
psTransporter->pos .x , psTransporter->pos .y , psTransporter->pos .z );
addConsoleMessage (_ (" Reinforcements landing" ), LEFT_JUSTIFY, SYSTEM_MESSAGE);
// reset the data for the transporter timer
widgSetUserData (psWScreen, IDTRANTIMER_DISPLAY, (void *)NULL );
widgSetUserData (psWScreen, IDTRANTIMER_DISPLAY, (void *)NULL );
return true ;
}
// Got to destination
psTransporter->action = DACTION_NONE;
// reset the flag to trigger the audio message
bFirstTransporter = false ;
// reset the flag to trigger the audio message
bFirstTransporter = false ;
return true ;
}
Expand All
@@ -1670,7 +1626,7 @@ bool updateTransporter(DROID *psTransporter)
void processLaunchTransporter (void )
{
UDWORD capacity = TRANSPORTER_CAPACITY;
W_CLICKFORM *psForm;
W_CLICKFORM *psForm;
// launch the Transporter
if (psCurrTransporter)
Expand All
@@ -1679,34 +1635,34 @@ void processLaunchTransporter(void)
capacity = calcRemainingCapacity (psCurrTransporter);
if (capacity != TRANSPORTER_CAPACITY)
{
// make sure the button doesn't flash once launched
stopMissionButtonFlash (IDTRANS_LAUNCH);
// disable the form so can't add any more droids into the transporter
psForm = (W_CLICKFORM*)widgGetFromID (psWScreen,IDTRANS_LAUNCH);
if (psForm)
{
formSetClickState (psForm, WBUT_LOCK);
}
// disable the form so can't add any more droids into the transporter
psForm = (W_CLICKFORM*)widgGetFromID (psWScreen,IDTRANTIMER_BUTTON);
if (psForm)
{
formSetClickState (psForm, WBUT_LOCK);
}
// make sure the button doesn't flash once launched
stopMissionButtonFlash (IDTRANS_LAUNCH);
// disable the form so can't add any more droids into the transporter
psForm = (W_CLICKFORM *)widgGetFromID (psWScreen, IDTRANS_LAUNCH);
if (psForm)
{
formSetClickState (psForm, WBUT_LOCK);
}
// disable the form so can't add any more droids into the transporter
psForm = (W_CLICKFORM *)widgGetFromID (psWScreen, IDTRANTIMER_BUTTON);
if (psForm)
{
formSetClickState (psForm, WBUT_LOCK);
}
launchTransporter (psCurrTransporter);
// set the data for the transporter timer
widgSetUserData (psWScreen, IDTRANTIMER_DISPLAY,
(void *)psCurrTransporter);
(void *)psCurrTransporter);
eventFireCallbackTrigger ((TRIGGER_TYPE)CALL_LAUNCH_TRANSPORTER);
triggerEvent (TRIGGER_LAUNCH_TRANSPORTER);
}
}
}
SDWORD bobTransporterHeight ( void )
SDWORD bobTransporterHeight (void )
{
// Because 4320/12 = 360 degrees
// this gives us a bob frequency of 4.32 seconds.
Expand All
@@ -1721,87 +1677,83 @@ SDWORD bobTransporterHeight( void )
/* causes one of the mission buttons (Launch Button or Mission Timer) to start flashing*/
void flashMissionButton (UDWORD buttonID)
{
W_TABFORM *psForm;
// get the button from the id
psForm = (W_TABFORM*)widgGetFromID (psWScreen,buttonID);
psForm = (W_TABFORM *)widgGetFromID (psWScreen, buttonID);
if (psForm)
{
switch (buttonID)
{
case IDTRANS_LAUNCH:
psForm->UserData = PACKDWORD_TRI (1 ,IMAGE_LAUNCHDOWN,IMAGE_LAUNCHUP);
break ;
case IDTIMER_FORM:
psForm->UserData = PACKDWORD_TRI (1 ,IMAGE_MISSION_CLOCK,IMAGE_MISSION_CLOCK_UP);
break ;
default :
// do nothing other than in debug
ASSERT ( false , " flashMissionButton: Unknown button ID" );
break ;
}
switch (buttonID)
{
case IDTRANS_LAUNCH:
psForm->UserData = PACKDWORD_TRI (1 , IMAGE_LAUNCHDOWN, IMAGE_LAUNCHUP);
break ;
case IDTIMER_FORM:
psForm->UserData = PACKDWORD_TRI (1 , IMAGE_MISSION_CLOCK, IMAGE_MISSION_CLOCK_UP);
break ;
default :
// do nothing other than in debug
ASSERT (false , " flashMissionButton: Unknown button ID" );
break ;
}
}
}
/* stops one of the mission buttons (Launch Button or Mission Timer) flashing*/
void stopMissionButtonFlash (UDWORD buttonID)
{
W_TABFORM *psForm;
// get the button from the id
psForm = (W_TABFORM*)widgGetFromID (psWScreen,buttonID);
psForm = (W_TABFORM *)widgGetFromID (psWScreen, buttonID);
if (psForm)
{
switch (buttonID)
{
case IDTRANS_LAUNCH:
psForm->UserData = PACKDWORD_TRI (0 ,IMAGE_LAUNCHDOWN,IMAGE_LAUNCHUP);
break ;
case IDTIMER_FORM:
psForm->UserData = PACKDWORD_TRI (0 ,IMAGE_MISSION_CLOCK,IMAGE_MISSION_CLOCK_UP);
break ;
default :
// do nothing other than in debug
ASSERT ( false , " stopMissionButtonFlash: Unknown button ID" );
break ;
}
switch (buttonID)
{
case IDTRANS_LAUNCH:
psForm->UserData = PACKDWORD_TRI (0 , IMAGE_LAUNCHDOWN, IMAGE_LAUNCHUP);
break ;
case IDTIMER_FORM:
psForm->UserData = PACKDWORD_TRI (0 , IMAGE_MISSION_CLOCK, IMAGE_MISSION_CLOCK_UP);
break ;
default :
// do nothing other than in debug
ASSERT (false , " stopMissionButtonFlash: Unknown button ID" );
break ;
}
}
}
/* set current transporter (for script callbacks) */
void transporterSetScriptCurrent ( DROID *psTransporter )
void transporterSetScriptCurrent (DROID *psTransporter)
{
g_psCurScriptTransporter = psTransporter;
}
/* get current transporter (for script callbacks) */
DROID * transporterGetScriptCurrent ( void )
DROID *transporterGetScriptCurrent (void )
{
return g_psCurScriptTransporter;
}
/* called when a Transporter has arrived back at the LZ when sending droids to safety*/
void resetTransporter ()
{
W_CLICKFORM *psForm;
// enable the form so can add more droids into the transporter
psForm = (W_CLICKFORM*)widgGetFromID (psWScreen,IDTRANS_LAUNCH);
if (psForm)
{
formSetClickState (psForm, 0 );
}
W_CLICKFORM *psForm;
// enable the form so can add more droids into the transporter
psForm = (W_CLICKFORM *)widgGetFromID (psWScreen, IDTRANS_LAUNCH);
if (psForm)
{
formSetClickState (psForm, 0 );
}
}
/* checks the order of the droid to see if its currently flying*/
bool transporterFlying (DROID *psTransporter)
{
ASSERT (psTransporter != NULL , " Invalid droid pointer" );
ASSERT ((psTransporter->droidType == DROID_TRANSPORTER || psTransporter->droidType == DROID_SUPERTRANSPORTER), " Droid is not a Transporter" );
ASSERT (psTransporter != NULL , " Invalid droid pointer" );
ASSERT ((psTransporter->droidType == DROID_TRANSPORTER || psTransporter->droidType == DROID_SUPERTRANSPORTER), " Droid is not a Transporter" );
return psTransporter->order .type == DORDER_TRANSPORTOUT ||
psTransporter->order .type == DORDER_TRANSPORTIN ||
Expand All
@@ -1818,5 +1770,5 @@ bool transporterFlying(DROID *psTransporter)
// initialise the flag to indicate the first transporter has arrived - set in startMission()
void initFirstTransporterFlag (void )
{
bFirstTransporter = true ;
bFirstTransporter = true ;
}