Moved all "script" files to C code.

I'm going to do this for all of the stuff in the "data" directory.
It was obviously an attempt to make Starfighter more flexible
somehow, but it fails at that entirely. More importantly, these
things are both unreadable and easy to make mistakes on. Simple
C code is much easier to read.

The only disadvantage is that recompiling is now needed to change
the "scripts", but considering that they had hidden limits and
no one was making custom missions to begin with, I don't consider
this to be a real loss.
This commit is contained in:
onpon4 2016-01-02 22:37:44 -05:00
parent bdf1b49d44
commit e258921987
20 changed files with 418 additions and 494 deletions

View File

@ -1,7 +1,7 @@
CXXFLAGS ?= -O2 -Wall -g CXXFLAGS ?= -O2 -Wall -g
CXXFLAGS += `pkg-config --cflags sdl2 SDL2_image SDL2_mixer` CXXFLAGS += `pkg-config --cflags sdl2 SDL2_image SDL2_mixer`
LIBS = `pkg-config --libs sdl2 SDL2_image SDL2_mixer` LIBS = `pkg-config --libs sdl2 SDL2_image SDL2_mixer`
OBJS = alien.o audio.o bullet.o cargo.o collectable.o colors.o engine.o explosion.o game.o gfx.o intermission.o loadSave.o messages.o misc.o missions.o player.o renderer.o resources.o screen.o script.o ship.o shop.o Starfighter.o title.o weapons.o window.o OBJS = alien.o audio.o bullet.o cargo.o collectable.o colors.o engine.o event.o explosion.o game.o gfx.o intermission.o loadSave.o messages.o misc.o missions.o player.o renderer.o resources.o screen.o script.o ship.o shop.o Starfighter.o title.o weapons.o window.o
VERSION = 1.4.1-dev VERSION = 1.4.1-dev
PROG = starfighter PROG = starfighter

View File

@ -1,61 +0,0 @@
5
FACE_PHOEBE
-1
0
Ummm... something about this doesn't look right! They should be offering more resistance than this!
-8
FACE_PHOEBE
-1
0
DAMMIT! It's a trap! Come on, Chris, we have to leave NOW!!
-9
-1
16
128
@none@
-13
FACE_SID
-1
0
Chris, wh...
-15
FACE_KLINE
-1
0
So finally I meet the man who has been causing us so much trouble!
-20
FACE_CHRIS
-1
0
I see you've jammed up my warp drive. Who are you?
-25
FACE_KLINE
-1
0
I am Kline Kethlan. And I am here to put to a stop to your worthless little crusade!
-31
FACE_CHRIS
-1
0
Kline Kethlan, huh? You sure sound confident.
-36
FACE_KLINE
-1
0
Nowhere to run, nowhere to hide, and no one to help you! This will certainly be interesting...
-42
-1
15
-20
@none@
0

View File

@ -1,17 +0,0 @@
2
FACE_URSULA
-1
0
Unidentified craft sighted. Will proceed to destroy all targets.
8
FACE_CHRIS
-1
0
Looks like she's got one of those homing missile launchers too! Any advice, Phoebe?
14
FACE_PHOEBE
-1
0
Just try and dodge them!

View File

@ -1,61 +0,0 @@
1
FACE_CHRIS
-1
0
Nice ship!
7
FACE_KRASS
-1
0
Thanks, boy. Made it myself!
60
FACE_KRASS
-1
0
Hey, boy, we've got company! Looks like your friends didn't do a very good job after all!
60
-1
10
-1048576
@none@
90
-1
11
-1048576
@none@
93
FACE_KRASS
-1
0
Keep those things off my back or it'll cost you extra!!!
120
-1
12
-1048576
@none@
140
FACE_PHOEBE
16
-1048576
Hey!! Did we miss anything exciting?
140
-1
17
-1048576
@none@
150
FACE_KRASS
19
128
I've earned my fee. I'll see you around, boy!
0

View File

@ -1,8 +0,0 @@
90
FACE_SID
14
128
DAMMIT! It's getting away! We've got to stop it!
0

View File

@ -1,37 +0,0 @@
45
FACE_SID
-1
0
Chris! Another two of those ray cannons just arrived in your sector!
45
-1
11
-1048576
@none@
45
-1
12
-1048576
@none@
90
FACE_SID
-1
0
Two more!
90
-1
13
-1048576
@none@
90
-1
14
-1048576
@none@
0

View File

@ -1,55 +0,0 @@
1
-1
10
-1048576
@none@
2
FACE_URSULA
-1
0
It's a trap! My God! It's Tyler!
8
FACE_KRASS
-1
0
I'm a mercenary, what do you expect?! WEAPCO hired me to do a job, just like you have been doing.
14
FACE_CHRIS
-1
0
Good point. It would be foolish to expect anything else.
15
-1
11
-1048576
@none@
20
FACE_KRASS
-1
0
Now if you'll assist me in dying quickly, I have a cheque to earn, boy...
25
FACE_CHRIS
-1
0
I have a name, you know. Do you remember it?
45
-1
12
-1048576
@none@
45
-1
13
-1048576
@none@
0

View File

@ -1,13 +0,0 @@
2
FACE_KLINE
-1
0
That's far enough, Bainfield. You've been lucky so far, but your luck is about to run out!
8
FACE_CHRIS
-1
0
Yeah, right! Like I'd lose to you after coming this far!
0

View File

@ -1,11 +0,0 @@
2
FACE_CHRIS
-1
0
WEAPCO is finished, Kethlan! You have nowhere to run, nowhere to hide, and no one to help you.
8
FACE_KLINE
-1
0
You underestimate me, Bainfield.

View File

@ -1,37 +0,0 @@
2
FACE_SID
-1
0
You should try and destroy some of the frigate's weaponary, it'll help!
120
FACE_SID
-1
0
Chris, get a move on! The frigate is almost in range!
150
FACE_SID
-1
0
The frigate is charging its cannon!
170
FACE_SID
-1
0
Chris, HURRY!!!
180
-1
14
132
@none@
180
FACE_SID
-1
0
oh my god...
0

View File

@ -1,7 +0,0 @@
2
FACE_PHOEBE
-1
0
Hey, over here! Destroy this tug so I can break free!
0

View File

@ -1,61 +0,0 @@
2
FACE_CREW
-1
0
Thank God! Please, help us! If they destroy this ship...
6
FACE_CHRIS
-1
0
How long do you need?
10
FACE_CREW
-1
0
Just a few minutes!
60
FACE_CREW
19
-16
Alright! We've got the weapons working again! Now to look at the engines...
80
FACE_CREW
19
16
DAMN! The guns are offline again! What you guys doing back there?!
100
FACE_CREW
19
2048
Chris, HELP!! We've lost all system power! We're a sitting duck out here!
120
FACE_CREW
-1
0
Just a little longer...
140
FACE_CREW
19
-2048
Okay! We've fixed that one. We think we've found the problem with the engines too...
177
FACE_CREW
-1
0
Engines fixed! Let's move!
180
-1
19
132
@none@
0

View File

@ -42,6 +42,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "collectable.h" #include "collectable.h"
#include "colors.h" #include "colors.h"
#include "engine.h" #include "engine.h"
#include "event.h"
#include "explosion.h" #include "explosion.h"
#include "game.h" #include "game.h"
#include "gfx.h" #include "gfx.h"

374
src/event.cpp Normal file
View File

