Skip to content

Instantly share code, notes, and snippets.

@Lexxicon
Forked from oldmanauz/ExmpleSource.cpp
Created October 24, 2021 20:18
Show Gist options
  • Save Lexxicon/b8b3c2789d1f9af1dcce23289ffb8a04 to your computer and use it in GitHub Desktop.
Save Lexxicon/b8b3c2789d1f9af1dcce23289ffb8a04 to your computer and use it in GitHub Desktop.
Simple Flecs TD
#include <vector>
#include "flecs.h"
const int TD_LOG_INFO = 0;
struct Position
{
float x;
float y;
};
struct Health
{
float current;
};
struct MaxHealth
{
float value;
};
struct Cooldown
{
float remainingTime;
};
struct Attack
{
flecs::entity_view payload;
float cooldown;
};
struct PayloadType{};
struct Damage
{
float amount;
};
struct KnockBack
{
float x;
float y;
};
struct Target
{
flecs::entity_view entity;
};
struct Team{};
int main()
{
flecs::world ecs;
ecs_tracing_color_enable(false);
ecs.system("Tick Printer")
.kind(flecs::PreFrame)
.iter([](flecs::iter& iter)
{
ecs_trace(TD_LOG_INFO, "\n--- Tick[%d] time[%f] ---", iter.world().get_tick(), iter.world_time());
ecs_log_push();
});
ecs.system("Post Tick")
.kind(flecs::PostFrame)
.iter([](flecs::iter& iter)
{
ecs_log_pop();
ecs_trace(TD_LOG_INFO, "--- End Tick ---");
});
ecs.observer<>()
.term(flecs::IsA).object(flecs::Wildcard)
.event(flecs::OnAdd)
.each([](flecs::entity e)
{
ecs_trace(TD_LOG_INFO, "New Instance: %s [%s]", e.str().c_str(), e.type().str());
});
ecs.observer<MaxHealth>("Init Health")
.term<Health>().oper(flecs::Not)
.event(flecs::OnSet)
.each([](flecs::entity e, MaxHealth& maxHealth)
{
ecs_trace(TD_LOG_INFO, "Init health for %s to %f", e.str().c_str(), maxHealth.value);
e.set<Health>({maxHealth.value});
});
ecs.system<Cooldown>("Tick Cooldown")
.arg(1).object(flecs::Wildcard) // <- Cooldown is actually a pair type with anything
.iter([](flecs::iter& iter, Cooldown* cooldowns)
{
auto obj = iter.term_id(1).object();
for(auto i : iter)
{
cooldowns[i].remainingTime -= iter.delta_system_time();
if(cooldowns[i].remainingTime <= 0)
{
ecs_trace(TD_LOG_INFO, "%s<%s> off cooldown", iter.entity(i).str().c_str(), obj.str().c_str());
iter.entity(i).remove<Cooldown>(obj);
}
}
});
ecs.observer<Health>()
.event(flecs::OnSet)
.each([](flecs::entity e, Health& hp)
{
if(hp.current <= 0)
{
ecs_trace(TD_LOG_INFO, "Killing %s", e.str().c_str());
e.destruct();
}
});
ecs.system<Position>()
.each([](flecs::entity e, Position& p)
{
ecs_trace(TD_LOG_INFO, "%s located at [%f, %f]", e.str().c_str(), p.x, p.y);
});
ecs.observer<Health, Damage>("Apply Damage")
.event(flecs::OnSet)
.iter([](flecs::iter it, Health* healths, Damage* damages)
{
if(it.event_id() != it.world().component<Damage>())
{
return;
}
for(auto i : it)
{
auto e = it.entity(i);
auto maxHealth = e.get<MaxHealth>();
healths[i].current -= damages[i].amount;
it.entity(i).modified<Health>();
ecs_trace(TD_LOG_INFO, "Damaged %s for %f %f/%f", e.str().c_str(), damages[i].amount, healths[i].current, maxHealth->value);
}
});
ecs.observer<Position, KnockBack>("Apply Knock Back")
.arg(1).set(flecs::Self | flecs::SuperSet)
.event(flecs::OnSet)
.iter([](flecs::iter it, Position* positions, KnockBack* knockBacks)
{
if(it.event_id() != it.world().component<KnockBack>())
{
return;
}
for(auto i : it)
{
ecs_trace(TD_LOG_INFO, "Knocking %s for [%f,%f]", it.entity(i).str().c_str(), knockBacks[i].x, knockBacks[i].y);
positions[i].x += knockBacks[i].x;
positions[i].y += knockBacks[i].y;
it.entity(i).modified<Position>();
}
});
ecs.system<Attack, Target>("Send Attack")
.term<Cooldown>().object<Attack>().oper(flecs::Not)
.each([](flecs::entity e, Attack& attack, Target& target)
{
if(!target.entity.is_alive())
{
ecs_trace(TD_LOG_INFO, "%s target is dead", e.str().c_str());
e.remove<Target>();
return;
}
ecs_trace(TD_LOG_INFO, "Sending payload from %s to %s", e.str().c_str(), target.entity.str().c_str());
ecs_log_push();
attack.payload.each([&](flecs::id TypeID)
{
if(TypeID.has_relation(TypeID.world().component<PayloadType>()))
{
auto payloadType = TypeID.object();
ecs_trace(TD_LOG_INFO, "%s", payloadType.str().c_str());
target.entity.mut(e).set_ptr(payloadType, attack.payload.get(TypeID.relation(), TypeID.object()));
}
});
ecs_log_pop();
e.set<Cooldown, Attack>({attack.cooldown});
});
auto TeamOne = ecs.entity("PlayerTeam");
auto TeamTwo = ecs.entity("Creeps");
auto FindAllCreeps = ecs.query_builder<>()
.term<Position>().set(flecs::Self | flecs::SuperSet)
.term<Health>()
.term(TeamTwo).set(flecs::Self | flecs::SuperSet)
.build();
ecs.system("Find New Targets")
.term<Attack>()
.term<Target>().oper(flecs::Not)
.term(TeamOne)
.each([FindAllCreeps](flecs::entity e)
{
std::vector<flecs::entity> FoundCreeps;
FindAllCreeps.each([&](flecs::entity Creep)
{
FoundCreeps.emplace_back(Creep);
});
if(FoundCreeps.size() == 0)
{
ecs_trace(TD_LOG_INFO, "%s found no more creeps", e.str().c_str());
e.world().quit();
}else
{
auto Picked = FoundCreeps[rand() % FoundCreeps.size()];
ecs_trace(TD_LOG_INFO, "%s now targeting %s", e.str().c_str(), Picked.str().c_str());
e.set<Target>({Picked});
}
});
auto BaseCreep = ecs.prefab("BaseCreep")
.add(TeamTwo)
.set<Position>({0, 0});
auto WeakCreep = ecs.prefab("WeakCreep")
.is_a(BaseCreep)
.set<MaxHealth>({3});
auto StrongCreep = ecs.prefab("StrongCreep")
.is_a(BaseCreep)
.set<MaxHealth>({20});
auto BaseTurret = ecs.prefab("TurretBase")
.add(TeamOne);
auto FastDamageTurret = ecs.prefab("FastDamageTurret")
.is_a(BaseTurret)
.set<Attack>({
ecs.entity().set<PayloadType, Damage>({1}),
1});
auto MedTeleportTurret = ecs.prefab("MedTeleportTurret")
.is_a(BaseTurret)
.set<Attack>({
ecs.entity().set<PayloadType, KnockBack>({1, 0}),
2});
auto SlowSuperTurret = ecs.prefab("SlowSuperTurret")
.is_a(BaseTurret)
.set<Attack>({
ecs.entity().set<PayloadType, KnockBack>({0, 1})
.set<PayloadType, Damage>({5}),
3});
ecs.entity("Creep").scope([&]{
ecs.entity().is_a(WeakCreep);
ecs.entity().is_a(StrongCreep);
ecs.entity().is_a(StrongCreep);
});
ecs.entity("Turret").scope([&]{
ecs.entity().is_a(FastDamageTurret);
ecs.entity().is_a(FastDamageTurret);
ecs.entity().is_a(MedTeleportTurret);
ecs.entity().is_a(SlowSuperTurret);
});
ecs_trace(TD_LOG_INFO, "Begin");
ecs.set_target_fps(1);
while(!ecs.should_quit())
{
ecs.progress();
}
ecs_trace(TD_LOG_INFO, "Done");
}
info: FlecsScratch.cpp:76: New Instance: Creep.436 [(ChildOf,Creep),(IsA,WeakCreep)]
info: FlecsScratch.cpp:84: Init health for Creep.436 to 3.000000
info: FlecsScratch.cpp:76: New Instance: Creep.437 [(ChildOf,Creep),(IsA,StrongCreep)]
info: FlecsScratch.cpp:84: Init health for Creep.437 to 20.000000
info: FlecsScratch.cpp:76: New Instance: Creep.438 [(ChildOf,Creep),(IsA,StrongCreep)]
info: FlecsScratch.cpp:84: Init health for Creep.438 to 20.000000
info: FlecsScratch.cpp:76: New Instance: Turret.440 [(ChildOf,Turret),(IsA,FastDamageTurret)]
info: FlecsScratch.cpp:76: New Instance: Turret.441 [(ChildOf,Turret),(IsA,FastDamageTurret)]
info: FlecsScratch.cpp:76: New Instance: Turret.442 [(ChildOf,Turret),(IsA,MedTeleportTurret)]
info: FlecsScratch.cpp:76: New Instance: Turret.443 [(ChildOf,Turret),(IsA,SlowSuperTurret)]
info: FlecsScratch.cpp:260: Begin
info: FlecsScratch.cpp:61:
--- Tick[0] time[1.000000] ---
info: | FlecsScratch.cpp:117: Creep.436 located at [0.000000, 0.000000]
info: | FlecsScratch.cpp:117: Creep.437 located at [0.000000, 0.000000]
info: | FlecsScratch.cpp:117: Creep.438 located at [0.000000, 0.000000]
info: | FlecsScratch.cpp:211: Turret.440 now targeting Creep.438
info: | FlecsScratch.cpp:211: Turret.441 now targeting Creep.438
info: | FlecsScratch.cpp:211: Turret.442 now targeting Creep.437
info: | FlecsScratch.cpp:211: Turret.443 now targeting Creep.437
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:61:
--- Tick[1] time[2.037979] ---
info: | FlecsScratch.cpp:117: Creep.436 located at [0.000000, 0.000000]
info: | FlecsScratch.cpp:117: Creep.437 located at [0.000000, 0.000000]
info: | FlecsScratch.cpp:117: Creep.438 located at [0.000000, 0.000000]
info: | FlecsScratch.cpp:168: Sending payload from Turret.440 to Creep.438
info: | | FlecsScratch.cpp:175: Damage
info: | FlecsScratch.cpp:168: Sending payload from Turret.441 to Creep.438
info: | | FlecsScratch.cpp:175: Damage
info: | FlecsScratch.cpp:168: Sending payload from Turret.442 to Creep.437
info: | | FlecsScratch.cpp:175: KnockBack
info: | FlecsScratch.cpp:168: Sending payload from Turret.443 to Creep.437
info: | | FlecsScratch.cpp:175: Damage
info: | | FlecsScratch.cpp:175: KnockBack
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:135: Damaged Creep.438 for 1.000000 19.000000/20.000000
info: FlecsScratch.cpp:135: Damaged Creep.438 for 1.000000 18.000000/20.000000
info: FlecsScratch.cpp:150: Knocking Creep.437 for [1.000000,0.000000]
info: FlecsScratch.cpp:135: Damaged Creep.437 for 5.000000 15.000000/20.000000
info: FlecsScratch.cpp:150: Knocking Creep.437 for [0.000000,1.000000]
info: FlecsScratch.cpp:61:
--- Tick[2] time[3.066594] ---
info: | FlecsScratch.cpp:98: Turret.440<Attack> off cooldown
info: | FlecsScratch.cpp:98: Turret.441<Attack> off cooldown
info: | FlecsScratch.cpp:117: Creep.436 located at [1.000000, 1.000000]
info: | FlecsScratch.cpp:117: Creep.437 located at [1.000000, 1.000000]
info: | FlecsScratch.cpp:117: Creep.438 located at [1.000000, 1.000000]
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:61:
--- Tick[3] time[4.124190] ---
info: | FlecsScratch.cpp:98: Turret.442<Attack> off cooldown
info: | FlecsScratch.cpp:117: Creep.436 located at [1.000000, 1.000000]
info: | FlecsScratch.cpp:117: Creep.437 located at [1.000000, 1.000000]
info: | FlecsScratch.cpp:117: Creep.438 located at [1.000000, 1.000000]
info: | FlecsScratch.cpp:168: Sending payload from Turret.440 to Creep.438
info: | | FlecsScratch.cpp:175: Damage
info: | FlecsScratch.cpp:168: Sending payload from Turret.441 to Creep.438
info: | | FlecsScratch.cpp:175: Damage
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:135: Damaged Creep.438 for 1.000000 17.000000/20.000000
info: FlecsScratch.cpp:135: Damaged Creep.438 for 1.000000 16.000000/20.000000
info: FlecsScratch.cpp:61:
--- Tick[4] time[5.166672] ---
info: | FlecsScratch.cpp:98: Turret.443<Attack> off cooldown
info: | FlecsScratch.cpp:98: Turret.440<Attack> off cooldown
info: | FlecsScratch.cpp:98: Turret.441<Attack> off cooldown
info: | FlecsScratch.cpp:117: Creep.436 located at [1.000000, 1.000000]
info: | FlecsScratch.cpp:117: Creep.437 located at [1.000000, 1.000000]
info: | FlecsScratch.cpp:117: Creep.438 located at [1.000000, 1.000000]
info: | FlecsScratch.cpp:168: Sending payload from Turret.442 to Creep.437
info: | | FlecsScratch.cpp:175: KnockBack
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:150: Knocking Creep.437 for [1.000000,0.000000]
info: FlecsScratch.cpp:61:
--- Tick[5] time[6.178201] ---
info: | FlecsScratch.cpp:117: Creep.436 located at [2.000000, 1.000000]
info: | FlecsScratch.cpp:117: Creep.437 located at [2.000000, 1.000000]
info: | FlecsScratch.cpp:117: Creep.438 located at [2.000000, 1.000000]
info: | FlecsScratch.cpp:168: Sending payload from Turret.440 to Creep.438
info: | | FlecsScratch.cpp:175: Damage
info: | FlecsScratch.cpp:168: Sending payload from Turret.441 to Creep.438
info: | | FlecsScratch.cpp:175: Damage
info: | FlecsScratch.cpp:168: Sending payload from Turret.443 to Creep.437
info: | | FlecsScratch.cpp:175: Damage
info: | | FlecsScratch.cpp:175: KnockBack
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:135: Damaged Creep.438 for 1.000000 15.000000/20.000000
info: FlecsScratch.cpp:135: Damaged Creep.438 for 1.000000 14.000000/20.000000
info: FlecsScratch.cpp:135: Damaged Creep.437 for 5.000000 10.000000/20.000000
info: FlecsScratch.cpp:150: Knocking Creep.437 for [0.000000,1.000000]
info: FlecsScratch.cpp:61:
--- Tick[6] time[7.230884] ---
info: | FlecsScratch.cpp:98: Turret.442<Attack> off cooldown
info: | FlecsScratch.cpp:98: Turret.440<Attack> off cooldown
info: | FlecsScratch.cpp:98: Turret.441<Attack> off cooldown
info: | FlecsScratch.cpp:117: Creep.436 located at [2.000000, 2.000000]
info: | FlecsScratch.cpp:117: Creep.437 located at [2.000000, 2.000000]
info: | FlecsScratch.cpp:117: Creep.438 located at [2.000000, 2.000000]
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:61:
--- Tick[7] time[8.258401] ---
info: | FlecsScratch.cpp:117: Creep.436 located at [2.000000, 2.000000]
info: | FlecsScratch.cpp:117: Creep.437 located at [2.000000, 2.000000]
info: | FlecsScratch.cpp:117: Creep.438 located at [2.000000, 2.000000]
info: | FlecsScratch.cpp:168: Sending payload from Turret.442 to Creep.437
info: | | FlecsScratch.cpp:175: KnockBack
info: | FlecsScratch.cpp:168: Sending payload from Turret.440 to Creep.438
info: | | FlecsScratch.cpp:175: Damage
info: | FlecsScratch.cpp:168: Sending payload from Turret.441 to Creep.438
info: | | FlecsScratch.cpp:175: Damage
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:150: Knocking Creep.437 for [1.000000,0.000000]
info: FlecsScratch.cpp:135: Damaged Creep.438 for 1.000000 13.000000/20.000000
info: FlecsScratch.cpp:135: Damaged Creep.438 for 1.000000 12.000000/20.000000
info: FlecsScratch.cpp:61:
--- Tick[8] time[9.300746] ---
info: | FlecsScratch.cpp:98: Turret.443<Attack> off cooldown
info: | FlecsScratch.cpp:98: Turret.440<Attack> off cooldown
info: | FlecsScratch.cpp:98: Turret.441<Attack> off cooldown
info: | FlecsScratch.cpp:117: Creep.436 located at [3.000000, 2.000000]
info: | FlecsScratch.cpp:117: Creep.437 located at [3.000000, 2.000000]
info: | FlecsScratch.cpp:117: Creep.438 located at [3.000000, 2.000000]
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:61:
--- Tick[9] time[10.343427] ---
info: | FlecsScratch.cpp:98: Turret.442<Attack> off cooldown
info: | FlecsScratch.cpp:117: Creep.436 located at [3.000000, 2.000000]
info: | FlecsScratch.cpp:117: Creep.437 located at [3.000000, 2.000000]
info: | FlecsScratch.cpp:117: Creep.438 located at [3.000000, 2.000000]
info: | FlecsScratch.cpp:168: Sending payload from Turret.443 to Creep.437
info: | | FlecsScratch.cpp:175: Damage
info: | | FlecsScratch.cpp:175: KnockBack
info: | FlecsScratch.cpp:168: Sending payload from Turret.440 to Creep.438
info: | | FlecsScratch.cpp:175: Damage
info: | FlecsScratch.cpp:168: Sending payload from Turret.441 to Creep.438
info: | | FlecsScratch.cpp:175: Damage
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:135: Damaged Creep.437 for 5.000000 5.000000/20.000000
info: FlecsScratch.cpp:150: Knocking Creep.437 for [0.000000,1.000000]
info: FlecsScratch.cpp:135: Damaged Creep.438 for 1.000000 11.000000/20.000000
info: FlecsScratch.cpp:135: Damaged Creep.438 for 1.000000 10.000000/20.000000
info: FlecsScratch.cpp:61:
--- Tick[10] time[11.354971] ---
info: | FlecsScratch.cpp:98: Turret.440<Attack> off cooldown
info: | FlecsScratch.cpp:98: Turret.441<Attack> off cooldown
info: | FlecsScratch.cpp:117: Creep.436 located at [3.000000, 3.000000]
info: | FlecsScratch.cpp:117: Creep.437 located at [3.000000, 3.000000]
info: | FlecsScratch.cpp:117: Creep.438 located at [3.000000, 3.000000]
info: | FlecsScratch.cpp:168: Sending payload from Turret.442 to Creep.437
info: | | FlecsScratch.cpp:175: KnockBack
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:150: Knocking Creep.437 for [1.000000,0.000000]
info: FlecsScratch.cpp:61:
--- Tick[11] time[12.397756] ---
info: | FlecsScratch.cpp:117: Creep.436 located at [4.000000, 3.000000]
info: | FlecsScratch.cpp:117: Creep.437 located at [4.000000, 3.000000]
info: | FlecsScratch.cpp:117: Creep.438 located at [4.000000, 3.000000]
info: | FlecsScratch.cpp:168: Sending payload from Turret.440 to Creep.438
info: | | FlecsScratch.cpp:175: Damage
info: | FlecsScratch.cpp:168: Sending payload from Turret.441 to Creep.438
info: | | FlecsScratch.cpp:175: Damage
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:135: Damaged Creep.438 for 1.000000 9.000000/20.000000
info: FlecsScratch.cpp:135: Damaged Creep.438 for 1.000000 8.000000/20.000000
info: FlecsScratch.cpp:61:
--- Tick[12] time[13.428698] ---
info: | FlecsScratch.cpp:98: Turret.443<Attack> off cooldown
info: | FlecsScratch.cpp:98: Turret.442<Attack> off cooldown
info: | FlecsScratch.cpp:98: Turret.440<Attack> off cooldown
info: | FlecsScratch.cpp:98: Turret.441<Attack> off cooldown
info: | FlecsScratch.cpp:117: Creep.436 located at [4.000000, 3.000000]
info: | FlecsScratch.cpp:117: Creep.437 located at [4.000000, 3.000000]
info: | FlecsScratch.cpp:117: Creep.438 located at [4.000000, 3.000000]
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:61:
--- Tick[13] time[14.468005] ---
info: | FlecsScratch.cpp:117: Creep.436 located at [4.000000, 3.000000]
info: | FlecsScratch.cpp:117: Creep.437 located at [4.000000, 3.000000]
info: | FlecsScratch.cpp:117: Creep.438 located at [4.000000, 3.000000]
info: | FlecsScratch.cpp:168: Sending payload from Turret.443 to Creep.437
info: | | FlecsScratch.cpp:175: Damage
info: | | FlecsScratch.cpp:175: KnockBack
info: | FlecsScratch.cpp:168: Sending payload from Turret.442 to Creep.437
info: | | FlecsScratch.cpp:175: KnockBack
info: | FlecsScratch.cpp:168: Sending payload from Turret.440 to Creep.438
info: | | FlecsScratch.cpp:175: Damage
info: | FlecsScratch.cpp:168: Sending payload from Turret.441 to Creep.438
info: | | FlecsScratch.cpp:175: Damage
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:135: Damaged Creep.437 for 5.000000 0.000000/20.000000
info: FlecsScratch.cpp:110: Killing Creep.437
info: FlecsScratch.cpp:135: Damaged Creep.438 for 1.000000 7.000000/20.000000
info: FlecsScratch.cpp:135: Damaged Creep.438 for 1.000000 6.000000/20.000000
info: FlecsScratch.cpp:61:
--- Tick[14] time[15.497147] ---
info: | FlecsScratch.cpp:98: Turret.440<Attack> off cooldown
info: | FlecsScratch.cpp:98: Turret.441<Attack> off cooldown
info: | FlecsScratch.cpp:117: Creep.436 located at [4.000000, 3.000000]
info: | FlecsScratch.cpp:117: Creep.438 located at [4.000000, 3.000000]
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:61:
--- Tick[15] time[16.554512] ---
info: | FlecsScratch.cpp:98: Turret.442<Attack> off cooldown
info: | FlecsScratch.cpp:117: Creep.436 located at [4.000000, 3.000000]
info: | FlecsScratch.cpp:117: Creep.438 located at [4.000000, 3.000000]
info: | FlecsScratch.cpp:168: Sending payload from Turret.440 to Creep.438
info: | | FlecsScratch.cpp:175: Damage
info: | FlecsScratch.cpp:168: Sending payload from Turret.441 to Creep.438
info: | | FlecsScratch.cpp:175: Damage
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:135: Damaged Creep.438 for 1.000000 5.000000/20.000000
info: FlecsScratch.cpp:135: Damaged Creep.438 for 1.000000 4.000000/20.000000
info: FlecsScratch.cpp:61:
--- Tick[16] time[17.575466] ---
info: | FlecsScratch.cpp:98: Turret.443<Attack> off cooldown
info: | FlecsScratch.cpp:98: Turret.440<Attack> off cooldown
info: | FlecsScratch.cpp:98: Turret.441<Attack> off cooldown
info: | FlecsScratch.cpp:117: Creep.436 located at [4.000000, 3.000000]
info: | FlecsScratch.cpp:117: Creep.438 located at [4.000000, 3.000000]
info: | FlecsScratch.cpp:163: Turret.442 target is dead
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:61:
--- Tick[17] time[18.616386] ---
info: | FlecsScratch.cpp:117: Creep.436 located at [4.000000, 3.000000]
info: | FlecsScratch.cpp:117: Creep.438 located at [4.000000, 3.000000]
info: | FlecsScratch.cpp:168: Sending payload from Turret.440 to Creep.438
info: | | FlecsScratch.cpp:175: Damage
info: | FlecsScratch.cpp:168: Sending payload from Turret.441 to Creep.438
info: | | FlecsScratch.cpp:175: Damage
info: | FlecsScratch.cpp:163: Turret.443 target is dead
info: | FlecsScratch.cpp:211: Turret.442 now targeting Creep.438
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:135: Damaged Creep.438 for 1.000000 3.000000/20.000000
info: FlecsScratch.cpp:135: Damaged Creep.438 for 1.000000 2.000000/20.000000
info: FlecsScratch.cpp:61:
--- Tick[18] time[19.659281] ---
info: | FlecsScratch.cpp:98: Turret.440<Attack> off cooldown
info: | FlecsScratch.cpp:98: Turret.441<Attack> off cooldown
info: | FlecsScratch.cpp:117: Creep.436 located at [4.000000, 3.000000]
info: | FlecsScratch.cpp:117: Creep.438 located at [4.000000, 3.000000]
info: | FlecsScratch.cpp:168: Sending payload from Turret.442 to Creep.438
info: | | FlecsScratch.cpp:175: KnockBack
info: | FlecsScratch.cpp:211: Turret.443 now targeting Creep.436
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:150: Knocking Creep.438 for [1.000000,0.000000]
info: FlecsScratch.cpp:61:
--- Tick[19] time[20.699814] ---
info: | FlecsScratch.cpp:117: Creep.436 located at [5.000000, 3.000000]
info: | FlecsScratch.cpp:117: Creep.438 located at [5.000000, 3.000000]
info: | FlecsScratch.cpp:168: Sending payload from Turret.440 to Creep.438
info: | | FlecsScratch.cpp:175: Damage
info: | FlecsScratch.cpp:168: Sending payload from Turret.441 to Creep.438
info: | | FlecsScratch.cpp:175: Damage
info: | FlecsScratch.cpp:168: Sending payload from Turret.443 to Creep.436
info: | | FlecsScratch.cpp:175: Damage
info: | | FlecsScratch.cpp:175: KnockBack
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:135: Damaged Creep.438 for 1.000000 1.000000/20.000000
info: FlecsScratch.cpp:135: Damaged Creep.438 for 1.000000 0.000000/20.000000
info: FlecsScratch.cpp:110: Killing Creep.438
info: FlecsScratch.cpp:135: Damaged Creep.436 for 5.000000 -2.000000/3.000000
info: FlecsScratch.cpp:110: Killing Creep.436
info: FlecsScratch.cpp:61:
--- Tick[20] time[21.742548] ---
info: | FlecsScratch.cpp:98: Turret.442<Attack> off cooldown
info: | FlecsScratch.cpp:98: Turret.440<Attack> off cooldown
info: | FlecsScratch.cpp:98: Turret.441<Attack> off cooldown
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:61:
--- Tick[21] time[22.786036] ---
info: | FlecsScratch.cpp:163: Turret.442 target is dead
info: | FlecsScratch.cpp:163: Turret.440 target is dead
info: | FlecsScratch.cpp:163: Turret.441 target is dead
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:61:
--- Tick[22] time[23.826353] ---
info: | FlecsScratch.cpp:98: Turret.443<Attack> off cooldown
info: | FlecsScratch.cpp:205: Turret.442 found no more creeps
info: | FlecsScratch.cpp:205: Turret.440 found no more creeps
info: | FlecsScratch.cpp:205: Turret.441 found no more creeps
info: FlecsScratch.cpp:69: --- End Tick ---
info: FlecsScratch.cpp:266: Done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment