Modified transitions to pause, like original 3DO version did
git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@75 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
@@ -23,8 +23,7 @@
|
|||||||
#include "opengl.h"
|
#include "opengl.h"
|
||||||
|
|
||||||
int batch_depth = 0;
|
int batch_depth = 0;
|
||||||
|
static const BOOLEAN pausing_transition = TRUE; // change to FALSE for non-pausing version
|
||||||
static Task transition_task;
|
|
||||||
|
|
||||||
|
|
||||||
//Status: Not entirely unimplemented!
|
//Status: Not entirely unimplemented!
|
||||||
@@ -103,12 +102,12 @@ SetGraphicStrength (int numerator, int denominator)
|
|||||||
static int
|
static int
|
||||||
transition_task_func (void *data)
|
transition_task_func (void *data)
|
||||||
{
|
{
|
||||||
const float TRANSITION_SPEED = (31.0f / 60.0f);
|
const float DURATION = (31.0f / 60.0f); // in seconds
|
||||||
Uint32 last_time = 0, current_time, delta_time, add_amount;
|
Uint32 last_time = 0, current_time, delta_time, add_amount;
|
||||||
Task task = (Task)data;
|
Task task = (Task)data;
|
||||||
|
|
||||||
last_time = SDL_GetTicks ();
|
|
||||||
TransitionAmount = 0;
|
TransitionAmount = 0;
|
||||||
|
last_time = SDL_GetTicks ();
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
@@ -118,15 +117,18 @@ transition_task_func (void *data)
|
|||||||
delta_time = current_time - last_time;
|
delta_time = current_time - last_time;
|
||||||
last_time = current_time;
|
last_time = current_time;
|
||||||
|
|
||||||
add_amount = (Uint32)((delta_time / 1000.0f / TRANSITION_SPEED) * 255);
|
add_amount = (Uint32) ((delta_time / 1000.0f / DURATION) * 255);
|
||||||
if (TransitionAmount + add_amount >= 255)
|
if (TransitionAmount + add_amount >= 255)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
TransitionAmount += add_amount;
|
TransitionAmount += add_amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
TransitionAmount = -1;
|
TransitionAmount = 255;
|
||||||
FinishTask (task);
|
|
||||||
|
if (!pausing_transition)
|
||||||
|
FinishTask (task);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -134,34 +136,48 @@ transition_task_func (void *data)
|
|||||||
void
|
void
|
||||||
ScreenTransition (int TransType, PRECT pRect)
|
ScreenTransition (int TransType, PRECT pRect)
|
||||||
{
|
{
|
||||||
|
Task transition_task;
|
||||||
|
|
||||||
//fprintf(stderr, "ScreenTransition %d\n", TransType);
|
//fprintf(stderr, "ScreenTransition %d\n", TransType);
|
||||||
|
|
||||||
if (TransitionAmount == -1)
|
if (TransitionAmount != 255)
|
||||||
{
|
return;
|
||||||
if (pRect)
|
|
||||||
{
|
|
||||||
TransitionClipRect.x = pRect->corner.x;
|
|
||||||
TransitionClipRect.y = pRect->corner.y;
|
|
||||||
TransitionClipRect.w = pRect->extent.width;
|
|
||||||
TransitionClipRect.h = pRect->extent.height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TransitionClipRect.x = TransitionClipRect.y = 0;
|
|
||||||
TransitionClipRect.w = ScreenWidth;
|
|
||||||
TransitionClipRect.h = ScreenHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_BlitSurface (SDL_Screen, &TransitionClipRect, TransitionScreen, &TransitionClipRect);
|
if (pRect)
|
||||||
|
{
|
||||||
|
TransitionClipRect.x = pRect->corner.x;
|
||||||
|
TransitionClipRect.y = pRect->corner.y;
|
||||||
|
TransitionClipRect.w = pRect->extent.width;
|
||||||
|
TransitionClipRect.h = pRect->extent.height;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TransitionClipRect.x = TransitionClipRect.y = 0;
|
||||||
|
TransitionClipRect.w = ScreenWidth;
|
||||||
|
TransitionClipRect.h = ScreenHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_BlitSurface (SDL_Screen, &TransitionClipRect, TransitionScreen, &TransitionClipRect);
|
||||||
|
|
||||||
#ifdef HAVE_OPENGL
|
#ifdef HAVE_OPENGL
|
||||||
if (GraphicsDriver == TFB_GFXDRIVER_SDL_OPENGL)
|
if (GraphicsDriver == TFB_GFXDRIVER_SDL_OPENGL)
|
||||||
{
|
{
|
||||||
TFB_GL_UploadTransitionScreen ();
|
TFB_GL_UploadTransitionScreen ();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (pausing_transition)
|
||||||
|
{
|
||||||
|
TransitionAmount = 0;
|
||||||
|
FlushGraphics ();
|
||||||
|
}
|
||||||
|
|
||||||
transition_task = AssignTask (transition_task_func, 1024, "screen transition");
|
transition_task = AssignTask (transition_task_func, 1024, "screen transition");
|
||||||
|
|
||||||
|
if (pausing_transition)
|
||||||
|
{
|
||||||
|
WaitThread (transition_task->thread, NULL);
|
||||||
|
FinishTask (transition_task);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -259,7 +259,7 @@ TFB_GL_SwapBuffers (void)
|
|||||||
TFB_GL_DrawQuad ();
|
TFB_GL_DrawQuad ();
|
||||||
|
|
||||||
transition_amount = TransitionAmount;
|
transition_amount = TransitionAmount;
|
||||||
if (transition_amount != -1)
|
if (transition_amount != 255)
|
||||||
{
|
{
|
||||||
float scale_x = (ScreenWidthActual / (float)ScreenWidth);
|
float scale_x = (ScreenWidthActual / (float)ScreenWidth);
|
||||||
float scale_y = (ScreenHeightActual / (float)ScreenHeight);
|
float scale_y = (ScreenHeightActual / (float)ScreenHeight);
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ TFB_Pure_SwapBuffers ()
|
|||||||
int fade_amount = FadeAmount;
|
int fade_amount = FadeAmount;
|
||||||
int transition_amount = TransitionAmount;
|
int transition_amount = TransitionAmount;
|
||||||
|
|
||||||
if (transition_amount != -1)
|
if (transition_amount != 255)
|
||||||
{
|
{
|
||||||
backbuffer = fade_temp;
|
backbuffer = fade_temp;
|
||||||
SDL_BlitSurface (SDL_Screen, NULL, backbuffer, NULL);
|
SDL_BlitSurface (SDL_Screen, NULL, backbuffer, NULL);
|
||||||
@@ -147,7 +147,7 @@ TFB_Pure_SwapBuffers ()
|
|||||||
|
|
||||||
if (fade_amount != 255)
|
if (fade_amount != 255)
|
||||||
{
|
{
|
||||||
if (transition_amount == -1)
|
if (transition_amount == 255)
|
||||||
{
|
{
|
||||||
backbuffer = fade_temp;
|
backbuffer = fade_temp;
|
||||||
SDL_BlitSurface (SDL_Screen, NULL, backbuffer, NULL);
|
SDL_BlitSurface (SDL_Screen, NULL, backbuffer, NULL);
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ SDL_Surface *ExtraScreen;
|
|||||||
SDL_Surface *TransitionScreen;
|
SDL_Surface *TransitionScreen;
|
||||||
|
|
||||||
|
|
||||||
volatile int TransitionAmount = -1;
|
volatile int TransitionAmount = 255;
|
||||||
SDL_Rect TransitionClipRect;
|
SDL_Rect TransitionClipRect;
|
||||||
|
|
||||||
BOOLEAN ShowFPS = FALSE;
|
BOOLEAN ShowFPS = FALSE;
|
||||||
|
|||||||
Reference in New Issue
Block a user