@ -0,0 +1,374 @@
/*
Copyright (C) 2003 Parallel Realities
Copyright (C) 2011, 2012, 2013 Guus Sliepen
Copyright (C) 2012, 2015, 2016 onpon4 <onpon4@riseup.net>
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/>.
*/
#include "Starfighter.h"
static Event gameEvent[20];
static const char *klineGreeting[] = {
"How nice to see you again, Bainfield!",
"It all ends here, rebel!",
"I hope you won't disappoint me this time...",
"Do you really think you can defeat us?!"
};
void event_set()
{
for (int i = 0 ; i < 20 ; i++)
{
gameEvent[i].time = 0;
gameEvent[i].face = -1;
strcpy(gameEvent[i].message, "");
gameEvent[i].entity = -1;
gameEvent[i].flag = 0;
}
switch (game.area)
{
case MISN_INTERCEPTION:
if ((aliens[ALIEN_KLINE].classDef == CD_KLINE) &&
(aliens[ALIEN_KLINE].active))
gameEvent[0].time = 2;
gameEvent[0].face = FACE_KLINE;
strcpy(gameEvent[0].message, klineGreeting[rand() % 4]);
break;
case MISN_MOEBO:
gameEvent[0].time = 2;
gameEvent[0].face = FACE_SID;
strcpy(gameEvent[0].message, "You should try and destroy some of the frigate's weaponary, it'll help!");
gameEvent[1].time = 120;
gameEvent[1].face = FACE_SID;
strcpy(gameEvent[1].message, "Chris, get a move on! The frigate is almost in range!");
gameEvent[2].time = 150;
gameEvent[2].face = FACE_SID;
strcpy(gameEvent[2].message, "The frigate is charging its cannon!");
gameEvent[3].time = 170;
gameEvent[3].face = FACE_SID;
strcpy(gameEvent[3].message, "Chris, HURRY!!!");
gameEvent[4].time = 180;
gameEvent[4].face = FACE_SID;
strcpy(gameEvent[4].message, "Oh my god...");
gameEvent[4].entity = ALIEN_BOSS;
gameEvent[4].flag = FL_LEAVESECTOR | FL_IMMORTAL;
break;
case MISN_NEROD:
gameEvent[0].time = 2;
gameEvent[0].face = FACE_PHOEBE;
strcpy(gameEvent[0].message, "Hey, over here! Destroy this tug so I can break free!");
break;
case MISN_ALLEZ:
gameEvent[0].time = 2;
gameEvent[0].face = FACE_CREW;
strcpy(gameEvent[0].message, "Thank God! Please, help us! If they destroy this ship...");
gameEvent[1].time = 6;
gameEvent[1].face = FACE_CHRIS;
strcpy(gameEvent[1].message, "How long do you need?");
gameEvent[2].time = 10;
gameEvent[2].face = FACE_CREW;
strcpy(gameEvent[2].message, "Just a few minutes!");
gameEvent[3].time = 60;
gameEvent[3].face = FACE_CREW;
strcpy(gameEvent[3].message, "Alright! We've got the weapons working again! Now to look at the engines...");
gameEvent[3].entity = ALIEN_GOODTRANSPORT;
gameEvent[3].flag = -FL_NOFIRE;
gameEvent[4].time = 80;
gameEvent[4].face = FACE_CREW;
strcpy(gameEvent[4].message, "DAMN! The guns are offline again! What you guys doing back there?!");
gameEvent[4].entity = ALIEN_GOODTRANSPORT;
gameEvent[4].flag = FL_NOFIRE;
gameEvent[5].time = 100;
gameEvent[5].face = FACE_CREW;
strcpy(gameEvent[5].message, "Chris, HELP!! We've lost all system power! We're a sitting duck out here!");
gameEvent[5].entity = ALIEN_GOODTRANSPORT;
gameEvent[5].flag = FL_DISABLED;
gameEvent[6].time = 120;
gameEvent[6].face = FACE_CREW;
strcpy(gameEvent[6].message, "Just a little longer...");
gameEvent[7].time = 140;
gameEvent[7].face = FACE_CREW;
strcpy(gameEvent[7].message, "Okay! We've fixed that one. We think we've found the problem with the engines too...");
gameEvent[7].entity = ALIEN_GOODTRANSPORT;
gameEvent[7].flag = -FL_DISABLED;
gameEvent[8].time = 177;
gameEvent[8].face = FACE_CREW;
strcpy(gameEvent[8].message, "Engines fixed! Let's move!");
gameEvent[9].time = 180;
gameEvent[9].entity = ALIEN_GOODTRANSPORT;
gameEvent[9].flag = FL_LEAVESECTOR | FL_IMMORTAL;
break;
case MISN_ELAMALE:
gameEvent[0].time = 5;
gameEvent[0].face = FACE_PHOEBE;
strcpy(gameEvent[0].message, "Ummm... something about this doesn't look right! They should be offering more resistance than this!");
gameEvent[1].time = -8;
gameEvent[1].face = FACE_PHOEBE;
strcpy(gameEvent[1].message, "DAMMIT! It's a trap! Come on, Chris, we have to leave NOW!!");
gameEvent[2].time = -9;
gameEvent[2].entity = ALIEN_PHOEBE;
gameEvent[2].flag = FL_LEAVESECTOR;
gameEvent[3].time = -13;
gameEvent[3].face = FACE_SID;
strcpy(gameEvent[3].message, "Chris, wh...");
gameEvent[4].time = -15;
gameEvent[4].face = FACE_KLINE;
strcpy(gameEvent[4].message, "So finally I meet the man who has been causing us so much trouble!");
gameEvent[5].time = -20;
gameEvent[5].face = FACE_CHRIS;
strcpy(gameEvent[5].message, "I see you've jammed up my warp drive. Who are you?");
gameEvent[6].time = -25;
gameEvent[6].face = FACE_KLINE;
strcpy(gameEvent[6].message, "I am Kline Kethlan. And I am here to put to a stop to your worthless little crusade!");
gameEvent[7].time = -31;
gameEvent[7].face = FACE_CHRIS;
strcpy(gameEvent[7].message, "Kline Kethlan, huh? You sure sound confident.");
gameEvent[8].time = -36;
gameEvent[8].face = FACE_KLINE;
strcpy(gameEvent[8].message, "Nowhere to run, nowhere to hide, and no one to help you! This will certainly be interesting...");
gameEvent[9].time = -42;
gameEvent[9].entity = ALIEN_KLINE;
gameEvent[9].flag = -(FL_IMMORTAL | FL_NOFIRE);
break;
case MISN_ODEON:
gameEvent[0].time = 2;
gameEvent[0].face = FACE_URSULA;
strcpy(gameEvent[0].message, "Unidentified craft sighted. Will proceed to destroy all targets.");
gameEvent[1].time = 8;
gameEvent[1].face = FACE_CHRIS;
strcpy(gameEvent[1].message, "Looks like she's got one of those homing missile launchers too! Any advice, Phoebe?");
gameEvent[2].time = 14;
gameEvent[2].face = FACE_PHOEBE;
strcpy(gameEvent[2].message, "Just try and dodge them!");
break;
case MISN_ALMARTHA:
gameEvent[0].time = 1;
gameEvent[0].face = FACE_CHRIS;
strcpy(gameEvent[0].message, "Nice ship!");
gameEvent[1].time = 7;
gameEvent[1].face = FACE_KRASS;
strcpy(gameEvent[1].message, "Thanks, boy. Made it myself!");
gameEvent[2].time = 60;
gameEvent[2].face = FACE_KRASS;
strcpy(gameEvent[2].message, "Hey, boy, we've got company! Looks like your friends didn't do a very good job after all!");
gameEvent[2].entity = 10;
gameEvent[2].flag = -FL_ACTIVATE;
gameEvent[3].time = 90;
gameEvent[3].entity = 11;
gameEvent[3].flag = -FL_ACTIVATE;
gameEvent[4].time = 93;
gameEvent[4].face = FACE_KRASS;
strcpy(gameEvent[4].message, "Keep those things off my back or it'll cost you extra!!!");
gameEvent[5].time = 120;
gameEvent[5].entity = 12;
gameEvent[5].flag = -FL_ACTIVATE;
gameEvent[6].time = 140;
gameEvent[6].face = FACE_PHOEBE;
strcpy(gameEvent[6].message, "Hey! Did we miss anything exciting?");
gameEvent[6].entity = ALIEN_PHOEBE;
gameEvent[6].flag = -FL_ACTIVATE;
gameEvent[7].time = 140;
gameEvent[7].entity = ALIEN_URSULA;
gameEvent[7].flag = -FL_ACTIVATE;
gameEvent[8].time = 150;
gameEvent[8].face = FACE_KRASS;
strcpy(gameEvent[8].message, "I've earned my fee. I'll see you around, boy!");
gameEvent[8].entity = ALIEN_GOODTRANSPORT;
gameEvent[8].flag = FL_LEAVESECTOR;
break;
case MISN_POSWIC:
gameEvent[0].time = 90;
gameEvent[0].face = FACE_SID;
strcpy(gameEvent[0].message, "DAMMIT! It's getting away! We've got to stop it!");
gameEvent[0].entity = ALIEN_BOSS;
gameEvent[0].flag = FL_LEAVESECTOR;
break;
case MISN_SATURN:
gameEvent[0].time = 45;
gameEvent[0].face = FACE_SID;
strcpy(gameEvent[0].message, "Chris! Another two of those ray cannons just arrived in your sector!");
gameEvent[0].entity = 11;
gameEvent[0].flag = -FL_ACTIVATE;
gameEvent[1].time = 45;
gameEvent[1].entity = 12;
gameEvent[1].flag = -FL_ACTIVATE;
gameEvent[2].time = 90;
gameEvent[2].face = FACE_SID;
strcpy(gameEvent[2].message, "Two more!");
gameEvent[2].entity = 13;
gameEvent[2].flag = -FL_ACTIVATE;
gameEvent[3].time = 90;
gameEvent[3].entity = 14;
gameEvent[3].flag = -FL_ACTIVATE;
break;
case MISN_JUPITER:
gameEvent[0].time = 1;
gameEvent[0].entity = 10;
gameEvent[0].flag = -FL_ACTIVATE;
gameEvent[1].time = 2;
gameEvent[1].face = FACE_URSULA;
strcpy(gameEvent[1].message, "It's a trap! My God! It's Tyler!");
gameEvent[2].time = 8;
gameEvent[2].face = FACE_KRASS;
strcpy(gameEvent[2].message, "I'm a mercenary, what do you expect?! WEAPCO hired me to do a job, just like you have been doing.");
gameEvent[3].time = 14;
gameEvent[3].face = FACE_CHRIS;
strcpy(gameEvent[3].message, "Good point. It would be foolish to expect anything else.");
gameEvent[4].time = 15;
gameEvent[4].entity = 11;
gameEvent[4].flag = -FL_ACTIVATE;
gameEvent[5].time = 20;
gameEvent[5].face = FACE_KRASS;
strcpy(gameEvent[5].message, "Now if you'll assist me in dying quickly, I have a cheque to earn, boy...");
gameEvent[6].time = 25;
gameEvent[6].face = FACE_CHRIS;
strcpy(gameEvent[6].message, "I have a name, you know. Do you remember it?");
gameEvent[4].time = 45;
gameEvent[4].entity = 12;
gameEvent[4].flag = -FL_ACTIVATE;
gameEvent[4].time = 45;
gameEvent[4].entity = 13;
gameEvent[4].flag = -FL_ACTIVATE;
break;
case MISN_EARTH:
gameEvent[0].time = 2;
gameEvent[0].face = FACE_KLINE;
strcpy(gameEvent[0].message, "That's far enough, Bainfield. You've been lucky so far, but your luck is about to run out!");
gameEvent[1].time = 8;
gameEvent[1].face = FACE_CHRIS;
strcpy(gameEvent[1].message, "Yeah, right! Like I'd lose to you after coming this far!");
break;
case MISN_VENUS:
gameEvent[0].time = 2;
gameEvent[0].face = FACE_CHRIS;
strcpy(gameEvent[0].message, "WEAPCO is finished, Kethlan! You have nowhere to run, nowhere to hide, and no one to help you.");
gameEvent[1].time = 8;
gameEvent[1].face = FACE_KLINE;
strcpy(gameEvent[1].message, "You underestimate me, Bainfield.");
break;
}
}
void event_check()
{
for (int i = 0 ; i < 20 ; i++)
{
if (engine.timeTaken == gameEvent[i].time)
{
if (strcmp(gameEvent[i].message, "@none@") != 0)
{
setRadioMessage(gameEvent[i].face, gameEvent[i].message, 1);
}
if (gameEvent[i].entity > -1)
{
if (gameEvent[i].flag != -FL_ACTIVATE)
{
aliens[gameEvent[i].entity].flags += gameEvent[i].flag;
}
else
{
aliens[gameEvent[i].entity].active = true;
aliens[gameEvent[i].entity].x = ((int)player.x +
RANDRANGE(400, 800));
aliens[gameEvent[i].entity].y = ((int)player.y +
RANDRANGE(-400, 800));
}
}
gameEvent[i].time = 0;
}
}
}
void event_sync()
{
for (int i = 0 ; i < 20 ; i++)
{
if (gameEvent[i].time < 0)
{
gameEvent[i].time = engine.timeTaken + abs(gameEvent[i].time);
}
}
}

