Mario Kart 64
Loading...
Searching...
No Matches
Boat.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}
14
15class ABoat : public AActor {
16 public:
17
18 enum SpawnMode : uint16_t {
19 POINT, // Spawn boat at a specific path point
20 AUTO, // Automatically distribute boats based on a specific path point
21 };
22
23 const char* Type = "mk:paddle_boat";
24 size_t Index;
25 bool IsActive; // The paddle wheel boat only shows up if the number of players is < 3
30 f32 Speed;
31 s16 RotY = 0;
33
34 int32_t SmokeParticles[128];
35 int32_t NextParticlePtr = 0;
36 int16_t AnotherSmokeTimer = 0;
37 int16_t SmokeTimer = 0;
38
39 explicit ABoat(const SpawnParams& params);
40
42 _count--;
43 }
44
45 static size_t GetCount() {
46 return _count;
47 }
48
49 // This is simply a helper function to keep Spawning code clean
50 static inline ABoat* Spawn(f32 speed, uint32_t pathIndex, uint32_t pathPoint, ABoat::SpawnMode spawnMode) {
51 SpawnParams params = {
52 .Name = "mk:paddle_boat",
53 .Type = static_cast<uint16_t>(spawnMode),
54 .PathIndex = pathIndex,
55 .PathPoint = pathPoint,
56 .Speed = speed,
57 };
58 return static_cast<ABoat*>(gWorldInstance.AddActor(new ABoat(params)));
59 }
60
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 s32 AddSmoke(size_t, Vec3f, f32);
70 virtual bool IsMod() override;
71 virtual void DrawEditorProperties() override;
72private:
73 static size_t _count;
74 static std::map<uint32_t, std::vector<uint32_t>> BoatCounts;
75};
World gWorldInstance
Definition Game.cpp:74
AActor()
Definition Actor.cpp:13
size_t Index
Definition Boat.h:24
uint32_t PathPoint
Definition Boat.h:63
int16_t SmokeTimer
Definition Boat.h:37
static ABoat * Spawn(f32 speed, uint32_t pathIndex, uint32_t pathPoint, ABoat::SpawnMode spawnMode)
Definition Boat.h:50
Vec3f Position
Definition Boat.h:26
int32_t NextParticlePtr
Definition Boat.h:35
virtual s32 AddSmoke(size_t, Vec3f, f32)
Definition Boat.cpp:216
s32 SomeFlags
Definition Boat.h:32
static size_t _count
Definition Boat.h:73
SpawnMode
Definition Boat.h:18
@ AUTO
Definition Boat.h:20
@ POINT
Definition Boat.h:19
int16_t AnotherSmokeTimer
Definition Boat.h:36
bool IsActive
Definition Boat.h:25
ABoat(const SpawnParams &params)
Definition Boat.cpp:22
int32_t SmokeParticles[128]
Definition Boat.h:34
uint32_t PathIndex
Definition Boat.h:62
virtual void DrawEditorProperties() override
Definition Boat.cpp:225
f32 Speed
Definition Boat.h:30
s16 ActorIndex
Definition Boat.h:29
static std::map< uint32_t, std::vector< uint32_t > > BoatCounts
Definition Boat.h:74
virtual void Tick() override
Definition Boat.cpp:90
~ABoat()
Definition Boat.h:41
static size_t GetCount()
Definition Boat.h:45
Vec3f Velocity
Definition Boat.h:27
ABoat::SpawnMode SpawnType
Definition Boat.h:61
virtual void SetSpawnParams(SpawnParams &params) override
Definition Boat.cpp:75
virtual bool IsMod() override
Definition Boat.cpp:86
s16 RotY
Definition Boat.h:31
virtual void Draw(Camera *camera) override
Definition Boat.cpp:83
u16 WaypointIndex
Definition Boat.h:28
virtual void VehicleCollision(s32 playerId, Player *player) override
Definition Boat.cpp:187
const char * Type
Definition Boat.h:23
f32 Vec3f[3]
Definition common_structs.h:10
Definition camera.h:35
Definition common_structs.h:264
Definition SpawnParams.h:30