corrected star field pixel issues

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
master
sigonasr2 2 years ago
parent 913e2d48e5
commit b1552bf57a
  1. 210
      SeasonsOfLoneliness.cpp
  2. BIN
      Seasons_of_Loneliness
  3. 15
      data.h

@ -19,6 +19,7 @@ using namespace olc;
#define SKIP_CHAPTER2 true #define SKIP_CHAPTER2 true
#define SKIP_STORYBOOK true #define SKIP_STORYBOOK true
#define SKIP_CHAPTER3 true #define SKIP_CHAPTER3 true
#define SKIP_LAUNCHPAD true
#define STARTING_MAP MAP_1 #define STARTING_MAP MAP_1
#define STARTING_STATE CUTSCENE_3 #define STARTING_STATE CUTSCENE_3
@ -59,6 +60,7 @@ enum GAMESTATE{
DISPLAY_BOOK, DISPLAY_BOOK,
DISPLAY_BOOK2, DISPLAY_BOOK2,
CUTSCENE_6, CUTSCENE_6,
IN_SPACE,
}; };
namespace cutscene{ namespace cutscene{
@ -97,6 +99,7 @@ namespace cutscene{
LAUNCHPAD_OPEN, LAUNCHPAD_OPEN,
LAUNCHPAD_PREPARE, LAUNCHPAD_PREPARE,
READY_TO_BOARD, READY_TO_BOARD,
INTRUDERS_DETECTED,
}; };
} }
@ -142,6 +145,7 @@ namespace gameflag{
ROCKET_LAUNCH_READY, ROCKET_LAUNCH_READY,
COLLECTED_ITEMS_IN_DOME, COLLECTED_ITEMS_IN_DOME,
BOARDED_ROCKET, BOARDED_ROCKET,
INTRUDER_DETECTED,
}; };
} }
@ -630,8 +634,10 @@ public:
Pixel FOREGROUND_EFFECT_COLOR; Pixel FOREGROUND_EFFECT_COLOR;
Pixel ORIGINAL_FOREGROUND_EFFECT_COLOR; Pixel ORIGINAL_FOREGROUND_EFFECT_COLOR;
int PIXEL_LIMIT=0; int PIXEL_LIMIT=0;
vf2d PIXEL_POS; vf2d PIXEL_POS={0,0};
vf2d PIXEL_SIZE; vf2d PIXEL_SIZE={WIDTH,HEIGHT};
vf2d STAR_POS={0,0};
vf2d STAR_SIZE={WIDTH,HEIGHT};
float PIXEL_EFFECT_TRANSPARENCY=0; float PIXEL_EFFECT_TRANSPARENCY=0;
int CUTSCENE_OBJ_COUNT=0; int CUTSCENE_OBJ_COUNT=0;
int TERMINAL_SELECTED_CHAR=0; int TERMINAL_SELECTED_CHAR=0;
@ -648,6 +654,7 @@ public:
int BATTLE_REASON_CODE=-1; int BATTLE_REASON_CODE=-1;
bool BATTLE_DROUGHT_ACTIVE=false; bool BATTLE_DROUGHT_ACTIVE=false;
bool ROCKET_BOARD_OPTION=false; bool ROCKET_BOARD_OPTION=false;
int LOCKED_IN_DELAY=0;
Map*MAP_1=new Map("map1"); Map*MAP_1=new Map("map1");
Map*MAP_2=new Map("map2"); Map*MAP_2=new Map("map2");
@ -674,6 +681,7 @@ public:
Encounter ENCOUNTER_SANDWORM_1; Encounter ENCOUNTER_SANDWORM_1;
Encounter ENCOUNTER_MEGAMOTH; Encounter ENCOUNTER_MEGAMOTH;
Encounter ENCOUNTER_SNAKEPACK; Encounter ENCOUNTER_SNAKEPACK;
Encounter ENCOUNTER_Y_Y;
Encounter CURRENT_ENCOUNTER; Encounter CURRENT_ENCOUNTER;
std::vector<WEATHER_POWER*>MOVESET_SPIDEY; std::vector<WEATHER_POWER*>MOVESET_SPIDEY;
std::vector<WEATHER_POWER*>MOVESET_SANDWORM; std::vector<WEATHER_POWER*>MOVESET_SANDWORM;
@ -683,6 +691,7 @@ public:
std::vector<WEATHER_POWER*>MOVESET_XMINION; std::vector<WEATHER_POWER*>MOVESET_XMINION;
std::vector<WEATHER_POWER*>MOVESET_MEGAMOTH; std::vector<WEATHER_POWER*>MOVESET_MEGAMOTH;
std::vector<WEATHER_POWER*>MOVESET_SIDEWINDER; std::vector<WEATHER_POWER*>MOVESET_SIDEWINDER;
std::vector<WEATHER_POWER*>MOVESET_Y_Y;
std::vector<Seed*>SEEDS; std::vector<Seed*>SEEDS;
std::vector<Seed*>TREES; std::vector<Seed*>TREES;
bool SOUND_IS_MUTED=false; bool SOUND_IS_MUTED=false;
@ -704,6 +713,7 @@ public:
#define MAX_PIXELS 500 #define MAX_PIXELS 500
effect::Pixel*pixels[MAX_PIXELS]; effect::Pixel*pixels[MAX_PIXELS];
effect::Pixel*starpixels[150];
bool OnUserCreate() override bool OnUserCreate() override
{ {
@ -717,27 +727,33 @@ public:
EnableLayer(i,true); EnableLayer(i,true);
} }
if (SKIP_INTRO||SKIP_CHAPTER1||SKIP_CHAPTER2||SKIP_CHAPTER3) { if (SKIP_INTRO||SKIP_CHAPTER1||SKIP_CHAPTER2||SKIP_CHAPTER3||SKIP_LAUNCHPAD) {
GAME_FLAGS[gameflag::TUTORIAL_WALKED_OFF_FARM]=true; GAME_FLAGS[gameflag::TUTORIAL_WALKED_OFF_FARM]=true;
GAME_FLAGS[gameflag::VISIT_BROKEN_ROVER]=true; GAME_FLAGS[gameflag::VISIT_BROKEN_ROVER]=true;
GAME_STATE=GAMEWORLD; GAME_STATE=GAMEWORLD;
} }
if (SKIP_CHAPTER1||SKIP_CHAPTER2||SKIP_CHAPTER3) { if (SKIP_CHAPTER1||SKIP_CHAPTER2||SKIP_CHAPTER3||SKIP_LAUNCHPAD) {
GAME_FLAGS[gameflag::COLLECTED_SILICON_1]=true; GAME_FLAGS[gameflag::COLLECTED_SILICON_1]=true;
GAME_FLAGS[gameflag::REPAIRED_ROVER_1]=true; GAME_FLAGS[gameflag::REPAIRED_ROVER_1]=true;
GAME_FLAGS[gameflag::REST_IN_DOME]=true; GAME_FLAGS[gameflag::REST_IN_DOME]=true;
GAME_STATE=GAMEWORLD; GAME_STATE=GAMEWORLD;
} }
if (SKIP_CHAPTER2||SKIP_CHAPTER3) { if (SKIP_CHAPTER2||SKIP_CHAPTER3||SKIP_LAUNCHPAD) {
//GAME_FLAGS[gameflag::CHECK_ROVER_3]=true; //GAME_FLAGS[gameflag::CHECK_ROVER_3]=true;
GAME_FLAGS[gameflag::COLLECTED_SILICON_3]=true; GAME_FLAGS[gameflag::COLLECTED_SILICON_3]=true;
GAME_FLAGS[gameflag::CHECK_ROVER_2]=true; GAME_FLAGS[gameflag::CHECK_ROVER_2]=true;
} }
if (SKIP_CHAPTER3) { if (SKIP_CHAPTER3||SKIP_LAUNCHPAD) {
GAME_FLAGS[gameflag::CHECK_ROVER_4]=true; GAME_FLAGS[gameflag::CHECK_ROVER_4]=true;
GAME_FLAGS[gameflag::LITTLESNAKES_KILLED]=true; GAME_FLAGS[gameflag::LITTLESNAKES_KILLED]=true;
GAME_FLAGS[gameflag::COLLECTED_SILICON_4]=true; GAME_FLAGS[gameflag::COLLECTED_SILICON_4]=true;
} }
if (SKIP_LAUNCHPAD) {
GAME_FLAGS[gameflag::CHECK_ROVER_5]=true;
GAME_FLAGS[gameflag::ROCKET_LAUNCH_READY]=true;
GAME_FLAGS[gameflag::COLLECTED_ITEMS_IN_DOME]=true;
GAME_FLAGS[gameflag::BOARDED_ROCKET]=true;
}
if (SKIP_CHAPTER2||SKIP_BOSS) { if (SKIP_CHAPTER2||SKIP_BOSS) {
GAME_FLAGS[gameflag::SLEEP]=true; GAME_FLAGS[gameflag::SLEEP]=true;
GAME_FLAGS[gameflag::FIRST_ENCOUNTER_X_X]=true; GAME_FLAGS[gameflag::FIRST_ENCOUNTER_X_X]=true;
@ -759,9 +775,26 @@ public:
GAME_FLAGS[gameflag::NEXT_COORDS2]=true; GAME_FLAGS[gameflag::NEXT_COORDS2]=true;
PLAYER_HP=PLAYER_MAXHP=100; PLAYER_HP=PLAYER_MAXHP=100;
PLAYER_COORDS[0]=38; PLAYER_COORDS[0]=38;
PLAYER_COORDS[1]=37; PLAYER_COORDS[1]=38;
} }
if (SKIP_LAUNCHPAD) {
GAME_STATE=IN_SPACE;
PlayCutscene(cutscene::READY_TO_BOARD);
fadeOut();
HAILSTORM->playerOwnCount=6;
PETAL_STORM->playerOwnCount=6;
HURRICANE->playerOwnCount=6;
METEOR_RAIN->playerOwnCount=6;
METEOR_STORM->playerOwnCount=6;
SNOWSTORM->playerOwnCount=6;
FLASH_FLOOD->playerOwnCount=6;
SUNNY_DAY->playerOwnCount=6;
FIRESTORM->playerOwnCount=6;
SOLAR_FLARE->playerOwnCount=6;
foodCount=16;
PLAYER_HP=PLAYER_MAXHP=130;
}
SONG_MAIN = sound::Wave("./assets/SeasonsOfLoneliness.wav"); SONG_MAIN = sound::Wave("./assets/SeasonsOfLoneliness.wav");
@ -1011,6 +1044,14 @@ public:
MOVESET_SIDEWINDER.push_back(MEGA_FANG); MOVESET_SIDEWINDER.push_back(MEGA_FANG);
MOVESET_SIDEWINDER.push_back(MEGA_FANG); MOVESET_SIDEWINDER.push_back(MEGA_FANG);
MOVESET_Y_Y.push_back(METEOR_RAIN);
MOVESET_Y_Y.push_back(AVALANCHE);
MOVESET_Y_Y.push_back(LIGHT_STORM);
MOVESET_Y_Y.push_back(TORNADO);
MOVESET_Y_Y.push_back(GUST);
MOVESET_Y_Y.push_back(DROUGHT);
MOVESET_Y_Y.push_back(HAILSTORM);
COLLECTED_ITEMS.push_back({20,5}); COLLECTED_ITEMS.push_back({20,5});
COLLECTED_ITEMS.push_back({20,6}); COLLECTED_ITEMS.push_back({20,6});
COLLECTED_ITEMS.push_back({19,5}); COLLECTED_ITEMS.push_back({19,5});
@ -1063,6 +1104,13 @@ public:
ENCOUNTER_SNAKEPACK.playerY=6; ENCOUNTER_SNAKEPACK.playerY=6;
ENCOUNTER_SNAKEPACK.map=MAP_5; ENCOUNTER_SNAKEPACK.map=MAP_5;
ENCOUNTERS.push_back(ENCOUNTER_SNAKEPACK); ENCOUNTERS.push_back(ENCOUNTER_SNAKEPACK);
ENCOUNTER_Y_Y.entities.push_back(new Entity(Y_Y_DECAL,"Y.Y",4-1,3.5-2,895,895,MOVESET_Y_Y,{1,1},true));
ENCOUNTER_Y_Y.x=1000-4;
ENCOUNTER_Y_Y.y=1000-3.5;
ENCOUNTER_Y_Y.playerX=4;
ENCOUNTER_Y_Y.playerY=6;
ENCOUNTER_Y_Y.map=MAP_6;
//ENCOUNTERS.push_back(ENCOUNTER_Y_Y);
BASE_OBJECTS["DOME"]=new ObjectLoadInfo(DOME_DECAL); BASE_OBJECTS["DOME"]=new ObjectLoadInfo(DOME_DECAL);
@ -1099,7 +1147,13 @@ public:
for (int i=0;i<MAX_PIXELS;i++) { for (int i=0;i<MAX_PIXELS;i++) {
pixels[i]=new effect::Pixel(); pixels[i]=new effect::Pixel();
} }
for (int i=0;i<150;i++) {
starpixels[i]=new effect::Pixel();
}
if (SKIP_LAUNCHPAD) {
LoadMap(MAP_6);
} else
if (SKIP_STORYBOOK) { if (SKIP_STORYBOOK) {
LoadMap(MAP_5); LoadMap(MAP_5);
} else { } else {
@ -1582,6 +1636,11 @@ public:
fadeIn(); fadeIn();
EndCutscene(); EndCutscene();
}break; }break;
case cutscene::READY_TO_BOARD:{
GAME_STATE=IN_SPACE;
fadeIn();
EndCutscene();
}break;
} }
} }
@ -1591,6 +1650,24 @@ public:
TIMER=0; TIMER=0;
GAME_STATE=LATER_THAT_NIGHTWAIT; GAME_STATE=LATER_THAT_NIGHTWAIT;
}break; }break;
case IN_SPACE:{
PLAYER_COORDS[0]=1000;
PLAYER_COORDS[1]=1000;
STAR_POS={0,0};
STAR_SIZE={WIDTH,HEIGHT};
for (int i=0;i<150;i++) {
int brightness=rand()%60+195;
starpixels[i]->r=brightness;
starpixels[i]->g=brightness;
starpixels[i]->b=brightness;
starpixels[i]->pos={WIDTH/2,HEIGHT/2-24};
starpixels[i]->spd={range(-4,4),range(-3,3)};
float size = range(1,2);
starpixels[i]->size={size,size};
starpixels[i]->a=255;
}
TIMER=0;
}break;
} }
switch (CURRENT_CUTSCENE) { switch (CURRENT_CUTSCENE) {
case cutscene::DISPLAY_VOLCANIC_AREA:{ case cutscene::DISPLAY_VOLCANIC_AREA:{
@ -1919,6 +1996,7 @@ public:
BATTLE_CARD_SELECTION_IND=0; BATTLE_CARD_SELECTION_IND=0;
BATTLE_CARD_SELECTION=availablePowers[BATTLE_CARD_SELECTION_IND]; BATTLE_CARD_SELECTION=availablePowers[BATTLE_CARD_SELECTION_IND];
PLAYER_SELECTED_TARGET=-1; PLAYER_SELECTED_TARGET=-1;
LOCKED_IN_DELAY=0;
} }
} }
} }
@ -1943,15 +2021,19 @@ public:
int TARGET_COORDS_Y=CURRENT_ENCOUNTER.y+HEIGHT/32/2; int TARGET_COORDS_Y=CURRENT_ENCOUNTER.y+HEIGHT/32/2;
if (PLAYER_COORDS[0]==TARGET_COORDS_X&&PLAYER_COORDS[1]==TARGET_COORDS_Y if (PLAYER_COORDS[0]==TARGET_COORDS_X&&PLAYER_COORDS[1]==TARGET_COORDS_Y
&&BATTLE_PLAYER_COORDS.x==CURRENT_ENCOUNTER.x+CURRENT_ENCOUNTER.playerX&&BATTLE_PLAYER_COORDS.y==CURRENT_ENCOUNTER.y+CURRENT_ENCOUNTER.playerY) { &&BATTLE_PLAYER_COORDS.x==CURRENT_ENCOUNTER.x+CURRENT_ENCOUNTER.playerX&&BATTLE_PLAYER_COORDS.y==CURRENT_ENCOUNTER.y+CURRENT_ENCOUNTER.playerY) {
if (!GAME_FLAGS[gameflag::FIRST_ENCOUNTER_X_X]&&GAME_FLAGS[gameflag::SLEEP]) { if (LOCKED_IN_DELAY>30) {
GAME_FLAGS[gameflag::FIRST_ENCOUNTER_X_X]=true; if (!GAME_FLAGS[gameflag::FIRST_ENCOUNTER_X_X]&&GAME_FLAGS[gameflag::SLEEP]) {
DisplayMessageBox(22); GAME_FLAGS[gameflag::FIRST_ENCOUNTER_X_X]=true;
break; DisplayMessageBox(22);
break;
}
//std::cout<<"Battle State is "<<BATTLE_STATE<<" (2)\n";
BATTLE_STATE = battle::PLAYER_SELECTION;
clearPixelEffect();
EFFECT_TIMER = 0;
} else {
LOCKED_IN_DELAY++;
} }
//std::cout<<"Battle State is "<<BATTLE_STATE<<" (2)\n";
BATTLE_STATE = battle::PLAYER_SELECTION;
clearPixelEffect();
EFFECT_TIMER = 0;
} }
if (PLAYER_COORDS[0]!=TARGET_COORDS_X) { if (PLAYER_COORDS[0]!=TARGET_COORDS_X) {
if (PLAYER_COORDS[0]<TARGET_COORDS_X) { if (PLAYER_COORDS[0]<TARGET_COORDS_X) {
@ -2717,9 +2799,9 @@ public:
} }
if (CUTSCENE_TIMER>60*8) { if (CUTSCENE_TIMER>60*8) {
PlayCutscene(cutscene::LAUNCHPAD_PREPARE); PlayCutscene(cutscene::LAUNCHPAD_PREPARE);
CUTSCENE_OBJS[1]=CreateObject({30,35},LAUNCHPAD_DECAL); CUTSCENE_OBJS[1]=CreateObject({30,35},LAUNCHPAD_DECAL,true);
CUTSCENE_OBJS[2]=CreateObject({30,35},LAUNCHPAD_HALF1_DECAL); CUTSCENE_OBJS[2]=CreateObject({30,35},LAUNCHPAD_HALF1_DECAL,true);
CUTSCENE_OBJS[3]=CreateObject({30,35},LAUNCHPAD_HALF2_DECAL); CUTSCENE_OBJS[3]=CreateObject({30,35},LAUNCHPAD_HALF2_DECAL,true);
} }
} }
}break; }break;
@ -2748,6 +2830,36 @@ public:
} }
} }
}break; }break;
case cutscene::INTRUDERS_DETECTED:{
if (!messageBoxVisible) {
if (!CUTSCENE_FLAGS[0]) {
CUTSCENE_FLAGS[0]=true;
DisplayMessageBox(54);
} else
if (!CUTSCENE_FLAGS[1]) {
CUTSCENE_FLAGS[1]=true;
DisplayMessageBox(55);
} else
if (!CUTSCENE_FLAGS[2]) {
CUTSCENE_FLAGS[2]=true;
CUTSCENE_OBJS[0]=CreateObject({999.5,999.25},PLAYER_DECAL,playerAnim,true);
} else
if (MoveObjectTowardsPoint({999.5,1002},CUTSCENE_OBJS[0],VERT_FIRST)) {
if (!CUTSCENE_FLAGS[3]) {
DisplayMessageBox(56);
CUTSCENE_FLAGS[3]=true;
} else
if (!CUTSCENE_FLAGS[4]) {
DisplayMessageBox(57);
CUTSCENE_FLAGS[4]=true;
} else {
updatePlayerState();
ENCOUNTERS.push_back(ENCOUNTER_Y_Y);
EndCutscene();
}
}
}
}break;
} }
if (GAME_STATE==CUTSCENE_3&&!SOUND_IS_PLAYING) { if (GAME_STATE==CUTSCENE_3&&!SOUND_IS_PLAYING) {
@ -2848,6 +2960,38 @@ public:
GAME_STATE=LATER_THAT_NIGHTFADEOUT; GAME_STATE=LATER_THAT_NIGHTFADEOUT;
} }
}break; }break;
case IN_SPACE:{
for (int i=0;i<150;i++) {
starpixels[i]->pos+=starpixels[i]->spd;
bool hitEdge=false;
if (starpixels[i]->pos.x<STAR_POS.x) {
starpixels[i]->pos.x=STAR_POS.x+STAR_SIZE.x;
hitEdge=true;
} else
if (starpixels[i]->pos.x>STAR_POS.x+STAR_SIZE.x) {
starpixels[i]->pos.x=STAR_POS.x;
hitEdge=true;
} else
if (starpixels[i]->pos.y<STAR_POS.y) {
starpixels[i]->pos.y=STAR_POS.y+STAR_SIZE.y;
hitEdge=true;
} else
if (starpixels[i]->pos.y>STAR_POS.y+STAR_SIZE.y) {
starpixels[i]->pos.y=STAR_POS.y;
hitEdge=true;
}
if (hitEdge) {
starpixels[i]->pos={WIDTH/2,HEIGHT/2-24};
}
}
if (TIMER>300) {
if (!GAME_FLAGS[gameflag::INTRUDER_DETECTED]) {
GAME_FLAGS[gameflag::INTRUDER_DETECTED]=true;
DisplayMessageBox(53);
PlayCutscene(cutscene::INTRUDERS_DETECTED);
}
}
}break;
} }
if (PIXEL_EFFECT_TRANSPARENCY>0) { if (PIXEL_EFFECT_TRANSPARENCY>0) {
@ -2973,6 +3117,7 @@ public:
case CUTSCENE_2: case CUTSCENE_2:
case GAMEWORLD: case GAMEWORLD:
case COLLECTED_SILICON:{ case COLLECTED_SILICON:{
DrawMap();
DrawGameWorld(); DrawGameWorld();
int meterYOffset=2; int meterYOffset=2;
if (CURRENT_CUTSCENE==cutscene::NONE) { if (CURRENT_CUTSCENE==cutscene::NONE) {
@ -3030,6 +3175,21 @@ public:
case DISPLAY_BOOK2:{ case DISPLAY_BOOK2:{
DrawDecal({WIDTH/2-BOOK2_DECAL->sprite->width*2/2,HEIGHT/2-BOOK2_DECAL->sprite->height*2/2},BOOK2_DECAL,{2,2}); DrawDecal({WIDTH/2-BOOK2_DECAL->sprite->width*2/2,HEIGHT/2-BOOK2_DECAL->sprite->height*2/2},BOOK2_DECAL,{2,2});
}break; }break;
case IN_SPACE:{
Clear(BLACK);
DrawStars();
if (!IN_BATTLE_ENCOUNTER) {
DrawDecal({WIDTH/2-32,HEIGHT/2-32},Y_Y_DECAL);
}
DrawGameWorld();
SetDrawTarget(2);
if (IN_BATTLE_ENCOUNTER) {
DrawPartialDecal({(float)((BATTLE_PLAYER_COORDS.x-PLAYER_COORDS[0])*32+WIDTH/2-16+(current_playerAnim->flipped?32:0)),(float)((BATTLE_PLAYER_COORDS.y-PLAYER_COORDS[1])*32+HEIGHT/2-16)},current_playerAnim->spr,current_playerAnim->getCurrentFrame(),{32,32},{(float)(current_playerAnim->flipped?-1:1),1});
}
if (IN_BATTLE_ENCOUNTER&&BATTLE_ENTRY_TIMER<45) {
DrawStringDecal({(float)((BATTLE_PLAYER_COORDS.x-PLAYER_COORDS[0])*32+WIDTH/2-16+(current_playerAnim->flipped?32:0)),(float)((BATTLE_PLAYER_COORDS.y-PLAYER_COORDS[1])*32+HEIGHT/2-16-sin(frameCount*12/60.0)*4-12)},"!!",RED);
}
}break;
} }
switch (BATTLE_STATE) { switch (BATTLE_STATE) {
case battle::PLAYER_SELECTION:{ case battle::PLAYER_SELECTION:{
@ -3147,7 +3307,7 @@ public:
//FillRectDecal({WIDTH/2-2,HEIGHT/2-2},{4,4},WHITE); //FillRectDecal({WIDTH/2-2,HEIGHT/2-2},{4,4},WHITE);
} }
void DrawGameWorld() { void DrawMap() {
for (int y=-1;y<=HEIGHT/32+1;y++) { for (int y=-1;y<=HEIGHT/32+1;y++) {
for (int x=-1;x<=WIDTH/32+1;x++) { for (int x=-1;x<=WIDTH/32+1;x++) {
float xOffset=PLAYER_COORDS[0]-(WIDTH/32/2); float xOffset=PLAYER_COORDS[0]-(WIDTH/32/2);
@ -3166,6 +3326,9 @@ public:
} }
} }
} }
}
void DrawGameWorld() {
for (auto&obj:OBJECTS) { for (auto&obj:OBJECTS) {
if (obj->spr!=NULL) { if (obj->spr!=NULL) {
if (obj->name.compare("PLANT")==0) { if (obj->name.compare("PLANT")==0) {
@ -3493,7 +3656,7 @@ public:
} }
bool playerCanMove() { bool playerCanMove() {
return PLAYER_HP>0&&GAME_STATE==GAMEWORLD&&CURRENT_CUTSCENE==cutscene::NONE&&!messageBoxVisible&&!IN_BATTLE_ENCOUNTER; return PLAYER_HP>0&&(GAME_STATE==GAMEWORLD||GAME_STATE==IN_SPACE)&&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) {
@ -4027,6 +4190,13 @@ public:
} }
} }
} }
void DrawStars(){
for (int i=0;i<150;i++) {
float distanceFromCenter=distancetoCoords(starpixels[i]->pos,{WIDTH/2,HEIGHT/2-24});
FillRectDecal(starpixels[i]->pos,starpixels[i]->size,{(uint8_t)(starpixels[i]->r),(uint8_t)(starpixels[i]->g),(uint8_t)(starpixels[i]->b),(uint8_t)(std::clamp(distanceFromCenter/64.0*255,0.0,255.0))});
}
}
}; };

Binary file not shown.

@ -221,6 +221,21 @@ I can finally get off this planet, once and for all.)",//51
R"( R"(
$PLAYER $PLAYER
I should probably stock up on food and supplies before leaving. Once I board, I won't be able to return.)",//52 I should probably stock up on food and supplies before leaving. Once I board, I won't be able to return.)",//52
R"(
Y.Y
ATTENTION! INTRUDERS DETECTED ON BOARD THE SHIP!)",//53
R"(
$PLAYER
Intruders...? There's not a soul in sigh-)",//54
R"(
Y.Y
BEGINNING IMMEDIATE DETAINING PROCEDURES.)",//55
R"(
$PLAYER
Wait- I'M THE INTRUDER?!)",//56
R"(
Y.Y
PREPARE TO BE ELIMINATED.)",//57
}; };

Loading…
Cancel
Save