diff --git a/C++ProjectTemplate b/C++ProjectTemplate index 691bb20..b59155e 100755 Binary files a/C++ProjectTemplate and b/C++ProjectTemplate differ diff --git a/assets/rollingcounter.png b/assets/rollingcounter.png new file mode 100644 index 0000000..3f6f1d3 Binary files /dev/null and b/assets/rollingcounter.png differ diff --git a/main.cpp b/main.cpp index ec58eac..de2864c 100644 --- a/main.cpp +++ b/main.cpp @@ -20,16 +20,32 @@ public: char partyMemberCount=1; olc::sound::WaveEngine engine; olc::sound::Wave se1; + olc::Decal*rollingCounter; + + char*player_name[4] = {"NESS","PAULA","JEFF","POO"}; + int player_hp[4] = {120,74,105,96}; + int player_pp[4] = {46,87,0,50}; + int player_rollhp[4] = {player_hp[0],player_hp[1],player_hp[2],player_hp[3]}; + int player_rollpp[4] = {player_pp[0],player_pp[1],player_pp[2],player_pp[3]}; + int player_rollhp_display[4][3] = {{player_hp[0]%10,player_hp[0]/10%10,player_hp[0]/100%10},{player_hp[1]%10,player_hp[1]/10%10,player_hp[1]/100%10},{player_hp[2]%10,player_hp[2]/10%10,player_hp[2]/100%10},{player_hp[3]%10,player_hp[3]/10%10,player_hp[3]/100%10}}; + int player_rollpp_display[4][3] = {{player_pp[0]%10,player_pp[0]/10%10,player_pp[0]/100%10},{player_pp[1]%10,player_pp[1]/10%10,player_pp[1]/100%10},{player_pp[2]%10,player_pp[2]/10%10,player_pp[2]/100%10},{player_pp[3]%10,player_pp[3]/10%10,player_pp[3]/100%10}}; + int player_rollhp_counter[4][3] = {{0,0,0},{0,0,0},{0,0,0},{0,0,0}}; + int player_rollpp_counter[4][3] = {{0,0,0},{0,0,0},{0,0,0},{0,0,0}}; bool OnUserCreate() override { SetPixelMode(olc::Pixel::ALPHA); + + rollingCounter = new olc::Decal(new olc::Sprite("assets/rollingcounter.png")); //ConsoleCaptureStdOut(true); // Called once at the start, so create things here engine.InitialiseAudio(); engine.SetOutputVolume(0.1f); se1.LoadAudioWaveform("./assets/sample-9s.wav"); + + player_hp[0]=30; + return true; } @@ -55,6 +71,41 @@ public: } void updateGame(){ + for (int i=0;iplayer_hp[i]) { + if (player_rollhp_counter[i][0]<=0) { + player_rollhp_display[i][0]--; + player_rollhp_counter[i][0]=13; + player_rollhp[i]--; + if (player_rollhp_display[i][0]<0) { + player_rollhp_display[i][0]=9; + player_rollhp_counter[i][0]=13; + player_rollhp_display[i][1]--; + player_rollhp_counter[i][1]=13; + if (player_rollhp_display[i][1]<0) { + player_rollhp_display[i][1]=9; + player_rollhp_counter[i][1]=13; + player_rollhp_display[i][2]--; + player_rollhp_counter[i][2]=13; + } + } + } + } else + if (player_rollhp[i]0) { + player_rollhp_counter[i][0]-=3; + } + if (player_rollhp_counter[i][1]>0) { + player_rollhp_counter[i][1]--; + } + if (player_rollhp_counter[i][2]>0) { + player_rollhp_counter[i][2]--; + } + } } void drawBox(const olc::vi2d &pos, const olc::vi2d &size, olc::Pixel p = olc::WHITE, olc::Pixel p2 = olc::DARK_GREY, olc::Pixel p3 = olc::VERY_DARK_GREY) { @@ -79,10 +130,42 @@ public: } } + void DrawRollingCounter(const olc::vi2d &pos,int val,int*rollcounter,int*rolloffset) { + FillRectDecal({pos.x+20,pos.y-3},{30,13},olc::DARK_GREY); + FillRectDecal({pos.x+21,pos.y-2},{28,11},olc::GREY); + DrawLineDecal({pos.x+30,pos.y-3},{pos.x+30,pos.y+10},olc::DARK_GREY); + DrawLineDecal({pos.x+40,pos.y-3},{pos.x+40,pos.y+10},olc::DARK_GREY); + DrawPartialDecal({pos.x+22,pos.y-1},{7,9},rollingCounter,{0,rollcounter[2]*13+rolloffset[2]},{7,9}); + DrawPartialDecal({pos.x+31,pos.y-1},{7,9},rollingCounter,{0,rollcounter[1]*13+rolloffset[1]},{7,9}); + DrawPartialDecal({pos.x+41,pos.y-1},{7,9},rollingCounter,{0,rollcounter[0]*13+rolloffset[0]},{7,9}); + } + void drawGame(){ drawBox({0,0},{128,48},olc::BLACK); for (int i=0;i