Mario Kart 64
Loading...
Searching...
No Matches
TankerTruck.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 ATankerTruck : 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 ATankerTruck* Spawn(f32 speedA, f32 speedB, uint32_t pathIndex, uint32_t pathPoint, ATankerTruck::SpawnMode spawnMode) {
43 SpawnParams params = {
44 .Name = "mk:tanker_truck",
45 .Type = static_cast<uint16_t>(spawnMode),
46 .PathIndex = pathIndex,
47 .PathPoint = pathPoint,
48 .Speed = speedA,
49 .SpeedB = speedB
50 };
51 return static_cast<ATankerTruck*>(gWorldInstance.AddActor(new ATankerTruck(params)));
52 }
53
54 explicit ATankerTruck(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>> TruckCounts;
79};
World gWorldInstance
Definition Game.cpp:74
AActor()
Definition Actor.cpp:13
virtual void VehicleCollision(s32 playerId, Player *player) override
Definition TankerTruck.cpp:181
ATankerTruck(const SpawnParams &params)
Definition TankerTruck.cpp:24
u16 WaypointIndex
Definition TankerTruck.h:33
static size_t GetCount()
Definition TankerTruck.h:60
Vec3f Velocity
Definition TankerTruck.h:29
SpawnMode
Definition TankerTruck.h:19
@ AUTO
Definition TankerTruck.h:21
@ POINT
Definition TankerTruck.h:20
static ATankerTruck * Spawn(f32 speedA, f32 speedB, uint32_t pathIndex, uint32_t pathPoint, ATankerTruck::SpawnMode spawnMode)
Definition TankerTruck.h:42
f32 SomeArg3
Definition TankerTruck.h:37
u32 SoundBits
Definition TankerTruck.h:39
Vec3s Rotation
Definition TankerTruck.h:30
ATankerTruck::SpawnMode SpawnType
Definition TankerTruck.h:64
static std::map< uint32_t, std::vector< uint32_t > > TruckCounts
Definition TankerTruck.h:78
s16 SomeType
Definition TankerTruck.h:35
Vec3f Position
Definition TankerTruck.h:28
f32 SomeMultiplierTheSequel
Definition TankerTruck.h:31
float SpeedB
Definition TankerTruck.h:65
f32 SomeArg4
Definition TankerTruck.h:38
virtual void Tick() override
Definition TankerTruck.cpp:118
uint32_t PathIndex
Definition TankerTruck.h:66
static size_t _count
Definition TankerTruck.h:77
virtual void SetSpawnParams(SpawnParams &params) override
Definition TankerTruck.cpp:86
virtual bool IsMod() override
Definition TankerTruck.cpp:95
uint32_t PathPoint
Definition TankerTruck.h:67
f32 Speed
Definition TankerTruck.h:26
s16 ActorIndex
Definition TankerTruck.h:27
s8 SomeFlags
Definition TankerTruck.h:34
~ATankerTruck()
Definition TankerTruck.h:56
virtual void Draw(Camera *camera) override
Definition TankerTruck.cpp:99
const char * Type
Definition TankerTruck.h:24
s8 SomeFlagsTheSequel
Definition TankerTruck.h:32
size_t Index
Definition TankerTruck.h:25
virtual void DrawEditorProperties() override
Definition TankerTruck.cpp:314
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