Starbase rotation task retired; minor context fix
git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@3293 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
+40
-46
@@ -254,35 +254,36 @@ DrawShipPiece (MENU_STATE *pMS, COUNT which_piece, COUNT which_slot,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static void
|
||||||
rotate_starbase(void *data)
|
rotateStarbase (MENU_STATE *pMS, FRAME AniFrame)
|
||||||
{
|
{
|
||||||
DWORD TimeIn;
|
static TimeCount NextTime = 0;
|
||||||
STAMP s;
|
TimeCount Now = GetTimeCounter ();
|
||||||
Task task = (Task) data;
|
|
||||||
|
|
||||||
//s.origin.x = s.origin.y = 0;
|
|
||||||
s.origin.x = SAFE_X;
|
|
||||||
s.origin.y = SAFE_Y + 4;
|
|
||||||
s.frame = IncFrameIndex (pMenuState->CurFrame);
|
|
||||||
TimeIn = GetTimeCounter ();
|
|
||||||
while (!Task_ReadState (task, TASK_EXIT))
|
|
||||||
{
|
|
||||||
//CONTEXT OldContext;
|
|
||||||
|
|
||||||
LockMutex (GraphicsLock);
|
|
||||||
DrawStamp (&s);
|
|
||||||
s.frame = IncFrameIndex (s.frame);
|
|
||||||
if (s.frame == pMenuState->CurFrame)
|
|
||||||
s.frame = IncFrameIndex (s.frame);
|
|
||||||
UnlockMutex (GraphicsLock);
|
|
||||||
|
|
||||||
SleepThreadUntil (TimeIn + (ONE_SECOND / 20));
|
|
||||||
TimeIn = GetTimeCounter ();
|
|
||||||
}
|
|
||||||
|
|
||||||
FinishTask (task);
|
if (AniFrame)
|
||||||
return(0);
|
{ // Setup the animation
|
||||||
|
pMS->flash_frame0 = AniFrame;
|
||||||
|
pMS->flash_rect0.corner.x = SAFE_X;
|
||||||
|
pMS->flash_rect0.corner.y = SAFE_Y + 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Now >= NextTime || AniFrame)
|
||||||
|
{
|
||||||
|
STAMP s;
|
||||||
|
|
||||||
|
NextTime = Now + (ONE_SECOND / 20);
|
||||||
|
|
||||||
|
s.origin = pMS->flash_rect0.corner;
|
||||||
|
s.frame = pMS->flash_frame0;
|
||||||
|
DrawStamp (&s);
|
||||||
|
|
||||||
|
s.frame = IncFrameIndex (s.frame);
|
||||||
|
if (GetFrameIndex (s.frame) == 0)
|
||||||
|
{ // Do not redraw the base frame, animation loops to frame 1
|
||||||
|
s.frame = IncFrameIndex (s.frame);
|
||||||
|
}
|
||||||
|
pMS->flash_frame0 = s.frame;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
@@ -297,8 +298,6 @@ DoStarBase (MENU_STATE *pMS)
|
|||||||
|
|
||||||
if (!pMS->Initialized)
|
if (!pMS->Initialized)
|
||||||
{
|
{
|
||||||
STAMP s;
|
|
||||||
|
|
||||||
LastActivity &= ~CHECK_LOAD;
|
LastActivity &= ~CHECK_LOAD;
|
||||||
pMS->InputFunc = DoStarBase;
|
pMS->InputFunc = DoStarBase;
|
||||||
|
|
||||||
@@ -319,23 +318,18 @@ DoStarBase (MENU_STATE *pMS)
|
|||||||
}
|
}
|
||||||
|
|
||||||
pMS->Initialized = TRUE;
|
pMS->Initialized = TRUE;
|
||||||
SetContext (ScreenContext);
|
|
||||||
|
|
||||||
UnlockMutex (GraphicsLock);
|
UnlockMutex (GraphicsLock);
|
||||||
|
|
||||||
//s.origin.x = s.origin.y = 0;
|
pMS->CurFrame = CaptureDrawable (LoadGraphic (STARBASE_ANIM));
|
||||||
s.origin.x = SAFE_X;
|
|
||||||
s.origin.y = SAFE_Y + 4;
|
|
||||||
s.frame = CaptureDrawable (LoadGraphic (STARBASE_ANIM));
|
|
||||||
pMS->CurFrame = s.frame;
|
|
||||||
pMS->hMusic = LoadMusic (STARBASE_MUSIC);
|
pMS->hMusic = LoadMusic (STARBASE_MUSIC);
|
||||||
|
|
||||||
LockMutex (GraphicsLock);
|
LockMutex (GraphicsLock);
|
||||||
|
SetContext (ScreenContext);
|
||||||
SetTransitionSource (NULL);
|
SetTransitionSource (NULL);
|
||||||
BatchGraphics ();
|
BatchGraphics ();
|
||||||
SetContextBackGroundColor (BLACK_COLOR);
|
SetContextBackGroundColor (BLACK_COLOR);
|
||||||
ClearDrawable ();
|
ClearDrawable ();
|
||||||
DrawStamp (&s);
|
rotateStarbase (pMS, pMS->CurFrame);
|
||||||
DrawBaseStateStrings ((STARBASE_STATE)~0, pMS->CurState);
|
DrawBaseStateStrings ((STARBASE_STATE)~0, pMS->CurState);
|
||||||
{
|
{
|
||||||
RECT r;
|
RECT r;
|
||||||
@@ -348,8 +342,6 @@ DoStarBase (MENU_STATE *pMS)
|
|||||||
}
|
}
|
||||||
PlayMusic (pMS->hMusic, TRUE, 1);
|
PlayMusic (pMS->hMusic, TRUE, 1);
|
||||||
UnbatchGraphics ();
|
UnbatchGraphics ();
|
||||||
pMS->flash_task = AssignTask (rotate_starbase, 4096,
|
|
||||||
"rotate starbase");
|
|
||||||
UnlockMutex (GraphicsLock);
|
UnlockMutex (GraphicsLock);
|
||||||
}
|
}
|
||||||
else if (PulsedInputState.menu[KEY_MENU_SELECT]
|
else if (PulsedInputState.menu[KEY_MENU_SELECT]
|
||||||
@@ -357,11 +349,6 @@ DoStarBase (MENU_STATE *pMS)
|
|||||||
|| GET_GAME_STATE (CHMMR_BOMB_STATE) == 2)
|
|| GET_GAME_STATE (CHMMR_BOMB_STATE) == 2)
|
||||||
{
|
{
|
||||||
ExitStarBase:
|
ExitStarBase:
|
||||||
if (pMS->flash_task)
|
|
||||||
{
|
|
||||||
ConcludeTask (pMS->flash_task);
|
|
||||||
pMS->flash_task = 0;
|
|
||||||
}
|
|
||||||
DestroyDrawable (ReleaseDrawable (pMS->CurFrame));
|
DestroyDrawable (ReleaseDrawable (pMS->CurFrame));
|
||||||
pMS->CurFrame = 0;
|
pMS->CurFrame = 0;
|
||||||
StopMusic ();
|
StopMusic ();
|
||||||
@@ -425,14 +412,21 @@ ExitStarBase:
|
|||||||
NewState = TALK_COMMANDER;
|
NewState = TALK_COMMANDER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LockMutex (GraphicsLock);
|
||||||
|
BatchGraphics ();
|
||||||
|
SetContext (ScreenContext);
|
||||||
|
|
||||||
if (NewState != pMS->CurState)
|
if (NewState != pMS->CurState)
|
||||||
{
|
{
|
||||||
LockMutex (GraphicsLock);
|
|
||||||
DrawBaseStateStrings (pMS->CurState, NewState);
|
DrawBaseStateStrings (pMS->CurState, NewState);
|
||||||
UnlockMutex (GraphicsLock);
|
|
||||||
pMS->CurState = NewState;
|
pMS->CurState = NewState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rotateStarbase (pMS, NULL);
|
||||||
|
|
||||||
|
UnbatchGraphics ();
|
||||||
|
UnlockMutex (GraphicsLock);
|
||||||
|
|
||||||
SleepThread (ONE_SECOND / 30);
|
SleepThread (ONE_SECOND / 30);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user