Fix for comm design flaw: separating uninit_race() into post_encounter() and real uninit_race(); fixes bug #519

git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@1695 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
avolkov
2005-04-29 10:33:38 +00:00
parent 0a9d866167
commit d10816a26b
29 changed files with 227 additions and 23 deletions
+8 -2
View File
@@ -2051,7 +2051,8 @@ HailAlien (void)
(*CommData.init_encounter_func) (); (*CommData.init_encounter_func) ();
DoInput ((PVOID)&ES, FALSE); DoInput ((PVOID)&ES, FALSE);
if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD))) if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD)))
(*CommData.uninit_encounter_func) (); (*CommData.post_encounter_func) ();
(*CommData.uninit_encounter_func) ();
LockMutex (GraphicsLock); LockMutex (GraphicsLock);
@@ -2175,7 +2176,12 @@ InitCommunication (RESOURCE which_comm)
cur_comm = 0; cur_comm = 0;
} }
else if (LocDataPtr) else if (LocDataPtr)
(*CommData.uninit_encounter_func) (); { // only when comm initied successfully
if (!(GLOBAL (CurrentActivity) & (CHECK_ABORT | CHECK_LOAD)))
(*CommData.post_encounter_func) (); // process states
(*CommData.uninit_encounter_func) (); // cleanup
}
SetResourceIndex (hOldIndex); SetResourceIndex (hOldIndex);
CloseResourceIndex (hIndex); CloseResourceIndex (hIndex);
+8 -2
View File
@@ -26,6 +26,7 @@
static LOCDATA arilou_desc = static LOCDATA arilou_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)ARILOU_PMAP_ANIM, /* AlienFrame */ (FRAME)ARILOU_PMAP_ANIM, /* AlienFrame */
(FONT)ARILOU_FONT, /* AlienFont */ (FONT)ARILOU_FONT, /* AlienFont */
@@ -784,6 +785,12 @@ ExitIntro:
static COUNT static COUNT
uninit_arilou (void) uninit_arilou (void)
{
return (0);
}
static void
post_arilou_enc (void)
{ {
BYTE Manner; BYTE Manner;
@@ -810,8 +817,6 @@ uninit_arilou (void)
SET_GAME_STATE (ARILOU_MANNER, 3); SET_GAME_STATE (ARILOU_MANNER, 3);
} }
} }
return (0);
} }
LOCDATAPTR LOCDATAPTR
@@ -820,6 +825,7 @@ init_arilou_comm (void)
LOCDATAPTR retval; LOCDATAPTR retval;
arilou_desc.init_encounter_func = Intro; arilou_desc.init_encounter_func = Intro;
arilou_desc.post_encounter_func = post_arilou_enc;
arilou_desc.uninit_encounter_func = uninit_arilou; arilou_desc.uninit_encounter_func = uninit_arilou;
arilou_desc.AlienTextTemplate.baseline.x = arilou_desc.AlienTextTemplate.baseline.x =
+8
View File
@@ -23,6 +23,7 @@
static LOCDATA blackurq_desc = static LOCDATA blackurq_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)BLACKURQ_PMAP_ANIM, /* AlienFrame */ (FRAME)BLACKURQ_PMAP_ANIM, /* AlienFrame */
(FONT)BLACKURQ_FONT, /* AlienFont */ (FONT)BLACKURQ_FONT, /* AlienFont */
@@ -529,12 +530,19 @@ uninit_blackurq (void)
return (0); return (0);
} }
static void
post_blackurq_enc (void)
{
// nothing defined so far
}
LOCDATAPTR LOCDATAPTR
init_blackurq_comm (void) init_blackurq_comm (void)
{ {
LOCDATAPTR retval; LOCDATAPTR retval;
blackurq_desc.init_encounter_func = Intro; blackurq_desc.init_encounter_func = Intro;
blackurq_desc.post_encounter_func = post_blackurq_enc;
blackurq_desc.uninit_encounter_func = uninit_blackurq; blackurq_desc.uninit_encounter_func = uninit_blackurq;
blackurq_desc.AlienTextTemplate.baseline.x = blackurq_desc.AlienTextTemplate.baseline.x =
+8
View File
@@ -26,6 +26,7 @@
static LOCDATA chmmr_desc = static LOCDATA chmmr_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)CHMMR_PMAP_ANIM, /* AlienFrame */ (FRAME)CHMMR_PMAP_ANIM, /* AlienFrame */
(FONT)CHMMR_FONT, /* AlienFont */ (FONT)CHMMR_FONT, /* AlienFont */
@@ -600,12 +601,19 @@ uninit_chmmr (void)
return (0); return (0);
} }
static void
post_chmmr_enc (void)
{
// nothing defined so far
}
LOCDATAPTR LOCDATAPTR
init_chmmr_comm (void) init_chmmr_comm (void)
{ {
LOCDATAPTR retval; LOCDATAPTR retval;
chmmr_desc.init_encounter_func = Intro; chmmr_desc.init_encounter_func = Intro;
chmmr_desc.post_encounter_func = post_chmmr_enc;
chmmr_desc.uninit_encounter_func = uninit_chmmr; chmmr_desc.uninit_encounter_func = uninit_chmmr;
chmmr_desc.AlienTextTemplate.baseline.x = chmmr_desc.AlienTextTemplate.baseline.x =
+8
View File
@@ -25,6 +25,7 @@
static LOCDATA commander_desc = static LOCDATA commander_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)COMMANDER_PMAP_ANIM, /* AlienFrame */ (FRAME)COMMANDER_PMAP_ANIM, /* AlienFrame */
(FONT)COMMANDER_FONT, /* AlienFont */ (FONT)COMMANDER_FONT, /* AlienFont */
@@ -669,12 +670,19 @@ uninit_commander (void)
return (0); return (0);
} }
static void
post_commander_enc (void)
{
// nothing defined so far
}
LOCDATAPTR LOCDATAPTR
init_commander_comm () init_commander_comm ()
{ {
LOCDATAPTR retval; LOCDATAPTR retval;
commander_desc.init_encounter_func = Intro; commander_desc.init_encounter_func = Intro;
commander_desc.post_encounter_func = post_commander_enc;
commander_desc.uninit_encounter_func = uninit_commander; commander_desc.uninit_encounter_func = uninit_commander;
if (GET_GAME_STATE (RADIOACTIVES_PROVIDED)) if (GET_GAME_STATE (RADIOACTIVES_PROVIDED))
+8 -2
View File
@@ -27,6 +27,7 @@
static LOCDATA druuge_desc = static LOCDATA druuge_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)DRUUGE_PMAP_ANIM, /* AlienFrame */ (FRAME)DRUUGE_PMAP_ANIM, /* AlienFrame */
(FONT)DRUUGE_FONT, /* AlienFont */ (FONT)DRUUGE_FONT, /* AlienFont */
@@ -876,6 +877,12 @@ ExitIntro:
static COUNT static COUNT
uninit_druuge (void) uninit_druuge (void)
{
return (0);
}
static void
post_druuge_enc (void)
{ {
if (GET_GAME_STATE (BATTLE_SEGUE) == 1 if (GET_GAME_STATE (BATTLE_SEGUE) == 1
&& !GET_GAME_STATE (DRUUGE_MANNER)) && !GET_GAME_STATE (DRUUGE_MANNER))
@@ -886,8 +893,6 @@ uninit_druuge (void)
SET_GAME_STATE (DRUUGE_VISITS, 0); SET_GAME_STATE (DRUUGE_VISITS, 0);
} }
} }
return (0);
} }
LOCDATAPTR LOCDATAPTR
@@ -896,6 +901,7 @@ init_druuge_comm (void)
LOCDATAPTR retval; LOCDATAPTR retval;
druuge_desc.init_encounter_func = Intro; druuge_desc.init_encounter_func = Intro;
druuge_desc.post_encounter_func = post_druuge_enc;
druuge_desc.uninit_encounter_func = uninit_druuge; druuge_desc.uninit_encounter_func = uninit_druuge;
druuge_desc.AlienTextTemplate.baseline.x = druuge_desc.AlienTextTemplate.baseline.x =
+8
View File
@@ -26,6 +26,7 @@
static LOCDATA ilwrath_desc = static LOCDATA ilwrath_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)ILWRATH_PMAP_ANIM, /* AlienFrame */ (FRAME)ILWRATH_PMAP_ANIM, /* AlienFrame */
(FONT)ILWRATH_FONT, /* AlienFont */ (FONT)ILWRATH_FONT, /* AlienFont */
@@ -601,12 +602,19 @@ uninit_ilwrath (void)
return (0); return (0);
} }
static void
post_ilwrath_enc (void)
{
// nothing defined so far
}
LOCDATAPTR LOCDATAPTR
init_ilwrath_comm (void) init_ilwrath_comm (void)
{ {
LOCDATAPTR retval; LOCDATAPTR retval;
ilwrath_desc.init_encounter_func = Intro; ilwrath_desc.init_encounter_func = Intro;
ilwrath_desc.post_encounter_func = post_ilwrath_enc;
ilwrath_desc.uninit_encounter_func = uninit_ilwrath; ilwrath_desc.uninit_encounter_func = uninit_ilwrath;
ilwrath_desc.AlienTextTemplate.baseline.x = ilwrath_desc.AlienTextTemplate.baseline.x =
+8 -2
View File
@@ -42,6 +42,7 @@ static NUMBER_SPEECH_DESC melnorme_numbers_english;
static LOCDATA melnorme_desc = static LOCDATA melnorme_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)MELNORME_PMAP_ANIM, /* AlienFrame */ (FRAME)MELNORME_PMAP_ANIM, /* AlienFrame */
(FONT)MELNORME_FONT, /* AlienFont */ (FONT)MELNORME_FONT, /* AlienFont */
@@ -1839,12 +1840,16 @@ Intro (void)
static COUNT static COUNT
uninit_melnorme (void) uninit_melnorme (void)
{
return (0);
}
static void
post_melnorme_enc (void)
{ {
LockMutex (GraphicsLock); LockMutex (GraphicsLock);
DrawStatusMessage (0); DrawStatusMessage (0);
UnlockMutex (GraphicsLock); UnlockMutex (GraphicsLock);
return (0);
} }
LOCDATAPTR LOCDATAPTR
@@ -1853,6 +1858,7 @@ init_melnorme_comm (void)
LOCDATAPTR retval; LOCDATAPTR retval;
melnorme_desc.init_encounter_func = Intro; melnorme_desc.init_encounter_func = Intro;
melnorme_desc.post_encounter_func = post_melnorme_enc;
melnorme_desc.uninit_encounter_func = uninit_melnorme; melnorme_desc.uninit_encounter_func = uninit_melnorme;
melnorme_desc.AlienTextTemplate.baseline.x = melnorme_desc.AlienTextTemplate.baseline.x =
+8
View File
@@ -27,6 +27,7 @@
static LOCDATA mycon_desc = static LOCDATA mycon_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)MYCON_PMAP_ANIM, /* AlienFrame */ (FRAME)MYCON_PMAP_ANIM, /* AlienFrame */
(FONT)MYCON_FONT, /* AlienFont */ (FONT)MYCON_FONT, /* AlienFont */
@@ -599,12 +600,19 @@ uninit_mycon (void)
return (0); return (0);
} }
static void
post_mycon_enc (void)
{
// nothing defined so far
}
LOCDATAPTR LOCDATAPTR
init_mycon_comm (void) init_mycon_comm (void)
{ {
LOCDATAPTR retval; LOCDATAPTR retval;
mycon_desc.init_encounter_func = Intro; mycon_desc.init_encounter_func = Intro;
mycon_desc.post_encounter_func = post_mycon_enc;
mycon_desc.uninit_encounter_func = uninit_mycon; mycon_desc.uninit_encounter_func = uninit_mycon;
mycon_desc.AlienTextTemplate.baseline.x = mycon_desc.AlienTextTemplate.baseline.x =
+8 -2
View File
@@ -25,6 +25,7 @@
static LOCDATA orz_desc = static LOCDATA orz_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)ORZ_PMAP_ANIM, /* AlienFrame */ (FRAME)ORZ_PMAP_ANIM, /* AlienFrame */
(FONT)ORZ_FONT, /* AlienFont */ (FONT)ORZ_FONT, /* AlienFont */
@@ -847,6 +848,12 @@ ExitIntro:
static COUNT static COUNT
uninit_orz (void) uninit_orz (void)
{
return (0);
}
static void
post_orz_enc (void)
{ {
BYTE Manner; BYTE Manner;
@@ -861,8 +868,6 @@ uninit_orz (void)
SET_GAME_STATE (TAALO_VISITS, 0); SET_GAME_STATE (TAALO_VISITS, 0);
} }
} }
return (0);
} }
LOCDATAPTR LOCDATAPTR
@@ -871,6 +876,7 @@ init_orz_comm (void)
LOCDATAPTR retval; LOCDATAPTR retval;
orz_desc.init_encounter_func = Intro; orz_desc.init_encounter_func = Intro;
orz_desc.post_encounter_func = post_orz_enc;
orz_desc.uninit_encounter_func = uninit_orz; orz_desc.uninit_encounter_func = uninit_orz;
orz_desc.AlienTextTemplate.baseline.x = orz_desc.AlienTextTemplate.baseline.x =
+8 -2
View File
@@ -27,6 +27,7 @@
static LOCDATA pkunk_desc = static LOCDATA pkunk_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)PKUNK_PMAP_ANIM, /* AlienFrame */ (FRAME)PKUNK_PMAP_ANIM, /* AlienFrame */
(FONT)PKUNK_FONT, /* AlienFont */ (FONT)PKUNK_FONT, /* AlienFont */
@@ -1083,6 +1084,12 @@ ExitIntro:
// Called after combat or communications // Called after combat or communications
static COUNT static COUNT
uninit_pkunk (void) uninit_pkunk (void)
{
return (0);
}
static void
post_pkunk_enc (void)
{ {
BYTE Manner; BYTE Manner;
@@ -1096,8 +1103,6 @@ uninit_pkunk (void)
SET_GAME_STATE (PKUNK_HOME_VISITS, 0); SET_GAME_STATE (PKUNK_HOME_VISITS, 0);
} }
} }
return (0);
} }
LOCDATAPTR LOCDATAPTR
@@ -1106,6 +1111,7 @@ init_pkunk_comm (void)
LOCDATAPTR retval; LOCDATAPTR retval;
pkunk_desc.init_encounter_func = Intro; pkunk_desc.init_encounter_func = Intro;
pkunk_desc.post_encounter_func = post_pkunk_enc;
pkunk_desc.uninit_encounter_func = uninit_pkunk; pkunk_desc.uninit_encounter_func = uninit_pkunk;
pkunk_desc.AlienTextTemplate.baseline.x = pkunk_desc.AlienTextTemplate.baseline.x =
+8
View File
@@ -26,6 +26,7 @@
static LOCDATA yehat_desc = static LOCDATA yehat_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)YEHAT_PMAP_ANIM, /* AlienFrame */ (FRAME)YEHAT_PMAP_ANIM, /* AlienFrame */
(FONT)YEHAT_FONT, /* AlienFont */ (FONT)YEHAT_FONT, /* AlienFont */
@@ -411,12 +412,19 @@ uninit_yehat (void)
return (0); return (0);
} }
static void
post_yehat_enc (void)
{
// nothing defined so far
}
LOCDATAPTR LOCDATAPTR
init_rebel_yehat_comm (void) init_rebel_yehat_comm (void)
{ {
LOCDATAPTR retval; LOCDATAPTR retval;
yehat_desc.init_encounter_func = Intro; yehat_desc.init_encounter_func = Intro;
yehat_desc.post_encounter_func = post_yehat_enc;
yehat_desc.uninit_encounter_func = uninit_yehat; yehat_desc.uninit_encounter_func = uninit_yehat;
yehat_desc.AlienTextTemplate.baseline.x = SIS_SCREEN_WIDTH * 2 / 3; yehat_desc.AlienTextTemplate.baseline.x = SIS_SCREEN_WIDTH * 2 / 3;
+8
View File
@@ -26,6 +26,7 @@
static LOCDATA shofixti_desc = static LOCDATA shofixti_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)SHOFIXTI_PMAP_ANIM, /* AlienFrame */ (FRAME)SHOFIXTI_PMAP_ANIM, /* AlienFrame */
(FONT)SHOFIXTI_FONT, /* AlienFont */ (FONT)SHOFIXTI_FONT, /* AlienFont */
@@ -629,12 +630,19 @@ uninit_shofixti (void)
return(0); return(0);
} }
static void
post_shofixti_enc (void)
{
// nothing defined so far
}
LOCDATAPTR LOCDATAPTR
init_shofixti_comm (void) init_shofixti_comm (void)
{ {
LOCDATAPTR retval; LOCDATAPTR retval;
shofixti_desc.init_encounter_func = Intro; shofixti_desc.init_encounter_func = Intro;
shofixti_desc.post_encounter_func = post_shofixti_enc;
shofixti_desc.uninit_encounter_func = uninit_shofixti; shofixti_desc.uninit_encounter_func = uninit_shofixti;
shofixti_desc.AlienTextTemplate.baseline.x = shofixti_desc.AlienTextTemplate.baseline.x =
+8
View File
@@ -25,6 +25,7 @@
static LOCDATA slylandro_desc = static LOCDATA slylandro_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)SLYLANDRO_PMAP_ANIM, /* AlienFrame */ (FRAME)SLYLANDRO_PMAP_ANIM, /* AlienFrame */
(FONT)SLYLANDRO_FONT, /* AlienFont */ (FONT)SLYLANDRO_FONT, /* AlienFont */
@@ -889,12 +890,19 @@ uninit_slylandro (void)
return (0); return (0);
} }
static void
post_slylandro_enc (void)
{
// nothing defined so far
}
LOCDATAPTR LOCDATAPTR
init_slylandro_comm (void) init_slylandro_comm (void)
{ {
LOCDATAPTR retval; LOCDATAPTR retval;
slylandro_desc.init_encounter_func = Intro; slylandro_desc.init_encounter_func = Intro;
slylandro_desc.post_encounter_func = post_slylandro_enc;
slylandro_desc.uninit_encounter_func = uninit_slylandro; slylandro_desc.uninit_encounter_func = uninit_slylandro;
slylandro_desc.AlienTextTemplate.baseline.x = slylandro_desc.AlienTextTemplate.baseline.x =
+8
View File
@@ -27,6 +27,7 @@
static LOCDATA slylandro_desc = static LOCDATA slylandro_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)SLYLAND_PMAP_ANIM, /* AlienFrame */ (FRAME)SLYLAND_PMAP_ANIM, /* AlienFrame */
(FONT)SLYLAND_FONT, /* AlienFont */ (FONT)SLYLAND_FONT, /* AlienFont */
@@ -374,12 +375,19 @@ uninit_slyland (void)
return (0); return (0);
} }
static void
post_slyland_enc (void)
{
// nothing defined so far
}
LOCDATAPTR LOCDATAPTR
init_slyland_comm (void) init_slyland_comm (void)
{ {
LOCDATAPTR retval; LOCDATAPTR retval;
slylandro_desc.init_encounter_func = Intro; slylandro_desc.init_encounter_func = Intro;
slylandro_desc.post_encounter_func = post_slyland_enc;
slylandro_desc.uninit_encounter_func = uninit_slyland; slylandro_desc.uninit_encounter_func = uninit_slyland;
slylandro_desc.AlienTextTemplate.baseline.x = slylandro_desc.AlienTextTemplate.baseline.x =
+8 -2
View File
@@ -27,6 +27,7 @@
static LOCDATA spahome_desc = static LOCDATA spahome_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)SPATHI_HOME_PMAP_ANIM, /* AlienFrame */ (FRAME)SPATHI_HOME_PMAP_ANIM, /* AlienFrame */
(FONT)SPATHI_FONT, /* AlienFont */ (FONT)SPATHI_FONT, /* AlienFont */
@@ -958,6 +959,12 @@ Intro (void)
static COUNT static COUNT
uninit_spahome (void) uninit_spahome (void)
{
return (0);
}
static void
post_spahome_enc (void)
{ {
BYTE Manner; BYTE Manner;
@@ -971,8 +978,6 @@ uninit_spahome (void)
SET_GAME_STATE (SPATHI_HOME_VISITS, 0); SET_GAME_STATE (SPATHI_HOME_VISITS, 0);
} }
} }
return (0);
} }
LOCDATAPTR LOCDATAPTR
@@ -981,6 +986,7 @@ init_spahome_comm ()
LOCDATAPTR retval; LOCDATAPTR retval;
spahome_desc.init_encounter_func = Intro; spahome_desc.init_encounter_func = Intro;
spahome_desc.post_encounter_func = post_spahome_enc;
spahome_desc.uninit_encounter_func = uninit_spahome; spahome_desc.uninit_encounter_func = uninit_spahome;
spahome_desc.AlienTextTemplate.baseline.x = spahome_desc.AlienTextTemplate.baseline.x =
+8 -2
View File
@@ -26,6 +26,7 @@
static LOCDATA spathi_desc = static LOCDATA spathi_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)SPATHI_PMAP_ANIM, /* AlienFrame */ (FRAME)SPATHI_PMAP_ANIM, /* AlienFrame */
(FONT)SPATHI_FONT, /* AlienFont */ (FONT)SPATHI_FONT, /* AlienFont */
@@ -754,6 +755,12 @@ Intro (void)
static COUNT static COUNT
uninit_spathi (void) uninit_spathi (void)
{
return (0);
}
static void
post_spathi_enc (void)
{ {
BYTE Manner; BYTE Manner;
@@ -775,8 +782,6 @@ uninit_spathi (void)
} }
} }
} }
return (0);
} }
LOCDATAPTR LOCDATAPTR
@@ -785,6 +790,7 @@ init_spathi_comm (void)
LOCDATAPTR retval; LOCDATAPTR retval;
spathi_desc.init_encounter_func = Intro; spathi_desc.init_encounter_func = Intro;
spathi_desc.post_encounter_func = post_spathi_enc;
spathi_desc.uninit_encounter_func = uninit_spathi; spathi_desc.uninit_encounter_func = uninit_spathi;
spathi_desc.AlienTextTemplate.baseline.x = spathi_desc.AlienTextTemplate.baseline.x =
+8 -2
View File
@@ -43,6 +43,7 @@ static void SellMinerals (RESPONSE_REF R);
static LOCDATA commander_desc = static LOCDATA commander_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)COMMANDER_PMAP_ANIM, /* AlienFrame */ (FRAME)COMMANDER_PMAP_ANIM, /* AlienFrame */
(FONT)COMMANDER_FONT, /* AlienFont */ (FONT)COMMANDER_FONT, /* AlienFont */
@@ -1925,14 +1926,18 @@ Intro (void)
static COUNT static COUNT
uninit_starbase (void) uninit_starbase (void)
{
return (0);
}
static void
post_starbase_enc (void)
{ {
SET_GAME_STATE (MOONBASE_ON_SHIP, 0); SET_GAME_STATE (MOONBASE_ON_SHIP, 0);
if (GET_GAME_STATE (CHMMR_BOMB_STATE) == 2) if (GET_GAME_STATE (CHMMR_BOMB_STATE) == 2)
{ {
SET_GAME_STATE (CHMMR_BOMB_STATE, 3); SET_GAME_STATE (CHMMR_BOMB_STATE, 3);
} }
return (0);
} }
LOCDATAPTR LOCDATAPTR
@@ -1941,6 +1946,7 @@ init_starbase_comm ()
LOCDATAPTR retval; LOCDATAPTR retval;
commander_desc.init_encounter_func = Intro; commander_desc.init_encounter_func = Intro;
commander_desc.post_encounter_func = post_starbase_enc;
commander_desc.uninit_encounter_func = uninit_starbase; commander_desc.uninit_encounter_func = uninit_starbase;
commander_desc.AlienTextWidth = 143; commander_desc.AlienTextWidth = 143;
+8
View File
@@ -26,6 +26,7 @@
static LOCDATA supox_desc = static LOCDATA supox_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)SUPOX_PMAP_ANIM, /* AlienFrame */ (FRAME)SUPOX_PMAP_ANIM, /* AlienFrame */
(FONT)SUPOX_FONT, /* AlienFont */ (FONT)SUPOX_FONT, /* AlienFont */
@@ -670,12 +671,19 @@ uninit_supox (void)
return (0); return (0);
} }
static void
post_supox_enc (void)
{
// nothing defined so far
}
LOCDATAPTR LOCDATAPTR
init_supox_comm (void) init_supox_comm (void)
{ {
LOCDATAPTR retval; LOCDATAPTR retval;
supox_desc.init_encounter_func = Intro; supox_desc.init_encounter_func = Intro;
supox_desc.post_encounter_func = post_supox_enc;
supox_desc.uninit_encounter_func = uninit_supox; supox_desc.uninit_encounter_func = uninit_supox;
supox_desc.AlienTextTemplate.baseline.x = supox_desc.AlienTextTemplate.baseline.x =
+8
View File
@@ -26,6 +26,7 @@
static LOCDATA syreen_desc = static LOCDATA syreen_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)SYREEN_PMAP_ANIM, /* AlienFrame */ (FRAME)SYREEN_PMAP_ANIM, /* AlienFrame */
(FONT)SYREEN_FONT, /* AlienFont */ (FONT)SYREEN_FONT, /* AlienFont */
@@ -835,12 +836,19 @@ uninit_syreen (void)
return (0); return (0);
} }
static void
post_syreen_enc (void)
{
// nothing defined so far
}
LOCDATAPTR LOCDATAPTR
init_syreen_comm (void) init_syreen_comm (void)
{ {
LOCDATAPTR retval; LOCDATAPTR retval;
syreen_desc.init_encounter_func = Intro; syreen_desc.init_encounter_func = Intro;
syreen_desc.post_encounter_func = post_syreen_enc;
syreen_desc.uninit_encounter_func = uninit_syreen; syreen_desc.uninit_encounter_func = uninit_syreen;
syreen_desc.AlienTextTemplate.baseline.x = syreen_desc.AlienTextTemplate.baseline.x =
+8
View File
@@ -26,6 +26,7 @@
static LOCDATA talkpet_desc = static LOCDATA talkpet_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)TALKING_PET_PMAP_ANIM, /* AlienFrame */ (FRAME)TALKING_PET_PMAP_ANIM, /* AlienFrame */
(FONT)TALKING_PET_FONT, /* AlienFont */ (FONT)TALKING_PET_FONT, /* AlienFont */
@@ -790,12 +791,19 @@ uninit_talkpet (void)
return (0); return (0);
} }
static void
post_talkpet_enc (void)
{
// nothing defined so far
}
LOCDATAPTR LOCDATAPTR
init_talkpet_comm (void) init_talkpet_comm (void)
{ {
LOCDATAPTR retval; LOCDATAPTR retval;
talkpet_desc.init_encounter_func = Intro; talkpet_desc.init_encounter_func = Intro;
talkpet_desc.post_encounter_func = post_talkpet_enc;
talkpet_desc.uninit_encounter_func = uninit_talkpet; talkpet_desc.uninit_encounter_func = uninit_talkpet;
talkpet_desc.AlienTextTemplate.baseline.x = talkpet_desc.AlienTextTemplate.baseline.x =
+8
View File
@@ -27,6 +27,7 @@
static LOCDATA thradd_desc = static LOCDATA thradd_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)THRADD_PMAP_ANIM, /* AlienFrame */ (FRAME)THRADD_PMAP_ANIM, /* AlienFrame */
(FONT)THRADD_FONT, /* AlienFont */ (FONT)THRADD_FONT, /* AlienFont */
@@ -911,12 +912,19 @@ uninit_thradd (void)
return (0); return (0);
} }
static void
post_thradd_enc (void)
{
// nothing defined so far
}
LOCDATAPTR LOCDATAPTR
init_thradd_comm (void) init_thradd_comm (void)
{ {
LOCDATAPTR retval; LOCDATAPTR retval;
thradd_desc.init_encounter_func = Intro; thradd_desc.init_encounter_func = Intro;
thradd_desc.post_encounter_func = post_thradd_enc;
thradd_desc.uninit_encounter_func = uninit_thradd; thradd_desc.uninit_encounter_func = uninit_thradd;
thradd_desc.AlienTextTemplate.baseline.x = thradd_desc.AlienTextTemplate.baseline.x =
+8 -2
View File
@@ -26,6 +26,7 @@
static LOCDATA umgah_desc = static LOCDATA umgah_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)UMGAH_PMAP_ANIM, /* AlienFrame */ (FRAME)UMGAH_PMAP_ANIM, /* AlienFrame */
(FONT)UMGAH_FONT, /* AlienFont */ (FONT)UMGAH_FONT, /* AlienFont */
@@ -681,13 +682,17 @@ Intro (void)
static COUNT static COUNT
uninit_umgah (void) uninit_umgah (void)
{
return (0);
}
static void
post_umgah_enc (void)
{ {
if (!GET_GAME_STATE (UMGAH_ZOMBIE_BLOBBIES)) if (!GET_GAME_STATE (UMGAH_ZOMBIE_BLOBBIES))
{ {
SET_GAME_STATE (MET_NORMAL_UMGAH, 1); SET_GAME_STATE (MET_NORMAL_UMGAH, 1);
} }
return (0);
} }
LOCDATAPTR LOCDATAPTR
@@ -696,6 +701,7 @@ init_umgah_comm (void)
LOCDATAPTR retval; LOCDATAPTR retval;
umgah_desc.init_encounter_func = Intro; umgah_desc.init_encounter_func = Intro;
umgah_desc.post_encounter_func = post_umgah_enc;
umgah_desc.uninit_encounter_func = uninit_umgah; umgah_desc.uninit_encounter_func = uninit_umgah;
umgah_desc.AlienTextTemplate.baseline.x = umgah_desc.AlienTextTemplate.baseline.x =
+8 -2
View File
@@ -23,6 +23,7 @@
static LOCDATA urquan_desc = static LOCDATA urquan_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)URQUAN_PMAP_ANIM, /* AlienFrame */ (FRAME)URQUAN_PMAP_ANIM, /* AlienFrame */
(FONT)URQUAN_FONT, /* AlienFont */ (FONT)URQUAN_FONT, /* AlienFont */
@@ -521,11 +522,15 @@ ExitIntro:
static COUNT static COUNT
uninit_urquan (void) uninit_urquan (void)
{ {
SET_GAME_STATE (PLAYER_HYPNOTIZED, 0);
return (0); return (0);
} }
static void
post_urquan_enc (void)
{
SET_GAME_STATE (PLAYER_HYPNOTIZED, 0);
}
LOCDATAPTR LOCDATAPTR
init_urquan_comm (void) init_urquan_comm (void)
{ {
@@ -534,6 +539,7 @@ init_urquan_comm (void)
BYTE b0, b1, b2, b3; BYTE b0, b1, b2, b3;
urquan_desc.init_encounter_func = Intro; urquan_desc.init_encounter_func = Intro;
urquan_desc.post_encounter_func = post_urquan_enc;
urquan_desc.uninit_encounter_func = uninit_urquan; urquan_desc.uninit_encounter_func = uninit_urquan;
urquan_desc.AlienTextTemplate.baseline.x = urquan_desc.AlienTextTemplate.baseline.x =
+8
View File
@@ -27,6 +27,7 @@
static LOCDATA utwig_desc = static LOCDATA utwig_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)UTWIG_PMAP_ANIM, /* AlienFrame */ (FRAME)UTWIG_PMAP_ANIM, /* AlienFrame */
(FONT)UTWIG_FONT, /* AlienFont */ (FONT)UTWIG_FONT, /* AlienFont */
@@ -939,12 +940,19 @@ uninit_utwig (void)
return (0); return (0);
} }
static void
post_utwig_enc (void)
{
// nothing defined so far
}
LOCDATAPTR LOCDATAPTR
init_utwig_comm (void) init_utwig_comm (void)
{ {
LOCDATAPTR retval; LOCDATAPTR retval;
utwig_desc.init_encounter_func = Intro; utwig_desc.init_encounter_func = Intro;
utwig_desc.post_encounter_func = post_utwig_enc;
utwig_desc.uninit_encounter_func = uninit_utwig; utwig_desc.uninit_encounter_func = uninit_utwig;
utwig_desc.AlienTextTemplate.baseline.x = utwig_desc.AlienTextTemplate.baseline.x =
+8
View File
@@ -23,6 +23,7 @@
static LOCDATA vux_desc = static LOCDATA vux_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)VUX_PMAP_ANIM, /* AlienFrame */ (FRAME)VUX_PMAP_ANIM, /* AlienFrame */
(FONT)VUX_FONT, /* AlienFont */ (FONT)VUX_FONT, /* AlienFont */
@@ -754,12 +755,19 @@ uninit_vux (void)
return (0); return (0);
} }
static void
post_vux_enc (void)
{
// nothing defined so far
}
LOCDATAPTR LOCDATAPTR
init_vux_comm (void) init_vux_comm (void)
{ {
LOCDATAPTR retval; LOCDATAPTR retval;
vux_desc.init_encounter_func = Intro; vux_desc.init_encounter_func = Intro;
vux_desc.post_encounter_func = post_vux_enc;
vux_desc.uninit_encounter_func = uninit_vux; vux_desc.uninit_encounter_func = uninit_vux;
vux_desc.AlienTextTemplate.baseline.x = vux_desc.AlienTextTemplate.baseline.x =
+8
View File
@@ -28,6 +28,7 @@
static LOCDATA yehat_desc = static LOCDATA yehat_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)YEHAT_PMAP_ANIM, /* AlienFrame */ (FRAME)YEHAT_PMAP_ANIM, /* AlienFrame */
(FONT)YEHAT_FONT, /* AlienFont */ (FONT)YEHAT_FONT, /* AlienFont */
@@ -649,12 +650,19 @@ uninit_yehat (void)
return (0); return (0);
} }
static void
post_yehat_enc (void)
{
// nothing defined so far
}
LOCDATAPTR LOCDATAPTR
init_yehat_comm (void) init_yehat_comm (void)
{ {
LOCDATAPTR retval; LOCDATAPTR retval;
yehat_desc.init_encounter_func = Intro; yehat_desc.init_encounter_func = Intro;
yehat_desc.post_encounter_func = post_yehat_enc;
yehat_desc.uninit_encounter_func = uninit_yehat; yehat_desc.uninit_encounter_func = uninit_yehat;
yehat_desc.AlienTextTemplate.baseline.x = SIS_SCREEN_WIDTH * 2 / 3; yehat_desc.AlienTextTemplate.baseline.x = SIS_SCREEN_WIDTH * 2 / 3;
+8
View File
@@ -43,6 +43,7 @@
static LOCDATA zoqfot_desc = static LOCDATA zoqfot_desc =
{ {
NULL_PTR, /* init_encounter_func */ NULL_PTR, /* init_encounter_func */
NULL_PTR, /* post_encounter_func */
NULL_PTR, /* uninit_encounter_func */ NULL_PTR, /* uninit_encounter_func */
(FRAME)ZOQFOTPIK_PMAP_ANIM, /* AlienFrame */ (FRAME)ZOQFOTPIK_PMAP_ANIM, /* AlienFrame */
(FONT)ZOQFOTPIK_FONT, /* AlienFont */ (FONT)ZOQFOTPIK_FONT, /* AlienFont */
@@ -925,12 +926,19 @@ uninit_zoqfot (void)
return (0); return (0);
} }
static void
post_zoqfot_enc (void)
{
// nothing defined so far
}
LOCDATAPTR LOCDATAPTR
init_zoqfot_comm (void) init_zoqfot_comm (void)
{ {
LOCDATAPTR retval; LOCDATAPTR retval;
zoqfot_desc.init_encounter_func = Intro; zoqfot_desc.init_encounter_func = Intro;
zoqfot_desc.post_encounter_func = post_zoqfot_enc;
zoqfot_desc.uninit_encounter_func = uninit_zoqfot; zoqfot_desc.uninit_encounter_func = uninit_zoqfot;
zoqfot_desc.AlienTextTemplate.align = ALIGN_CENTER; zoqfot_desc.AlienTextTemplate.align = ALIGN_CENTER;
+3 -1
View File
@@ -115,8 +115,10 @@ typedef struct
{ {
void (*init_encounter_func) (void); void (*init_encounter_func) (void);
/* Called when entering communications */ /* Called when entering communications */
void (*post_encounter_func) (void);
/* Called when leaving communications or combat normally */
COUNT (*uninit_encounter_func) (void); COUNT (*uninit_encounter_func) (void);
/* Called when leaving communications or combat */ /* Called when encounter is done for cleanup */
FRAME AlienFrame; FRAME AlienFrame;
FONT AlienFont; FONT AlienFont;