37
src/event.h Normal file
View File

@ -0,0 +1,37 @@
/*
Copyright (C) 2003 Parallel Realities
Copyright (C) 2011 Guus Sliepen
Copyright (C) 2015, 2016 onpon4 <onpon4@riseup.net>
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/>.
*/
#ifndef EVENT_H
#define EVENT_H
typedef struct Event_ {
int time;
int face;
char message[255];
int entity;
int flag;
} Event;
void event_set();
void event_check();
void event_sync();
#endif

View File

@ -1718,7 +1718,7 @@ static void game_doHud()
engine.timeTaken++; engine.timeTaken++;
engine.counter2 = SDL_GetTicks() + 1000; engine.counter2 = SDL_GetTicks() + 1000;
if (engine.missionCompleteTimer == 0) if (engine.missionCompleteTimer == 0)
checkScriptEvents(); event_check();
} }
if ((engine.timeMission) && (!engine.cheatTime) && (player.shield > 0)) if ((engine.timeMission) && (!engine.cheatTime) && (player.shield > 0))
@ -1748,7 +1748,7 @@ static void game_doHud()
currentMission.timeLimit2[i]--; currentMission.timeLimit2[i]--;
} }
checkTimer(); checkTimer();
checkScriptEvents(); event_check();
} }
if ((engine.seconds == 0) && (engine.minutes == 0)) if ((engine.seconds == 0) && (engine.minutes == 0))
@ -1761,7 +1761,7 @@ static void game_doHud()
currentMission.timeLimit2[i]--; currentMission.timeLimit2[i]--;
} }
checkTimer(); checkTimer();
checkScriptEvents(); event_check();
engine.counter = (SDL_GetTicks() + 1000); engine.counter = (SDL_GetTicks() + 1000);
} }
} }
@ -2099,7 +2099,7 @@ int game_mainLoop()
clearInfoLines(); clearInfoLines();
loadScriptEvents(); event_set();
engine.ssx = 0; engine.ssx = 0;
engine.ssy = 0; engine.ssy = 0;

