Mario Kart 64
Loading...
Searching...
No Matches
Bus.h
Go to the documentation of this file.
1#pragma once
2
3#include <libultraship.h>
4#include "Actor.h"
5#include <vector>
7#include "engine/CoreMath.h"
8#include "engine/World.h"
9
10extern "C" {
11#include "main.h"
12#include "vehicles.h"
13#include "waypoints.h"
14#include "sounds.h"
15}
16
17class ABus : public AActor {
18 public:
19 enum SpawnMode : uint16_t {
20 POINT, // Spawn car at a specific path point
21 AUTO, // Automatically distribute cars based on a specific path point
22 };
23
24 const char* Type;
25 size_t Index;
26 f32 Speed;
34 s8 SomeFlags = 0;
36
37 f32 SomeArg3 = 55.0f;
38 f32 SomeArg4 = 12.5f;
39 u32 SoundBits = SOUND_ARG_LOAD(0x51, 0x01, 0x80, 0x03);
40
41 // This is simply a helper function to keep Spawning code clean
42 static inline ABus* Spawn(f32 speedA, f32 speedB, uint32_t pathIndex, uint32_t pathPoint, ABus::SpawnMode spawnMode) {
43 SpawnParams params = {
44 .Name = "mk:bus",
45 .Type = static_cast<uint16_t>(spawnMode),
46 .PathIndex = pathIndex,
47 .PathPoint = pathPoint,
48 .Speed = speedA,
49 .SpeedB = speedB
50 };
51 return static_cast<ABus*>(gWorldInstance.AddActor(new ABus(params)));
52 }
53
54 explicit ABus(const SpawnParams& params);
55
57 _count--;
58 }
59
60 static size_t GetCount() {
61 return _count;
62 }
63
65 float SpeedB = 0.0f;
66 uint32_t PathIndex = 0;
67 uint32_t PathPoint = 0;
68
69 virtual void SetSpawnParams(SpawnParams& params) override;
70 virtual void Tick() override;
71 virtual void Draw(Camera* camera) override;
72 virtual void VehicleCollision(s32 playerId, Player* player) override;
73 virtual bool IsMod() override;
74 virtual void DrawEditorProperties() override;
75
76 private:
77 static size_t _count;
78 static std::map<uint32_t, std::vector<uint32_t>> BusCounts;
79};
World gWorldInstance
Definition Game.cpp:74
AActor()
Definition Actor.cpp:13
virtual void Tick() override
Definition Bus.cpp:118
~ABus()
Definition Bus.h:56
uint32_t PathPoint
Definition Bus.h:67
SpawnMode
Definition Bus.h:19
@ AUTO
Definition Bus.h:21
@ POINT
Definition Bus.h:20
Vec3f Velocity
Definition Bus.h:29
static ABus * Spawn(f32 speedA, f32 speedB, uint32_t pathIndex, uint32_t pathPoint, ABus::SpawnMode spawnMode)
Definition Bus.h:42
ABus::SpawnMode SpawnType
Definition Bus.h:64
virtual void VehicleCollision(s32 playerId, Player *player) override
Definition Bus.cpp:181
f32 SomeArg3
Definition Bus.h:37
f32 SomeMultiplierTheSequel
Definition Bus.h:31
Vec3s Rotation
Definition Bus.h:30
static size_t _count
Definition Bus.h:77
f32 Speed
Definition Bus.h:26
virtual bool IsMod() override
Definition Bus.cpp:95
u32 SoundBits
Definition Bus.h:39
Vec3f Position
Definition Bus.h:28
s8 SomeFlags
Definition Bus.h:34
virtual void Draw(Camera *camera) override
Definition Bus.cpp:99
uint32_t PathIndex
Definition Bus.h:66
ABus(const SpawnParams &params)
Definition Bus.cpp:24
s16 SomeType
Definition Bus.h:35
float SpeedB
Definition Bus.h:65
size_t Index
Definition Bus.h:25
s16 ActorIndex
Definition Bus.h:27
u16 WaypointIndex
Definition Bus.h:33
s8 SomeFlagsTheSequel
Definition Bus.h:32
virtual void DrawEditorProperties() override
Definition Bus.cpp:314
const char * Type
Definition Bus.h:24
static size_t GetCount()
Definition Bus.h:60
f32 SomeArg4
Definition Bus.h:38
virtual void SetSpawnParams(SpawnParams &params) override
Definition Bus.cpp:86
static std::map< uint32_t, std::vector< uint32_t > > BusCounts
Definition Bus.h:78
f32 Vec3f[3]
Definition common_structs.h:10
s16 Vec3s[3]
Definition common_structs.h:15
#define SOUND_ARG_LOAD(sound_bank, byte2, byte3, sound_id)
Definition sounds.h:14
Definition camera.h:35
Definition common_structs.h:264
Definition SpawnParams.h:30