Added more indicators for healing, mana, and interruption.
This commit is contained in:
parent
3605aa818d
commit
3f9543d93b
@ -1109,15 +1109,43 @@ void Crawler::RenderWorld(float fElapsedTime){
|
||||
dn->lifeTime+=fElapsedTime;
|
||||
if(dn->lifeTime<=1){
|
||||
if(dn->lifeTime<DamageNumber::MOVE_UP_TIME){
|
||||
dn->pos.y-=20*fElapsedTime;
|
||||
if(dn->invertedDirection){
|
||||
dn->pos.y+=20*fElapsedTime;
|
||||
}else{
|
||||
dn->pos.y-=20*fElapsedTime;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
std::string text=std::to_string(dn->damage);
|
||||
if(!dn->friendly){
|
||||
view.DrawStringPropDecal(dn->pos-GetTextSizeProp(text)/2,text,DARK_RED);
|
||||
}else{
|
||||
view.DrawShadowStringPropDecal(dn->pos-GetTextSizeProp(text)/2,text,RED,VERY_DARK_GREY);
|
||||
switch(dn->type){
|
||||
case HEALTH_LOSS:{
|
||||
std::string text=std::to_string(dn->damage);
|
||||
if(!dn->friendly){
|
||||
view.DrawStringPropDecal(dn->pos-GetTextSizeProp(text)/2,text,DARK_RED);
|
||||
}else{
|
||||
view.DrawShadowStringPropDecal(dn->pos-GetTextSizeProp(text)/2,text,RED,VERY_DARK_GREY);
|
||||
}
|
||||
}break;
|
||||
case HEALTH_GAIN:{
|
||||
std::string text="+"+std::to_string(dn->damage);
|
||||
if(!dn->friendly){
|
||||
view.DrawStringPropDecal(dn->pos-GetTextSizeProp(text)/2,text,DARK_GREEN);
|
||||
}else{
|
||||
view.DrawShadowStringPropDecal(dn->pos-GetTextSizeProp(text)/2,text,GREEN,VERY_DARK_GREY);
|
||||
}
|
||||
}break;
|
||||
case MANA_GAIN:{
|
||||
std::string text="+"+std::to_string(dn->damage);
|
||||
if(dn->friendly){
|
||||
view.DrawShadowStringPropDecal(dn->pos-GetTextSizeProp(text)/2,text,BLUE,VERY_DARK_GREY);
|
||||
}
|
||||
}break;
|
||||
case INTERRUPT:{
|
||||
std::string text="Interrupted!";
|
||||
if(dn->friendly){
|
||||
view.DrawShadowStringPropDecal(dn->pos-GetTextSizeProp(text)/2,text,BLACK,VERY_DARK_GREY,{0.5,1});
|
||||
}
|
||||
}break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -39,6 +39,6 @@ DamageNumber::DamageNumber()
|
||||
:damage(0){
|
||||
}
|
||||
|
||||
DamageNumber::DamageNumber(vf2d pos,int damage,bool friendly):
|
||||
pos(pos),damage(damage),friendly(friendly){
|
||||
DamageNumber::DamageNumber(vf2d pos,int damage,bool friendly,DamageNumberType type):
|
||||
pos(pos),damage(damage),friendly(friendly),type(type),invertedDirection(type==INTERRUPT){
|
||||
}
|
||||
@ -34,13 +34,22 @@ SUCH DAMAGE.
|
||||
#pragma once
|
||||
#include "olcPixelGameEngine.h"
|
||||
|
||||
enum DamageNumberType{
|
||||
HEALTH_LOSS,
|
||||
HEALTH_GAIN,
|
||||
MANA_GAIN,
|
||||
INTERRUPT
|
||||
};
|
||||
|
||||
struct DamageNumber{
|
||||
vf2d pos;
|
||||
int damage;
|
||||
float lifeTime=0;
|
||||
float pauseTime=0;
|
||||
bool friendly=false;
|
||||
bool invertedDirection=false;
|
||||
DamageNumberType type=HEALTH_LOSS;
|
||||
const static float MOVE_UP_TIME;
|
||||
DamageNumber();
|
||||
DamageNumber(vf2d pos,int damage,bool friendly=false);
|
||||
DamageNumber(vf2d pos,int damage,bool friendly=false,DamageNumberType type=HEALTH_LOSS);
|
||||
};
|
||||
@ -37,7 +37,6 @@ SUCH DAMAGE.
|
||||
#include "State.h"
|
||||
#include "Buff.h"
|
||||
#include "olcUTIL_Animate2D.h"
|
||||
#include "DamageNumber.h"
|
||||
#include "DEFINES.h"
|
||||
#include "Attributable.h"
|
||||
#include "Item.h"
|
||||
@ -45,6 +44,7 @@ SUCH DAMAGE.
|
||||
|
||||
INCLUDE_ITEM_DATA
|
||||
|
||||
struct DamageNumber;
|
||||
struct Player;
|
||||
class Crawler;
|
||||
|
||||
|
||||
@ -248,7 +248,7 @@ void Player::Update(float fElapsedTime){
|
||||
}
|
||||
while(manaTickTimer<=0){
|
||||
manaTickTimer+=0.2;
|
||||
RestoreMana(1);
|
||||
RestoreMana(1,true);
|
||||
}
|
||||
for(std::vector<Buff>::iterator it=buffList.begin();it!=buffList.end();++it){
|
||||
Buff&b=*it;
|
||||
@ -565,7 +565,7 @@ vf2d Player::GetVelocity(){
|
||||
}
|
||||
|
||||
bool Player::CanMove(){
|
||||
return state!=State::CASTING&&state!=State::ANIMATION_LOCK;
|
||||
return state!=State::ANIMATION_LOCK;
|
||||
}
|
||||
|
||||
bool Player::CanAct(){
|
||||
@ -632,6 +632,11 @@ Key Player::GetFacingDirection(){
|
||||
}
|
||||
|
||||
void Player::Moved(){
|
||||
if(state==State::CASTING){
|
||||
state=State::NORMAL;
|
||||
castInfo={"",0};
|
||||
DAMAGENUMBER_LIST.push_back(std::make_shared<DamageNumber>(GetPos(),0,true,INTERRUPT));
|
||||
}
|
||||
for(MonsterSpawner&spawner:SPAWNER_LIST){
|
||||
if(!spawner.SpawnTriggered()&&spawner.DoesUpperLevelSpawning()==OnUpperLevel()&&geom2d::contains(geom2d::rect<float>{spawner.GetPos(),spawner.GetRange()},pos)){
|
||||
spawner.SetTriggered(true);
|
||||
@ -769,11 +774,17 @@ void Player::SetIframes(float duration){
|
||||
|
||||
bool Player::Heal(int damage){
|
||||
hp=std::clamp(hp+damage,0,maxhp);
|
||||
if(damage>0){
|
||||
DAMAGENUMBER_LIST.push_back(std::make_shared<DamageNumber>(GetPos(),damage,true,HEALTH_GAIN));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void Player::RestoreMana(int amt){
|
||||
void Player::RestoreMana(int amt,bool suppressDamageNumber){
|
||||
mana=std::clamp(mana+amt,0,maxmana);
|
||||
if(amt>0&&!suppressDamageNumber){
|
||||
DAMAGENUMBER_LIST.push_back(std::make_shared<DamageNumber>(GetPos(),amt,true,MANA_GAIN));
|
||||
}
|
||||
}
|
||||
|
||||
void Player::ConsumeMana(int amt){
|
||||
|
||||
@ -39,13 +39,13 @@ SUCH DAMAGE.
|
||||
#include "Ability.h"
|
||||
#include "Buff.h"
|
||||
#include "Pathfinding.h"
|
||||
#include "DamageNumber.h"
|
||||
#include "config.h"
|
||||
#include "Key.h"
|
||||
#include "Class.h"
|
||||
#include "Item.h"
|
||||
|
||||
#undef GetClassName
|
||||
struct DamageNumber;
|
||||
|
||||
struct CastInfo{
|
||||
std::string name;
|
||||
@ -170,7 +170,7 @@ public:
|
||||
bool CanAct(Ability&ability);
|
||||
void Knockback(vf2d vel);
|
||||
void SetIframes(float duration);
|
||||
void RestoreMana(int amt);
|
||||
void RestoreMana(int amt,bool suppressDamageNumber=false);
|
||||
void ConsumeMana(int amt);
|
||||
//Returns true if the move was valid and successful.
|
||||
bool SetX(float x);
|
||||
|
||||
@ -35,7 +35,7 @@ SUCH DAMAGE.
|
||||
#define VERSION_MAJOR 0
|
||||
#define VERSION_MINOR 2
|
||||
#define VERSION_PATCH 1
|
||||
#define VERSION_BUILD 3127
|
||||
#define VERSION_BUILD 3137
|
||||
|
||||
#define stringify(a) stringify_(a)
|
||||
#define stringify_(a) #a
|
||||
|
||||
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user