From a511c5c90884b953175f3e225057b5ca6f3ef241 Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Wed, 18 Oct 2023 23:32:04 -0500 Subject: [PATCH] prog --- .../liminal/scenes/prologue/CMakeLists.txt | 3 +- .../scenes/prologue/ScenePrologue7.xml | 204 ++++++++++++++++++ .../prologue/ScenePrologueSportsField.xml | 104 ++++++++- .../scenes/prologue/ScenePrologueToilets.xml | 137 +++++++++++- lib/libarchive | 2 +- src/dawn/games/vn/events/VNChoiceEvent.hpp | 7 + src/dawnliminal/vnscenes/ScenePrologue8.hpp | 82 +++++++ src/dawnosx/host/DawnHostOSX.cpp | 6 +- src/dawnshared/util/Xml.cpp | 3 +- src/dawnshared/util/Xml.hpp | 1 + src/dawnshared/util/memory.cpp | 63 ++---- src/dawnshared/util/memory.hpp | 53 ++--- src/dawntools/truetypetool/TrueTypeTool.cpp | 7 +- .../events/VNChoiceEventParser.cpp | 4 +- .../vnscenetool/events/VNTextEventParser.cpp | 2 +- 15 files changed, 575 insertions(+), 103 deletions(-) create mode 100644 assets/games/liminal/scenes/prologue/ScenePrologue7.xml create mode 100644 src/dawnliminal/vnscenes/ScenePrologue8.hpp diff --git a/assets/games/liminal/scenes/prologue/CMakeLists.txt b/assets/games/liminal/scenes/prologue/CMakeLists.txt index 11ec6e10..2696e504 100644 --- a/assets/games/liminal/scenes/prologue/CMakeLists.txt +++ b/assets/games/liminal/scenes/prologue/CMakeLists.txt @@ -10,4 +10,5 @@ tool_vnscene(${CMAKE_CURRENT_LIST_DIR}/ScenePrologue3.xml) tool_vnscene(${CMAKE_CURRENT_LIST_DIR}/ScenePrologue4.xml) tool_vnscene(${CMAKE_CURRENT_LIST_DIR}/ScenePrologue5.xml) tool_vnscene(${CMAKE_CURRENT_LIST_DIR}/ScenePrologueSportsField.xml) -tool_vnscene(${CMAKE_CURRENT_LIST_DIR}/ScenePrologueToilets.xml) \ No newline at end of file +tool_vnscene(${CMAKE_CURRENT_LIST_DIR}/ScenePrologueToilets.xml) +tool_vnscene(${CMAKE_CURRENT_LIST_DIR}/ScenePrologue7.xml) \ No newline at end of file diff --git a/assets/games/liminal/scenes/prologue/ScenePrologue7.xml b/assets/games/liminal/scenes/prologue/ScenePrologue7.xml new file mode 100644 index 00000000..6385f677 --- /dev/null +++ b/assets/games/liminal/scenes/prologue/ScenePrologue7.xml @@ -0,0 +1,204 @@ + + + + + + The bell rings. School begins for the very last time in Angelwood High. + + + + + I can't concentrate. + + + + “Homosapiens. Our origins were not so far away-” + + + + My teacher prattles on. I’m thinking too much again. + + + (Like usual.) + + + “— and we’ll be discussing the way the world began.” + + + I remember this class. I remember the words that will leave Mr. Holden’s lips. + + + “We were born like this.” + + + “A female of the species is born with XX chromosomes—” + + + “XY chromosomes denote a male of the species—” + + + Why am I doing this again? + + + I died last night. + + + I died. + + + I'm only shocked that I don’t feel the wound pounded in my brain. Where’s the pain that murdered me? Why is it that when I raise my fingers to my head I feel nothing? + + + (But a phantom of pain whispers by my head. Stays; hisses; peels; breaks me, further and further down. Until my head is good as caved open.) + + + (Pain isn’t here; and pain wants me to drown.) + + + I wasn’t dreaming. I died. That’s the only explanation for how I know exactly how today will unfold. + + + “Such markers are indicators of gender—” + + + No. Not unfold. I don’t want to die again. + + + (I won’t die again.) + + + “— categories which all humans fall into.” + + + Why am I back? + + + To win again? I won’t complain. I’ll win Prom Queen a thousand times if I had to, and I’d do it gladly. + + + To try again? + + + I don’t want to die again. + + + “Ethereality? Are you with us?” + + + I snap to attention. Mr. Holden looks at me expectantly, though not with malice. He knows I'm an Estridge and I'm the kindest girl on earth— supposedly. I wouldn’t ignore his class. + + + “Yes,” I say. “I’m here.” + + + “Will you answer my question?” He asks. “What makes a female of the species?” + + + Mr. Holden smiles, encouraging, as he awaits my answer. + + + I think about this. I’ve done this before. Don’t I remember my answer? + + + + + <string lang="en">"A female species is the..."</string> + + + + Nuturing. + + + Emotional. + + + Sweet. + + + Empathetic. + + + Beautiful. + + + + + Mr. Holden nods. His smile widens. “Ethereality’s right,” he says, and turns to the class again. + + + + + “The ability to nuture is crucial to femininity…” + + + + + “The ability to be emotional is crucial to femininity…” + + + + + “The ability to be sweet is crucial to femininity…” + + + + + “The ability to be empathetic is crucial to femininity…” + + + + + “The ability to be beautiful is crucial to femininity…” + + + + + + <string lang="en">Even if I don’t remember, this has been drilled into me since the beginning of time. It’s easy. Angelwood maintains its same elegy for women.</string> + + + + (And the elegy is you.) + + + + + The bell rings. Everyone leaves Biology. In the corridors, they tell me how well I’ve done in class (as if); ask me about tonight, because Prom is all that’s on everyone’s minds and I am the star (blood-streaked.) + + + I manage to return their hellos and smiles without feeling— too — faint. + + + Finally the questioning abates and their bodies rush off to their next class. I need to go, too. I can’t miss English, they’ll wonder where I am. But my heart rams in my throat; my chest is sick with heave. I feel like hurling. + + + (My death keeps coming back. My grace keeps cracking. My body keeps falling. Is it because my descent was always the prettiest of them all?) + + + I breathe in the corridors. + + + Who murdered me? + + + All of Angelwood High adores me. I’ve made sure of the fact. It’s been true since the beginning of time. + + + Or as close to the beginning of time as it could be. When I turned into a teen and shot up the ranks, with my saunter and my beauty and my smile. + + + (When I stopped hanging with the wrong people. When I began to be beautiful and lived up to the best ideals.) + + + ... + + + (When I started to become perfect.) + + + There are only a few possibilities. There are only a few that hate me. + + + + + \ No newline at end of file diff --git a/assets/games/liminal/scenes/prologue/ScenePrologueSportsField.xml b/assets/games/liminal/scenes/prologue/ScenePrologueSportsField.xml index 32cc78da..5facbce8 100644 --- a/assets/games/liminal/scenes/prologue/ScenePrologueSportsField.xml +++ b/assets/games/liminal/scenes/prologue/ScenePrologueSportsField.xml @@ -1,9 +1,107 @@ - + - + - SF. + Craig is my boyfriend. He's throwing down for his football tournament happening in June. He loves me like a King loves his Queen- with worship, reverence, and the stars. He's beyond the golden boy: he glistens. + + + "Ethy!" + + + Craig calls. He waves me down as I enter the field. + + + The whistle screeches; Craig whips his head back to the field. He dashes to the football and scores. His teammates' cheers ring in my ears. + + + Craig winks as he jogs back. "That was for you." + + + + Despite myself, I chuckle. + + + + + <string lang="en">"So," he says, "you look beautiful."</string> + + + + Thanks. + + + + So do you. + + + + Duh. + + + + + + As if I don't know that. + + + + + No harm in a little lie. Especially when it brightens him up like sun-dusk. + + + + + He says what all of Angelwood says. Per usual. + + + + + Craig smiles wide. He holds me close to him and laughs. + + + "My tournament's soon. You'll be there, yeah?" + + + He's been talking about his tournament since the school year started. He thinks it's his one ticket out of Angelwood. + + + As if I won't, Craig. + + + + He throws an arm around my shoulders. He kisses my cheek. He holds me + tight, squeezes me into his sweat-stained, disgusting body. Laughs, nods + to his teammates towering high and hulking, their shoulder pads like + soldiers in another life. + + + + + They throw the football at Craig's head. He catches it. I nearly flinch. + + + It's fine. Fine. You're okay. + + + He doesn't notice. + + + + "See you tonight, Ethy," he says. "I can't wait to see your dress." + + + Craig kisses me in full view of his teammates. They roar, clap Craig on the shoulder and drag him back. + + + He wipes his mouth clean and grins. Then he throws the football, and all the boys begin to sprint. + + + + + + + \ No newline at end of file diff --git a/assets/games/liminal/scenes/prologue/ScenePrologueToilets.xml b/assets/games/liminal/scenes/prologue/ScenePrologueToilets.xml index 92dbc349..8515b719 100644 --- a/assets/games/liminal/scenes/prologue/ScenePrologueToilets.xml +++ b/assets/games/liminal/scenes/prologue/ScenePrologueToilets.xml @@ -1,9 +1,140 @@ - + - + + + + + On my return, I pass him by the lockers. + + + + + He's by the lockers. + + - TEST + Ronin Beaufort. That's his name. I haven't seen him much around Angelwood: he was homeschooled throughout middle school. Came back again for his final years in Angelwood High. + + + Boys pass by Ronin, entering the toilets and out again. Ronin looks at me and only me. + + + + ... + + + + He doesn't need to watch me. + + + I don't need to look at him. + + + But he calls. + + + "Stranger." + + + And I stop. + + + "And you are?" + + + + He smiles thinly. + + + + "Ronin. Beaufort. But you knew that, Ther." + + + Jesus. + + + I roll my eyes. + + + I stroll towards Ronin. Head high, back straight. I'm goddess of this school and he's- an a-hole of nothing. + + + "I don't know who you are." + + + It's a lie. Of course I know who he is. + + + Ave Beaufort's brother, in all of his edgy glory. + + + Of course I know. + + + The boys go in and out of the toilets, like a cycle of flies. Going in, buzzing out. Hovering: mildly intrigued by whatever this confrontation is. They tend to want to know what Ethereality Estridge is doing. + + + "Sure you don't," Ronin says. "I don't know who you are, either." + + + Ugh. + + + "Somethin' wrong, Ther?" + + + + Somethin' wrong, Ther?" + + + + + <string lang="en"><font style="italics">Asshole.</font></string> + + + + You. + + + + Nothing. + + + + + + + "Direct," Ronin says. "I like it." + + + + + "Nothing, nothing," Ronin says. "That goes knockin'." He raps his fist against his skull and grins. + + + + + Get out of my sight. + + + Ronin gets out of my sight. He strolls into the boys' toilets. His boots clack with him, echoing through the floorboards. Each crack is as sharp as a bullet. + + + I exhale. + + + Thank Christ. I wouldn't know how to deal with him, otherwise. + + + + + I need to get out of here. I need to find Craig. + + + + + \ No newline at end of file diff --git a/lib/libarchive b/lib/libarchive index 2ba3d927..ee16885f 160000 --- a/lib/libarchive +++ b/lib/libarchive @@ -1 +1 @@ -Subproject commit 2ba3d92706384be14cd376734f3f7ebe5648591e +Subproject commit ee16885fe6278344854db4174ebc276c307947aa diff --git a/src/dawn/games/vn/events/VNChoiceEvent.hpp b/src/dawn/games/vn/events/VNChoiceEvent.hpp index cc7a3899..1520773b 100644 --- a/src/dawn/games/vn/events/VNChoiceEvent.hpp +++ b/src/dawn/games/vn/events/VNChoiceEvent.hpp @@ -41,5 +41,12 @@ namespace Dawn { } }, getScene()->eventSceneUpdate); } + + public: + std::string getChoiceKey() { + auto it = choices.begin(); + std::advance(it, choice); + return it->first; + } }; } \ No newline at end of file diff --git a/src/dawnliminal/vnscenes/ScenePrologue8.hpp b/src/dawnliminal/vnscenes/ScenePrologue8.hpp new file mode 100644 index 00000000..e7ce4bac --- /dev/null +++ b/src/dawnliminal/vnscenes/ScenePrologue8.hpp @@ -0,0 +1,82 @@ +#pragma once + +#include "scenes/SceneMonologue.hpp" +#include "games/vn/events/VNDummyEvent.hpp" +#include "games/vn/events/VNSetDefaultFontEvent.hpp" +#include "games/vn/events/VNTextEvent.hpp" +#include "games/vn/events/VNChoiceEvent.hpp" +#include "games/vn/events/VNIfEvent.hpp" +#include "games/vn/events/VNSceneChangeEvent.hpp" +#include "games/vn/events/VNChoiceSetEvent.hpp" +#include "vnscenes/ScenePrologue9.hpp" + +namespace Dawn { + class ScenePrologue8CustomEventForChoiceSet : public VNChoiceEvent { + protected: + void onStart() override { + auto scene = dynamic_castthis->manager->getScene(); + assertNotNull(scene, "ScenePrologue8CustomEventForChoiceSet - Scene is null?"); + + this->choices = scene->remainingChoices; + this->key = "killer"; + this->text = "It is..."; + + VNChoiceSetEvent::onStart(); + } + }; + + class ScenePrologue8CustomEventForAfterChoice : public VNEvent { + protected: + void onStart() override { + auto prev = dynamic_cast(this->previous); + assertNotNull(prev, "ScenePrologue8CustomEventForAfterChoice - Previous is null?"); + auto scene = dynamic_castthis->manager->getScene(); + assertNotNull(scene, "ScenePrologue8CustomEventForAfterChoice - Scene is null?"); + + auto key = prev->getChoiceKey(); + scene->remainingChoices.erase(key); + + this->next(); + } + }; + + class ScenePrologue8 : public SceneMonologue { + public: + std::map remainingChoices; + + ScenePrologue8(DawnGame *game) : SceneMonologue(game) { + } + + std::vector getRequiredAssets() override { + auto man = &this->game->assetManager; + std::vector assets = SceneMonologue::getRequiredAssets(); + return assets; + } + + void stage() override { + SceneMonologue::stage(); + + remainingChoices["ave"] = "Ave?"; + remainingChoices["ronin"] = "Ronin?"; + remainingChoices["craig"] = "Craig?"; + + auto man = &this->game->assetManager; + assertNotNull(vnManager, "VNSceneGenInit - VN Manager is null?"); + VNEvent *previous = vnManager->createEvent(); + auto eventStart = previous; + + auto event0 = vnManager->createEvent(); + event0->font = "{{ text }}"; + + auto event1 = vnManager->createEvent(); + auto event2 = vnManager->createEvent(); + auto sceneChange = vnManager->createEvent>(); + + eventStart->then(event0); + event0->then(event1); + event1->then(event2); + event2->then(sceneChange); + vnManager->setEvent(eventStart); + } + }; +} diff --git a/src/dawnosx/host/DawnHostOSX.cpp b/src/dawnosx/host/DawnHostOSX.cpp index 9c1084b2..a90f6fa0 100644 --- a/src/dawnosx/host/DawnHostOSX.cpp +++ b/src/dawnosx/host/DawnHostOSX.cpp @@ -10,6 +10,8 @@ using namespace Dawn; int32_t main(int32_t argc, char **args) { int32_t result; + memoryInit(); + // Create the host auto host = new DawnHost(); auto game = new DawnGame(host); @@ -40,9 +42,7 @@ int32_t main(int32_t argc, char **args) { delete game; delete host; - #if DAWN_DEBUG_BUILD - assertTrue(dawnAllocatedItemCount == 0, "DawnHostOSX: Failed to free all allocated items."); - #endif + memoryDispose(); // Success return 0; diff --git a/src/dawnshared/util/Xml.cpp b/src/dawnshared/util/Xml.cpp index 0aac2116..08dd8b55 100644 --- a/src/dawnshared/util/Xml.cpp +++ b/src/dawnshared/util/Xml.cpp @@ -281,7 +281,8 @@ Xml * Xml::getFirstChildOfType(std::string type) { Xml::~Xml() { auto it = this->children.begin(); while(it != this->children.end()) { - delete *it; + Xml *child = *it; + delete child; ++it; } } \ No newline at end of file diff --git a/src/dawnshared/util/Xml.hpp b/src/dawnshared/util/Xml.hpp index 0b9f085a..7eb3db7c 100644 --- a/src/dawnshared/util/Xml.hpp +++ b/src/dawnshared/util/Xml.hpp @@ -5,6 +5,7 @@ #pragma once #include "dawnsharedlibs.hpp" +#include "util/memory.hpp" #include "assert/assert.hpp" #include "util/array.hpp" diff --git a/src/dawnshared/util/memory.cpp b/src/dawnshared/util/memory.cpp index 601e318c..93b28940 100644 --- a/src/dawnshared/util/memory.cpp +++ b/src/dawnshared/util/memory.cpp @@ -6,60 +6,40 @@ #include "memory.hpp" #include "assert/assert.hpp" -uint64_t dawnAllocatedItemCount = -1; - -void memoryInit() { - dawnAllocatedItemCount = 0; +void * operator new(size_t size) noexcept { + return memoryAllocate(size); } -void memoryDispose() { - assertTrue(dawnAllocatedItemCount <= 0, "memoryDispose: !!!Leaked memory detected (not enough free)!!!"); - assertTrue(dawnAllocatedItemCount >= 0, "memoryDispose: !!!Leaked memory detected (too much free)!!!"); - dawnAllocatedItemCount = -1; +void operator delete (void *p) noexcept { + return memoryFree(p); } void * memoryAllocate(const size_t size) { - assertTrue(dawnAllocatedItemCount >= 0, "memoryAllocate: Either a memory leak or memoryInit was not called."); assertTrue(size >= 0, "memoryAllocate: size must be greater than 0 or equal to."); - if(size == 0) { - // Technically this is an implementation specific case, I think it should - // basically be undefined behaviour tbh. - return memoryCallMalloc(size); - } - dawnAllocatedItemCount++; - auto x = (void *)memoryCallMalloc(size); + void *x = (void *)memoryCallMalloc(size); assertNotNull(x, "memoryAllocate: Failed to allocate memory"); return x; } void * memoryAllocateEmpty(const size_t count, const size_t size) { - assertTrue(dawnAllocatedItemCount >= 0, "memoryAllocateEmpty: Either a memory leak or memoryInit was not called."); assertTrue(count >= 0, "memoryAllocateEmpty: count must be greater than or equal to 0"); assertTrue(size >= 0, "memoryAllocateEmpty: size must be greater than or equal to 0"); - if(count == 0 || size == 0) { - // Technically this is an implementation specific case, I think it should - // basically be undefined behaviour tbh. - return memoryCallCalloc(count, size); - } - dawnAllocatedItemCount++; - auto x = (void*)memoryCallCalloc(count, size); + void *x = (void *)memoryCallCalloc(count, size); + assertNotNull(x, "memoryAllocateEmpty: Failed to allocate memory"); return x; } void memoryFree(void *pointer) { - assertTrue(dawnAllocatedItemCount > 0, "memoryFree: Either a memory leak or memoryInit was not called."); - if(pointer == nullptr || pointer == NULL) { - // Technically this is an implementation specific case, I think it should - // basically be undefined behaviour tbh. - return memoryCallFree(pointer); - } - dawnAllocatedItemCount--; memoryCallFree(pointer); } +void * memoryReallocate(void *ptr, size_t newSize) { + assertTrue(newSize >= 0, "memoryReallocate: newSize must be greater than or equal to 0"); + return memoryCallRealloc(ptr, newSize); +} + void memoryCopy(void *source, void *destination, size_t size) { - assertTrue(dawnAllocatedItemCount >= 0, "memoryAllocate: Either a memory leak or memoryInit was not called."); assertNotNull(source, "memoryCopy: source must not be null"); assertNotNull(destination, "memoryCopy: destination must not be null"); assertTrue(destination != source, "memoryCopy: destination must not be source"); @@ -68,32 +48,21 @@ void memoryCopy(void *source, void *destination, size_t size) { } int32_t memoryCompare(const void *left, const void *right, const size_t size) { - assertTrue(dawnAllocatedItemCount >= 0, "memoryAllocate: Either a memory leak or memoryInit was not called."); assertTrue(left != right, "memoryCompare: left must not be right"); assertTrue(size > 0, "memoryCompare: size must be greater than 0"); return memcmp(left, right, size); } void memorySet(void *dest, uint8_t data, size_t length) { - assertTrue(dawnAllocatedItemCount >= 0, "memoryAllocate: Either a memory leak or memoryInit was not called."); assertNotNull(dest, "memorySet: dest must not be null"); assertTrue(length > 0, "memorySet: length must be greater than 0"); memset(dest, data, length); } -size_t memoryReallocate(void **pointer, size_t currentSize, size_t newSize) { - // Create the new buffer - void *newBuffer = memoryAllocate(newSize); - memoryCopy(*pointer, newBuffer, currentSize); - memoryFree(*pointer); - *pointer = newBuffer; - return newSize; +void memoryInit() { + } -void * operator new(size_t size) { - return memoryAllocate(size); -} - -void operator delete(void *pointer) { - memoryFree(pointer); +void memoryDispose() { + } \ No newline at end of file diff --git a/src/dawnshared/util/memory.hpp b/src/dawnshared/util/memory.hpp index 9355afce..1650b250 100644 --- a/src/dawnshared/util/memory.hpp +++ b/src/dawnshared/util/memory.hpp @@ -8,7 +8,7 @@ #pragma once #include "dawnsharedlibs.hpp" -extern uint64_t dawnAllocatedItemCount; +#define DAWN_MEMORY_TRACKING 1 static void * memoryCallMalloc(const size_t size) { return malloc(size); @@ -22,15 +22,9 @@ static void memoryCallFree(void *p) { free(p); } -/** - * Initializes the memory management system. - */ -void memoryInit(); - -/** - * Disposes of the memory management system. - */ -void memoryDispose(); +static void * memoryCallRealloc(void *p, size_t newSize) { + return realloc(p, newSize); +} /** * Allocate some space in memory to use for your needs. Memory allocation may @@ -57,6 +51,16 @@ void * memoryAllocateEmpty(const size_t count, const size_t size); */ void memoryFree(void *pointer); +/** + * Reallocate a part of memory. Reallocation simply creates a new buffer that + * will take all of the existing contents and then free's the original buffer. + * + * @param pointer Pointer to pointer in memory that you wish to re-allocate. + * @param newSize The new size of the buffer. + * @return Pointer to the new buffer. + */ +void * memoryReallocate(void *pointer, size_t newSize); + /** * Copies data from one buffer to another. Typically used for array operations. * @@ -86,32 +90,11 @@ int32_t memoryCompare(const void *left, const void *right, const size_t size); void memorySet(void *dest, uint8_t data, size_t length); /** - * Reallocate a part of memory. Reallocation simply creates a new buffer that - * will take all of the existing contents and then free's the original buffer. - * - * @param pointer Pointer to pointer in memory that you wish to re-allocate. - * @param currentSize Current size of the buffer that the pointer points to. - * @param newSize The new size of the buffer. - * @return The new size param you provided. + * Initializes the memory management system. */ -size_t memoryReallocate(void **pointer, size_t currentSize, size_t newSize); +void memoryInit(); /** - * Overloads the new operator to use our memory allocation. - * - * @param size Size of the memory to allocate. - * @return Pointer to the memory. + * Disposes of the memory management system. */ -void * operator new(size_t size); - -/** - * Overloads the delete operator to use our memory allocation. - * - * @param p Pointer to the memory to free. - */ -void operator delete(void * p); - -// Override default memory functions -#define malloc(n) memoryAllocate(n) -#define free(n) memoryFree(n) -#define calloc(n, s) memoryAllocateEmpty(n, s) \ No newline at end of file +void memoryDispose(); \ No newline at end of file diff --git a/src/dawntools/truetypetool/TrueTypeTool.cpp b/src/dawntools/truetypetool/TrueTypeTool.cpp index 33db3e7e..90810cac 100644 --- a/src/dawntools/truetypetool/TrueTypeTool.cpp +++ b/src/dawntools/truetypetool/TrueTypeTool.cpp @@ -151,12 +151,7 @@ int32_t TrueTypeTool::start() { } // Cleanup - itFile = files.begin(); - while(itFile != files.end()) { - auto file = *itFile; - delete file; - ++itFile; - } + cleanupFiles(); // Done fileOut.close(); diff --git a/src/dawntools/vnscenetool/events/VNChoiceEventParser.cpp b/src/dawntools/vnscenetool/events/VNChoiceEventParser.cpp index 1bfda236..c9a24e15 100644 --- a/src/dawntools/vnscenetool/events/VNChoiceEventParser.cpp +++ b/src/dawntools/vnscenetool/events/VNChoiceEventParser.cpp @@ -38,7 +38,7 @@ int32_t VNChoiceParser::onParse( if(ret != 0) return ret; out->texts.push_back(text); } else { - *error = "Unknown child node '" + child->node + "'"; + *error = "Unknown child node for choice event '" + child->node + "'"; return -1; } @@ -98,7 +98,7 @@ int32_t VNChoicesEventParser::onParse( out->choices.push_back(choice); } else { - *error = "Unknown child node '" + child->node + "'"; + *error = "Unknown child node for choices event '" + child->node + "'"; return -1; } diff --git a/src/dawntools/vnscenetool/events/VNTextEventParser.cpp b/src/dawntools/vnscenetool/events/VNTextEventParser.cpp index d92ef3ec..86d2daa5 100644 --- a/src/dawntools/vnscenetool/events/VNTextEventParser.cpp +++ b/src/dawntools/vnscenetool/events/VNTextEventParser.cpp @@ -71,7 +71,7 @@ int32_t VNTextEventParser::onParse( if(ret != 0) return ret; out->texts.push_back(text); } else { - *error = "Unknown child node '" + child->node + "'"; + *error = "Unknown child node for text event '" + child->node + "'"; return -1; }