A reimplementation of Mario Kart Wii's physics engine in C++
Loading...
Searching...
No Matches
ObjectWoodboxW.cc
1#include "ObjectWoodboxW.hh"
2
3#include "game/field/obj/ObjectWoodboxWSub.hh"
4
5namespace Field {
6
8ObjectWoodboxW::ObjectWoodboxW(const System::MapdataGeoObj &params) : ObjectCollidable(params) {
9 constexpr u16 DEFAULT_BOX_COUNT = 5;
10
11 ObjectCollidable::init();
12
13 u16 boxCount = params.setting(6);
14
15 if (boxCount == 0) {
16 boxCount = DEFAULT_BOX_COUNT;
17 }
18
19 m_boxes = std::span<ObjectWoodboxWSub *>(new ObjectWoodboxWSub *[boxCount], boxCount);
20
21 for (auto *&box : m_boxes) {
22 box = new ObjectWoodboxWSub(params);
23 box->load();
24 }
25}
26
28ObjectWoodboxW::~ObjectWoodboxW() {
29 delete m_boxes.data();
30}
31
33void ObjectWoodboxW::init() {
34 u32 frames = m_mapObj->setting(4);
35 if (frames == 0) {
36 frames = m_mapObj->setting(5);
37 }
38
39 m_framesUntilSpawn = frames;
40 m_nextBoxIdx = 0;
41}
42
44void ObjectWoodboxW::calc() {
45 if (--m_framesUntilSpawn >= 1) {
46 return;
47 }
48
49 m_framesUntilSpawn = m_mapObj->setting(5);
50 m_boxes[m_nextBoxIdx]->enableCollision();
51 m_nextBoxIdx = (m_nextBoxIdx + 1) % m_boxes.size();
52}
53
54} // namespace Field
Pertains to collision.