Files
text_editor/src/plugin_record_events.cpp
2026-07-04 08:51:41 +02:00

72 lines
1.8 KiB
C++

#if PLUGIN_RECORD_EVENTS
Buffer *EventBuffer;
void Serialize(Buffer *buffer, String name, EventKind *kind) {
RawAppendf(buffer, "ev.%S = %s; ", name, EventKindStrings[*kind]);
}
void Serialize(Buffer *buffer, String name, Int *datum) {
if (*datum == 0) {
return;
}
if (name == "key") {
RawAppendf(buffer, "ev.%S = %s; ", name, SDLKeycodeToName((SDL_Keycode)*datum));
} else {
RawAppendf(buffer, "ev.%S = %lld; ", name, (long long)*datum);
}
}
void Serialize(Buffer *buffer, String name, uint32_t *datum) {
Int d = *datum;
Serialize(buffer, name, &d);
*datum = (uint32_t)d;
}
void Serialize(Buffer *buffer, String name, uint8_t *datum) {
Int d = *datum;
Serialize(buffer, name, &d);
*datum = (uint8_t)d;
}
void Serialize(Buffer *buffer, String name, int16_t *datum) {
Int d = *datum;
Serialize(buffer, name, &d);
*datum = (int16_t)d;
}
void Serialize(Buffer *buffer, String name, float *datum) {
if (*datum == 0.f) {
return;
}
RawAppendf(buffer, "ev.%S = %f; ", name, *datum);
}
void Serialize(Buffer *buffer, String name, char **text) {
String str = *text;
if (str.len == 0) {
return;
}
RawAppendf(buffer, "ev.%S = \"%S\"; ", name, str);
}
void SerializeBegin(Buffer *buffer) {
RawAppendf(buffer, "{Event ev = {};");
}
void SerializeEnd(Buffer *buffer) {
RawAppendf(buffer, "Add(&EventPlayback, ev);}\n");
}
// :Event
void Serialize(Buffer *buffer, Event *e) {
SerializeBegin(buffer);
#define X(TYPE, KIND, NAME) Serialize(buffer, #NAME, &e->NAME);
EVENT_FIELDS
#undef X
SerializeEnd(buffer);
}
void CMD_CopyEvents() {
SaveStringInClipboard(GetString(EventBuffer));
} RegisterCommand(CMD_CopyEvents, "ctrl-shift-alt-j", "Copy all the events from the EventBuffer");
#endif