123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- //
- // Copyright 2020 Electronic Arts Inc.
- //
- // TiberianDawn.DLL and RedAlert.dll and corresponding source code 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 3 of the License, or (at your option) any later version.
- // TiberianDawn.DLL and RedAlert.dll and corresponding source code is distributed
- // in the hope that it will be useful, but with permitted additional restrictions
- // under Section 7 of the GPL. See the GNU General Public License in LICENSE.TXT
- // distributed with this program. You should have received a copy of the
- // GNU General Public License along with permitted additional restrictions
- // with this program. If not, see https://github.com/electronicarts/CnC_Remastered_Collection
- /* $Header: F:\projects\c&c\vcs\code\ending.cpv 1.5 16 Oct 1995 16:50:30 JOE_BOSTIC $ */
- /***********************************************************************************************
- *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
- ***********************************************************************************************
- * *
- * Project Name : Command & Conquer *
- * *
- * File Name : ENDING.H *
- * *
- * Programmer : Barry W. Green *
- * *
- * Start Date : July 10, 1995 *
- * *
- * Last Update : July 10, 1995 [BWG] *
- * *
- *---------------------------------------------------------------------------------------------*
- * Functions: *
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- #include "function.h"
- #include "textblit.h"
- void GDI_Ending(void)
- {
- #ifdef DEMO
- Fade_Palette_To(BlackPalette, FADE_PALETTE_MEDIUM, Call_Back);
- Load_Title_Screen("DEMOPIC.PCX", &HidPage, Palette);
- Blit_Hid_Page_To_Seen_Buff();
- Fade_Palette_To(Palette, FADE_PALETTE_MEDIUM, Call_Back);
- Clear_KeyBuffer();
- Get_Key_Num();
- Fade_Palette_To(BlackPalette, FADE_PALETTE_MEDIUM, Call_Back);
- VisiblePage.Clear();
- #else
- if (TempleIoned) {
- Play_Movie("GDIFINB");
- } else {
- Play_Movie("GDIFINA");
- }
- Score.Presentation();
- if (TempleIoned) {
- Play_Movie("GDIEND2");
- } else {
- Play_Movie("GDIEND1");
- }
- CountDownTimerClass count;
- if (CCFileClass("TRAILER.VQA").Is_Available()) {
- Fade_Palette_To(BlackPalette, FADE_PALETTE_MEDIUM, Call_Back);
- Load_Uncompress(CCFileClass("ATTRACT2.CPS"), SysMemPage, SysMemPage, Palette);
- SysMemPage.Scale(SeenBuff, 0, 0, 0, 0, 320, 199, 640, 398);
- Fade_Palette_To(Palette, FADE_PALETTE_MEDIUM, Call_Back);
- Clear_KeyBuffer();
- count.Set(TIMER_SECOND*3);
- while (count.Time()) {
- Call_Back();
- }
- Fade_Palette_To(BlackPalette, FADE_PALETTE_MEDIUM, Call_Back);
- Play_Movie("TRAILER"); // Red Alert teaser.
- }
- Fade_Palette_To(BlackPalette, FADE_PALETTE_MEDIUM, Call_Back);
- Load_Uncompress(CCFileClass("ATTRACT2.CPS"), SysMemPage, SysMemPage, Palette);
- SysMemPage.Scale(SeenBuff, 0, 0, 0, 0, 320, 199, 640, 398);
- Fade_Palette_To(Palette, FADE_PALETTE_MEDIUM, Call_Back);
- Clear_KeyBuffer();
- // CountDownTimerClass count;
- count.Set(TIMER_SECOND*3);
- while (count.Time()) {
- Call_Back();
- }
- Fade_Palette_To(BlackPalette, FADE_PALETTE_MEDIUM, Call_Back);
- Play_Movie("CC2TEASE");
- #endif
- }
- #ifndef DEMO
- /***********************************************************************************************
- * Nod_Ending -- play ending movies for Nod players *
- * *
- * INPUT: none *
- * *
- * OUTPUT: none *
- * *
- * WARNINGS: *
- * *
- * HISTORY: *
- * 7/10/1995 BWG : Created. *
- *=============================================================================================*/
- void Nod_Ending(void)
- {
- static unsigned char const _tanpal[]={0x0,0xED,0xED,0x2C,0x2C,0xFB,0xFB,0xFD,0xFD,0x0,0x0,0x0,0x0,0x0,0x52,0x0};
- char fname[12];
- #ifdef NOT_FOR_WIN95
- char *satpic = new char[64000];
- #endif //NOT_FOR_WIN95
- int oldfontxspacing = FontXSpacing;
- void const *oldfont;
- Score.Presentation();
- oldfont = Set_Font(ScoreFontPtr);
- PseudoSeenBuff = new GraphicBufferClass(320,200,(void*)NULL);
- TextPrintBuffer = new GraphicBufferClass(SeenBuff.Get_Width(), SeenBuff.Get_Height(), (void*)NULL);
- TextPrintBuffer->Clear();
- BlitList.Clear();
- SeenBuff.Clear();
- HidPage.Clear();
- PseudoSeenBuff->Clear();
- void * localpal = Load_Alloc_Data(CCFileClass("SATSEL.PAL"));
- Load_Uncompress(CCFileClass("SATSEL.CPS"), SysMemPage, SysMemPage);
- #ifdef NOT_FOR_WIN95
- memcpy(satpic, HidPage.Get_Buffer(), 64000);
- #else
- SysMemPage.Blit(*PseudoSeenBuff);
- #endif //NOT_FOR_WIN95
- void *kanefinl = Load_Sample("KANEFINL.AUD");
- void *loopie6m = Load_Sample("LOOPIE6M.AUD");
- Play_Movie("NODFINAL", THEME_NONE, false);
- Hide_Mouse();
- Wait_Vert_Blank();
- Set_Palette(localpal);
- #ifdef NOT_FOR_WIN95
- memcpy(SeenBuff.Get_Buffer(), satpic, 64000);
- #endif //NOT_FOR_WIN95
- Show_Mouse();
- InterpolationPaletteChanged = TRUE;
- InterpolationPalette = (unsigned char*)localpal;
- Increase_Palette_Luminance(InterpolationPalette , 30,30,30,63);
- Read_Interpolation_Palette("SATSELIN.PAL");
- Interpolate_2X_Scale(PseudoSeenBuff, &SeenBuff,"SATSELIN.PAL");
- Keyboard::Clear();
- Play_Sample(kanefinl,255,128);
- Play_Sample(loopie6m,255,128);
- bool mouseshown = false;
- bool done = false;
- int selection = 1;
- bool printedtext = false;
- while (!done) {
- if (!printedtext && !Is_Sample_Playing(kanefinl)) {
- printedtext++;
- Alloc_Object(new ScorePrintClass(Text_String(TXT_SEL_TARGET), 0, 180,_tanpal));
- mouseshown = true;
- Show_Mouse();
- }
- Call_Back_Delay(1);
- if (!Keyboard::Check()) {
- if (!Is_Sample_Playing(loopie6m)) Play_Sample(loopie6m,255,128);
- } else {
- if (Is_Sample_Playing(kanefinl)) {
- Clear_KeyBuffer();
- } else {
- int key = Keyboard::Get();
- if ((key & 0x10FF) == KN_LMOUSE && !(key & KN_RLSE_BIT)) {
- int mousex = _Kbd->MouseQX;
- int mousey = _Kbd->MouseQY;
- if (mousey >= 22*2 && mousey <= 177*2) {
- done++;
- if (mousex < 160*2 && mousey < 100*2) selection = 2;
- if (mousex < 160*2 && mousey >= 100*2) selection = 3;
- if (mousex >= 160*2 && mousey >= 100*2) selection = 4;
- }
- }
- }
- }
- }
- if (mouseshown) Hide_Mouse();
- #ifdef NOT_FOR_WIN95
- delete satpic;
- #else
- delete PseudoSeenBuff;
- #endif //NOT_FOR_WIN95
- /* get rid of all the animating objects */
- for (int i = 0; i < MAXSCOREOBJS; i++) if (ScoreObjs[i]) {
- delete ScoreObjs[i];
- ScoreObjs[i] = 0;
- }
- // erase the "choose a target" text
- SeenBuff.Fill_Rect(0,180*2,319*2,199*2,0);
- TextPrintBuffer->Fill_Rect(0,180*2,319*2,199*2,0);
- Hide_Mouse();
- Keyboard::Clear();
- Set_Font(oldfont);
- FontXSpacing = oldfontxspacing;
- Free_Sample(kanefinl);
- Free_Sample(loopie6m);
- sprintf(fname,"NODEND%d",selection);
- PreserveVQAScreen = 1;
- Play_Movie(fname);
- CountDownTimerClass count;
- if (CCFileClass("TRAILER.VQA").Is_Available()) {
- Fade_Palette_To(BlackPalette, FADE_PALETTE_MEDIUM, Call_Back);
- Load_Uncompress(CCFileClass("ATTRACT2.CPS"), SysMemPage, SysMemPage, Palette);
- SysMemPage.Scale(SeenBuff, 0, 0, 0, 0, 320, 199, 640, 398);
- Fade_Palette_To(Palette, FADE_PALETTE_MEDIUM, Call_Back);
- Clear_KeyBuffer();
- count.Set(TIMER_SECOND*3);
- while (count.Time()) {
- Call_Back();
- }
- Fade_Palette_To(BlackPalette, FADE_PALETTE_MEDIUM, Call_Back);
- Play_Movie("TRAILER"); // Red Alert teaser.
- }
- Fade_Palette_To(BlackPalette, FADE_PALETTE_MEDIUM, Call_Back);
- Load_Uncompress(CCFileClass("ATTRACT2.CPS"), SysMemPage, SysMemPage, Palette);
- SysMemPage.Scale(SeenBuff, 0, 0, 0, 0, 320, 199, 640, 398);
- Fade_Palette_To(Palette, FADE_PALETTE_MEDIUM, Call_Back);
- Clear_KeyBuffer();
- // CountDownTimerClass count;
- count.Set(TIMER_SECOND*3);
- while (count.Time()) {
- Call_Back();
- }
- Fade_Palette_To(BlackPalette, FADE_PALETTE_MEDIUM, Call_Back);
- Play_Movie("CC2TEASE");
- delete [] localpal;
- delete TextPrintBuffer;
- BlitList.Clear();
- }
- #endif
|