1#include "ObjectHighwayManager.hh"
3#include "game/field/ObjectDirector.hh"
4#include "game/field/obj/ObjectCarTGE.hh"
9ObjectHighwayManager::ObjectHighwayManager()
10 : ObjectCollidable(
"HighwayManager", EGG::Vector3f::zero, EGG::Vector3f::ez,
11 EGG::Vector3f::unit) {
13 auto *objDir = ObjectDirector::Instance();
15 for (
auto *
const &obj : objDir->managedObjects()) {
16 const char *objName = obj->getName();
18 if ((strcmp(objName,
"car_body") == 0) || (strcmp(objName,
"kart_truck") == 0)) {
23 m_cars = owning_span<ObjectCarTGE *>(carCount);
26 for (
auto *&obj : objDir->managedObjects()) {
27 const char *objName = obj->getName();
29 if ((strcmp(objName,
"car_body") == 0) || (strcmp(objName,
"kart_truck") == 0)) {
30 auto *carObj =
reinterpret_cast<ObjectCarTGE *
>(obj);
31 m_cars[idx++] = carObj;
32 carObj->setHighwayManager(
this);
38ObjectHighwayManager::~ObjectHighwayManager() =
default;
41void ObjectHighwayManager::init() {
42 m_squashTimer = SQUASH_MAX;
46void ObjectHighwayManager::calc() {
51void ObjectHighwayManager::calcSquash() {
52 constexpr u32 SQUASH_INVULNERABILITY = 200;
54 bool vulnerable = m_squashTimer >= SQUASH_INVULNERABILITY;
56 for (
auto *&obj : m_cars) {
57 if (obj->squashed() && vulnerable) {
64 m_squashTimer = std::min<u32>(m_squashTimer + 1, SQUASH_MAX);