Precast targeting indicator now centered
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
5da8b19c34
commit
50a73a53e7
@ -19,7 +19,7 @@ struct Ability{
|
|||||||
int manaCost=0;
|
int manaCost=0;
|
||||||
Pixel barColor1,barColor2;
|
Pixel barColor1,barColor2;
|
||||||
PrecastData precastInfo;
|
PrecastData precastInfo;
|
||||||
std::function<bool()>action=[&](){return false;};
|
std::function<bool(vf2d)>action=[&](vf2d){return false;};
|
||||||
Ability();
|
Ability();
|
||||||
Ability(std::string name,float cooldownTime,int manaCost,Pixel barColor1=VERY_DARK_RED,Pixel barColor2=DARK_RED,PrecastData precastInfo={});
|
Ability(std::string name,float cooldownTime,int manaCost,Pixel barColor1=VERY_DARK_RED,Pixel barColor2=DARK_RED,PrecastData precastInfo={});
|
||||||
};
|
};
|
@ -568,7 +568,7 @@ void Crawler::RenderWorld(float fElapsedTime){
|
|||||||
}
|
}
|
||||||
if(player->GetState()==State::PREP_CAST){
|
if(player->GetState()==State::PREP_CAST){
|
||||||
float precastSize=GetPlayer()->castPrepAbility->precastInfo.size;
|
float precastSize=GetPlayer()->castPrepAbility->precastInfo.size;
|
||||||
view.DrawDecal(GetWorldMousePos()-vf2d{precastSize/6,precastSize/6},GFX_Circle.Decal(),{precastSize/3,precastSize/3},{255,0,0,192});
|
view.DrawDecal(GetWorldMousePos()-vf2d{precastSize/4.5f,precastSize/4.5f},GFX_Circle.Decal(),{precastSize/3,precastSize/3},{255,0,0,192});
|
||||||
}
|
}
|
||||||
#pragma region Foreground Rendering
|
#pragma region Foreground Rendering
|
||||||
for(TileGroup&group:foregroundTileGroups){
|
for(TileGroup&group:foregroundTileGroups){
|
||||||
|
@ -166,7 +166,7 @@ void Player::Update(float fElapsedTime){
|
|||||||
if(castInfo.castTimer>0){
|
if(castInfo.castTimer>0){
|
||||||
castInfo.castTimer-=fElapsedTime;
|
castInfo.castTimer-=fElapsedTime;
|
||||||
if(castInfo.castTimer<=0){
|
if(castInfo.castTimer<=0){
|
||||||
if(castPrepAbility->action()){
|
if(castPrepAbility->action(castInfo.castPos)){
|
||||||
castPrepAbility->cooldown=castPrepAbility->COOLDOWN_TIME;
|
castPrepAbility->cooldown=castPrepAbility->COOLDOWN_TIME;
|
||||||
mana-=castPrepAbility->manaCost;
|
mana-=castPrepAbility->manaCost;
|
||||||
}
|
}
|
||||||
@ -307,7 +307,7 @@ void Player::Update(float fElapsedTime){
|
|||||||
auto CheckAndPerformAbility=[&](Ability&ability,HWButton key){
|
auto CheckAndPerformAbility=[&](Ability&ability,HWButton key){
|
||||||
if(ability.cooldown==0&&GetMana()>=ability.manaCost){
|
if(ability.cooldown==0&&GetMana()>=ability.manaCost){
|
||||||
if(key.bPressed||key.bReleased&&&ability==castPrepAbility&&GetState()==State::PREP_CAST){
|
if(key.bPressed||key.bReleased&&&ability==castPrepAbility&&GetState()==State::PREP_CAST){
|
||||||
if(AllowedToCast(ability)&&ability.action()){
|
if(AllowedToCast(ability)&&ability.action({})){
|
||||||
ability.cooldown=ability.COOLDOWN_TIME;
|
ability.cooldown=ability.COOLDOWN_TIME;
|
||||||
mana-=ability.manaCost;
|
mana-=ability.manaCost;
|
||||||
}else
|
}else
|
||||||
@ -495,7 +495,7 @@ std::vector<Buff>Player::GetBuffs(BuffType buff){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Player::CastSpell(Ability&ability){
|
void Player::CastSpell(Ability&ability){
|
||||||
castInfo={ability.name,ability.precastInfo.castTime,ability.precastInfo.castTime};
|
castInfo={ability.name,ability.precastInfo.castTime,ability.precastInfo.castTime,game->GetWorldMousePos()};
|
||||||
SetState(State::CASTING);
|
SetState(State::CASTING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@ struct CastInfo{
|
|||||||
std::string name;
|
std::string name;
|
||||||
float castTimer;
|
float castTimer;
|
||||||
float castTotalTime;
|
float castTotalTime;
|
||||||
|
vf2d castPos;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Player{
|
struct Player{
|
||||||
|
@ -37,25 +37,25 @@ bool Ranger::AutoAttack(){
|
|||||||
void Ranger::InitializeClassAbilities(){
|
void Ranger::InitializeClassAbilities(){
|
||||||
#pragma region Ranger Right-click Ability (???)
|
#pragma region Ranger Right-click Ability (???)
|
||||||
Ranger::rightClickAbility.action=
|
Ranger::rightClickAbility.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
#pragma region Ranger Ability 1 (???)
|
#pragma region Ranger Ability 1 (???)
|
||||||
Ranger::ability1.action=
|
Ranger::ability1.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
#pragma region Ranger Ability 2 (???)
|
#pragma region Ranger Ability 2 (???)
|
||||||
Ranger::ability2.action=
|
Ranger::ability2.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
#pragma region Ranger Ability 3 (???)
|
#pragma region Ranger Ability 3 (???)
|
||||||
Ranger::ability3.action=
|
Ranger::ability3.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
@ -37,25 +37,25 @@ bool Thief::AutoAttack(){
|
|||||||
void Thief::InitializeClassAbilities(){
|
void Thief::InitializeClassAbilities(){
|
||||||
#pragma region Thief Right-click Ability (???)
|
#pragma region Thief Right-click Ability (???)
|
||||||
Thief::rightClickAbility.action=
|
Thief::rightClickAbility.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
#pragma region Thief Ability 1 (???)
|
#pragma region Thief Ability 1 (???)
|
||||||
Thief::ability1.action=
|
Thief::ability1.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
#pragma region Thief Ability 2 (???)
|
#pragma region Thief Ability 2 (???)
|
||||||
Thief::ability2.action=
|
Thief::ability2.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
#pragma region Thief Ability 3 (???)
|
#pragma region Thief Ability 3 (???)
|
||||||
Thief::ability3.action=
|
Thief::ability3.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
@ -37,25 +37,25 @@ bool Trapper::AutoAttack(){
|
|||||||
void Trapper::InitializeClassAbilities(){
|
void Trapper::InitializeClassAbilities(){
|
||||||
#pragma region Trapper Right-click Ability (???)
|
#pragma region Trapper Right-click Ability (???)
|
||||||
Trapper::rightClickAbility.action=
|
Trapper::rightClickAbility.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
#pragma region Trapper Ability 1 (???)
|
#pragma region Trapper Ability 1 (???)
|
||||||
Trapper::ability1.action=
|
Trapper::ability1.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
#pragma region Trapper Ability 2 (???)
|
#pragma region Trapper Ability 2 (???)
|
||||||
Trapper::ability2.action=
|
Trapper::ability2.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
#pragma region Trapper Ability 3 (???)
|
#pragma region Trapper Ability 3 (???)
|
||||||
Trapper::ability3.action=
|
Trapper::ability3.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
@ -70,7 +70,7 @@ bool Warrior::AutoAttack(){
|
|||||||
void Warrior::InitializeClassAbilities(){
|
void Warrior::InitializeClassAbilities(){
|
||||||
#pragma region Warrior Right-click Ability (Block)
|
#pragma region Warrior Right-click Ability (Block)
|
||||||
Warrior::rightClickAbility.action=
|
Warrior::rightClickAbility.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
if(GetState()==State::NORMAL){
|
if(GetState()==State::NORMAL){
|
||||||
rightClickAbility.cooldown=rightClickAbility.COOLDOWN_TIME;
|
rightClickAbility.cooldown=rightClickAbility.COOLDOWN_TIME;
|
||||||
SetState(State::BLOCK);
|
SetState(State::BLOCK);
|
||||||
@ -82,7 +82,7 @@ void Warrior::InitializeClassAbilities(){
|
|||||||
#pragma endregion
|
#pragma endregion
|
||||||
#pragma region Warrior Ability 1 (Battlecry)
|
#pragma region Warrior Ability 1 (Battlecry)
|
||||||
Warrior::ability1.action=
|
Warrior::ability1.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
game->AddEffect(std::make_unique<Effect>(GetPos(),0.1,AnimationState::BATTLECRY_EFFECT,upperLevel,1,0.3));
|
game->AddEffect(std::make_unique<Effect>(GetPos(),0.1,AnimationState::BATTLECRY_EFFECT,upperLevel,1,0.3));
|
||||||
AddBuff(BuffType::ATTACK_UP,10,0.1);
|
AddBuff(BuffType::ATTACK_UP,10,0.1);
|
||||||
AddBuff(BuffType::DAMAGE_REDUCTION,10,0.1);
|
AddBuff(BuffType::DAMAGE_REDUCTION,10,0.1);
|
||||||
@ -96,7 +96,7 @@ void Warrior::InitializeClassAbilities(){
|
|||||||
#pragma endregion
|
#pragma endregion
|
||||||
#pragma region Warrior Ability 2 (Ground Slam)
|
#pragma region Warrior Ability 2 (Ground Slam)
|
||||||
Warrior::ability2.action=
|
Warrior::ability2.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
Spin(GROUND_SLAM_SPIN_TIME,14*PI);
|
Spin(GROUND_SLAM_SPIN_TIME,14*PI);
|
||||||
iframe_time=GROUND_SLAM_SPIN_TIME+0.1;
|
iframe_time=GROUND_SLAM_SPIN_TIME+0.1;
|
||||||
return true;
|
return true;
|
||||||
@ -104,7 +104,7 @@ void Warrior::InitializeClassAbilities(){
|
|||||||
#pragma endregion
|
#pragma endregion
|
||||||
#pragma region Warrior Ability 3 (Sonic Slash)
|
#pragma region Warrior Ability 3 (Sonic Slash)
|
||||||
Warrior::ability3.action=
|
Warrior::ability3.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
SetState(State::SWING_SONIC_SWORD);
|
SetState(State::SWING_SONIC_SWORD);
|
||||||
AddBuff(BuffType::SLOWDOWN,0.5,1);
|
AddBuff(BuffType::SLOWDOWN,0.5,1);
|
||||||
vf2d bulletVel={};
|
vf2d bulletVel={};
|
||||||
|
@ -37,25 +37,25 @@ bool Witch::AutoAttack(){
|
|||||||
void Witch::InitializeClassAbilities(){
|
void Witch::InitializeClassAbilities(){
|
||||||
#pragma region Witch Right-click Ability (???)
|
#pragma region Witch Right-click Ability (???)
|
||||||
Witch::rightClickAbility.action=
|
Witch::rightClickAbility.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
#pragma region Witch Ability 1 (???)
|
#pragma region Witch Ability 1 (???)
|
||||||
Witch::ability1.action=
|
Witch::ability1.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
#pragma region Witch Ability 2 (???)
|
#pragma region Witch Ability 2 (???)
|
||||||
Witch::ability2.action=
|
Witch::ability2.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
#pragma region Witch Ability 3 (???)
|
#pragma region Witch Ability 3 (???)
|
||||||
Witch::ability3.action=
|
Witch::ability3.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
@ -75,7 +75,7 @@ bool Wizard::AutoAttack(){
|
|||||||
void Wizard::InitializeClassAbilities(){
|
void Wizard::InitializeClassAbilities(){
|
||||||
#pragma region Wizard Right-click Ability (Teleport)
|
#pragma region Wizard Right-click Ability (Teleport)
|
||||||
Wizard::rightClickAbility.action=
|
Wizard::rightClickAbility.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
float pointMouseDirection=atan2(game->GetWorldMousePos().y-GetPos().y,game->GetWorldMousePos().x-GetPos().x);
|
float pointMouseDirection=atan2(game->GetWorldMousePos().y-GetPos().y,game->GetWorldMousePos().x-GetPos().x);
|
||||||
vf2d pointTowardsMouse={cos(pointMouseDirection),sin(pointMouseDirection)};
|
vf2d pointTowardsMouse={cos(pointMouseDirection),sin(pointMouseDirection)};
|
||||||
float dist=std::clamp(geom2d::line<float>{GetPos(),game->GetWorldMousePos()}.length(),0.f,6.5f*24);
|
float dist=std::clamp(geom2d::line<float>{GetPos(),game->GetWorldMousePos()}.length(),0.f,6.5f*24);
|
||||||
@ -103,7 +103,7 @@ void Wizard::InitializeClassAbilities(){
|
|||||||
#pragma endregion
|
#pragma endregion
|
||||||
#pragma region Wizard Ability 1 (Fire Bolt)
|
#pragma region Wizard Ability 1 (Fire Bolt)
|
||||||
Wizard::ability1.action=
|
Wizard::ability1.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
float angleToCursor=atan2(game->GetWorldMousePos().y-GetPos().y,game->GetWorldMousePos().x-GetPos().x);
|
float angleToCursor=atan2(game->GetWorldMousePos().y-GetPos().y,game->GetWorldMousePos().x-GetPos().x);
|
||||||
BULLET_LIST.push_back(std::make_unique<FireBolt>(FireBolt(GetPos(),{cos(angleToCursor)*275,sin(angleToCursor)*275},12,GetAttack(),upperLevel,true,{240,120,60})));
|
BULLET_LIST.push_back(std::make_unique<FireBolt>(FireBolt(GetPos(),{cos(angleToCursor)*275,sin(angleToCursor)*275},12,GetAttack(),upperLevel,true,{240,120,60})));
|
||||||
return true;
|
return true;
|
||||||
@ -111,7 +111,7 @@ void Wizard::InitializeClassAbilities(){
|
|||||||
#pragma endregion
|
#pragma endregion
|
||||||
#pragma region Wizard Ability 2 (Lightning Bolt)
|
#pragma region Wizard Ability 2 (Lightning Bolt)
|
||||||
Wizard::ability2.action=
|
Wizard::ability2.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
float angleToCursor=atan2(game->GetWorldMousePos().y-GetPos().y,game->GetWorldMousePos().x-GetPos().x);
|
float angleToCursor=atan2(game->GetWorldMousePos().y-GetPos().y,game->GetWorldMousePos().x-GetPos().x);
|
||||||
BULLET_LIST.push_back(std::make_unique<LightningBolt>(LightningBolt(GetPos(),{cos(angleToCursor)*230,sin(angleToCursor)*230},12,GetAttack()*4,upperLevel,true,WHITE)));
|
BULLET_LIST.push_back(std::make_unique<LightningBolt>(LightningBolt(GetPos(),{cos(angleToCursor)*230,sin(angleToCursor)*230},12,GetAttack()*4,upperLevel,true,WHITE)));
|
||||||
return true;
|
return true;
|
||||||
@ -119,9 +119,9 @@ void Wizard::InitializeClassAbilities(){
|
|||||||
#pragma endregion
|
#pragma endregion
|
||||||
#pragma region Wizard Ability 3 (Meteor)
|
#pragma region Wizard Ability 3 (Meteor)
|
||||||
Wizard::ability3.action=
|
Wizard::ability3.action=
|
||||||
[&](){
|
[&](vf2d pos={}){
|
||||||
CastSpell(Wizard::ability3);
|
CastSpell(Wizard::ability3);
|
||||||
game->AddEffect(std::make_unique<Meteor>(GetPos(),3,AnimationState::METEOR,OnUpperLevel(),vf2d{1,1},2));
|
game->AddEffect(std::make_unique<Meteor>(pos,3,AnimationState::METEOR,OnUpperLevel(),vf2d{1,1},2));
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
Loading…
x
Reference in New Issue
Block a user