feat: basic arrow shoot event

This commit is contained in:
2021-09-29 14:48:25 +02:00
parent 9cf3916951
commit ef76437670
8 changed files with 25 additions and 14 deletions

View File

@@ -173,7 +173,7 @@ void ArcherTower::tick(std::uint64_t delta, World* world) {
std::uint8_t arrows = explosiveArrows ? 2 : getLevel().getLevel();
for (MobPtr mob : world->getMobList()) {
if (isMobInRange(mob)) {
shootArrow(mob);
world->OnArrowShot(mob, this);
arrowsShot++;
if(arrowsShot >= arrows)
break;
@@ -182,15 +182,6 @@ void ArcherTower::tick(std::uint64_t delta, World* world) {
}
}
void ArcherTower::shootArrow(MobPtr target){
bool explosiveArrows = getLevel().getPath() == TowerPath::Bottom;
if(explosiveArrows){
}else{
target->damage(getStats()->getDamage());
}
}
void IceTower::tick(std::uint64_t delta, World* world) {
}

View File

@@ -457,6 +457,15 @@ void World::cleanDeadMobs(){
}
}
void World::OnArrowShot(MobPtr target, Tower* shooter){
bool explosiveArrows = shooter->getLevel().getPath() == TowerPath::Bottom;
if(explosiveArrows){
// aoe damage
}else{
target->damage(shooter->getStats()->getDamage());
}
}
Team& World::getRedTeam() {
return m_Game->getRedTeam();
}

View File

@@ -3,8 +3,6 @@
#include "game/client/ClientGame.h"
#include "render/WorldRenderer.h"
#include <iostream>
namespace td {
namespace client {
@@ -27,5 +25,9 @@ void WorldClient::HandlePacket(protocol::SpawnMobPacket* packet) {
packet->getMobX(), packet->getMobY(), packet->getMobDirection());
}
void WorldClient::OnArrowShot(game::MobPtr target, game::Tower* tower){
World::OnArrowShot(target, tower);
}
} // namespace client
} // namespace td

View File

@@ -52,5 +52,9 @@ game::TowerPtr ServerWorld::placeTowerAt(game::TowerType type, std::int32_t x, s
return tower;
}
void ServerWorld::OnArrowShot(game::MobPtr target, game::Tower* shooter){
World::OnArrowShot(target, shooter);
}
} // namespace server
} // namespace td