|
55 | 55 | // ===== GLOBAL VARIABLES ===== |
56 | 56 | static int pInfSendTimer = 0; |
57 | 57 | static int gameInfSendTimer = 0; |
| 58 | +static int chatUpdateTimer = 0; |
58 | 59 | static int debugPuppetIndex = 0; |
59 | 60 | static int debugCaptureIndex = 0; |
60 | 61 | static int pageIndex = 0; |
@@ -90,6 +91,31 @@ void updatePlayerInfo(GameDataHolderAccessor holder, PlayerActorBase* playerBase |
90 | 91 | gameInfSendTimer = 0; |
91 | 92 | } |
92 | 93 |
|
| 94 | + if (chatUpdateTimer >= 300) |
| 95 | + { |
| 96 | + if (!Client::getMessage(0).isEmpty()) |
| 97 | + { |
| 98 | + Client::setMessage(0, ""); |
| 99 | + } |
| 100 | + if (!Client::getMessage(1).isEmpty()) |
| 101 | + { |
| 102 | + Client::setMessage(0, Client::getMessage(1).cstr()); |
| 103 | + Client::setMessage(1, ""); |
| 104 | + } |
| 105 | + if (!Client::getMessage(2).isEmpty()) |
| 106 | + { |
| 107 | + Client::setMessage(1, Client::getMessage(2).cstr()); |
| 108 | + Client::setMessage(2, ""); |
| 109 | + } |
| 110 | + chatUpdateTimer = 0; |
| 111 | + } |
| 112 | + else if (!Client::getMessage(0).isEmpty() || !Client::getMessage(1).isEmpty() || |
| 113 | + !Client::getMessage(2).isEmpty()) |
| 114 | + { |
| 115 | + chatUpdateTimer++; |
| 116 | + } |
| 117 | + |
| 118 | + |
93 | 119 | pInfSendTimer++; |
94 | 120 | gameInfSendTimer++; |
95 | 121 | } |
@@ -155,32 +181,32 @@ void drawMainHook(HakoniwaSequence* curSequence, sead::Viewport* viewport, sead: |
155 | 181 | gTextWriter->printf("Your TCP status: %s\n", socket->getStateChar()); |
156 | 182 |
|
157 | 183 | sead::Heap* clientHeap = Client::getClientHeap(); |
158 | | -if (clientHeap) { |
| 184 | + if (clientHeap) { |
159 | 185 | sead::Heap* gmHeap = GameModeManager::instance()->getHeap(); |
160 | | - if (gmHeap) { |
161 | | - // Validate heaps before using them |
162 | | - if (clientHeap->getSize() > 0 && gmHeap->getSize() > 0) { |
163 | | - size_t clientUsed = clientHeap->getSize() - clientHeap->getFreeSize(); |
164 | | - size_t clientTotal = clientHeap->getSize(); |
165 | | - size_t gmUsed = gmHeap->getSize() - gmHeap->getFreeSize(); |
166 | | - size_t gmTotal = gmHeap->getSize(); |
| 186 | + if (gmHeap) { |
| 187 | + // Validate heaps before using them |
| 188 | + if (clientHeap->getSize() > 0 && gmHeap->getSize() > 0) { |
| 189 | + size_t clientUsed = clientHeap->getSize() - clientHeap->getFreeSize(); |
| 190 | + size_t clientTotal = clientHeap->getSize(); |
| 191 | + size_t gmUsed = gmHeap->getSize() - gmHeap->getFreeSize(); |
| 192 | + size_t gmTotal = gmHeap->getSize(); |
167 | 193 |
|
168 | | - gTextWriter->printf( |
169 | | - "Heap Use: %.1f/%.0f (Client) %.1f/%.0f (Gmode)\n", |
170 | | - 0.0009765625 * clientUsed, |
171 | | - 0.0009765625 * clientTotal, |
172 | | - 0.0009765625 * gmUsed, |
173 | | - 0.0009765625 * gmTotal |
174 | | - ); |
| 194 | + gTextWriter->printf( |
| 195 | + "Heap Use: %.1f/%.0f (Client) %.1f/%.0f (Gmode)\n", |
| 196 | + 0.0009765625 * clientUsed, |
| 197 | + 0.0009765625 * clientTotal, |
| 198 | + 0.0009765625 * gmUsed, |
| 199 | + 0.0009765625 * gmTotal |
| 200 | + ); |
| 201 | + } else { |
| 202 | + gTextWriter->printf("Heap Use: Invalid heap sizes\n"); |
| 203 | + } |
175 | 204 | } else { |
176 | | - gTextWriter->printf("Heap Use: Invalid heap sizes\n"); |
| 205 | + gTextWriter->printf("Heap Use: GameMode heap unavailable\n"); |
177 | 206 | } |
178 | 207 | } else { |
179 | | - gTextWriter->printf("Heap Use: GameMode heap unavailable\n"); |
| 208 | + gTextWriter->printf("Heap Use: Client heap unavailable\n"); |
180 | 209 | } |
181 | | -} else { |
182 | | - gTextWriter->printf("Heap Use: Client heap unavailable\n"); |
183 | | -} |
184 | 210 |
|
185 | 211 | gTextWriter->printf( |
186 | 212 | "Queue Count: %d/%d (Send) %d/%d (Receive)\n", |
@@ -221,6 +247,24 @@ if (clientHeap) { |
221 | 247 | GameMode gameMode = GameModeManager::instance()->getGameMode(); |
222 | 248 | GameModeBase* gameModeBase = GameModeManager::instance()->getMode<GameModeBase>(); |
223 | 249 |
|
| 250 | + if (!(Client::getMessage(0) == Client::getMessage(1) && |
| 251 | + Client::getMessage(1) == Client::getMessage(2))) { |
| 252 | + if (Client::getMessage(0) == Client::getMessage(1)) |
| 253 | + drawChatBackground((agl::DrawContext*)drawContext, 3.f); |
| 254 | + else if (Client::getMessage(1).isEmpty()) |
| 255 | + drawChatBackground((agl::DrawContext*)drawContext, 2.f); |
| 256 | + else |
| 257 | + drawChatBackground((agl::DrawContext*)drawContext, 1.f); |
| 258 | + |
| 259 | + gTextWriter->beginDraw(); |
| 260 | + gTextWriter->setCursorFromTopLeft(sead::Vector2f(10.f, (dispHeight * 7 / 10) + 60.f)); |
| 261 | + gTextWriter->setScaleFromFontHeight(15.f); |
| 262 | + |
| 263 | + gTextWriter->printf("%s\n", Client::getMessage(0).cstr()); |
| 264 | + gTextWriter->printf("%s\n", Client::getMessage(1).cstr()); |
| 265 | + gTextWriter->printf("%s\n", Client::getMessage(2).cstr()); |
| 266 | + } |
| 267 | + |
224 | 268 | gTextWriter->printf("(ZR ←)------------ Page %d/%d -------------(ZR →)\n", pageIndex + 1, maxPages); |
225 | 269 |
|
226 | 270 | switch (pageIndex) |
|
0 commit comments