Fix glitch when rewinding after alien has stopped talking, part II (bug
#325), from chmmravatar git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@937 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
@@ -1582,11 +1582,44 @@ DoCommunication (INPUT_STATE InputState, PENCOUNTER_STATE pES)
|
|||||||
{
|
{
|
||||||
FadeMusic (BACKGROUND_VOL, ONE_SECOND);
|
FadeMusic (BACKGROUND_VOL, ONE_SECOND);
|
||||||
SetSemaphore (GraphicsSem);
|
SetSemaphore (GraphicsSem);
|
||||||
|
CommData.AlienTransitionDesc.AnimFlags &= ~(TALK_INTRO | TALK_DONE);
|
||||||
|
if (CommData.AlienTalkDesc.NumFrames)
|
||||||
|
{
|
||||||
|
if (!(CommData.AlienTransitionDesc.AnimFlags & TALK_INTRO))
|
||||||
|
{
|
||||||
|
CommData.AlienTransitionDesc.AnimFlags |= TALK_INTRO;
|
||||||
|
if (CommData.AlienTransitionDesc.NumFrames)
|
||||||
|
CommData.AlienTalkDesc.AnimFlags |= TALK_INTRO;
|
||||||
|
}
|
||||||
|
|
||||||
|
CommData.AlienTransitionDesc.AnimFlags &= ~PAUSE_TALKING;
|
||||||
|
if (CommData.AlienTalkDesc.NumFrames)
|
||||||
|
CommData.AlienTalkDesc.AnimFlags |= WAIT_TALKING;
|
||||||
|
while (CommData.AlienTalkDesc.AnimFlags & TALK_INTRO)
|
||||||
|
{
|
||||||
|
ClearSemaphore (GraphicsSem);
|
||||||
|
TaskSwitch ();
|
||||||
|
SetSemaphore (GraphicsSem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SpewPhrases (0);
|
SpewPhrases (0);
|
||||||
|
|
||||||
|
CommData.AlienTransitionDesc.AnimFlags |= TALK_DONE;
|
||||||
|
if (CommData.AlienTalkDesc.NumFrames)
|
||||||
|
{
|
||||||
|
if ((CommData.AlienTalkDesc.AnimFlags & WAIT_TALKING))
|
||||||
|
CommData.AlienTalkDesc.AnimFlags |= PAUSE_TALKING;
|
||||||
|
}
|
||||||
|
|
||||||
ClearSemaphore (GraphicsSem);
|
ClearSemaphore (GraphicsSem);
|
||||||
FlushInput ();
|
FlushInput ();
|
||||||
while (AnyButtonPress (TRUE))
|
while (AnyButtonPress (TRUE))
|
||||||
TaskSwitch ();
|
TaskSwitch ();
|
||||||
|
do
|
||||||
|
TaskSwitch ();
|
||||||
|
while (CommData.AlienTalkDesc.AnimFlags & PAUSE_TALKING);
|
||||||
|
|
||||||
if (GLOBAL (CurrentActivity) & CHECK_ABORT)
|
if (GLOBAL (CurrentActivity) & CHECK_ABORT)
|
||||||
break;
|
break;
|
||||||
TimeOut = FadeMusic (0, ONE_SECOND * 2) + ONE_SECOND / 60;
|
TimeOut = FadeMusic (0, ONE_SECOND * 2) + ONE_SECOND / 60;
|
||||||
|
|||||||
Reference in New Issue
Block a user