Merge conflict
This commit is contained in:
commit
135fe2c6e1
@ -52,13 +52,12 @@ private:
|
|||||||
void InitializeClassAbilities();
|
void InitializeClassAbilities();
|
||||||
public:
|
public:
|
||||||
Crawler();
|
Crawler();
|
||||||
|
bool OnUserCreate() override;
|
||||||
|
bool OnUserUpdate(float fElapsedTime) override;
|
||||||
public:
|
public:
|
||||||
geom2d::rect<int>NO_COLLISION={};
|
geom2d::rect<int>NO_COLLISION={};
|
||||||
vi2d WORLD_SIZE={120,8};
|
vi2d WORLD_SIZE={120,8};
|
||||||
TileTransformedView view;
|
TileTransformedView view;
|
||||||
bool OnUserCreate() override;
|
|
||||||
bool OnUserUpdate(float fElapsedTime) override;
|
|
||||||
void InitializeLevel(std::string mapFile,MapName map);
|
void InitializeLevel(std::string mapFile,MapName map);
|
||||||
void LoadLevel(MapName map);
|
void LoadLevel(MapName map);
|
||||||
void HandleUserInput(float fElapsedTime);
|
void HandleUserInput(float fElapsedTime);
|
||||||
|
@ -319,7 +319,7 @@ void Player::Update(float fElapsedTime){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
auto AllowedToCast=[&](Ability&ability){return !ability.precastInfo.precastTargetingRequired;};
|
auto AllowedToCast=[&](Ability&ability){return !ability.precastInfo.precastTargetingRequired&&GetState()!=State::ANIMATION_LOCK;};
|
||||||
//If pressed is set to false, uses held instead.
|
//If pressed is set to false, uses held instead.
|
||||||
auto CheckAndPerformAbility=[&](Ability&ability,HWButton key){
|
auto CheckAndPerformAbility=[&](Ability&ability,HWButton key){
|
||||||
if(ability.name!="???"){
|
if(ability.name!="???"){
|
||||||
@ -439,7 +439,7 @@ vf2d Player::GetVelocity(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Player::CanMove(){
|
bool Player::CanMove(){
|
||||||
return state!=State::CASTING;
|
return state!=State::CASTING&&state!=State::ANIMATION_LOCK;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::HasIframes(){
|
bool Player::HasIframes(){
|
||||||
@ -581,6 +581,7 @@ void Player::SetVelocity(vf2d vel){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Player::SetAnimationBasedOnTargetingDirection(float targetDirection){
|
void Player::SetAnimationBasedOnTargetingDirection(float targetDirection){
|
||||||
|
if(GetClass()==Class::RANGER){
|
||||||
if(targetDirection<=PI/4&&targetDirection>-PI/4){
|
if(targetDirection<=PI/4&&targetDirection>-PI/4){
|
||||||
UpdateAnimation(AnimationState::RANGER_SHOOT_E);
|
UpdateAnimation(AnimationState::RANGER_SHOOT_E);
|
||||||
} else
|
} else
|
||||||
@ -593,4 +594,5 @@ void Player::SetAnimationBasedOnTargetingDirection(float targetDirection){
|
|||||||
if(targetDirection>=-3*PI/4&&targetDirection<-PI/4){
|
if(targetDirection>=-3*PI/4&&targetDirection<-PI/4){
|
||||||
UpdateAnimation(AnimationState::RANGER_SHOOT_N);
|
UpdateAnimation(AnimationState::RANGER_SHOOT_N);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -89,6 +89,10 @@ protected:
|
|||||||
float ghostRemoveTimer=0;
|
float ghostRemoveTimer=0;
|
||||||
float retreatTimer=0;
|
float retreatTimer=0;
|
||||||
std::vector<vf2d>ghostPositions;
|
std::vector<vf2d>ghostPositions;
|
||||||
|
float rapidFireTimer=0;
|
||||||
|
int remainingRapidFireShots=0;
|
||||||
|
const float RAPID_FIRE_SHOOT_DELAY=0.1;
|
||||||
|
const int RAPID_FIRE_SHOOT_AMOUNT=4;
|
||||||
public:
|
public:
|
||||||
Player();
|
Player();
|
||||||
//So this is rather fascinating and only exists because we have the ability to change classes which means we need to initialize a class
|
//So this is rather fascinating and only exists because we have the ability to change classes which means we need to initialize a class
|
||||||
|
@ -29,7 +29,38 @@ AnimationState Ranger::walk_w=RANGER_WALK_W;
|
|||||||
SETUP_CLASS(Ranger)
|
SETUP_CLASS(Ranger)
|
||||||
|
|
||||||
void Ranger::OnUpdate(float fElapsedTime){
|
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(){
|
bool Ranger::AutoAttack(){
|
||||||
@ -40,11 +71,11 @@ bool Ranger::AutoAttack(){
|
|||||||
BULLET_LIST.push_back(std::make_unique<Arrow>(Arrow(GetPos(),extendedLine,vf2d{cos(angleToCursor)*250,float(sin(angleToCursor)*250-PI/8*250)}+movementVelocity,12,GetAttack(),OnUpperLevel(),true)));
|
BULLET_LIST.push_back(std::make_unique<Arrow>(Arrow(GetPos(),extendedLine,vf2d{cos(angleToCursor)*250,float(sin(angleToCursor)*250-PI/8*250)}+movementVelocity,12,GetAttack(),OnUpperLevel(),true)));
|
||||||
SetState(State::SHOOT_ARROW);
|
SetState(State::SHOOT_ARROW);
|
||||||
SetAnimationBasedOnTargetingDirection(angleToCursor);
|
SetAnimationBasedOnTargetingDirection(angleToCursor);
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Ranger::InitializeClassAbilities(){
|
void Ranger::InitializeClassAbilities(){
|
||||||
#pragma region Ranger Right-click Ability (???)
|
#pragma region Ranger Right-click Ability (Retreat)
|
||||||
Ranger::rightClickAbility.action=
|
Ranger::rightClickAbility.action=
|
||||||
[](Player*p,vf2d pos={}){
|
[](Player*p,vf2d pos={}){
|
||||||
geom2d::line mouseDir{game->GetWorldMousePos(),p->GetPos()};
|
geom2d::line mouseDir{game->GetWorldMousePos(),p->GetPos()};
|
||||||
@ -61,10 +92,13 @@ void Ranger::InitializeClassAbilities(){
|
|||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
#pragma region Ranger Ability 1 (???)
|
#pragma region Ranger Ability 1 (Rapid Fire)
|
||||||
Ranger::ability1.action=
|
Ranger::ability1.action=
|
||||||
[](Player*p,vf2d pos={}){
|
[](Player*p,vf2d pos={}){
|
||||||
return false;
|
p->remainingRapidFireShots=p->RAPID_FIRE_SHOOT_AMOUNT;
|
||||||
|
p->rapidFireTimer=p->RAPID_FIRE_SHOOT_DELAY;
|
||||||
|
p->SetState(State::ANIMATION_LOCK);
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
#pragma region Ranger Ability 2 (???)
|
#pragma region Ranger Ability 2 (???)
|
||||||
|
@ -14,4 +14,5 @@ enum State{
|
|||||||
PREP_CAST,
|
PREP_CAST,
|
||||||
SHOOT_ARROW,
|
SHOOT_ARROW,
|
||||||
RETREAT,
|
RETREAT,
|
||||||
|
ANIMATION_LOCK,
|
||||||
};
|
};
|
0
Crawler/loc.sh
Normal file → Executable file
0
Crawler/loc.sh
Normal file → Executable file
Loading…
x
Reference in New Issue
Block a user