SpaghettiKart
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>
8
9extern "C" {
10#include "sounds.h"
11}
12
13class ATankerTruck : public AActor {
14 public:
15 enum SpawnMode : uint16_t {
16 POINT, // Spawn car at a specific path point
17 AUTO, // Automatically distribute cars based on a specific path point
18 };
19
20 const char* Type;
21 size_t Index;
22 f32 Speed;
30 s8 SomeFlags = 0;
32
33 f32 SomeArg3 = 55.0f;
34 f32 SomeArg4 = 12.5f;
35 u32 SoundBits = SOUND_ARG_LOAD(0x51, 0x01, 0x80, 0x03);
36
37 // This is simply a helper function to keep Spawning code clean
38 static ATankerTruck* Spawn(f32 speedA, f32 speedB, uint32_t pathIndex, uint32_t pathPoint, ATankerTruck::SpawnMode spawnMode) {
39 SpawnParams params = {
40 .Name = "mk:tanker_truck",
41 .Type = static_cast<uint16_t>(spawnMode),
42 .PathIndex = pathIndex,
43 .PathPoint = pathPoint,
44 .Speed = speedA,
45 .SpeedB = speedB
46 };
47 return dynamic_cast<ATankerTruck*>(AddActorToWorld<ATankerTruck>(params));
48 }
49
50 explicit ATankerTruck(const SpawnParams& params);
51
53 _count--;
54 }
55
56 static size_t GetCount() {
57 return _count;
58 }
59
61 float SpeedB = 0.0f;
62 uint32_t PathIndex = 0;
63 uint32_t PathPoint = 0;
64
65 virtual void SetSpawnParams(SpawnParams& params) override;
66 virtual void Tick() override;
67 virtual void Draw(Camera* camera) override;
68 virtual void VehicleCollision(s32 playerId, Player* player) override;
69 virtual bool IsMod() override;
70 virtual void DrawEditorProperties() override;
71
72 private:
73 static size_t _count;
74 static std::map<uint32_t, std::vector<uint32_t>> TruckCounts;
75};
static AActor * AddActorToWorld(const SpawnParams &params)
Definition RegisterContent.h:14
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:29
static size_t GetCount()
Definition TankerTruck.h:56
Vec3f Velocity
Definition TankerTruck.h:25
SpawnMode
Definition TankerTruck.h:15
@ AUTO
Definition TankerTruck.h:17
@ POINT
Definition TankerTruck.h:16
static ATankerTruck * Spawn(f32 speedA, f32 speedB, uint32_t pathIndex, uint32_t pathPoint, ATankerTruck::SpawnMode spawnMode)
Definition TankerTruck.h:38
f32 SomeArg3
Definition TankerTruck.h:33
u32 SoundBits
Definition TankerTruck.h:35
Vec3s Rotation
Definition TankerTruck.h:26
ATankerTruck::SpawnMode SpawnType
Definition TankerTruck.h:60
static std::map< uint32_t, std::vector< uint32_t > > TruckCounts
Definition TankerTruck.h:74
s16 SomeType
Definition TankerTruck.h:31
Vec3f Position
Definition TankerTruck.h:24
f32 SomeMultiplierTheSequel
Definition TankerTruck.h:27
float SpeedB
Definition TankerTruck.h:61
f32 SomeArg4
Definition TankerTruck.h:34
virtual void Tick() override
Definition TankerTruck.cpp:118
uint32_t PathIndex
Definition TankerTruck.h:62
static size_t _count
Definition TankerTruck.h:73
virtual void SetSpawnParams(SpawnParams &params) override
Definition TankerTruck.cpp:86
virtual bool IsMod() override
Definition TankerTruck.cpp:95
uint32_t PathPoint
Definition TankerTruck.h:63
f32 Speed
Definition TankerTruck.h:22
s16 ActorIndex
Definition TankerTruck.h:23
s8 SomeFlags
Definition TankerTruck.h:30
~ATankerTruck()
Definition TankerTruck.h:52
virtual void Draw(Camera *camera) override
Definition TankerTruck.cpp:99
const char * Type
Definition TankerTruck.h:20
s8 SomeFlagsTheSequel
Definition TankerTruck.h:28
size_t Index
Definition TankerTruck.h:21
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