Selection cursor for overworld map items.
This commit is contained in:
parent
42f8e25cdf
commit
54614d31dc
@ -715,3 +715,7 @@ void Player::RestoreMana(int amt){
|
|||||||
void Player::ConsumeMana(int amt){
|
void Player::ConsumeMana(int amt){
|
||||||
mana=std::clamp(mana-amt,0,maxmana);
|
mana=std::clamp(mana-amt,0,maxmana);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Player::SetSizeMult(float size){
|
||||||
|
this->size=size;
|
||||||
|
}
|
@ -114,6 +114,7 @@ public:
|
|||||||
int GetAttack();
|
int GetAttack();
|
||||||
float GetMoveSpdMult();
|
float GetMoveSpdMult();
|
||||||
float GetSizeMult();
|
float GetSizeMult();
|
||||||
|
void SetSizeMult(float size);
|
||||||
float GetAttackRangeMult();
|
float GetAttackRangeMult();
|
||||||
float GetSpinAngle();
|
float GetSpinAngle();
|
||||||
State::State GetState();
|
State::State GetState();
|
||||||
|
@ -17,6 +17,7 @@ void State_OverworldMap::OnStateChange(GameState*prevState){
|
|||||||
game->GetPlayer()->SetPos(currentConnectionPoint->rect.pos);
|
game->GetPlayer()->SetPos(currentConnectionPoint->rect.pos);
|
||||||
game->GetPlayer()->UpdateWalkingAnimation(DOWN);
|
game->GetPlayer()->UpdateWalkingAnimation(DOWN);
|
||||||
game->GetPlayer()->SetState(State::FORCE_WALK);
|
game->GetPlayer()->SetState(State::FORCE_WALK);
|
||||||
|
game->GetPlayer()->SetSizeMult(1);
|
||||||
};
|
};
|
||||||
void State_OverworldMap::OnUserUpdate(Crawler*game){
|
void State_OverworldMap::OnUserUpdate(Crawler*game){
|
||||||
game->camera.SetTarget(currentConnectionPoint->rect.middle());
|
game->camera.SetTarget(currentConnectionPoint->rect.middle());
|
||||||
@ -24,7 +25,43 @@ void State_OverworldMap::OnUserUpdate(Crawler*game){
|
|||||||
game->GetPlayer()->Update(game->GetElapsedTime());
|
game->GetPlayer()->Update(game->GetElapsedTime());
|
||||||
};
|
};
|
||||||
void State_OverworldMap::Draw(Crawler*game){
|
void State_OverworldMap::Draw(Crawler*game){
|
||||||
|
currentTime+=game->GetElapsedTime();
|
||||||
|
for(ConnectionPoint&cp:connections){
|
||||||
|
if(geom2d::overlaps(game->GetWorldMousePos(),cp.rect)){
|
||||||
|
float borderThickness=4;
|
||||||
|
vf2d crosshairExtension={std::min(0.25f*cp.rect.size.x-borderThickness/2,12.f),std::min(0.25f*cp.rect.size.y-borderThickness/2,12.f)};
|
||||||
|
vf2d pulsatingAmt=vf2d{1,1}*std::abs(std::sin(currentTime*3))*2;
|
||||||
|
//Lower-Left Corner
|
||||||
|
vf2d pos=cp.rect.pos+vf2d{0,cp.rect.size.y-borderThickness}+vf2d{-pulsatingAmt.x,pulsatingAmt.y};
|
||||||
|
vf2d size={borderThickness+crosshairExtension.x,borderThickness};
|
||||||
|
game->view.FillRectDecal(pos,size,RED);
|
||||||
|
pos={pos.x,pos.y-crosshairExtension.y}+vf2d{-pulsatingAmt.x,pulsatingAmt.y};
|
||||||
|
size={borderThickness,crosshairExtension.y};
|
||||||
|
game->view.FillRectDecal(pos,size,RED);
|
||||||
|
//Lower-Right Corner
|
||||||
|
pos=cp.rect.pos+vf2d{cp.rect.size.x-borderThickness-crosshairExtension.x,cp.rect.size.y-borderThickness}+vf2d{pulsatingAmt.x,pulsatingAmt.y};
|
||||||
|
size={borderThickness+crosshairExtension.x,borderThickness};
|
||||||
|
game->view.FillRectDecal(pos,size,RED);
|
||||||
|
pos={pos.x+crosshairExtension.x,pos.y-crosshairExtension.y}+vf2d{pulsatingAmt.x,pulsatingAmt.y};
|
||||||
|
size={borderThickness,crosshairExtension.y};
|
||||||
|
game->view.FillRectDecal(pos,size,RED);
|
||||||
|
//Upper-Left Corner
|
||||||
|
pos=cp.rect.pos+vf2d{0,0}+vf2d{-pulsatingAmt.x,-pulsatingAmt.y};
|
||||||
|
size={borderThickness+crosshairExtension.x,borderThickness};
|
||||||
|
game->view.FillRectDecal(pos,size,RED);
|
||||||
|
pos={pos.x,pos.y+borderThickness}+vf2d{-pulsatingAmt.x,-pulsatingAmt.y};
|
||||||
|
size={borderThickness,crosshairExtension.y};
|
||||||
|
game->view.FillRectDecal(pos,size,RED);
|
||||||
|
//Upper-Right Corner
|
||||||
|
pos=cp.rect.pos+vf2d{cp.rect.size.x-borderThickness-crosshairExtension.x,0}+vf2d{pulsatingAmt.x,-pulsatingAmt.y};
|
||||||
|
size={borderThickness+crosshairExtension.x,borderThickness};
|
||||||
|
game->view.FillRectDecal(pos,size,RED);
|
||||||
|
pos={pos.x+crosshairExtension.x,pos.y+borderThickness}+vf2d{pulsatingAmt.x,-pulsatingAmt.y};
|
||||||
|
size={borderThickness,crosshairExtension.y};
|
||||||
|
game->view.FillRectDecal(pos,size,RED);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
void State_OverworldMap::SetStageMarker(std::string connectionName){
|
void State_OverworldMap::SetStageMarker(std::string connectionName){
|
||||||
for(ConnectionPoint&connection:connections){
|
for(ConnectionPoint&connection:connections){
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
class State_OverworldMap:public GameState{
|
class State_OverworldMap:public GameState{
|
||||||
ConnectionPoint*currentConnectionPoint;
|
ConnectionPoint*currentConnectionPoint;
|
||||||
|
float currentTime;
|
||||||
public:
|
public:
|
||||||
State_OverworldMap();
|
State_OverworldMap();
|
||||||
static std::vector<ConnectionPoint>connections;
|
static std::vector<ConnectionPoint>connections;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#define VERSION_MAJOR 0
|
#define VERSION_MAJOR 0
|
||||||
#define VERSION_MINOR 2
|
#define VERSION_MINOR 2
|
||||||
#define VERSION_PATCH 0
|
#define VERSION_PATCH 0
|
||||||
#define VERSION_BUILD 2457
|
#define VERSION_BUILD 2485
|
||||||
|
|
||||||
#define stringify(a) stringify_(a)
|
#define stringify(a) stringify_(a)
|
||||||
#define stringify_(a) #a
|
#define stringify_(a) #a
|
||||||
|
Loading…
x
Reference in New Issue
Block a user