View File

@ -19,8 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "Starfighter.h" #include "Starfighter.h"
// God, I hate this file! :((
Planet systemPlanet[10]; Planet systemPlanet[10];
mission currentMission; mission currentMission;
static mission missions[MISN_MAX]; static mission missions[MISN_MAX];
@ -529,7 +527,7 @@ static char revealHiddenObjectives()
if (game.area == MISN_ELAMALE) if (game.area == MISN_ELAMALE)
{ {
mission_killAllEnemies(); mission_killAllEnemies();
syncScriptEvents(); event_sync();
aliens[ALIEN_KLINE].active = true; aliens[ALIEN_KLINE].active = true;
aliens[ALIEN_KLINE].x = player.x + 1000; aliens[ALIEN_KLINE].x = player.x + 1000;
aliens[ALIEN_KLINE].y = player.y; aliens[ALIEN_KLINE].y = player.y;

View File

@ -20,111 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "Starfighter.h" #include "Starfighter.h"
static cutMsg cutMessage[10]; static cutMsg cutMessage[10];
static event gameEvent[20];
static void setKlineGreeting()
{
static const char *greet[] = {
"How nice to see you again, Bainfield!",
"It all ends here, rebel!",
"I hope you won't disappoint me this time...",
"Do you really think you can defeat us?!"
};
gameEvent[0].time = 2;
gameEvent[0].face = FACE_KLINE;
strcpy(gameEvent[0].message, greet[rand() % 4]);
gameEvent[0].entity = -1;
gameEvent[0].flag = 0;
}
void loadScriptEvents()
{
for (int i = 0 ; i < 20 ; i++)
{
gameEvent[i].time = 0;
strcpy(gameEvent[i].message, "");
gameEvent[i].entity = -1;
gameEvent[i].flag = 0;
}
if ((game.area == MISN_INTERCEPTION) &&
(aliens[ALIEN_KLINE].classDef == CD_KLINE) &&
(aliens[ALIEN_KLINE].active))
setKlineGreeting();
char filename[255];
sprintf(filename, "data/script%d.txt", game.area);
FILE *fp;
int i = 0;
int time, entity, flags;
char face[255], message[255];
fp = fopen(filename, "rb");
if (fp == NULL)
return;
while (fscanf(fp, "%d %s %d %d ", &time, face, &entity, &flags) == 4)
{
if (fscanf(fp, "%[^\n]%*c", message) < 1)
strcpy(message, "Error: Text missing");
gameEvent[i].time = time;
gameEvent[i].face = getFace(face);
gameEvent[i].entity = entity;
gameEvent[i].flag = flags;
strcpy(gameEvent[i].message, message);
i++;
}
fclose(fp);
}
void checkScriptEvents()
{
for (int i = 0 ; i < 20 ; i++)
{
if (engine.timeTaken == gameEvent[i].time)
{
if (strcmp(gameEvent[i].message, "@none@") != 0)
{
setRadioMessage(gameEvent[i].face, gameEvent[i].message, 1);
}
if (gameEvent[i].entity > -1)
{
if (gameEvent[i].flag != -FL_ACTIVATE)
{
aliens[gameEvent[i].entity].flags += gameEvent[i].flag;
}
else
{
aliens[gameEvent[i].entity].active = true;
aliens[gameEvent[i].entity].x = ((int)player.x +
RANDRANGE(400, 800));
aliens[gameEvent[i].entity].y = ((int)player.y +
RANDRANGE(-400, 800));
}
}
gameEvent[i].time = 0;
}
}
}
void syncScriptEvents()
{
for (int i = 0 ; i < 20 ; i++)
{
if (gameEvent[i].time < 0)
{
gameEvent[i].time = engine.timeTaken + abs(gameEvent[i].time);
}
}
}
static void setScene(int scene) static void setScene(int scene)
{ {

View File

@ -20,9 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef SCRIPT_H #ifndef SCRIPT_H
#define SCRIPT_H #define SCRIPT_H
extern void loadScriptEvents();
extern void checkScriptEvents();
extern void syncScriptEvents();
extern void doCutscene(int scene); extern void doCutscene(int scene);
#endif #endif

View File

@ -227,16 +227,6 @@ typedef struct Planet_ {
} Planet; } Planet;
typedef struct event_ {
int time;
char message[255];
int face;
int entity;
int flag;
} event;
typedef struct cutMsg_ { typedef struct cutMsg_ {
int face; int face;