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:
gewlitys
2002-09-24 18:09:03 +00:00
parent 2e5fa44b80
commit 782be5442e
4 changed files with 49 additions and 33 deletions
+24 -8
View File
@@ -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;
if (!pausing_transition)
FinishTask (task); FinishTask (task);
return 0; return 0;
} }
@@ -134,10 +136,13 @@ 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) if (pRect)
{ {
TransitionClipRect.x = pRect->corner.x; TransitionClipRect.x = pRect->corner.x;
@@ -161,7 +166,18 @@ ScreenTransition (int TransType, PRECT pRect)
} }
#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);
} }
} }
+1 -1
View File
@@ -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);
+2 -2
View File
@@ -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;