diff options
Diffstat (limited to 'src/uqm/fmv.c')
-rw-r--r-- | src/uqm/fmv.c | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/src/uqm/fmv.c b/src/uqm/fmv.c new file mode 100644 index 0000000..b567901 --- /dev/null +++ b/src/uqm/fmv.c @@ -0,0 +1,134 @@ +//Copyright Paul Reiche, Fred Ford. 1992-2002 + +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#include "fmv.h" + +#include "controls.h" +#include "hyper.h" +#include "options.h" +#include "master.h" +#include "resinst.h" +#include "nameref.h" +#include "settings.h" +#include "setup.h" +#include "libs/vidlib.h" +#include "libs/graphics/gfx_common.h" +#include "libs/inplib.h" + +void +DoShipSpin (COUNT index, MUSIC_REF hMusic) +{ +#ifdef WANT_SHIP_SPINS + char vnbuf[32]; + RECT old_r; + + LoadIntoExtraScreen (NULL); +#if 0 + /* This is cut out right now but should be part of the 3DO side */ + SleepThreadUntil (FadeScreen (FadeAllToBlack, ONE_SECOND / 4)); + FlushColorXForms (); +#endif + + if (hMusic) + StopMusic (); + + FreeHyperData (); + + // TODO: It would be nice to have better resource names for these. + sprintf (vnbuf, "slides.spins.%02u", (unsigned)index); + ShowPresentation (vnbuf); + + SleepThreadUntil (FadeScreen (FadeAllToBlack, ONE_SECOND / 4)); + FlushColorXForms (); + + GetContextClipRect (&old_r); + SetContextClipRect (NULL); + DrawFromExtraScreen (NULL); + SetContextClipRect (&old_r); + + if (hMusic) + PlayMusic (hMusic, TRUE, 1); + + SleepThreadUntil (FadeScreen (FadeAllToColor, ONE_SECOND / 4)); + FlushColorXForms (); +#else + (void) index; /* Satisfy compiler */ + (void) hMusic; /* Satisfy compiler */ +#endif /* WANT_SHIP_SPINS */ +} + +void +SplashScreen (void (* DoProcessing)(DWORD TimeOut)) +{ + STAMP s; + DWORD TimeOut; + + SleepThreadUntil (FadeScreen (FadeAllToBlack, ONE_SECOND / 120)); + SetContext (ScreenContext); + s.origin.x = s.origin.y = 0; + s.frame = CaptureDrawable (LoadGraphic (TITLE_ANIM)); + DrawStamp (&s); + DestroyDrawable (ReleaseDrawable (s.frame)); + + TimeOut = FadeScreen (FadeAllToColor, ONE_SECOND / 2); + + if (DoProcessing) + DoProcessing (TimeOut); + if (GLOBAL (CurrentActivity) & CHECK_ABORT) + { + return; + } + + /* There was a forcible setting of CHECK_ABORT here. I cannot + * find any purpose for this that DoRestart doesn't handle + * better (forcing all other threads but this one to quit out, + * I believe), and have thus removed it. It was interfering + * with the proper operation of the quit operation. + * --Michael */ + + WaitForAnyButton (FALSE, ONE_SECOND * 3, TRUE); + if (GLOBAL (CurrentActivity) & CHECK_ABORT) + { + return; + } + GLOBAL (CurrentActivity) &= ~CHECK_ABORT; + + SleepThreadUntil (FadeScreen (FadeAllToBlack, ONE_SECOND / 2)); +} + +void +Introduction (void) +{ + ShowPresentation (INTROPRES_STRTAB); + SleepThreadUntil (FadeScreen (FadeAllToBlack, ONE_SECOND / 2)); +} + +void +Victory (void) +{ + SleepThreadUntil (FadeScreen (FadeAllToBlack, ONE_SECOND / 2)); + + /* by default we do 3DO cinematics; or PC slides when 3DO files are + * not present */ + ShowPresentation (FINALPRES_STRTAB); + + FadeScreen (FadeAllToBlack, 0); +} + + + |