From 28df0148b14136671ef7eeb7c28863014237b097 Mon Sep 17 00:00:00 2001 From: Misa Date: Sun, 21 Jan 2024 10:48:39 -0800 Subject: [PATCH] Transfer adjust call to applyposition This transfers the responsibility of the adjust() call to applyposition(). This is because cutscene text boxes (TEXTTRANSLATE_CUTSCENE) will have adjust() called, but all other text boxes won't. And I can't place the adjust() call inside applyposition(), because adjust() also calls applyposition(), and that leads to an infinite loop which leads to a stack overflow, so I had to remove the applyposition() call from adjust(), and replace the other existing call to Graphics::textboxadjust() with Graphics::textboxapplyposition(), and then remove Graphics::textboxadjust() function because it's no longer used. --- desktop_version/src/Graphics.cpp | 11 ----------- desktop_version/src/Graphics.h | 2 -- desktop_version/src/Script.cpp | 2 +- desktop_version/src/Textbox.cpp | 5 ++++- 4 files changed, 5 insertions(+), 15 deletions(-) diff --git a/desktop_version/src/Graphics.cpp b/desktop_version/src/Graphics.cpp index a862c957..8453115e 100644 --- a/desktop_version/src/Graphics.cpp +++ b/desktop_version/src/Graphics.cpp @@ -1506,17 +1506,6 @@ void Graphics::textboxapplyposition(void) textboxes[m].applyposition(); } -void Graphics::textboxadjust(void) -{ - if (!INBOUNDS_VEC(m, textboxes)) - { - vlog_error("textboxadjust() out-of-bounds!"); - return; - } - - textboxes[m].adjust(); -} - void Graphics::setlinegap(int customvalue) { if (!INBOUNDS_VEC(m, textboxes)) diff --git a/desktop_version/src/Graphics.h b/desktop_version/src/Graphics.h index 4916f15a..b7187396 100644 --- a/desktop_version/src/Graphics.h +++ b/desktop_version/src/Graphics.h @@ -127,8 +127,6 @@ public: void textboxapplyposition(void); - void textboxadjust(void); - void addline(const std::string& t); void setlarge(bool large); diff --git a/desktop_version/src/Script.cpp b/desktop_version/src/Script.cpp index a49a4906..02bfba01 100644 --- a/desktop_version/src/Script.cpp +++ b/desktop_version/src/Script.cpp @@ -766,7 +766,7 @@ void scriptclass::run(void) } graphics.textboxtranslate(TEXTTRANSLATE_CUTSCENE, NULL); - graphics.textboxadjust(); + graphics.textboxapplyposition(); if (words[0] == "speak_active") { graphics.textboxactive(); diff --git a/desktop_version/src/Textbox.cpp b/desktop_version/src/Textbox.cpp index 7e5d2c01..37f9ed8c 100644 --- a/desktop_version/src/Textbox.cpp +++ b/desktop_version/src/Textbox.cpp @@ -87,12 +87,15 @@ void textboxclass::applyposition(void) { centery(); } + if (translate == TEXTTRANSLATE_CUTSCENE) + { + adjust(); + } } void textboxclass::adjust(void) { resize(); - applyposition(); if (xp < 10) xp = 10; if (yp < 10) yp = 10; if (xp + w > 310) xp = 310 - w;