From fd5e6048ac58b40737376eeee79efc9810eaaed6 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Sun, 27 Aug 2023 11:49:04 -0500 Subject: [PATCH] Change range indicator display behaviors. --- olcCodeJam2023Entry/Unit.cpp | 45 ++++++++++++++---- olcCodeJam2023Entry/Unit.h | 6 ++- olcCodeJam2023Entry/VirusAttack.cpp | 5 ++ .../assets/range_indicator.png | Bin 736 -> 9035 bytes 4 files changed, 45 insertions(+), 11 deletions(-) diff --git a/olcCodeJam2023Entry/Unit.cpp b/olcCodeJam2023Entry/Unit.cpp index 2807243..75dbeb2 100644 --- a/olcCodeJam2023Entry/Unit.cpp +++ b/olcCodeJam2023Entry/Unit.cpp @@ -64,7 +64,7 @@ BitRestorer::BitRestorer(vf2d pos,std::map>&IM {ATKSPD,1}, {MOVESPD,1}, {HEALTH,2}, - },pos,12,*IMAGES[BIT_RESTORER],friendly,moveable){} + },pos,12,*IMAGES[BIT_RESTORER],friendly,moveable,true,false){} void BitRestorer::Attack(Unit&victim){ @@ -77,7 +77,7 @@ MemorySwapper::MemorySwapper(vf2d pos,std::map {HEALTH,3}, {PROCEDURE,3}, {MOVESPD,2}, - },pos,12,*IMAGES[MEMORY_SWAPPER],friendly,moveable){} + },pos,12,*IMAGES[MEMORY_SWAPPER],friendly,moveable,true){} void MemorySwapper::Attack(Unit&victim){ @@ -103,7 +103,7 @@ MemoryAllocator::MemoryAllocator(vf2d pos,std::mapSprite()->width,IMAGES[RAM_BANK]->Sprite()->height); pge->SetDrawTarget(img.Sprite()); @@ -150,8 +152,8 @@ void RAMBank::Draw(TileTransformedView&game,std::mapmemory,vf2d pos,float radius,Renderable&img,bool friendly,bool moveable) -:pos(pos),radius(radius),ghostPos(pos),img(img),friendly(friendly),moveable(moveable){ +Unit::Unit(std::vectormemory,vf2d pos,float radius,Renderable&img,bool friendly,bool moveable,bool friendlyInteractable,bool enemyInteractable) +:pos(pos),radius(radius),ghostPos(pos),img(img),friendly(friendly),moveable(moveable),friendlyInteractable(friendlyInteractable),enemyInteractable(enemyInteractable){ int marker=0; for(Memory&mem:memory){ for(int i=0;imemory,vf2d pos,float radius,Renderable&img,bool f } void Unit::DrawRangeIndicator(PixelGameEngine*pge,TileTransformedView&game,std::map>&IMAGES){ + if(!CanInteractWithAllies()&&!CanInteractWithEnemies())return; float dist=geom2d::line(game.ScreenToWorld(pge->GetMousePos()),GetGhostPos()).length(); float range=12*(GetRange()+1); float totalRange=GetUnitSize().x/2+range; if(IsSelected()){ - game.DrawRotatedDecal(GetGhostPos(),IMAGES[RANGE_INDICATOR]->Decal(),0,IMAGES[RANGE_INDICATOR]->Sprite()->Size()/2,{totalRange/12,totalRange/12},{0,196,0,128}); + Pixel col; + if(CanInteractWithAllies()&&!CanInteractWithEnemies()){ + col={40,127,173}; + } else { + col={0,196,0}; + } + game.DrawRotatedDecal(GetGhostPos(),IMAGES[RANGE_INDICATOR]->Decal(),0,IMAGES[RANGE_INDICATOR]->Sprite()->Size()/2,{totalRange/12,totalRange/12},col); }else if(distDecal(),0,IMAGES[RANGE_INDICATOR]->Sprite()->Size()/2,{totalRange/12,totalRange/12},{col.r,col.g,col.b,uint8_t((1.f-(dist/(range*2)))*128)}); + game.DrawRotatedDecal(GetGhostPos(),IMAGES[RANGE_INDICATOR]->Decal(),0,IMAGES[RANGE_INDICATOR]->Sprite()->Size()/2,{totalRange/12,totalRange/12},{col.r,col.g,col.b,uint8_t((1.f-(dist/(range*2)))*255)}); } } @@ -446,4 +463,12 @@ vf2d Unit::GetGhostPos(){ bool Unit::IsMoveable(){ return moveable; +} + +bool Unit::CanInteractWithAllies(){ + return friendlyInteractable; +} + +bool Unit::CanInteractWithEnemies(){ + return enemyInteractable; } \ No newline at end of file diff --git a/olcCodeJam2023Entry/Unit.h b/olcCodeJam2023Entry/Unit.h index 380381f..82a51bc 100644 --- a/olcCodeJam2023Entry/Unit.h +++ b/olcCodeJam2023Entry/Unit.h @@ -25,7 +25,7 @@ struct Memory{ struct Unit{ public: - Unit(std::vectormemory,vf2d pos,float radius,Renderable&img,bool friendly=false,bool moveable=true); + Unit(std::vectormemory,vf2d pos,float radius,Renderable&img,bool friendly=false,bool moveable=true,bool friendlyInteractable=false,bool enemyInteractable=true); int GetHealth(); int GetRange(); int GetAtkSpd(); @@ -56,6 +56,8 @@ public: void _Update(PixelGameEngine*pge); bool IsMoveable(); void DrawRangeIndicator(PixelGameEngine*pge,TileTransformedView&game,std::map>&IMAGES); + bool CanInteractWithEnemies(); + bool CanInteractWithAllies(); std::vector& operator <<=(const int n){ for(int i=0;i(u1->GetGhostPos(),GetWorldMousePos()).length(); + float dist2=geom2d::line(u2->GetGhostPos(),GetWorldMousePos()).length(); + return dist1>dist2;}); + return true; } diff --git a/olcCodeJam2023Entry/assets/range_indicator.png b/olcCodeJam2023Entry/assets/range_indicator.png index a959b652522022f2667ce077bddd8ee8d772ccd3..5800ab446ca04c8d2cd967676ec6160c397f6e95 100644 GIT binary patch literal 9035 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 wu#