Include touch controls

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
master
sigonasr2 2 years ago
parent b5a5228690
commit e60ef8e17b
  1. 140
      SeasonsOfLoneliness.cpp
  2. BIN
      Seasons_of_Loneliness
  3. BIN
      assets/touchcontroller.png

@ -673,7 +673,7 @@ public:
std::string CONSOLE_REF_TEXT;
bool SOUND_IS_PLAYING=false;
int MAIN_MENU_SELECTION=0;
std::string MENU_OPTIONS[4]={"NEW GAME","CONTINUE","MUTE SOUND","EXIT"};
std::string MENU_OPTIONS[4]={"NEW GAME","MUTE SOUND","EXIT"};
int BATTLE_REASON_CODE=-1;
bool BATTLE_DROUGHT_ACTIVE=false;
bool ROCKET_BOARD_OPTION=false;
@ -682,6 +682,8 @@ public:
vf2d BOSS_SIZE={1,1};
vf2d CREDITS_SCROLLING_OFFSET={0,12};
bool HIDE_CARDS=false;
bool USE_TOUCH_CONTROLS=false;
bool MOUSE_DOWN=false;
Map*MAP_1=new Map("map1");
Map*MAP_2=new Map("map2");
@ -700,7 +702,7 @@ public:
*SANDWORM_DECAL,*SNAKE_DECAL,*MOTH_DECAL,*FLASH_FLOOD_DECAL,*SUNNY_DAY_DECAL,*FIRESTORM_DECAL,*SOLARFLARE_DECAL,
*HP_REGEN_DECAL,*SLOWED_DECAL, *SPEED_DECAL,*HIDDEN_DECAL,*BOOK_DECAL,*BOOK2_DECAL,
*LAUNCHPAD_CLOSED_DECAL,*LAUNCHPAD_HALF1_DECAL,*LAUNCHPAD_HALF2_DECAL,*LAUNCHPAD_DECAL,*Y_Y_DECAL,
*PETRIFY_DECAL,*A_A_DECAL,*A_A_RECHARGE_DECAL, *ENERGYBALL_DECAL;
*PETRIFY_DECAL,*A_A_DECAL,*A_A_RECHARGE_DECAL, *ENERGYBALL_DECAL, *TOUCHSCREEN_DECAL;
std::map<std::string,ObjectLoadInfo*> BASE_OBJECTS;
std::vector<Encounter> ENCOUNTERS;
Encounter ENCOUNTER_SPIDEY_1;
@ -734,6 +736,8 @@ public:
int PETRIFY_TURNS=0;
int LAST_FRAME_SOUND_PLAYED=0;
bool queueBGMPlayback=false;
bool MOUSE_PRESSED_DOWN=false;
bool MOUSE_RELEASED=false;
Map*CURRENT_MAP=MAP_1;
@ -885,6 +889,7 @@ public:
A_A_DECAL=new Decal(new Sprite("assets/A.A.png"));
A_A_RECHARGE_DECAL=new Decal(new Sprite("assets/A.A_recharge.png"));
ENERGYBALL_DECAL=new Decal(new Sprite("assets/energyball.png"));
TOUCHSCREEN_DECAL=new Decal(new Sprite("assets/touchcontroller.png"));
playerAnim->spr=PLAYER_DECAL;
playerAnimRight->spr=PLAYER_DECAL;
@ -1272,6 +1277,11 @@ public:
}
return;
}
if (GetMouse(0).bPressed) {
USE_TOUCH_CONTROLS=true;
} else {
USE_TOUCH_CONTROLS=false;
}
if (!GetKey(W).bPressed&&!GetKey(A).bPressed&&!GetKey(S).bPressed&&!GetKey(D).bPressed&&
!GetKey(UP).bPressed&&!GetKey(RIGHT).bPressed&&!GetKey(DOWN).bPressed&&!GetKey(LEFT).bPressed) {
ActionButtonPress();
@ -1309,6 +1319,13 @@ public:
}
void ActionButtonPress() {
if (GetMouse(0).bPressed) {
MOUSE_DOWN=true;
MOUSE_PRESSED_DOWN=true;
if (GetMouseX()<128&&GetMouseY()>128) {
return;
}
}
if (playerCanMove()) {
switch (GAME_STATE) {
case GAMEWORLD:{
@ -1326,23 +1343,22 @@ public:
}
if (GAME_STATE==CUTSCENE_3) {
switch (MAIN_MENU_SELECTION) {
case 0:
case 1:{
case 0:{
PlaySound(&SOUND_SELECT);
fadeOut();
audioFadeOut();
}break;
case 2:{
case 1:{
SOUND_IS_MUTED=!SOUND_IS_MUTED;
if (SOUND_IS_MUTED) {
MENU_OPTIONS[2]="UNMUTE SOUND";
MENU_OPTIONS[1]="UNMUTE SOUND";
engine.SetOutputVolume(0);
} else {
MENU_OPTIONS[2]="MUTE SOUND";
MENU_OPTIONS[1]="MUTE SOUND";
engine.SetOutputVolume(0.6);
}
}break;
case 3:{
case 2:{
END_THE_GAME=true;
}break;
}
@ -1412,41 +1428,45 @@ public:
bool OnUserUpdate(float fElapsedTime) override
{
elapsedTime+=fElapsedTime;
if (GetMouse(0).bReleased) {
MOUSE_DOWN=false;
MOUSE_RELEASED=true;
}
while (elapsedTime>TARGET_RATE) {
elapsedTime-=TARGET_RATE;
updateGame();
rand();
}
if (GetKey(F1).bPressed) {
ConsoleShow(F1,false);
//ConsoleShow(F1,false); //Disable for official release.
}
if (playerCanMove()) {
if (GetKey(D).bPressed||GetKey(RIGHT).bPressed||GetKey(NP6).bPressed) {
if (RightPressed()) {
changeAnimation(playerAnimWalkRight);
}
if (GetKey(A).bPressed||GetKey(LEFT).bPressed||GetKey(NP4).bPressed) {
if (LeftPressed()) {
changeAnimation(playerAnimWalkLeft);
}
if (GetKey(W).bPressed||GetKey(UP).bPressed||GetKey(NP8).bPressed) {
if (UpPressed()) {
changeAnimation(playerAnimWalkUp);
}
if (GetKey(S).bPressed||GetKey(DOWN).bPressed||GetKey(NP5).bPressed||GetKey(NP2).bPressed) {
if (DownPressed()) {
changeAnimation(playerAnimWalkDown);
}
if (!GetKey(D).bHeld&&!GetKey(RIGHT).bHeld&&!GetKey(NP6).bHeld&&
!GetKey(A).bHeld&&!GetKey(LEFT).bHeld&&!GetKey(NP4).bHeld&&
!GetKey(S).bHeld&&!GetKey(UP).bHeld&&!GetKey(NP8).bHeld&&
!GetKey(W).bHeld&&!GetKey(DOWN).bHeld&&!GetKey(NP5).bHeld&&!GetKey(NP2).bHeld) {
if (GetKey(D).bReleased||GetKey(RIGHT).bReleased||GetKey(NP6).bReleased) {
if (!RightHeld()&&
!LeftHeld()&&
!UpHeld()&&
!DownHeld()) {
if (RightReleased()) {
changeAnimation(playerAnimRight);
}
if (GetKey(A).bReleased||GetKey(LEFT).bReleased||GetKey(NP4).bReleased) {
if (LeftReleased()) {
changeAnimation(playerAnimLeft);
}
if (GetKey(W).bReleased||GetKey(UP).bReleased||GetKey(NP8).bReleased) {
if (UpReleased()) {
changeAnimation(playerAnim);
}
if (GetKey(S).bReleased||GetKey(DOWN).bReleased||GetKey(NP5).bReleased||GetKey(NP2).bReleased) {
if (DownReleased()) {
changeAnimation(playerAnimDown);
}
}
@ -1454,12 +1474,12 @@ public:
if (IN_BATTLE_ENCOUNTER&&!messageBoxVisible) {
switch (BATTLE_STATE) {
case battle::PLAYER_SELECTION:{
if (GetKey(D).bPressed||GetKey(RIGHT).bPressed||GetKey(NP6).bPressed) {
if (RightPressed()) {
BATTLE_CARD_SELECTION_IND=(BATTLE_CARD_SELECTION_IND+1)%availablePowers.size();
BATTLE_CARD_SELECTION=availablePowers[BATTLE_CARD_SELECTION_IND];
PlaySound(&SOUND_CHANGE_OPTION);
}
if (GetKey(A).bPressed||GetKey(LEFT).bPressed||GetKey(NP4).bPressed) {
if (LeftPressed()) {
if (--BATTLE_CARD_SELECTION_IND<0) {
BATTLE_CARD_SELECTION_IND=availablePowers.size()-1;
}
@ -1468,7 +1488,7 @@ public:
}
}break;
case battle::PLAYER_TARGET_SELECTION:{
if (GetKey(D).bPressed||GetKey(RIGHT).bPressed||GetKey(NP6).bPressed) {
if (RightPressed()) {
while (true) {
PLAYER_SELECTED_TARGET=(PLAYER_SELECTED_TARGET+1)%CURRENT_ENCOUNTER.entities.size();
if (CURRENT_ENCOUNTER.entities[PLAYER_SELECTED_TARGET]->hp>0) {
@ -1477,12 +1497,12 @@ public:
}
PlaySound(&SOUND_CHANGE_OPTION);
}
if (GetKey(W).bPressed||GetKey(UP).bPressed||GetKey(NP8).bPressed) {
if (UpPressed()) {
PLAYER_SELECTED_TARGET=-1;
//std::cout<<"Battle State is "<<BATTLE_STATE<<" (1)\n";
BATTLE_STATE=battle::PLAYER_SELECTION;
}
if (GetKey(A).bPressed||GetKey(LEFT).bPressed||GetKey(NP4).bPressed) {
if (LeftPressed()) {
while (true) {
if (--PLAYER_SELECTED_TARGET<0) {
PLAYER_SELECTED_TARGET=CURRENT_ENCOUNTER.entities.size()-1;
@ -1497,28 +1517,28 @@ public:
}
} else {
if (GAME_STATE==CUTSCENE_3) {
if (GetKey(A).bPressed||GetKey(LEFT).bPressed||GetKey(NP4).bPressed|GetKey(W).bPressed||GetKey(UP).bPressed||GetKey(NP8).bPressed) {
if (LeftPressed()||UpPressed()) {
MAIN_MENU_SELECTION--;
if (MAIN_MENU_SELECTION<0) {
MAIN_MENU_SELECTION=3;
MAIN_MENU_SELECTION=2;
}
PlaySound(&SOUND_CHANGE_OPTION);
}
if (GetKey(D).bPressed||GetKey(RIGHT).bPressed||GetKey(NP6).bPressed||GetKey(S).bPressed||GetKey(DOWN).bPressed||GetKey(NP5).bPressed||GetKey(NP2).bPressed) {
MAIN_MENU_SELECTION=(MAIN_MENU_SELECTION+1)%4;
if (DownPressed()||RightPressed()) {
MAIN_MENU_SELECTION=(MAIN_MENU_SELECTION+1)%3;
PlaySound(&SOUND_CHANGE_OPTION);
}
}
switch (CURRENT_CUTSCENE) {
case cutscene::INPUT_USERNAME:{
if (GetKey(W).bPressed||GetKey(UP).bPressed||GetKey(NP8).bPressed) {
if (UpPressed()) {
TERMINAL_SELECTED_CHAR=TERMINAL_SELECTED_CHAR-7;
if (TERMINAL_SELECTED_CHAR<0) {
TERMINAL_SELECTED_CHAR+=28;
}
PlaySound(&SOUND_MSG);
}
if (GetKey(D).bPressed||GetKey(RIGHT).bPressed||GetKey(NP6).bPressed) {
if (RightPressed()) {
if ((TERMINAL_SELECTED_CHAR+1)%7==0) {
TERMINAL_SELECTED_CHAR-=6;
} else {
@ -1526,7 +1546,7 @@ public:
}
PlaySound(&SOUND_MSG);
}
if (GetKey(A).bPressed||GetKey(LEFT).bPressed||GetKey(NP4).bPressed) {
if (LeftPressed()) {
if ((TERMINAL_SELECTED_CHAR-1)%7==6||TERMINAL_SELECTED_CHAR-1<0) {
TERMINAL_SELECTED_CHAR+=6;
} else {
@ -1534,7 +1554,7 @@ public:
}
PlaySound(&SOUND_MSG);
}
if (GetKey(S).bPressed||GetKey(DOWN).bPressed||GetKey(NP5).bPressed||GetKey(NP2).bPressed) {
if (DownPressed()) {
if (TERMINAL_SELECTED_CHAR+7>=28) {
TERMINAL_SELECTED_CHAR=(TERMINAL_SELECTED_CHAR+7)%28;
} else {
@ -1544,7 +1564,7 @@ public:
}
}break;
case cutscene::READY_TO_BOARD:{
if (GetKey(W).bPressed||GetKey(UP).bPressed||GetKey(NP8).bPressed||GetKey(S).bPressed||GetKey(DOWN).bPressed||GetKey(NP5).bPressed||GetKey(NP2).bPressed) {
if (UpPressed()||DownPressed()) {
ROCKET_BOARD_OPTION=!ROCKET_BOARD_OPTION;
}
}break;
@ -1556,6 +1576,8 @@ public:
Clear(BLANK);
SetDrawTarget(2);
drawGame();
MOUSE_PRESSED_DOWN=false;
MOUSE_RELEASED=false;
// called once per frame
return !END_THE_GAME;
}
@ -1955,7 +1977,7 @@ public:
if (playerCanMove()) {
bool animationchanged=false;
bool positionModified=false;
if (GetKey(D).bHeld||GetKey(RIGHT).bHeld||GetKey(NP6).bHeld) {
if (RightHeld()) {
if (GAME_STATE!=IN_SPACE&&MAP[(int)PLAYER_COORDS[1]][(int)std::clamp(PLAYER_COORDS[0]+MOVE_SPD,0.1,(double)MAP_WIDTH)]!=4) {
PLAYER_COORDS[0]=std::clamp(PLAYER_COORDS[0]+MOVE_SPD,0.1,(double)MAP_WIDTH);
positionModified=true;
@ -1967,7 +1989,7 @@ public:
animationchanged=true;
}
}
if (GetKey(A).bHeld||GetKey(LEFT).bHeld||GetKey(NP4).bHeld) {
if (LeftHeld()) {
if (GAME_STATE!=IN_SPACE&&MAP[(int)PLAYER_COORDS[1]][(int)std::clamp(PLAYER_COORDS[0]-MOVE_SPD,0.1,(double)MAP_WIDTH)]!=4) {
PLAYER_COORDS[0]=std::clamp(PLAYER_COORDS[0]-MOVE_SPD,0.1,(double)MAP_WIDTH);
positionModified=true;
@ -1979,7 +2001,7 @@ public:
animationchanged=true;
}
}
if (GetKey(W).bHeld||GetKey(UP).bHeld||GetKey(NP8).bHeld) {
if (UpHeld()) {
if (GAME_STATE!=IN_SPACE&&MAP[(int)std::clamp(PLAYER_COORDS[1]-MOVE_SPD,0.1,(double)MAP_HEIGHT)][(int)PLAYER_COORDS[0]]!=4) {
PLAYER_COORDS[1]=std::clamp(PLAYER_COORDS[1]-MOVE_SPD,0.1,(double)MAP_HEIGHT);
positionModified=true;
@ -1996,7 +2018,7 @@ public:
} else {
HIDE_CARDS=false;
}
if (GetKey(S).bHeld||GetKey(DOWN).bHeld||GetKey(NP5).bHeld||GetKey(NP2).bHeld) {
if (DownHeld()) {
if (GAME_STATE!=IN_SPACE&&MAP[(int)std::clamp(PLAYER_COORDS[1]+MOVE_SPD,0.1,(double)MAP_HEIGHT)][(int)PLAYER_COORDS[0]]!=4) {
PLAYER_COORDS[1]=std::clamp(PLAYER_COORDS[1]+MOVE_SPD,0.1,(double)MAP_HEIGHT);
positionModified=true;
@ -3690,6 +3712,9 @@ public:
FillRectDecal({0,0},{WIDTH,HEIGHT},Pixel(ORIGINAL_FOREGROUND_EFFECT_COLOR.r,ORIGINAL_FOREGROUND_EFFECT_COLOR.g,ORIGINAL_FOREGROUND_EFFECT_COLOR.b,ORIGINAL_FOREGROUND_EFFECT_COLOR.a*PIXEL_EFFECT_TRANSPARENCY));
SetDrawTarget(2);
}
if (USE_TOUCH_CONTROLS&&(CURRENT_CUTSCENE==cutscene::NONE||CURRENT_CUTSCENE==cutscene::INPUT_USERNAME||CURRENT_CUTSCENE==cutscene::READY_TO_BOARD)) {
DrawDecal({0,HEIGHT-128},TOUCHSCREEN_DECAL,{1,1},Pixel(255,255,255,128));
}
if (messageBoxVisible) {
SetDrawTarget(nullptr);
DrawDialogBox({4,HEIGHT-60},{WIDTH/2,16},Pixel(18, 0, 33,180));
@ -4661,6 +4686,43 @@ public:
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))});
}
}
bool UpPressed(){
return GetKey(W).bPressed||GetKey(UP).bPressed||GetKey(NP8).bPressed||MOUSE_PRESSED_DOWN&&GetMouseY()<=HEIGHT-128+32&&GetMouseY()>=HEIGHT-128;
}
bool DownPressed(){
return GetKey(S).bPressed||GetKey(DOWN).bPressed||GetKey(NP5).bPressed||GetKey(NP2).bPressed||MOUSE_PRESSED_DOWN&&GetMouseY()<=HEIGHT&&GetMouseY()>=HEIGHT-32;
}
bool LeftPressed(){
return GetKey(A).bPressed||GetKey(LEFT).bPressed||GetKey(NP4).bPressed||MOUSE_PRESSED_DOWN&&GetMouseX()<=32&&GetMouseX()>=0;
}
bool RightPressed(){
return GetKey(D).bPressed||GetKey(RIGHT).bPressed||GetKey(NP6).bPressed||MOUSE_PRESSED_DOWN&&GetMouseX()<=128&&GetMouseX()>=96;
}
bool UpHeld(){
return GetKey(W).bHeld||GetKey(UP).bHeld||GetKey(NP8).bHeld||MOUSE_DOWN&&GetMouseY()<=HEIGHT-128+32&&GetMouseY()>=HEIGHT-128;
}
bool DownHeld(){
return GetKey(S).bHeld||GetKey(DOWN).bHeld||GetKey(NP5).bHeld||GetKey(NP2).bHeld||MOUSE_DOWN&&GetMouseY()<=HEIGHT&&GetMouseY()>=HEIGHT-32;
}
bool LeftHeld(){
return GetKey(A).bHeld||GetKey(LEFT).bHeld||GetKey(NP4).bHeld||MOUSE_DOWN&&GetMouseX()<=32&&GetMouseX()>=0;
}
bool RightHeld(){
return GetKey(D).bHeld||GetKey(RIGHT).bHeld||GetKey(NP6).bHeld||MOUSE_DOWN&&GetMouseX()<=128&&GetMouseX()>=96;
}
bool UpReleased(){
return GetKey(W).bReleased||GetKey(UP).bReleased||GetKey(NP8).bReleased||MOUSE_RELEASED&&GetMouseY()<=HEIGHT-128+32&&GetMouseY()>=HEIGHT-128;
}
bool DownReleased(){
return GetKey(S).bReleased||GetKey(DOWN).bReleased||GetKey(NP5).bReleased||GetKey(NP2).bReleased||MOUSE_RELEASED&&GetMouseY()<=HEIGHT&&GetMouseY()>=HEIGHT-32;
}
bool LeftReleased(){
return GetKey(A).bReleased||GetKey(LEFT).bReleased||GetKey(NP4).bReleased||MOUSE_RELEASED&&GetMouseX()<=32&&GetMouseX()>=0;
}
bool RightReleased(){
return GetKey(D).bReleased||GetKey(RIGHT).bReleased||GetKey(NP6).bReleased||MOUSE_RELEASED&&GetMouseX()<=128&&GetMouseX()>=96;
}
};

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 907 B

Loading…
Cancel
Save