Shipyard animations no longer hang the game
git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@97 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
@@ -186,6 +186,7 @@ DrawRaceStrings (BYTE NewRaceItem)
|
|||||||
|
|
||||||
#define SHIP_WIN_WIDTH 34
|
#define SHIP_WIN_WIDTH 34
|
||||||
#define SHIP_WIN_HEIGHT (SHIP_WIN_WIDTH + 6)
|
#define SHIP_WIN_HEIGHT (SHIP_WIN_WIDTH + 6)
|
||||||
|
#define SHIP_WIN_FRAMES ((SHIP_WIN_WIDTH >> 1) + 1)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ShowShipCrew (SHIP_FRAGMENTPTR StarShipPtr, PRECT pRect)
|
ShowShipCrew (SHIP_FRAGMENTPTR StarShipPtr, PRECT pRect)
|
||||||
@@ -368,6 +369,7 @@ ShowCombatShip (COUNT which_window, SHIP_FRAGMENTPTR YankedStarShipPtr)
|
|||||||
DWORD TimeIn;
|
DWORD TimeIn;
|
||||||
RECT r;
|
RECT r;
|
||||||
CONTEXT OldContext;
|
CONTEXT OldContext;
|
||||||
|
int j;
|
||||||
|
|
||||||
SetSemaphore (GraphicsSem);
|
SetSemaphore (GraphicsSem);
|
||||||
OldContext = SetContext (OffScreenContext);
|
OldContext = SetContext (OffScreenContext);
|
||||||
@@ -380,10 +382,13 @@ ShowCombatShip (COUNT which_window, SHIP_FRAGMENTPTR YankedStarShipPtr)
|
|||||||
r.extent.height = SHIP_WIN_HEIGHT;
|
r.extent.height = SHIP_WIN_HEIGHT;
|
||||||
ButtonState = AnyButtonPress (FALSE) ? 1 : 0;
|
ButtonState = AnyButtonPress (FALSE) ? 1 : 0;
|
||||||
TimeIn = GetTimeCounter ();
|
TimeIn = GetTimeCounter ();
|
||||||
do
|
|
||||||
|
for (j = 0; (j < SHIP_WIN_FRAMES) && !AllDoorsFinished; j++)
|
||||||
{
|
{
|
||||||
|
ClearSemaphore (GraphicsSem);
|
||||||
SleepThreadUntil (TimeIn + 5);
|
SleepThreadUntil (TimeIn + 5);
|
||||||
TimeIn = GetTimeCounter ();
|
TimeIn = GetTimeCounter ();
|
||||||
|
SetSemaphore (GraphicsSem);
|
||||||
BatchGraphics ();
|
BatchGraphics ();
|
||||||
StartFinalPass:
|
StartFinalPass:
|
||||||
pship_win_info = &ship_win_info[0];
|
pship_win_info = &ship_win_info[0];
|
||||||
@@ -399,8 +404,11 @@ StartFinalPass:
|
|||||||
if (YankedStarShipPtr == 0)
|
if (YankedStarShipPtr == 0)
|
||||||
AllDoorsFinished = TRUE;
|
AllDoorsFinished = TRUE;
|
||||||
else
|
else
|
||||||
|
{
|
||||||
pship_win_info->lfdoor_s.origin.x =
|
pship_win_info->lfdoor_s.origin.x =
|
||||||
pship_win_info->rtdoor_s.origin.x = 0;
|
pship_win_info->rtdoor_s.origin.x = 0;
|
||||||
|
AllDoorsFinished = TRUE;
|
||||||
|
}
|
||||||
goto StartFinalPass;
|
goto StartFinalPass;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -436,7 +444,7 @@ StartFinalPass:
|
|||||||
}
|
}
|
||||||
|
|
||||||
UnbatchGraphics ();
|
UnbatchGraphics ();
|
||||||
} while (!AllDoorsFinished);
|
}
|
||||||
|
|
||||||
SetContextClipRect (NULL_PTR);
|
SetContextClipRect (NULL_PTR);
|
||||||
SetContext (OldContext);
|
SetContext (OldContext);
|
||||||
|
|||||||
Reference in New Issue
Block a user