From 19c2c198e63b7ffca85fd26f1bb2948e40474c5d Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Tue, 25 Jul 2023 17:34:53 -0500 Subject: [PATCH] Include pragma regions for specific class abilities and move Ranger stuff (that is actually player-implemented over) --- Crawler/Crawler.cpp | 2 +- Crawler/Player.cpp | 79 +++++++++++++++++++++++++++++++++------------ Crawler/Player.h | 7 +++- Crawler/Ranger.cpp | 33 +------------------ Crawler/Version.h | 2 +- 5 files changed, 67 insertions(+), 56 deletions(-) diff --git a/Crawler/Crawler.cpp b/Crawler/Crawler.cpp index 1d1b0424..9b12905d 100644 --- a/Crawler/Crawler.cpp +++ b/Crawler/Crawler.cpp @@ -90,7 +90,7 @@ bool Crawler::OnUserCreate(){ LoadLevel(CAMPAIGN_1_1); InitializeClassAbilities(); ChangePlayerClass(WARRIOR); - //Warrior::ability4=Wizard::ability3; //Class ability swapping demonstration. + Warrior::ability4=Ranger::ability1; //Class ability swapping demonstration. return true; } diff --git a/Crawler/Player.cpp b/Crawler/Player.cpp index e7f5be5f..3291e9be 100644 --- a/Crawler/Player.cpp +++ b/Crawler/Player.cpp @@ -360,29 +360,66 @@ void Player::Update(float fElapsedTime){ CheckAbilityKeyReleasedAndCastSpell(ability4,game->GetKey(Crawler::KEY_ABILITY4)) } - switch(GetState()){ - case SWING_SWORD:{ - switch(GetFacingDirection()){ - case UP:{ - UpdateAnimation(AnimationState::WARRIOR_SWINGSWORD_N); - }break; - case DOWN:{ - UpdateAnimation(AnimationState::WARRIOR_SWINGSWORD_S); - }break; - case LEFT:{ - UpdateAnimation(AnimationState::WARRIOR_SWINGSWORD_W); - }break; - case RIGHT:{ - UpdateAnimation(AnimationState::WARRIOR_SWINGSWORD_E); - }break; + #pragma region Warrior + switch(GetState()){ + case SWING_SWORD:{ + switch(GetFacingDirection()){ + case UP:{ + UpdateAnimation(AnimationState::WARRIOR_SWINGSWORD_N); + }break; + case DOWN:{ + UpdateAnimation(AnimationState::WARRIOR_SWINGSWORD_S); + }break; + case LEFT:{ + UpdateAnimation(AnimationState::WARRIOR_SWINGSWORD_W); + }break; + case RIGHT:{ + UpdateAnimation(AnimationState::WARRIOR_SWINGSWORD_E); + }break; + } + SetSwordSwingTimer(GetSwordSwingTimer()-fElapsedTime); + if(GetSwordSwingTimer()<=0){ + SetSwordSwingTimer(0); + SetState(State::NORMAL); + } + }break; + } + #pragma endregion + + #pragma region Ranger + if(GetState()==SHOOT_ARROW){ + if(attack_cooldown_timer<=ARROW_ATTACK_COOLDOWN-0.3){ + SetState(NORMAL); } - SetSwordSwingTimer(GetSwordSwingTimer()-fElapsedTime); - if(GetSwordSwingTimer()<=0){ - SetSwordSwingTimer(0); - SetState(State::NORMAL); + } + if(retreatTimer>0){ + SetZ(6*sin(PI/RETREAT_TIME*retreatTimer)); + retreatTimer-=fElapsedTime; + if(retreatTimer<=0){ + SetVelocity({}); + SetZ(0); + SetState(State::NORMAL); } - }break; - } + } + if(ghostRemoveTimer>0){ + ghostRemoveTimer-=fElapsedTime; + if(ghostRemoveTimer<=0){ + if(ghostPositions.size()>0){ + ghostPositions.erase(ghostPositions.begin()); + if(ghostPositions.size()>0){ + ghostRemoveTimer=RETREAT_GHOST_FRAME_DELAY; + } + } + } + } + if(ghostFrameTimer>0){ + ghostFrameTimer-=fElapsedTime; + if(ghostFrameTimer<=0&&GetState()==State::RETREAT){ + ghostPositions.push_back(GetPos()+vf2d{0,-GetZ()}); + ghostFrameTimer=RETREAT_GHOST_FRAME_DELAY; + } + } + #pragma endregion } float Player::GetSwordSwingTimer(){ diff --git a/Crawler/Player.h b/Crawler/Player.h index 3681714c..6c54e0b0 100644 --- a/Crawler/Player.h +++ b/Crawler/Player.h @@ -8,7 +8,6 @@ #include "Buff.h" #include "Pathfinding.h" - struct CastInfo{ std::string name; float castTimer; @@ -164,6 +163,7 @@ struct Warrior:Player{ Warrior(Player*player); Class GetClass()override; bool AutoAttack()override; + //Include only WARRIOR-specific implementations! void OnUpdate(float fElapsedTime)override; static void InitializeClassAbilities(); std::string GetClassName()override; @@ -191,6 +191,7 @@ struct Thief:Player{ Thief(Player*player); Class GetClass()override; bool AutoAttack()override; + //Include only THIEF-specific implementations! void OnUpdate(float fElapsedTime)override; static void InitializeClassAbilities(); std::string GetClassName()override; @@ -218,6 +219,7 @@ struct Ranger:Player{ Ranger(Player*player); Class GetClass()override; bool AutoAttack()override; + //Include only RANGER-specific implementations! void OnUpdate(float fElapsedTime)override; static void InitializeClassAbilities(); std::string GetClassName()override; @@ -245,6 +247,7 @@ struct Trapper:Player{ Trapper(Player*player); Class GetClass()override; bool AutoAttack()override; + //Include only TRAPPER-specific implementations! void OnUpdate(float fElapsedTime)override; static void InitializeClassAbilities(); std::string GetClassName()override; @@ -272,6 +275,7 @@ struct Wizard:Player{ Wizard(Player*player); Class GetClass()override; bool AutoAttack()override; + //Include only WIZARD-specific implementations! void OnUpdate(float fElapsedTime)override; static void InitializeClassAbilities(); std::string GetClassName()override; @@ -299,6 +303,7 @@ struct Witch:Player{ Witch(Player*player); Class GetClass()override; bool AutoAttack()override; + //Include only WITCHs-specific implementations! void OnUpdate(float fElapsedTime)override; static void InitializeClassAbilities(); std::string GetClassName()override; diff --git a/Crawler/Ranger.cpp b/Crawler/Ranger.cpp index 423883b8..6981b664 100644 --- a/Crawler/Ranger.cpp +++ b/Crawler/Ranger.cpp @@ -29,38 +29,7 @@ AnimationState Ranger::walk_w=RANGER_WALK_W; SETUP_CLASS(Ranger) void Ranger::OnUpdate(float fElapsedTime){ - if(GetState()==SHOOT_ARROW){ - if(attack_cooldown_timer<=ARROW_ATTACK_COOLDOWN-0.3){ - SetState(NORMAL); - } - } - if(retreatTimer>0){ - SetZ(6*sin(PI/RETREAT_TIME*retreatTimer)); - retreatTimer-=fElapsedTime; - if(retreatTimer<=0){ - SetVelocity({}); - SetZ(0); - SetState(State::NORMAL); - } - } - if(ghostRemoveTimer>0){ - ghostRemoveTimer-=fElapsedTime; - if(ghostRemoveTimer<=0){ - if(ghostPositions.size()>0){ - ghostPositions.erase(ghostPositions.begin()); - if(ghostPositions.size()>0){ - ghostRemoveTimer=RETREAT_GHOST_FRAME_DELAY; - } - } - } - } - if(ghostFrameTimer>0){ - ghostFrameTimer-=fElapsedTime; - if(ghostFrameTimer<=0&&GetState()==State::RETREAT){ - ghostPositions.push_back(GetPos()+vf2d{0,-GetZ()}); - ghostFrameTimer=RETREAT_GHOST_FRAME_DELAY; - } - } + } bool Ranger::AutoAttack(){ diff --git a/Crawler/Version.h b/Crawler/Version.h index f0fb0cd9..d1224191 100644 --- a/Crawler/Version.h +++ b/Crawler/Version.h @@ -2,7 +2,7 @@ #define VERSION_MAJOR 0 #define VERSION_MINOR 2 #define VERSION_PATCH 0 -#define VERSION_BUILD 832 +#define VERSION_BUILD 833 #define stringify(a) stringify_(a) #define stringify_(a) #a