From 15a08e8b9f55184291bd9b9ce513ce2d577f8b02 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Sun, 27 Aug 2023 03:04:12 -0500 Subject: [PATCH] Added Attack Range indicators --- olcCodeJam2023Entry/Image.h | 1 + olcCodeJam2023Entry/Unit.cpp | 11 ++++++++++- olcCodeJam2023Entry/Unit.h | 1 + olcCodeJam2023Entry/VirusAttack.cpp | 5 +++++ olcCodeJam2023Entry/assets/range_indicator.png | Bin 0 -> 736 bytes 5 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 olcCodeJam2023Entry/assets/range_indicator.png diff --git a/olcCodeJam2023Entry/Image.h b/olcCodeJam2023Entry/Image.h index c36ec41..5fbecc7 100644 --- a/olcCodeJam2023Entry/Image.h +++ b/olcCodeJam2023Entry/Image.h @@ -17,5 +17,6 @@ enum Image{ CORRUPTER, UNIT_ALLOCATOR, RAM_BANK, + RANGE_INDICATOR }; diff --git a/olcCodeJam2023Entry/Unit.cpp b/olcCodeJam2023Entry/Unit.cpp index 9aeae8c..8f0e411 100644 --- a/olcCodeJam2023Entry/Unit.cpp +++ b/olcCodeJam2023Entry/Unit.cpp @@ -184,7 +184,16 @@ Unit::Unit(std::vectormemory,vf2d pos,Renderable&img,bool friendly,bool } } - +void Unit::DrawRangeIndicator(PixelGameEngine*pge,TileTransformedView&game,std::map>&IMAGES){ + float dist=geom2d::line(game.ScreenToWorld(pge->GetMousePos()),GetPos()).length(); + float range=12*(GetRange()+1); + if(IsSelected()){ + game.DrawRotatedDecal(GetPos(),IMAGES[RANGE_INDICATOR]->Decal(),0,IMAGES[RANGE_INDICATOR]->Sprite()->Size()/2,{range/12,range/12},{0,196,0,128}); + }else + if(distDecal(),0,IMAGES[RANGE_INDICATOR]->Sprite()->Size()/2,{range/12,range/12},{0,196,0,uint8_t((1.f-(dist/(range*2)))*128)}); + } +} void Unit::Draw(TileTransformedView&game,std::map>&IMAGES){ game.DrawRotatedDecal(ghostPos,img.Decal(),0,img.Sprite()->Size()/2,{1,1},friendly?Pixel{192,192,255}:Pixel{255,192,192}); diff --git a/olcCodeJam2023Entry/Unit.h b/olcCodeJam2023Entry/Unit.h index 4376203..0b5d11c 100644 --- a/olcCodeJam2023Entry/Unit.h +++ b/olcCodeJam2023Entry/Unit.h @@ -55,6 +55,7 @@ public: vf2d GetGhostPos(); void _Update(PixelGameEngine*pge); bool IsMoveable(); + void DrawRangeIndicator(PixelGameEngine*pge,TileTransformedView&game,std::map>&IMAGES); std::vector& operator <<=(const int n){ for(int i=0;iDecal(),{0,0},CONSTANT::WORLD_SIZE*CONSTANT::TILE_SIZE,DARK_GREEN); + for(auto&u:units){ + u->DrawRangeIndicator(this,game,IMAGES); + } + for(auto&u:units){ u->Draw(game,IMAGES); } diff --git a/olcCodeJam2023Entry/assets/range_indicator.png b/olcCodeJam2023Entry/assets/range_indicator.png new file mode 100644 index 0000000000000000000000000000000000000000..a959b652522022f2667ce077bddd8ee8d772ccd3 GIT binary patch literal 736 zcmV<60w4W}P)EX>4Tx04R}tkv&MmKpe$iQ>8^J4t5ahkfFM07Zq`oDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RR0!X5l%$?&0I>U5saWpZjz4D+QAQK9P8i>4rtTK|Hf* z>74h8!>lYR#OK5l23?T&k?XR{Z=6dG3p_JyWYhD+VPdh=#c~(3vY`@B6Gs(QqkJLf zvch?bvs$gQ_C5IvLj`Rm!*!Y?NMH#`q#!~@9TikzAx5i4iitGs$36VRjz2{%nOqex zax9<*6_Voz|AXJ%n#HL}Hz^bcdS7h&V-yJN0jdyW16NwdUuy!hpQJZB zTJ#7Q*aj}HJDR))T zjFl*R-Q(TC?%w`A)9&vF(>Zd@N@U)m00006VoOIv00000008+zyMF)x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=Lj1IFDA94vCsej02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{006j2L_t(Y$Guib4#Xe~!-yy4|1Zd&m{TPNnQWrXjg;6S zYtaHS=bTIr0G{m#f{J(NLxc zMzR?y`R+P09M5EZ`Y9w9Ko2H%^)>|jY%0000