From 57ab697617668dea413b66ce132a066936a9a894 Mon Sep 17 00:00:00 2001 From: gewlitys Date: Sat, 26 Apr 2003 20:29:08 +0000 Subject: [PATCH] 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 --- sc2/src/sc2code/comm.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/sc2/src/sc2code/comm.c b/sc2/src/sc2code/comm.c index 999de4c26..0d93763d3 100644 --- a/sc2/src/sc2code/comm.c +++ b/sc2/src/sc2code/comm.c @@ -1582,11 +1582,44 @@ DoCommunication (INPUT_STATE InputState, PENCOUNTER_STATE pES) { FadeMusic (BACKGROUND_VOL, ONE_SECOND); 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); + + CommData.AlienTransitionDesc.AnimFlags |= TALK_DONE; + if (CommData.AlienTalkDesc.NumFrames) + { + if ((CommData.AlienTalkDesc.AnimFlags & WAIT_TALKING)) + CommData.AlienTalkDesc.AnimFlags |= PAUSE_TALKING; + } + ClearSemaphore (GraphicsSem); FlushInput (); while (AnyButtonPress (TRUE)) TaskSwitch (); + do + TaskSwitch (); + while (CommData.AlienTalkDesc.AnimFlags & PAUSE_TALKING); + if (GLOBAL (CurrentActivity) & CHECK_ABORT) break; TimeOut = FadeMusic (0, ONE_SECOND * 2) + ONE_SECOND / 60;