|
|
|
@ -406,6 +406,14 @@ namespace effect { |
|
|
|
|
}; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
class PlayerState{ |
|
|
|
|
public: |
|
|
|
|
int playerHP,playerMaxHP; |
|
|
|
|
int foodCount; |
|
|
|
|
std::vector<int> weatherPowerCounts; |
|
|
|
|
float x,y;
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
class SeasonsOfLoneliness : public PixelGameEngine |
|
|
|
|
{ |
|
|
|
|
public: |
|
|
|
@ -616,6 +624,8 @@ public: |
|
|
|
|
float audioLevel=0.6; |
|
|
|
|
int SEED_COUNT=0; |
|
|
|
|
vf2d BATTLE_PLAYER_COORDS; |
|
|
|
|
PlayerState*PREV_PLAYERSTATE=new PlayerState(); |
|
|
|
|
int WALK_STEPS=0; |
|
|
|
|
|
|
|
|
|
Map*CURRENT_MAP=MAP_1; |
|
|
|
|
|
|
|
|
@ -924,6 +934,10 @@ public: |
|
|
|
|
BASE_OBJECTS["NADO"]=new ObjectLoadInfo(NADO_DECAL,NADO_ANIMATION,Pixel(153, 137, 75,230)); |
|
|
|
|
BASE_OBJECTS["SILICON_PIECE"]=new ObjectLoadInfo(SILICON_ROCK_DECAL); |
|
|
|
|
|
|
|
|
|
for (int i=0;i<WEATHER_POWER_COUNT;i++) { |
|
|
|
|
PREV_PLAYERSTATE->weatherPowerCounts.push_back(WEATHER_POWERS[i]->playerOwnCount); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Zone*SILICON_DEPOSIT_ZONE = new Zone({109,7},{26,9},{0,0},{WIDTH,HEIGHT},{0,0},{WIDTH,HEIGHT},{1,1},{3,3},{-30,-3},{30,3},Pixel(133, 98, 66,180),Pixel(220, 120, 90,230),300,Pixel(87, 78, 69,64)); |
|
|
|
|
|
|
|
|
|
ZONES.push_back(SILICON_DEPOSIT_ZONE); |
|
|
|
@ -1226,12 +1240,14 @@ public: |
|
|
|
|
LoadMap(MAP_3); |
|
|
|
|
PLAYER_COORDS[0]=40.5; |
|
|
|
|
PLAYER_COORDS[1]=37.5; |
|
|
|
|
updatePlayerState(); |
|
|
|
|
fadeIn(); |
|
|
|
|
EndCutscene(); |
|
|
|
|
} else { |
|
|
|
|
LoadMap(MAP_1); |
|
|
|
|
PLAYER_COORDS[0]=40.5; |
|
|
|
|
PLAYER_COORDS[1]=37.5; |
|
|
|
|
updatePlayerState(); |
|
|
|
|
fadeIn(); |
|
|
|
|
EndCutscene(); |
|
|
|
|
} |
|
|
|
@ -1253,6 +1269,7 @@ public: |
|
|
|
|
} |
|
|
|
|
LoadMap(MAP_2); |
|
|
|
|
TeleportToMapFileCoords(8,17); |
|
|
|
|
updatePlayerState(); |
|
|
|
|
fadeIn(); |
|
|
|
|
EndCutscene(); |
|
|
|
|
if (GAME_FLAGS[gameflag::REST_IN_DOME]&&!GAME_FLAGS[gameflag::SLEEP]) { |
|
|
|
@ -1331,6 +1348,7 @@ public: |
|
|
|
|
LoadMap(MAP_2); |
|
|
|
|
PLAYER_COORDS[0]=16; |
|
|
|
|
PLAYER_COORDS[1]=6; |
|
|
|
|
updatePlayerState(); |
|
|
|
|
}break; |
|
|
|
|
case cutscene::RAINING_IN_DOME:{ |
|
|
|
|
applyPixelEffect(HURRICANE,GetMapFileCoords(7,11),1); |
|
|
|
@ -2388,8 +2406,9 @@ public: |
|
|
|
|
StartCutscene(cutscene::CHECK_COORDS); |
|
|
|
|
CUTSCENE_OBJS[0]=CreateObject({PLAYER_COORDS[0],PLAYER_COORDS[1]},PLAYER_DECAL,playerAnim,true); |
|
|
|
|
} |
|
|
|
|
if(rand()%60==0) { |
|
|
|
|
if(WALK_STEPS++>60&&!IN_BATTLE_ENCOUNTER) { |
|
|
|
|
PLAYER_HP=std::clamp(PLAYER_HP+1,0,PLAYER_MAXHP); |
|
|
|
|
updatePlayerState(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -3327,6 +3346,17 @@ public: |
|
|
|
|
BATTLE_DISPLAY_NUMBERS.push_back(number); |
|
|
|
|
return number; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void updatePlayerState() { |
|
|
|
|
PREV_PLAYERSTATE->x=PLAYER_COORDS[0]; |
|
|
|
|
PREV_PLAYERSTATE->y=PLAYER_COORDS[1]; |
|
|
|
|
PREV_PLAYERSTATE->foodCount=foodCount; |
|
|
|
|
PREV_PLAYERSTATE->playerHP=PLAYER_HP; |
|
|
|
|
PREV_PLAYERSTATE->playerMaxHP=PLAYER_MAXHP; |
|
|
|
|
for (int i=0;i<WEATHER_POWER_COUNT;i++) { |
|
|
|
|
PREV_PLAYERSTATE->weatherPowerCounts[i]=WEATHER_POWERS[i]->playerOwnCount; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|