mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-10-31 15:45:06 -04:00
3514954ad1
* Adds a MessageViewer window to Developer Tools. * Properly destroys message viewer window. * Adds missing ImGui::End() * Fixes an oopsie crashing non-windows builds after first run. * Adds C ABI for displaying a custom message * Fixes a crash and an issue with messages with SFX. * Remove some osSyncPrintf's that aren't very useful for this case.
63 lines
1.8 KiB
C++
63 lines
1.8 KiB
C++
#ifndef CUSTOMMESSAGEDEBUGGER_H
|
|
#define CUSTOMMESSAGEDEBUGGER_H
|
|
#include "z64.h"
|
|
|
|
#ifdef __cplusplus
|
|
#include "GuiWindow.h"
|
|
#include <array>
|
|
extern "C" {
|
|
#endif
|
|
/**
|
|
* \brief Pulls a message from the specified message table and kicks off the process of displaying that message
|
|
* in a text box on screen.
|
|
* \param tableId the tableId string for the table we want to pull from. Empty string for authentic/vanilla messages
|
|
* \param textId The textId corresponding to the message to display. Putting in a textId that doesn't exist will
|
|
* probably result in a crash.
|
|
* \param language The Language to display on the screen.
|
|
*/
|
|
void MessageDebug_StartTextBox(const char* tableId, uint16_t textId, uint8_t language);
|
|
|
|
/**
|
|
* \brief
|
|
* \param customMessage A string using Custom Message Syntax.
|
|
*/
|
|
void MessageDebug_DisplayCustomMessage(const char* customMessage);
|
|
#ifdef __cplusplus
|
|
}
|
|
|
|
|
|
class MessageViewer : public LUS::GuiWindow {
|
|
public:
|
|
static inline const char* TABLE_ID = "MessageViewer";
|
|
using GuiWindow::GuiWindow;
|
|
|
|
void InitElement() override;
|
|
void DrawElement() override;
|
|
void UpdateElement() override;
|
|
|
|
virtual ~MessageViewer() = default;
|
|
|
|
private:
|
|
void DisplayExistingMessage() const;
|
|
void DisplayCustomMessage() const;
|
|
|
|
static constexpr uint16_t MAX_STRING_SIZE = 1024;
|
|
static constexpr std::array<const char*, LANGUAGE_MAX> mLanguages = {"English", "German", "French"};
|
|
static constexpr int HEXADECIMAL = 0;
|
|
static constexpr int DECIMAL = 1;
|
|
char* mTableIdBuf;
|
|
std::string mTableId;
|
|
char* mTextIdBuf;
|
|
uint16_t mTextId;
|
|
int mTextIdBase = HEXADECIMAL;
|
|
size_t mLanguage = LANGUAGE_ENG;
|
|
char* mCustomMessageBuf;
|
|
std::string mCustomMessageString;
|
|
bool mDisplayExistingMessageClicked = false;
|
|
bool mDisplayCustomMessageClicked = false;
|
|
};
|
|
|
|
|
|
#endif //__cplusplus
|
|
#endif //CUSTOMMESSAGEDEBUGGER_H
|