The open source repository for the action RPG game in development by Sig Productions titled 'Adventures in Lestoria'!
https://forums.lestoria.net
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
6.8 KiB
137 lines
6.8 KiB
1 year ago
|
#include "drawutil.h"
|
||
|
#include "Crawler.h"
|
||
|
#include "DEFINES.h"
|
||
|
|
||
|
INCLUDE_game
|
||
|
|
||
|
void drawutil::DrawCrosshair(Crawler*game,geom2d::rect<float>rect,float accTime,float pulsatingAmt,float borderThickness){
|
||
|
vf2d crosshairExtension={std::min(0.25f*rect.size.x-borderThickness/2,12.f),std::min(0.25f*rect.size.y-borderThickness/2,12.f)};
|
||
|
vf2d pulseAmt=vf2d{1,1}*std::abs(std::sin(accTime*3))*2;
|
||
|
//Lower-Left Corner
|
||
|
vf2d pos=rect.pos+vf2d{0,rect.size.y-borderThickness}+vf2d{-pulseAmt.x,pulseAmt.y};
|
||
|
vf2d size={borderThickness+crosshairExtension.x,borderThickness};
|
||
|
game->FillRect(pos,size,RED);
|
||
|
pos=vf2d{pos.x,pos.y-crosshairExtension.y};
|
||
|
size={borderThickness,crosshairExtension.y};
|
||
|
game->FillRect(pos,size,RED);
|
||
|
//Lower-Right Corner
|
||
|
pos=rect.pos+vf2d{rect.size.x-borderThickness-crosshairExtension.x,rect.size.y-borderThickness}+vf2d{pulseAmt.x,pulseAmt.y};
|
||
|
size={borderThickness+crosshairExtension.x,borderThickness};
|
||
|
game->FillRect(pos,size,RED);
|
||
|
pos=vf2d{pos.x+crosshairExtension.x,pos.y-crosshairExtension.y};
|
||
|
size={borderThickness,crosshairExtension.y};
|
||
|
game->FillRect(pos,size,RED);
|
||
|
//Upper-Left Corner
|
||
|
pos=rect.pos+vf2d{0,0}+vf2d{-pulseAmt.x,-pulseAmt.y};
|
||
|
size={borderThickness+crosshairExtension.x,borderThickness};
|
||
|
game->FillRect(pos,size,RED);
|
||
|
pos=vf2d{pos.x,pos.y+borderThickness};
|
||
|
size={borderThickness,crosshairExtension.y};
|
||
|
game->FillRect(pos,size,RED);
|
||
|
//Upper-Right Corner
|
||
|
pos=rect.pos+vf2d{rect.size.x-borderThickness-crosshairExtension.x,0}+vf2d{pulseAmt.x,-pulseAmt.y};
|
||
|
size={borderThickness+crosshairExtension.x,borderThickness};
|
||
|
game->FillRect(pos,size,RED);
|
||
|
pos=vf2d{pos.x+crosshairExtension.x,pos.y+borderThickness};
|
||
|
size={borderThickness,crosshairExtension.y};
|
||
|
game->FillRect(pos,size,RED);
|
||
|
};
|
||
|
|
||
|
void drawutil::DrawCrosshairTransformedView(olc::TransformedView&view,geom2d::rect<float>rect,float accTime,float pulsatingAmt,float borderThickness){
|
||
|
vf2d crosshairExtension={std::min(0.25f*rect.size.x-borderThickness/2,12.f),std::min(0.25f*rect.size.y-borderThickness/2,12.f)};
|
||
|
vf2d pulseAmt=vf2d{1,1}*std::abs(std::sin(accTime*3))*2;
|
||
|
//Lower-Left Corner
|
||
|
vf2d pos=rect.pos+vf2d{0,rect.size.y-borderThickness}+vf2d{-pulseAmt.x,pulseAmt.y};
|
||
|
vf2d size={borderThickness+crosshairExtension.x,borderThickness};
|
||
|
game->view.FillRect(pos,size,RED);
|
||
|
pos=vf2d{pos.x,pos.y-crosshairExtension.y};
|
||
|
size={borderThickness,crosshairExtension.y};
|
||
|
game->view.FillRect(pos,size,RED);
|
||
|
//Lower-Right Corner
|
||
|
pos=rect.pos+vf2d{rect.size.x-borderThickness-crosshairExtension.x,rect.size.y-borderThickness}+vf2d{pulseAmt.x,pulseAmt.y};
|
||
|
size={borderThickness+crosshairExtension.x,borderThickness};
|
||
|
game->view.FillRect(pos,size,RED);
|
||
|
pos=vf2d{pos.x+crosshairExtension.x,pos.y-crosshairExtension.y};
|
||
|
size={borderThickness,crosshairExtension.y};
|
||
|
game->view.FillRect(pos,size,RED);
|
||
|
//Upper-Left Corner
|
||
|
pos=rect.pos+vf2d{0,0}+vf2d{-pulseAmt.x,-pulseAmt.y};
|
||
|
size={borderThickness+crosshairExtension.x,borderThickness};
|
||
|
game->view.FillRect(pos,size,RED);
|
||
|
pos=vf2d{pos.x,pos.y+borderThickness};
|
||
|
size={borderThickness,crosshairExtension.y};
|
||
|
game->view.FillRect(pos,size,RED);
|
||
|
//Upper-Right Corner
|
||
|
pos=rect.pos+vf2d{rect.size.x-borderThickness-crosshairExtension.x,0}+vf2d{pulseAmt.x,-pulseAmt.y};
|
||
|
size={borderThickness+crosshairExtension.x,borderThickness};
|
||
|
game->view.FillRect(pos,size,RED);
|
||
|
pos=vf2d{pos.x+crosshairExtension.x,pos.y+borderThickness};
|
||
|
size={borderThickness,crosshairExtension.y};
|
||
|
game->view.FillRect(pos,size,RED);
|
||
|
}
|
||
|
|
||
|
void drawutil::DrawCrosshairDecal(Crawler*game,geom2d::rect<float>rect,float accTime,float pulsatingAmt,float borderThickness){
|
||
|
vf2d crosshairExtension={std::min(0.25f*rect.size.x-borderThickness/2,12.f),std::min(0.25f*rect.size.y-borderThickness/2,12.f)};
|
||
|
vf2d pulseAmt=vf2d{1,1}*std::abs(std::sin(accTime*3))*2;
|
||
|
//Lower-Left Corner
|
||
|
vf2d pos=rect.pos+vf2d{0,rect.size.y-borderThickness}+vf2d{-pulseAmt.x,pulseAmt.y};
|
||
|
vf2d size={borderThickness+crosshairExtension.x,borderThickness};
|
||
|
game->FillRectDecal(pos,size,RED);
|
||
|
pos=vf2d{pos.x,pos.y-crosshairExtension.y};
|
||
|
size={borderThickness,crosshairExtension.y};
|
||
|
game->FillRectDecal(pos,size,RED);
|
||
|
//Lower-Right Corner
|
||
|
pos=rect.pos+vf2d{rect.size.x-borderThickness-crosshairExtension.x,rect.size.y-borderThickness}+vf2d{pulseAmt.x,pulseAmt.y};
|
||
|
size={borderThickness+crosshairExtension.x,borderThickness};
|
||
|
game->FillRectDecal(pos,size,RED);
|
||
|
pos=vf2d{pos.x+crosshairExtension.x,pos.y-crosshairExtension.y};
|
||
|
size={borderThickness,crosshairExtension.y};
|
||
|
game->FillRectDecal(pos,size,RED);
|
||
|
//Upper-Left Corner
|
||
|
pos=rect.pos+vf2d{0,0}+vf2d{-pulseAmt.x,-pulseAmt.y};
|
||
|
size={borderThickness+crosshairExtension.x,borderThickness};
|
||
|
game->FillRectDecal(pos,size,RED);
|
||
|
pos=vf2d{pos.x,pos.y+borderThickness};
|
||
|
size={borderThickness,crosshairExtension.y};
|
||
|
game->FillRectDecal(pos,size,RED);
|
||
|
//Upper-Right Corner
|
||
|
pos=rect.pos+vf2d{rect.size.x-borderThickness-crosshairExtension.x,0}+vf2d{pulseAmt.x,-pulseAmt.y};
|
||
|
size={borderThickness+crosshairExtension.x,borderThickness};
|
||
|
game->FillRectDecal(pos,size,RED);
|
||
|
pos=vf2d{pos.x+crosshairExtension.x,pos.y+borderThickness};
|
||
|
size={borderThickness,crosshairExtension.y};
|
||
|
game->FillRectDecal(pos,size,RED);
|
||
|
};
|
||
|
|
||
|
void drawutil::DrawCrosshairDecalTransformedView(olc::TransformedView&view,geom2d::rect<float>rect,float accTime,float pulsatingAmt,float borderThickness){
|
||
|
vf2d crosshairExtension={std::min(0.25f*rect.size.x-borderThickness/2,12.f),std::min(0.25f*rect.size.y-borderThickness/2,12.f)};
|
||
|
vf2d pulseAmt=vf2d{1,1}*std::abs(std::sin(accTime*3))*2;
|
||
|
//Lower-Left Corner
|
||
|
vf2d pos=rect.pos+vf2d{0,rect.size.y-borderThickness}+vf2d{-pulseAmt.x,pulseAmt.y};
|
||
|
vf2d size={borderThickness+crosshairExtension.x,borderThickness};
|
||
|
game->view.FillRectDecal(pos,size,RED);
|
||
|
pos=vf2d{pos.x,pos.y-crosshairExtension.y};
|
||
|
size={borderThickness,crosshairExtension.y};
|
||
|
game->view.FillRectDecal(pos,size,RED);
|
||
|
//Lower-Right Corner
|
||
|
pos=rect.pos+vf2d{rect.size.x-borderThickness-crosshairExtension.x,rect.size.y-borderThickness}+vf2d{pulseAmt.x,pulseAmt.y};
|
||
|
size={borderThickness+crosshairExtension.x,borderThickness};
|
||
|
game->view.FillRectDecal(pos,size,RED);
|
||
|
pos=vf2d{pos.x+crosshairExtension.x,pos.y-crosshairExtension.y};
|
||
|
size={borderThickness,crosshairExtension.y};
|
||
|
game->view.FillRectDecal(pos,size,RED);
|
||
|
//Upper-Left Corner
|
||
|
pos=rect.pos+vf2d{0,0}+vf2d{-pulseAmt.x,-pulseAmt.y};
|
||
|
size={borderThickness+crosshairExtension.x,borderThickness};
|
||
|
game->view.FillRectDecal(pos,size,RED);
|
||
|
pos=vf2d{pos.x,pos.y+borderThickness};
|
||
|
size={borderThickness,crosshairExtension.y};
|
||
|
game->view.FillRectDecal(pos,size,RED);
|
||
|
//Upper-Right Corner
|
||
|
pos=rect.pos+vf2d{rect.size.x-borderThickness-crosshairExtension.x,0}+vf2d{pulseAmt.x,-pulseAmt.y};
|
||
|
size={borderThickness+crosshairExtension.x,borderThickness};
|
||
|
game->view.FillRectDecal(pos,size,RED);
|
||
|
pos=vf2d{pos.x+crosshairExtension.x,pos.y+borderThickness};
|
||
|
size={borderThickness,crosshairExtension.y};
|
||
|
game->view.FillRectDecal(pos,size,RED);
|
||
|
}
|