SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
CameraParamChunkID.cpp
1#include "Game/Camera/CameraParamChunkID.hpp"
2#include <cstdio>
3#include <cstring>
4
5CameraParamChunkID::CameraParamChunkID() {
6 mZoneID = 0;
7 mName = nullptr;
8}
9
10CameraParamChunkID::CameraParamChunkID(const CameraParamChunkID &other) {
11 mZoneID = other.mZoneID;
12 u32 length = strlen(other.mName);
13 char *buffer = getBuffer(length + 1);
14 strcpy(buffer, other.mName);
15 mName = buffer;
16}
17
18bool CameraParamChunkID::operator>(const CameraParamChunkID &other) const {
19 if (mName == nullptr) {
20 return other.mName != nullptr;
21 }
22 else if (other.mName == nullptr) {
23 return false;
24 }
25
26 bool result = true;
27
28 if (mZoneID <= other.mZoneID) {
29 bool stringEqual = false;
30
31 if (mZoneID == other.mZoneID && strcmp(mName, other.mName) == 0) {
32 stringEqual = true;
33 }
34
35 if (!stringEqual) {
36 result = false;
37 }
38 }
39
40 return result;
41}
42
43bool CameraParamChunkID::operator==(const CameraParamChunkID &other) const {
44 if (mName == nullptr) {
45 return other.mName == nullptr;
46 }
47 else if (other.mName == nullptr) {
48 return false;
49 }
50
51 if (mZoneID == other.mZoneID) {
52 strcmp(mName, other.mName);
53 }
54
55 return mZoneID == other.mZoneID && strcmp(mName, other.mName) == 0;
56}
57
58
59char *CameraParamChunkID::getBuffer(unsigned long length) {
60 return new char[length];
61}
62
63bool CameraParamChunkID::equals(long zoneID, const char *pName) const {
64 if (mName != nullptr) {
65 return zoneID == mZoneID && strcmp(mName, pName) == 0;
66 }
67
68 return false;
69}
70
71void CameraParamChunkID::createCubeID(long zoneID, unsigned short id) {
72 mZoneID = static_cast<s8>(zoneID);
73
74 const u32 formatSize = 7;
75 char *buffer = getBuffer(formatSize);
76 snprintf(buffer, formatSize, "c:%04x", id);
77
78 mName = buffer;
79}
80
81void CameraParamChunkID::createGroupID(long zoneID, const char *a2, unsigned long a3, unsigned long a4) {
82 mZoneID = static_cast<s8>(zoneID);
83
84 char buffer[0x100];
85 snprintf(buffer, sizeof(buffer), "g:%s:%d:%d", a2, a3, a4);
86
87 u32 actualSize = strlen(&buffer[0]);
88 char *buffer2 = getBuffer(actualSize + 1);
89
90 strcpy(buffer2, &buffer[0]);
91 mName = buffer2;
92}
93
94void CameraParamChunkID::createOtherID(long zoneID, const char *a2) {
95 mZoneID = static_cast<s8>(zoneID);
96
97 char buffer[0x100];
98 snprintf(buffer, sizeof(buffer), "o:%s", a2);
99
100 u32 actualSize = strlen(&buffer[0]);
101 char *buffer2 = getBuffer(actualSize + 1);
102
103 strcpy(buffer2, &buffer[0]);
104 mName = buffer2;
105}
106
107void CameraParamChunkID::createEventID(long zoneID, const char *a2) {
108 mZoneID = static_cast<s8>(zoneID);
109
110 char buffer[0x100];
111 snprintf(buffer, sizeof(buffer), "e:%s", a2);
112
113 u32 actualSize = strlen(&buffer[0]);
114 char *buffer2 = getBuffer(actualSize + 1);
115
116 strcpy(buffer2, &buffer[0]);
117 mName = buffer2;
118}
119
120void CameraParamChunkID::createStartID(long zoneID, unsigned short id) {
121 mZoneID = static_cast<s8>(zoneID);
122
123 char buffer[0x100];
124 snprintf(buffer, sizeof(buffer), "s:%04x", id);
125
126 u32 actualSize = strlen(&buffer[0]);
127 char *buffer2 = getBuffer(actualSize + 1);
128
129 strcpy(buffer2, &buffer[0]);
130 mName = buffer2;
131}