2016-01-05 02:17:06 +01:00
/*
Copyright ( C ) 2003 Parallel Realities
Copyright ( C ) 2011 , 2012 , 2013 Guus Sliepen
2020-12-26 06:10:10 +01:00
Copyright ( C ) 2012 , 2015 - 2020 The Diligent Circle < diligentcircle @ riseup . net >
2016-01-05 02:17:06 +01:00
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 3
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 , see < http : //www.gnu.org/licenses/>.
*/
2019-06-06 04:13:48 +02:00
# include <libintl.h>
2017-01-25 16:48:29 +01:00
# include <stdlib.h>
# include <string.h>
2017-01-21 05:48:53 +01:00
# include "colors.h"
2016-11-26 00:21:31 +01:00
# include "defs.h"
# include "structs.h"
2017-01-21 05:48:53 +01:00
# include "alien.h"
# include "engine.h"
# include "explosion.h"
# include "game.h"
# include "gfx.h"
# include "player.h"
# include "renderer.h"
# include "screen.h"
2016-01-05 02:17:06 +01:00
typedef struct Message_ {
int face ;
2019-06-02 17:28:26 +02:00
char message [ STRMAX ] ;
2016-01-05 02:17:06 +01:00
} Message ;
static Message messages [ MAX_EVENTS ] ;
void cutscene_init ( int scene )
{
screen_clear ( black ) ;
renderer_update ( ) ;
screen_clear ( black ) ;
2019-06-06 04:13:48 +02:00
engine . keyState [ KEY_FIRE ] = 0 ;
2016-01-05 02:17:06 +01:00
engine . keyState [ KEY_ALTFIRE ] = 0 ;
engine . ssx = - 0.5 ;
engine . ssy = 0 ;
engine . smx = 0 ;
engine . smy = 0 ;
screen_flushBuffer ( ) ;
gfx_free ( ) ;
2016-11-23 03:16:49 +01:00
engine_resetLists ( ) ;
2016-11-25 18:50:32 +01:00
gfx_loadSprites ( ) ;
2016-01-05 02:17:06 +01:00
for ( int i = 0 ; i < ALIEN_MAX ; i + + )
{
// 0 is the dualfighter, but there doesn't seem to be any
// particular reason for choosing this alien def.
aliens [ i ] = alien_defs [ 0 ] ;
aliens [ i ] . face = 0 ;
2016-11-19 17:43:50 +01:00
aliens [ i ] . active = 0 ;
2016-01-05 02:17:06 +01:00
}
for ( int i = 0 ; i < MAX_EVENTS ; i + + )
{
strcpy ( messages [ i ] . message , " " ) ;
messages [ i ] . face = - 1 ;
}
switch ( scene )
{
case 0 :
2016-11-25 18:50:32 +01:00
gfx_loadBackground ( " gfx/spirit.jpg " ) ;
2016-01-05 02:17:06 +01:00
engine . ssx = - 3 ;
engine . ssy = 0 ;
aliens [ 0 ] . image [ 0 ] = gfx_shipSprites [ SS_FIREFLY ] ;
aliens [ 0 ] . x = screen - > w * 3 / 5 ;
aliens [ 0 ] . y = screen - > h / 2 ;
2020-07-16 19:22:16 +02:00
aliens [ 0 ] . dx = 3.05 ;
2016-11-19 17:43:50 +01:00
aliens [ 0 ] . active = 1 ;
2016-01-05 02:17:06 +01:00
for ( int i = 1 ; i < 7 ; i + + )
{
aliens [ i ] . image [ 0 ] = gfx_shipSprites [ SS_DUALFIGHTER ] ;
aliens [ i ] . x = RANDRANGE ( 0 , screen - > w / 8 ) ;
aliens [ i ] . y = RANDRANGE ( 50 , screen - > h - 50 ) ;
aliens [ i ] . dx = 3 ;
2016-11-19 17:43:50 +01:00
aliens [ i ] . active = 1 ;
2016-01-05 02:17:06 +01:00
}
messages [ 0 ] . face = - 1 ;
2019-06-06 04:13:48 +02:00
/// Cutscene (narration)
strcpy ( messages [ 0 ] . message , _ ( " While escaping with his newly acquired Firefly, Chris Bainfield is intercepted by a WEAPCO patrol... " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 1 ] . face = FS_CHRIS ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Chris Bainfield)
strcpy ( messages [ 1 ] . message , _ ( " These things just won't give up, will they? " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 2 ] . face = FS_CHRIS ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Chris Bainfield)
strcpy ( messages [ 2 ] . message , _ ( " What a dilemma! I'm not all that familiar with this ship's controls, but I can't let this patrol reach my rendezvous point... " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 3 ] . face = FS_CHRIS ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Chris Bainfield)
strcpy ( messages [ 3 ] . message , _ ( " I guess I'll have to fight them, then. Let's see what this ship can do! " ) ) ;
2016-01-05 02:17:06 +01:00
break ;
case 1 :
2016-11-25 18:50:32 +01:00
gfx_loadBackground ( " gfx/sol.jpg " ) ;
2016-01-05 02:17:06 +01:00
engine . ssx = - 0.5 ;
engine . ssy = 0 ;
aliens [ 0 ] . image [ 0 ] = gfx_shipSprites [ SS_KLINE ] ;
aliens [ 0 ] . x = screen - > w / 2 ;
aliens [ 0 ] . y = screen - > h / 2 ;
aliens [ 0 ] . dx = 0.5 ;
2016-11-19 17:43:50 +01:00
aliens [ 0 ] . active = 1 ;
2016-01-05 02:17:06 +01:00
for ( int i = 1 ; i < 15 ; i + + )
{
aliens [ i ] . image [ 0 ] = gfx_shipSprites [ SS_DUALFIGHTER ] ;
aliens [ i ] . x = RANDRANGE ( 0 , screen - > w ) ;
aliens [ i ] . y = RANDRANGE ( 50 , screen - > h - 50 ) ;
aliens [ i ] . dx = RANDRANGE ( 1 , 3 ) ;
2016-11-19 17:43:50 +01:00
aliens [ i ] . active = 1 ;
2016-01-05 02:17:06 +01:00
}
messages [ 0 ] . face = - 1 ;
2019-06-06 04:13:48 +02:00
/// Cutscene (narration)
strcpy ( messages [ 0 ] . message , _ ( " A few hours later, in the Sol system, news has already spread of Chris Bainfield's heroic actions. The commander of WEAPCO's navy considers his options. " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 1 ] . face = FS_KLINE ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Kline Kethlan)
strcpy ( messages [ 1 ] . message , _ ( " The Emperor will not be pleased. Spirit is now a free star system thanks to that interfering rebel pilot. " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 2 ] . face = FS_KLINE ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Kline Kethlan)
strcpy ( messages [ 2 ] . message , _ ( " It was reported that he was able to take down one of our most powerful frigates in under 3 minutes! " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 3 ] . face = FS_KLINE ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Kline Kethlan)
strcpy ( messages [ 3 ] . message , _ ( " Talent like that does not appear every day. He would be a perfect candidate for our new AI training program! " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 4 ] . face = FS_KLINE ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Kline Kethlan)
strcpy ( messages [ 4 ] . message , _ ( " What a pity I must kill him... " ) ) ;
2016-01-05 02:17:06 +01:00
break ;
case 2 :
2016-11-25 18:50:32 +01:00
gfx_loadBackground ( " gfx/spirit.jpg " ) ;
2020-07-16 19:22:16 +02:00
engine . ssx = - 1.45 ;
2016-01-05 02:17:06 +01:00
engine . ssy = 0 ;
aliens [ 0 ] . image [ 0 ] = gfx_shipSprites [ SS_FIREFLY ] ;
aliens [ 0 ] . x = screen - > w / 4 ;
aliens [ 0 ] . y = screen - > h / 2 ;
aliens [ 0 ] . dx = 1.5 ;
2016-11-19 17:43:50 +01:00
aliens [ 0 ] . active = 1 ;
2016-01-05 02:17:06 +01:00
aliens [ 1 ] . image [ 0 ] = gfx_shipSprites [ SS_SID ] ;
aliens [ 1 ] . x = screen - > w / 4 - 50 ;
aliens [ 1 ] . y = screen - > h / 2 - 40 ;
aliens [ 1 ] . dx = 1.5 ;
2016-11-19 17:43:50 +01:00
aliens [ 1 ] . active = 1 ;
2016-01-05 02:17:06 +01:00
messages [ 0 ] . face = FS_SID ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Sid Wilson)
strcpy ( messages [ 0 ] . message , _ ( " We're nearly ready to make the jump to Eyananth. " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 1 ] . face = FS_CHRIS ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Chris Bainfield)
strcpy ( messages [ 1 ] . message , _ ( " Aren't there a lot of WEAPCO slaves in this system? " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 2 ] . face = FS_SID ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Sid Wilson)
strcpy ( messages [ 2 ] . message , _ ( " Yes. It's got one of the highest mortality rates in the galaxy. " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 3 ] . face = FS_CHRIS ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Chris Bainfield)
strcpy ( messages [ 3 ] . message , _ ( " You think we can use that to our advantage? " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 4 ] . face = FS_SID ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Sid Wilson)
strcpy ( messages [ 4 ] . message , _ ( " I think so. I'll come up with a plan of action. " ) ) ;
2016-01-05 02:17:06 +01:00
break ;
case 3 :
2016-11-25 18:50:32 +01:00
gfx_loadBackground ( " gfx/eyananth.jpg " ) ;
2016-01-05 02:17:06 +01:00
engine . ssx = - 0.5 ;
engine . ssy = 0 ;
aliens [ 0 ] . image [ 0 ] = gfx_shipSprites [ SS_FIREFLY ] ;
aliens [ 0 ] . x = screen - > w * 3 / 8 ;
aliens [ 0 ] . y = screen - > h / 2 ;
aliens [ 0 ] . dx = 0.5 ;
2016-11-19 17:43:50 +01:00
aliens [ 0 ] . active = 1 ;
2016-01-05 02:17:06 +01:00
aliens [ 1 ] . image [ 0 ] = gfx_shipSprites [ SS_SID ] ;
aliens [ 1 ] . x = screen - > w * 3 / 8 - 50 ;
aliens [ 1 ] . y = screen - > h / 2 - 40 ;
aliens [ 1 ] . dx = 0.5 ;
2016-11-19 17:43:50 +01:00
aliens [ 1 ] . active = 1 ;
2016-01-05 02:17:06 +01:00
aliens [ 2 ] . image [ 0 ] = gfx_shipSprites [ SS_FRIEND ] ;
aliens [ 2 ] . x = screen - > w * 3 / 8 - 50 ;
aliens [ 2 ] . y = screen - > h / 2 + 40 ;
aliens [ 2 ] . dx = 0.5 ;
2016-11-19 17:43:50 +01:00
aliens [ 2 ] . active = 1 ;
2016-01-05 02:17:06 +01:00
messages [ 0 ] . face = FS_PHOEBE ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Phoebe Lexx)
strcpy ( messages [ 0 ] . message , _ ( " Nice head gear! You shop at the same place as me, huh? " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 1 ] . face = FS_CHRIS ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Chris Bainfield)
strcpy ( messages [ 1 ] . message , _ ( " More importantly, what were you doing out there? You're lucky I was around! " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 2 ] . face = FS_PHOEBE ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Phoebe Lexx)
strcpy ( messages [ 2 ] . message , _ ( " I'm looking for my sister. She vanished about a week ago. " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 3 ] . face = FS_PHOEBE ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Phoebe Lexx)
strcpy ( messages [ 3 ] . message , _ ( " Hey! Wait a moment! You're that rebel from Spirit! I think you're so cool! Can I come with you? " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 4 ] . face = FS_CHRIS ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Chris Bainfield)
strcpy ( messages [ 4 ] . message , _ ( " Extra firepower? I wouldn't mind one bit! What do you think, Sid? " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 5 ] . face = FS_SID ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Sid Wilson)
strcpy ( messages [ 5 ] . message , _ ( " I agree. I'm also interested in studying her homing missile launcher; it could come in handy. " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 6 ] . face = FS_CHRIS ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Chris Bainfield)
strcpy ( messages [ 6 ] . message , _ ( " In that case, welcome aboard, Phoebe! " ) ) ;
2016-01-05 02:17:06 +01:00
break ;
case 4 :
2016-11-25 18:50:32 +01:00
gfx_loadBackground ( " gfx/eyananth.jpg " ) ;
2020-07-16 19:22:16 +02:00
engine . ssx = - 1.45 ;
2016-01-05 02:17:06 +01:00
engine . ssy = 0 ;
aliens [ 0 ] . image [ 0 ] = gfx_shipSprites [ SS_FIREFLY ] ;
aliens [ 0 ] . x = screen - > w / 4 ;
aliens [ 0 ] . y = screen - > h / 2 ;
aliens [ 0 ] . dx = 1.5 ;
2016-11-19 17:43:50 +01:00
aliens [ 0 ] . active = 1 ;
2016-01-05 02:17:06 +01:00
aliens [ 1 ] . image [ 0 ] = gfx_shipSprites [ SS_SID ] ;
aliens [ 1 ] . x = screen - > w / 4 - 50 ;
aliens [ 1 ] . y = screen - > h / 2 - 40 ;
aliens [ 1 ] . dx = 1.5 ;
2016-11-19 17:43:50 +01:00
aliens [ 1 ] . active = 1 ;
2016-01-05 02:17:06 +01:00
aliens [ 2 ] . image [ 0 ] = gfx_shipSprites [ SS_FRIEND ] ;
aliens [ 2 ] . x = screen - > w / 4 - 50 ;
aliens [ 2 ] . y = screen - > h / 2 + 40 ;
aliens [ 2 ] . dx = 1.5 ;
2016-11-19 17:43:50 +01:00
aliens [ 2 ] . active = 1 ;
2016-01-05 02:17:06 +01:00
messages [ 0 ] . face = FS_SID ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Sid Wilson)
strcpy ( messages [ 0 ] . message , _ ( " What happened back there, Chris? The video feed was jammed. " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 1 ] . face = FS_CHRIS ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Chris Bainfield)
strcpy ( messages [ 1 ] . message , _ ( " We took down the WEAPCO mining vessel and then I was jumped by a man claiming to be Kline Kethlan. " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 2 ] . face = FS_SID ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Sid Wilson)
strcpy ( messages [ 2 ] . message , _ ( " I've heard of him. He's the Commander of WEAPCO's naval forces. One of the best pilots they ever had. " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 3 ] . face = FS_CHRIS ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Chris Bainfield)
strcpy ( messages [ 3 ] . message , _ ( " He did put up one hell of a fight! He didn't stick around for long, though. " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 4 ] . face = FS_CHRIS ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Chris Bainfield)
strcpy ( messages [ 4 ] . message , _ ( " Anyway, what's the scoop on Mordor, Sid? " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 5 ] . face = FS_SID ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Sid Wilson)
strcpy ( messages [ 5 ] . message , _ ( " I've learned from the scientist we captured that WEAPCO is testing a new fighter craft there. " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 6 ] . face = FS_CHRIS ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Chris Bainfield)
strcpy ( messages [ 6 ] . message , _ ( " We should probably destroy that craft, then. We might be able to thwart its development somewhat. " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 7 ] . face = FS_SID ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Sid Wilson)
strcpy ( messages [ 7 ] . message , _ ( " Agreed. Capturing it would be better, but that's probably not going to happen. " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 8 ] . face = FS_PHOEBE ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Phoebe Lexx)
strcpy ( messages [ 8 ] . message , _ ( " I wonder if my sister will be here... " ) ) ;
2016-01-05 02:17:06 +01:00
break ;
case 5 :
2016-11-25 18:50:32 +01:00
gfx_loadBackground ( " gfx/mordor.jpg " ) ;
2016-01-05 02:17:06 +01:00
engine . ssx = - 0.5 ;
engine . ssy = 0 ;
aliens [ 0 ] . image [ 0 ] = gfx_shipSprites [ SS_FIREFLY ] ;
aliens [ 0 ] . x = screen - > w * 3 / 8 ;
aliens [ 0 ] . y = screen - > h / 2 ;
aliens [ 0 ] . dx = 0.5 ;
2016-11-19 17:43:50 +01:00
aliens [ 0 ] . active = 1 ;
2016-01-05 02:17:06 +01:00
aliens [ 1 ] . image [ 0 ] = gfx_shipSprites [ SS_SID ] ;
aliens [ 1 ] . x = screen - > w * 3 / 8 - 50 ;
aliens [ 1 ] . y = screen - > h / 2 - 40 ;
aliens [ 1 ] . dx = 0.5 ;
2016-11-19 17:43:50 +01:00
aliens [ 1 ] . active = 1 ;
2016-01-05 02:17:06 +01:00
aliens [ 2 ] . image [ 0 ] = gfx_shipSprites [ SS_FRIEND ] ;
aliens [ 2 ] . x = screen - > w * 3 / 8 - 50 ;
aliens [ 2 ] . y = screen - > h / 2 + 40 ;
aliens [ 2 ] . dx = 0.5 ;
2016-11-19 17:43:50 +01:00
aliens [ 2 ] . active = 1 ;
2016-01-05 02:17:06 +01:00
messages [ 0 ] . face = FS_PHOEBE ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Phoebe Lexx)
strcpy ( messages [ 0 ] . message , _ ( " Will she be okay? " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 1 ] . face = FS_SID ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Sid Wilson)
strcpy ( messages [ 1 ] . message , _ ( " I've had a look at the implants and they should be easy to remove. She'll just have a headache for a while. " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 2 ] . face = FS_CHRIS ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Chris Bainfield)
strcpy ( messages [ 2 ] . message , _ ( " Will she be able to tell us anything useful? " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 3 ] . face = FS_SID ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Sid Wilson)
strcpy ( messages [ 3 ] . message , _ ( " We'll have to wait for her memory to come back. She might not be able to remember anything she did while the implants were in. " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 4 ] . face = FS_SID ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Sid Wilson)
strcpy ( messages [ 4 ] . message , _ ( " She'll still be able to pilot a ship though. " ) ) ;
2016-01-05 02:17:06 +01:00
break ;
case 6 :
2016-11-25 18:50:32 +01:00
gfx_loadBackground ( " gfx/mordor.jpg " ) ;
2020-07-16 19:22:16 +02:00
engine . ssx = - 1.45 ;
2016-01-05 02:17:06 +01:00
engine . ssy = 0 ;
aliens [ 0 ] . image [ 0 ] = gfx_shipSprites [ SS_FIREFLY ] ;
aliens [ 0 ] . x = screen - > w / 4 ;
aliens [ 0 ] . y = screen - > h / 2 ;
aliens [ 0 ] . dx = 1.5 ;
2016-11-19 17:43:50 +01:00
aliens [ 0 ] . active = 1 ;
2016-01-05 02:17:06 +01:00
aliens [ 1 ] . image [ 0 ] = gfx_shipSprites [ SS_SID ] ;
aliens [ 1 ] . x = screen - > w / 4 - 50 ;
aliens [ 1 ] . y = screen - > h / 2 - 40 ;
aliens [ 1 ] . dx = 1.5 ;
2016-11-19 17:43:50 +01:00
aliens [ 1 ] . active = 1 ;
2016-01-05 02:17:06 +01:00
aliens [ 2 ] . image [ 0 ] = gfx_shipSprites [ SS_FRIEND ] ;
aliens [ 2 ] . x = screen - > w / 4 - 50 ;
aliens [ 2 ] . y = screen - > h / 2 + 40 ;
aliens [ 2 ] . dx = 1.5 ;
2016-11-19 17:43:50 +01:00
aliens [ 2 ] . active = 1 ;
2016-01-05 02:17:06 +01:00
aliens [ 3 ] . image [ 0 ] = gfx_shipSprites [ SS_FRIEND ] ;
aliens [ 3 ] . x = screen - > w / 4 - 90 ;
aliens [ 3 ] . y = screen - > h / 2 ;
aliens [ 3 ] . dx = 1.5 ;
2016-11-19 17:43:50 +01:00
aliens [ 3 ] . active = 1 ;
2016-01-05 02:17:06 +01:00
messages [ 0 ] . face = FS_CHRIS ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Chris Bainfield)
strcpy ( messages [ 0 ] . message , _ ( " Sorry folks, we just lost our bargaining chip. " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 1 ] . face = FS_SID ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Sid Wilson)
strcpy ( messages [ 1 ] . message , _ ( " Don't worry about it. It's not what I hoped for, but it should still make it easier to defeat WEAPCO. " ) ) ;
2016-01-05 02:17:06 +01:00
2016-01-09 03:33:40 +01:00
messages [ 2 ] . face = FS_URSULA ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Ursula Lexx)
strcpy ( messages [ 2 ] . message , _ ( " Sol is going to be difficult. I've heard they have a lot of heavy defenses on the outer planets. " ) ) ;
2016-01-05 02:17:06 +01:00
2016-01-09 03:33:40 +01:00
messages [ 3 ] . face = FS_SID ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Sid Wilson)
strcpy ( messages [ 3 ] . message , _ ( " We'll have to start there, then. " ) ) ;
2016-01-05 02:17:06 +01:00
messages [ 4 ] . face = FS_SID ;
2019-06-06 04:13:48 +02:00
/// Cutscene (Sid Wilson)
strcpy ( messages [ 4 ] . message , _ ( " The forces here will be unlike anything we've met so far. Just be careful, everyone. " ) ) ;
2016-01-05 02:17:06 +01:00
break ;
}
/*
2019-06-06 04:13:48 +02:00
Because we can fiddle with the images , we need to set the engines to
2016-01-05 02:17:06 +01:00
the correct places on the craft . Otherwise it will look wrong
*/
for ( int i = 0 ; i < 15 ; i + + )
{
aliens [ i ] . engineX = aliens [ i ] . image [ 0 ] - > w ;
aliens [ i ] . engineY = ( aliens [ i ] . image [ 0 ] - > h / 2 ) ;
}
2016-11-19 17:43:50 +01:00
int showMessage = 0 ;
2016-01-07 02:35:37 +01:00
int currentMessage = - 1 ;
2016-01-05 02:17:06 +01:00
int timer = 60 * 4 ;
screen_drawBackground ( ) ;
SDL_Surface * face ;
2019-06-06 04:13:48 +02:00
2016-11-26 00:01:36 +01:00
player_flushInput ( ) ;
2016-01-05 02:17:06 +01:00
2016-11-19 17:43:50 +01:00
while ( 1 )
2016-01-05 02:17:06 +01:00
{
renderer_update ( ) ;
screen_unBuffer ( ) ;
2016-11-26 00:01:36 +01:00
player_getInput ( ) ;
2016-01-05 02:17:06 +01:00
game_doStars ( ) ;
game_doExplosions ( ) ;
for ( int i = 0 ; i < 15 ; i + + )
{
if ( aliens [ i ] . active )
{
explosion_addEngine ( & aliens [ i ] ) ;
if ( scene = = 0 & & i > 0 & & ( timer % 15 ) = = i ) {
2017-02-01 15:19:12 +01:00
aliens [ i ] . dx + = ( DRAND - 0.5 ) * 0.1 ;
aliens [ i ] . dy + = ( DRAND - 0.5 ) * 0.1 ;
2020-07-16 19:22:16 +02:00
if ( aliens [ i ] . x > 500 - ( timer % 480 ) )
2016-01-05 02:17:06 +01:00
aliens [ i ] . dx - = 0.2 ;
if ( aliens [ i ] . x < 0 )
aliens [ i ] . dx + = 0.2 ;
}
aliens [ i ] . x + = aliens [ i ] . dx ;
aliens [ i ] . y + = aliens [ i ] . dy ;
aliens [ i ] . x + = engine . ssx + engine . smx ;
screen_blit ( aliens [ i ] . image [ 0 ] , ( int ) aliens [ i ] . x , ( int ) aliens [ i ] . y ) ;
if ( aliens [ i ] . x > ( screen - > w + 50 ) )
{
aliens [ i ] . x = - 50 ;
aliens [ i ] . y = rand ( ) % ( screen - > h - 40 ) ;
}
if ( aliens [ i ] . y < - 50 )
aliens [ i ] . y = ( screen - > h + 50 ) ;
if ( aliens [ i ] . y > ( screen - > h + 50 ) )
aliens [ i ] . y = - 50 ;
}
}
timer - - ;
2020-07-16 19:22:16 +02:00
if ( timer < = 0 )
2016-01-05 02:17:06 +01:00
{
showMessage = ! showMessage ;
2020-07-16 19:22:16 +02:00
timer = 30 ;
2016-01-05 02:17:06 +01:00
if ( showMessage )
{
2020-07-16 19:22:16 +02:00
timer = engine . radioLife * 2 ;
2016-01-05 02:17:06 +01:00
currentMessage + + ;
if ( currentMessage = = 10 )
break ;
if ( strcmp ( messages [ currentMessage ] . message , " " ) = = 0 )
break ;
face = NULL ;
if ( messages [ currentMessage ] . face ! = - 1 )
face = gfx_faceSprites [ messages [ currentMessage ] . face ] ;
gfx_createMessageBox ( face , messages [ currentMessage ] . message , 0 ) ;
}
}
if ( ( showMessage ) & & ( gfx_messageBox ! = NULL ) )
screen_blit ( gfx_messageBox , ( screen - > w - gfx_messageBox - > w ) / 2 , screen - > h - 100 ) ;
2019-06-09 22:08:30 +02:00
/// Instructions for how to skip the current cutscene
2019-06-06 04:13:48 +02:00
screen_renderUnicode ( _ ( " Press [Escape] to skip " ) , - 1 , screen - > h - 20 , FONT_WHITE ) ;
2016-01-05 02:17:06 +01:00
game_delayFrame ( ) ;
2020-07-16 19:22:16 +02:00
if ( ( engine . keyState [ KEY_FIRE ] ) | | ( engine . keyState [ KEY_ALTFIRE ] ) )
{
timer = 0 ;
engine . keyState [ KEY_FIRE ] = 0 ;
engine . keyState [ KEY_ALTFIRE ] = 0 ;
}
if ( engine . keyState [ KEY_ESCAPE ] )
2016-01-05 02:17:06 +01:00
break ;
}
screen_flushBuffer ( ) ;
gfx_free ( ) ;
screen_clear ( black ) ;
renderer_update ( ) ;
}