generated from sigonasr2/CPlusPlusProjectTemplate
Complete ending to Chapter 1
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
6fb5ec4acb
commit
fa2f66b964
@ -8,8 +8,9 @@
|
|||||||
using namespace olc;
|
using namespace olc;
|
||||||
|
|
||||||
//#define TEST_MAP1 //Toggle to just play around on map 1.
|
//#define TEST_MAP1 //Toggle to just play around on map 1.
|
||||||
#define TEST_MAP2 //Toggle on to just play around on map 2.
|
//#define TEST_MAP2 //Toggle on to just play around on map 2.
|
||||||
#define SKIP_INTRO true
|
|
||||||
|
#define SKIP_INTRO false
|
||||||
|
|
||||||
#define STARTING_MAP "assets/maps/map1"
|
#define STARTING_MAP "assets/maps/map1"
|
||||||
#define STARTING_STATE CUTSCENE_1
|
#define STARTING_STATE CUTSCENE_1
|
||||||
@ -40,6 +41,7 @@ enum GAMESTATE{
|
|||||||
WAITING_FOR_CUTSCENE_3,
|
WAITING_FOR_CUTSCENE_3,
|
||||||
GAME_OVER,
|
GAME_OVER,
|
||||||
COLLECTED_SILICON,
|
COLLECTED_SILICON,
|
||||||
|
CUTSCENE_4, //First rover repaired.
|
||||||
};
|
};
|
||||||
|
|
||||||
namespace cutscene{
|
namespace cutscene{
|
||||||
@ -60,6 +62,8 @@ namespace cutscene{
|
|||||||
WALK_TO_ROVER,
|
WALK_TO_ROVER,
|
||||||
DISPLAY_VOLCANIC_AREA,
|
DISPLAY_VOLCANIC_AREA,
|
||||||
END_VOLCANIC_AREA_CUTSCENE,
|
END_VOLCANIC_AREA_CUTSCENE,
|
||||||
|
REPAIR_ROVER_1,
|
||||||
|
GET_SOME_REST,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,6 +86,7 @@ namespace gameflag{
|
|||||||
TUTORIAL_WALKED_OFF_FARM,
|
TUTORIAL_WALKED_OFF_FARM,
|
||||||
VISIT_BROKEN_ROVER,
|
VISIT_BROKEN_ROVER,
|
||||||
COLLECTED_SILICON_1,
|
COLLECTED_SILICON_1,
|
||||||
|
REPAIRED_ROVER_1,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -450,6 +455,8 @@ public:
|
|||||||
std::string PLAYER_NAME="...";
|
std::string PLAYER_NAME="...";
|
||||||
std::vector<Zone*>ZONES;
|
std::vector<Zone*>ZONES;
|
||||||
std::vector<vi2d>COLLECTED_ITEMS;
|
std::vector<vi2d>COLLECTED_ITEMS;
|
||||||
|
Zone*ACTIVE_ZONE=nullptr;
|
||||||
|
std::vector<vi2d>REPAIRED_ROVERS;
|
||||||
|
|
||||||
|
|
||||||
Decal*DOME_DECAL,*FOOD_METER_DECAL,*OXYGEN_METER_DECAL,*PLANT_DECAL,
|
Decal*DOME_DECAL,*FOOD_METER_DECAL,*OXYGEN_METER_DECAL,*PLANT_DECAL,
|
||||||
@ -457,7 +464,7 @@ public:
|
|||||||
*WEATHERNODE_EFFECT_DECAL,*POWER_HAILSTORM_DECAL,*POWER_HURRICANE_DECAL,*POWER_METEOR_SHOWER_DECAL,*POWER_METEOR_STORM_DECAL,*POWER_SNOWSTORM_DECAL,
|
*WEATHERNODE_EFFECT_DECAL,*POWER_HAILSTORM_DECAL,*POWER_HURRICANE_DECAL,*POWER_METEOR_SHOWER_DECAL,*POWER_METEOR_STORM_DECAL,*POWER_SNOWSTORM_DECAL,
|
||||||
*SPIDEY_DECAL,*TARGETING_CIRCLE,*TARGETING_RANGE_CIRCLE,*HEALTHBAR_DECAL,
|
*SPIDEY_DECAL,*TARGETING_CIRCLE,*TARGETING_RANGE_CIRCLE,*HEALTHBAR_DECAL,
|
||||||
*CONSUME_SNACK_DECAL,*CONSUME_MEAL_DECAL,*COMPUTER_DECAL,*BROKEN_ROVER_DECAL,
|
*CONSUME_SNACK_DECAL,*CONSUME_MEAL_DECAL,*COMPUTER_DECAL,*BROKEN_ROVER_DECAL,
|
||||||
*NADO_DECAL,*SILICON_ROCK_DECAL,*PETAL_STORM_DECAL;
|
*NADO_DECAL,*SILICON_ROCK_DECAL,*PETAL_STORM_DECAL,*ROVER_DECAL;
|
||||||
std::map<std::string,ObjectLoadInfo*> BASE_OBJECTS;
|
std::map<std::string,ObjectLoadInfo*> BASE_OBJECTS;
|
||||||
std::vector<Encounter> ENCOUNTERS;
|
std::vector<Encounter> ENCOUNTERS;
|
||||||
Encounter ENCOUNTER_SPIDEY_1;
|
Encounter ENCOUNTER_SPIDEY_1;
|
||||||
@ -508,6 +515,7 @@ public:
|
|||||||
NADO_DECAL=new Decal(new Sprite("assets/nado.png"));
|
NADO_DECAL=new Decal(new Sprite("assets/nado.png"));
|
||||||
SILICON_ROCK_DECAL=new Decal(new Sprite("assets/siliconPiece.png"));
|
SILICON_ROCK_DECAL=new Decal(new Sprite("assets/siliconPiece.png"));
|
||||||
PETAL_STORM_DECAL=new Decal(new Sprite("assets/petalstorm_icon.png"));
|
PETAL_STORM_DECAL=new Decal(new Sprite("assets/petalstorm_icon.png"));
|
||||||
|
ROVER_DECAL=new Decal(new Sprite("assets/ROVER.png"));
|
||||||
|
|
||||||
current_playerAnim.spr=PLAYER_DECAL;
|
current_playerAnim.spr=PLAYER_DECAL;
|
||||||
playerAnim.spr=PLAYER_DECAL;
|
playerAnim.spr=PLAYER_DECAL;
|
||||||
@ -657,6 +665,11 @@ public:
|
|||||||
fadeOut();
|
fadeOut();
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
|
case CUTSCENE_4:{
|
||||||
|
if (textInd>=STORY_TEXT1.length()) {
|
||||||
|
fadeOut();
|
||||||
|
}
|
||||||
|
}break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -857,6 +870,11 @@ public:
|
|||||||
PlayCutscene(cutscene::CUTSCENE_4);
|
PlayCutscene(cutscene::CUTSCENE_4);
|
||||||
GAME_STATE=GAMEWORLD;
|
GAME_STATE=GAMEWORLD;
|
||||||
}break;
|
}break;
|
||||||
|
case CUTSCENE_4:{
|
||||||
|
GAME_STATE=GAMEWORLD;
|
||||||
|
PlayCutscene(cutscene::GET_SOME_REST);
|
||||||
|
fadeIn();
|
||||||
|
}break;
|
||||||
}
|
}
|
||||||
switch (CURRENT_CUTSCENE) {
|
switch (CURRENT_CUTSCENE) {
|
||||||
case cutscene::TRANSITION_CUTSCENE:{
|
case cutscene::TRANSITION_CUTSCENE:{
|
||||||
@ -898,6 +916,9 @@ public:
|
|||||||
DisplayMessageBox(10);
|
DisplayMessageBox(10);
|
||||||
EndCutscene();
|
EndCutscene();
|
||||||
}break;
|
}break;
|
||||||
|
case cutscene::GET_SOME_REST:{
|
||||||
|
DisplayMessageBox(18);
|
||||||
|
}break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -933,6 +954,9 @@ public:
|
|||||||
CUTSCENE_OBJS[0]=CreateObject({PLAYER_COORDS[0],PLAYER_COORDS[1]},PLAYER_DECAL,{32,0},{32,32},true);
|
CUTSCENE_OBJS[0]=CreateObject({PLAYER_COORDS[0],PLAYER_COORDS[1]},PLAYER_DECAL,{32,0},{32,32},true);
|
||||||
CUTSCENE_OBJS[0]->flipped=true;
|
CUTSCENE_OBJS[0]->flipped=true;
|
||||||
}break;
|
}break;
|
||||||
|
case cutscene::REPAIR_ROVER_1:{
|
||||||
|
CUTSCENE_OBJS[0]=CreateObject({PLAYER_COORDS[0],PLAYER_COORDS[1]},PLAYER_DECAL,{64,0},{32,32},true);
|
||||||
|
}break;
|
||||||
}
|
}
|
||||||
for (int i=0;i<8;i++) {
|
for (int i=0;i<8;i++) {
|
||||||
CUTSCENE_FLAGS[i]=false;
|
CUTSCENE_FLAGS[i]=false;
|
||||||
@ -979,14 +1003,16 @@ public:
|
|||||||
Zone*z = ZONES[i];
|
Zone*z = ZONES[i];
|
||||||
if (PLAYER_COORDS[0]>=z->pos.x&&PLAYER_COORDS[0]<=z->pos.x+z->size.x&&
|
if (PLAYER_COORDS[0]>=z->pos.x&&PLAYER_COORDS[0]<=z->pos.x+z->size.x&&
|
||||||
PLAYER_COORDS[1]>=z->pos.y&&PLAYER_COORDS[1]<=z->pos.y+z->size.y) {
|
PLAYER_COORDS[1]>=z->pos.y&&PLAYER_COORDS[1]<=z->pos.y+z->size.y) {
|
||||||
if (PIXEL_EFFECT_TRANSPARENCY==0) {
|
if (ACTIVE_ZONE==nullptr) {
|
||||||
applyPixelEffect(z->eff,{PLAYER_COORDS[0],PLAYER_COORDS[1]},0.9);
|
applyPixelEffect(z->eff,{PLAYER_COORDS[0],PLAYER_COORDS[1]},0.9);
|
||||||
|
ACTIVE_ZONE=z;
|
||||||
}
|
}
|
||||||
zoneEffectActive=true;
|
zoneEffectActive=true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!zoneEffectActive&&PIXEL_EFFECT_TRANSPARENCY>0) {
|
if (!zoneEffectActive&&ACTIVE_ZONE!=nullptr) {
|
||||||
clearPixelEffect();
|
clearPixelEffect();
|
||||||
|
ACTIVE_ZONE=nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1471,11 +1497,49 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
|
case cutscene::REPAIR_ROVER_1:{
|
||||||
|
if (!messageBoxVisible) {
|
||||||
|
if (!CUTSCENE_FLAGS[0]) {
|
||||||
|
CUTSCENE_FLAGS[0]=true;
|
||||||
|
DisplayMessageBox(16);
|
||||||
|
} else
|
||||||
|
if (!CUTSCENE_FLAGS[1]) {
|
||||||
|
CUTSCENE_FLAGS[1]=true;
|
||||||
|
CUTSCENE_TIMER=0;
|
||||||
|
} else
|
||||||
|
if (!CUTSCENE_FLAGS[4]&&CUTSCENE_TIMER>60) {
|
||||||
|
for (int i=0;i<OBJECTS.size();i++) {
|
||||||
|
if (OBJECTS[i]->x==33&&OBJECTS[i]->y==35) {
|
||||||
|
OBJECTS[i]->spr=ROVER_DECAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
if (!CUTSCENE_FLAGS[2]&&CUTSCENE_TIMER>120) {
|
||||||
|
DisplayMessageBox(17);
|
||||||
|
CUTSCENE_FLAGS[2]=true;
|
||||||
|
} else
|
||||||
|
if (!CUTSCENE_FLAGS[3]&&CUTSCENE_TIMER>120) {
|
||||||
|
GAME_STATE=CUTSCENE_4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}break;
|
||||||
|
case cutscene::GET_SOME_REST:{
|
||||||
|
if (!messageBoxVisible) {
|
||||||
|
if (!CUTSCENE_FLAGS[0]) {
|
||||||
|
CUTSCENE_FLAGS[0]=true;
|
||||||
|
DisplayMessageBox(19);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
EndCutscene();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (GAME_STATE) {
|
switch (GAME_STATE) {
|
||||||
case CUTSCENE_1:
|
case CUTSCENE_1:
|
||||||
case CUTSCENE_3:{
|
case CUTSCENE_3:
|
||||||
|
case CUTSCENE_4:{
|
||||||
std::string refText;
|
std::string refText;
|
||||||
switch (GAME_STATE) {
|
switch (GAME_STATE) {
|
||||||
case CUTSCENE_1:{
|
case CUTSCENE_1:{
|
||||||
@ -1484,6 +1548,9 @@ public:
|
|||||||
case CUTSCENE_3:{
|
case CUTSCENE_3:{
|
||||||
refText=STORY_TEXT2;
|
refText=STORY_TEXT2;
|
||||||
}break;
|
}break;
|
||||||
|
case CUTSCENE_4:{
|
||||||
|
refText=STORY_TEXT3;
|
||||||
|
}break;
|
||||||
}
|
}
|
||||||
if (GAME_STATE==CUTSCENE_3&&frameCount%4!=0) {break;}
|
if (GAME_STATE==CUTSCENE_3&&frameCount%4!=0) {break;}
|
||||||
if (textInd<refText.length()) {
|
if (textInd<refText.length()) {
|
||||||
@ -1598,6 +1665,10 @@ public:
|
|||||||
GAME_FLAGS[gameflag::TUTORIAL_WALKED_OFF_FARM]=true;
|
GAME_FLAGS[gameflag::TUTORIAL_WALKED_OFF_FARM]=true;
|
||||||
PlayCutscene(cutscene::WALK_TO_COMPUTER);
|
PlayCutscene(cutscene::WALK_TO_COMPUTER);
|
||||||
CUTSCENE_OBJS[0]=CreateObject({PLAYER_COORDS[0],PLAYER_COORDS[1]},PLAYER_DECAL,{32,0},{32,32},true);
|
CUTSCENE_OBJS[0]=CreateObject({PLAYER_COORDS[0],PLAYER_COORDS[1]},PLAYER_DECAL,{32,0},{32,32},true);
|
||||||
|
} else
|
||||||
|
if (!GAME_FLAGS[gameflag::REPAIRED_ROVER_1]&&PLAYER_COORDS[0]>=31&&PLAYER_COORDS[0]<=35&&PLAYER_COORDS[1]>=33&&PLAYER_COORDS[1]<=37) {
|
||||||
|
GAME_FLAGS[gameflag::REPAIRED_ROVER_1]=true;
|
||||||
|
PlayCutscene(cutscene::REPAIR_ROVER_1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1930,19 +2001,30 @@ public:
|
|||||||
split1>>x;
|
split1>>x;
|
||||||
split2>>y;
|
split2>>y;
|
||||||
bool alreadyCollected=false;
|
bool alreadyCollected=false;
|
||||||
|
bool alreadyRepaired=false;
|
||||||
for (int i=0;i<COLLECTED_ITEMS.size();i++) {
|
for (int i=0;i<COLLECTED_ITEMS.size();i++) {
|
||||||
if (x==COLLECTED_ITEMS[i].x&&y==COLLECTED_ITEMS[i].y) {
|
if (x==COLLECTED_ITEMS[i].x&&y==COLLECTED_ITEMS[i].y) {
|
||||||
alreadyCollected=true;
|
alreadyCollected=true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for (int i=0;i<REPAIRED_ROVERS.size();i++) {
|
||||||
|
if (x==REPAIRED_ROVERS[i].x&&y==REPAIRED_ROVERS[i].y) {
|
||||||
|
alreadyRepaired=true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (!alreadyCollected) {
|
if (!alreadyCollected) {
|
||||||
Object*obj = new Object();
|
Object*obj = new Object();
|
||||||
obj->x=x;
|
obj->x=x;
|
||||||
obj->y=y;
|
obj->y=y;
|
||||||
std::string split3 = data.substr(data.find(';',data.find(";")+1)+1,data.length()-(data.find(';',data.find(";")+1)+1));
|
std::string split3 = data.substr(data.find(';',data.find(";")+1)+1,data.length()-(data.find(';',data.find(";")+1)+1));
|
||||||
if (split3.compare("NULL")!=0) {
|
if (split3.compare("NULL")!=0) {
|
||||||
obj->spr=BASE_OBJECTS[split3]->spr;
|
if (alreadyRepaired) {
|
||||||
|
obj->spr=ROVER_DECAL;
|
||||||
|
} else {
|
||||||
|
obj->spr=BASE_OBJECTS[split3]->spr;
|
||||||
|
}
|
||||||
obj->col=BASE_OBJECTS[split3]->col;
|
obj->col=BASE_OBJECTS[split3]->col;
|
||||||
if (BASE_OBJECTS[split3]->hasanim) {
|
if (BASE_OBJECTS[split3]->hasanim) {
|
||||||
obj->hasAnim=true;
|
obj->hasAnim=true;
|
||||||
@ -2040,7 +2122,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool playerCanMove() {
|
bool playerCanMove() {
|
||||||
return CURRENT_CUTSCENE==cutscene::NONE&&!messageBoxVisible&&!IN_BATTLE_ENCOUNTER;
|
return GAME_STATE==GAMEWORLD&&CURRENT_CUTSCENE==cutscene::NONE&&!messageBoxVisible&&!IN_BATTLE_ENCOUNTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawCard(WEATHER_POWER*data,vf2d offset={0,0},vf2d scale={1,1},float darknessFactor=1.0) {
|
void DrawCard(WEATHER_POWER*data,vf2d offset={0,0},vf2d scale={1,1},float darknessFactor=1.0) {
|
||||||
@ -2228,9 +2310,6 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void applyPixelEffect(ParticleEffect*effect,vf2d pos,float startingTransparency) {
|
void applyPixelEffect(ParticleEffect*effect,vf2d pos,float startingTransparency) {
|
||||||
SetDrawTarget(nullptr);
|
|
||||||
Clear(BLANK);
|
|
||||||
SetDrawTarget(1);
|
|
||||||
applyPixelEffect(
|
applyPixelEffect(
|
||||||
{(pos.x-PLAYER_COORDS[0])*32+WIDTH/2-effect->effectSize.x/2,(pos.y-PLAYER_COORDS[1])*32+HEIGHT/2-effect->effectSize.y/2},
|
{(pos.x-PLAYER_COORDS[0])*32+WIDTH/2-effect->effectSize.x/2,(pos.y-PLAYER_COORDS[1])*32+HEIGHT/2-effect->effectSize.y/2},
|
||||||
effect->effectSize,
|
effect->effectSize,
|
||||||
@ -2248,9 +2327,6 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void applyPixelEffect(WEATHER_POWER*power,vf2d pos,float startingTransparency) {
|
void applyPixelEffect(WEATHER_POWER*power,vf2d pos,float startingTransparency) {
|
||||||
SetDrawTarget(nullptr);
|
|
||||||
Clear(BLANK);
|
|
||||||
SetDrawTarget(1);
|
|
||||||
applyPixelEffect(
|
applyPixelEffect(
|
||||||
{(pos.x-PLAYER_COORDS[0])*32+WIDTH/2-power->effect->effectSize.x/2,(pos.y-PLAYER_COORDS[1])*32+HEIGHT/2-power->effect->effectSize.y/2},
|
{(pos.x-PLAYER_COORDS[0])*32+WIDTH/2-power->effect->effectSize.x/2,(pos.y-PLAYER_COORDS[1])*32+HEIGHT/2-power->effect->effectSize.y/2},
|
||||||
power->effect->effectSize,
|
power->effect->effectSize,
|
||||||
|
Binary file not shown.
BIN
assets/ROVER.png
Normal file
BIN
assets/ROVER.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.7 KiB |
24
data.h
24
data.h
@ -16,6 +16,18 @@ std::string STORY_TEXT2=R"( SEASONS
|
|||||||
-of-
|
-of-
|
||||||
LONELINESS)";
|
LONELINESS)";
|
||||||
|
|
||||||
|
std::string STORY_TEXT3=R"(ERROR CODE -4: Transmission Failed. Unable to Retrieve Launch Data.
|
||||||
|
|
||||||
|
GPSNAV-17 - FAILED.
|
||||||
|
GPSNAV-18 - UNABLE TO LOCATE
|
||||||
|
GPSNAV-22 - UNABLE TO LOCATE
|
||||||
|
GPSNAV-26 - UNABLE TO LOCATE
|
||||||
|
GPSNAV-31 - UNABLE TO LOCATE
|
||||||
|
GPSNAV-33 - UNABLE TO LOCATE
|
||||||
|
GPSNAV-35 - UNABLE TO LOCATE
|
||||||
|
|
||||||
|
Press any key to continue.)";
|
||||||
|
|
||||||
std::string STORY_DIALOG[]={R"(
|
std::string STORY_DIALOG[]={R"(
|
||||||
???
|
???
|
||||||
RAIN CYCLE COMMENCING)", //0
|
RAIN CYCLE COMMENCING)", //0
|
||||||
@ -64,6 +76,18 @@ Silicon resources acquired!!)",//14
|
|||||||
R"(
|
R"(
|
||||||
$PLAYER
|
$PLAYER
|
||||||
Now I can finally repair the Receiver! Better head back to the site.)",//15
|
Now I can finally repair the Receiver! Better head back to the site.)",//15
|
||||||
|
R"(
|
||||||
|
$PLAYER
|
||||||
|
Please let this work...)",//16
|
||||||
|
R"(
|
||||||
|
$PLAYER
|
||||||
|
Perfect! Now to see if it will detect anything.)",//17
|
||||||
|
R"(
|
||||||
|
$PLAYER
|
||||||
|
Huh, it still doesn't work. At least the signaling is fixed. Maybe it'll work tomorrow...)",//18
|
||||||
|
R"(
|
||||||
|
$PLAYER
|
||||||
|
I'll go inside and get some rest in the meantime.)",//19
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user