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 = std::span<ObjectCarTGE *>(
new ObjectCarTGE *[carCount], 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() {
40 delete[] m_cars.data();
44void ObjectHighwayManager::init() {
45 m_squashTimer = SQUASH_MAX;
49void ObjectHighwayManager::calc() {
54void ObjectHighwayManager::calcSquash() {
55 constexpr u32 SQUASH_INVULNERABILITY = 200;
57 bool vulnerable = m_squashTimer >= SQUASH_INVULNERABILITY;
59 for (
auto *&obj : m_cars) {
60 if (obj->squashed() && vulnerable) {
67 m_squashTimer = std::min<u32>(m_squashTimer + 1, SQUASH_MAX);