[Scummvm-git-logs] scummvm master -> 8a81b01d7e877868a606b44283485603f259810f
aquadran
noreply at scummvm.org
Tue Aug 12 12:30:18 UTC 2025
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
8a81b01d7e WINTERMUTE: Synced with original code on ad_response.
Commit: 8a81b01d7e877868a606b44283485603f259810f
https://github.com/scummvm/scummvm/commit/8a81b01d7e877868a606b44283485603f259810f
Author: PaweÅ KoÅodziejski (aquadran at gmail.com)
Date: 2025-08-12T14:30:11+02:00
Commit Message:
WINTERMUTE: Synced with original code on ad_response.
Changed paths:
engines/wintermute/ad/ad_game.cpp
engines/wintermute/ad/ad_response.cpp
engines/wintermute/ad/ad_response.h
engines/wintermute/ad/ad_response_box.cpp
engines/wintermute/ad/ad_response_box.h
diff --git a/engines/wintermute/ad/ad_game.cpp b/engines/wintermute/ad/ad_game.cpp
index 6aaf1c2f1fb..571195f2d44 100644
--- a/engines/wintermute/ad/ad_game.cpp
+++ b/engines/wintermute/ad/ad_game.cpp
@@ -577,13 +577,9 @@ bool AdGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
if (_responseBox) {
AdResponse *res = new AdResponse(_gameRef);
if (res) {
- res->setID(id);
-
- char *expandedText = new char[strlen(text) + 1];
- Common::strlcpy(expandedText, text, strlen(text) + 1);
- expandStringByStringTable(&expandedText);
- res->setText(expandedText);
- delete[] expandedText;
+ res->_iD = id;
+ res->setText(text);
+ expandStringByStringTable(&res->_text);
if (!val1->isNULL()) {
res->setIcon(val1->getString());
@@ -604,7 +600,7 @@ bool AdGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
res->_responseType = RESPONSE_ONCE_GAME;
}
- _responseBox->addResponse(res);
+ _responseBox->_responses.add(res);
}
} else {
script->runtimeError("Game.AddResponse: response box is not defined");
@@ -646,15 +642,15 @@ bool AdGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
if (_responseBox) {
_responseBox->weedResponses();
- if (_responseBox->getNumResponses() == 0) {
+ if (_responseBox->_responses.getSize() == 0) {
stack->pushNULL();
return STATUS_OK;
}
- if (_responseBox->getNumResponses() == 1 && autoSelectLast) {
- stack->pushInt(_responseBox->getIdForResponseNum(0));
- _responseBox->handleResponseNum(0);
+ if (_responseBox->_responses.getSize() == 1 && autoSelectLast) {
+ stack->pushInt(_responseBox->_responses[0]->_iD);
+ _responseBox->handleResponse(_responseBox->_responses[0]);
_responseBox->clearResponses();
return STATUS_OK;
}
@@ -679,7 +675,7 @@ bool AdGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
stack->correctParams(0);
if (_responseBox) {
_responseBox->weedResponses();
- stack->pushInt(_responseBox->getNumResponses());
+ stack->pushInt(_responseBox->_responses.getSize());
} else {
script->runtimeError("Game.GetNumResponses: response box is not defined");
stack->pushNULL();
@@ -816,8 +812,8 @@ bool AdGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
//////////////////////////////////////////////////////////////////////////
else if (strcmp(name, "GetResponsesWindow") == 0 || strcmp(name, "GetResponseWindow") == 0) {
stack->correctParams(0);
- if (_responseBox && _responseBox->getResponseWindow()) {
- stack->pushNative(_responseBox->getResponseWindow(), true);
+ if (_responseBox && _responseBox->_window) {
+ stack->pushNative(_responseBox->_window, true);
} else {
stack->pushNULL();
}
@@ -1058,10 +1054,10 @@ ScValue *AdGame::scGetProperty(const Common::String &name) {
// LastResponse (RO)
//////////////////////////////////////////////////////////////////////////
else if (name == "LastResponse") {
- if (!_responseBox || !_responseBox->getLastResponseText()) {
+ if (!_responseBox || !_responseBox->_lastResponseText) {
_scValue->setString("");
} else {
- _scValue->setString(_responseBox->getLastResponseText());
+ _scValue->setString(_responseBox->_lastResponseText);
}
return _scValue;
}
@@ -1070,10 +1066,10 @@ ScValue *AdGame::scGetProperty(const Common::String &name) {
// LastResponseOrig (RO)
//////////////////////////////////////////////////////////////////////////
else if (name == "LastResponseOrig") {
- if (!_responseBox || !_responseBox->getLastResponseTextOrig()) {
+ if (!_responseBox || !_responseBox->_lastResponseTextOrig) {
_scValue->setString("");
} else {
- _scValue->setString(_responseBox->getLastResponseTextOrig());
+ _scValue->setString(_responseBox->_lastResponseTextOrig);
}
return _scValue;
}
diff --git a/engines/wintermute/ad/ad_response.cpp b/engines/wintermute/ad/ad_response.cpp
index 53c1a6045c1..911af15771f 100644
--- a/engines/wintermute/ad/ad_response.cpp
+++ b/engines/wintermute/ad/ad_response.cpp
@@ -142,36 +142,4 @@ bool AdResponse::persist(BasePersistenceManager *persistMgr) {
return STATUS_OK;
}
-void AdResponse::setID(int32 id) {
- _iD = id;
-}
-
-BaseSprite *AdResponse::getIcon() const {
- return _icon;
-}
-
-BaseSprite *AdResponse::getIconHover() const {
- return _iconHover;
-}
-
-BaseSprite *AdResponse::getIconPressed() const {
- return _iconPressed;
-}
-
-BaseFont *AdResponse::getFont() const {
- return _font;
-}
-
-int32 AdResponse::getID() const {
- return _iD;
-}
-
-const char *AdResponse::getText() const {
- return _text;
-}
-
-const char *AdResponse::getTextOrig() const {
- return _textOrig;
-}
-
} // End of namespace Wintermute
diff --git a/engines/wintermute/ad/ad_response.h b/engines/wintermute/ad/ad_response.h
index 546d229ff1b..d4c182371c1 100644
--- a/engines/wintermute/ad/ad_response.h
+++ b/engines/wintermute/ad/ad_response.h
@@ -42,29 +42,16 @@ public:
bool setIconHover(const char *filename);
bool setIconPressed(const char *filename);
void setText(const char *text);
- void setID(int32 id);
- BaseSprite *getIcon() const;
- BaseSprite *getIconHover() const;
- BaseSprite *getIconPressed() const;
- BaseFont *getFont() const;
- int32 getID() const;
-
- const char *getText() const;
- const char *getTextOrig() const;
-
- AdResponse(BaseGame *inGame);
- ~AdResponse() override;
- TResponseType _responseType;
-private:
+ int32 _iD;
BaseSprite *_icon;
BaseSprite *_iconHover;
BaseSprite *_iconPressed;
BaseFont *_font;
-
- int32 _iD;
-
char *_text;
char *_textOrig;
+ AdResponse(BaseGame *inGame);
+ ~AdResponse() override;
+ TResponseType _responseType;
};
} // End of namespace Wintermute
diff --git a/engines/wintermute/ad/ad_response_box.cpp b/engines/wintermute/ad/ad_response_box.cpp
index b5239eecf6f..e4cc763a4b2 100644
--- a/engines/wintermute/ad/ad_response_box.cpp
+++ b/engines/wintermute/ad/ad_response_box.cpp
@@ -96,10 +96,6 @@ AdResponseBox::~AdResponseBox() {
_waitingScript = nullptr;
}
-int32 AdResponseBox::getNumResponses() const {
- return _responses.getSize();
-}
-
//////////////////////////////////////////////////////////////////////////
void AdResponseBox::clearResponses() {
for (int32 i = 0; i < _responses.getSize(); i++) {
@@ -145,16 +141,16 @@ bool AdResponseBox::createButtons() {
btn->setSharedImages(true);
btn->_sharedCursors = true;
// iconic
- if (_responses[i]->getIcon()) {
- btn->setImage(_responses[i]->getIcon());
- if (_responses[i]->getIconHover()) {
- btn->setImageHover(_responses[i]->getIconHover());
+ if (_responses[i]->_icon) {
+ btn->setImage(_responses[i]->_icon);
+ if (_responses[i]->_iconHover) {
+ btn->setImageHover(_responses[i]->_iconHover);
}
- if (_responses[i]->getIconPressed()) {
- btn->setImagePress(_responses[i]->getIconPressed());
+ if (_responses[i]->_iconPressed) {
+ btn->setImagePress(_responses[i]->_iconPressed);
}
- btn->setCaption(_responses[i]->getText());
+ btn->setCaption(_responses[i]->_text);
if (_cursor) {
btn->_cursor = _cursor;
} else if (_gameRef->_activeCursor) {
@@ -163,7 +159,7 @@ bool AdResponseBox::createButtons() {
}
// textual
else {
- btn->setText(_responses[i]->getText());
+ btn->setText(_responses[i]->_text);
if (_font == nullptr) {
btn->setFont(_gameRef->getSystemFont());
} else {
@@ -173,8 +169,8 @@ bool AdResponseBox::createButtons() {
btn->setFontPress(btn->getFontHover());
btn->setTextAlign(_align);
- if (_responses[i]->getFont()) {
- btn->setFont(_responses[i]->getFont());
+ if (_responses[i]->_font) {
+ btn->setFont(_responses[i]->_font);
}
int width = _responseArea.right - _responseArea.left;
@@ -205,7 +201,7 @@ bool AdResponseBox::createButtons() {
_respButtons.add(btn);
if (_responseArea.bottom - _responseArea.top < btn->getHeight()) {
- _gameRef->LOG(0, "Warning: Response '%s' is too high to be displayed within response box. Correcting.", _responses[i]->getText());
+ _gameRef->LOG(0, "Warning: Response '%s' is too high to be displayed within response box. Correcting.", _responses[i]->_text);
_responseArea.bottom += (btn->getHeight() - (_responseArea.bottom - _responseArea.top));
}
}
@@ -578,7 +574,7 @@ bool AdResponseBox::listen(BaseScriptHolder *param1, uint32 param2) {
_scrollOffset++;
} else if (scumm_stricmp(obj->getName(), "response") == 0) {
if (_waitingScript) {
- _waitingScript->_stack->pushInt(_responses[param2]->getID());
+ _waitingScript->_stack->pushInt(_responses[param2]->_iD);
}
handleResponse(_responses[param2]);
_waitingScript = nullptr;
@@ -631,7 +627,7 @@ bool AdResponseBox::weedResponses() {
for (int32 i = 0; i < _responses.getSize(); i++) {
switch (_responses[i]->_responseType) {
case RESPONSE_ONCE:
- if (adGame->branchResponseUsed(_responses[i]->getID())) {
+ if (adGame->branchResponseUsed(_responses[i]->_iD)) {
delete _responses[i];
_responses.removeAt(i);
i--;
@@ -639,7 +635,7 @@ bool AdResponseBox::weedResponses() {
break;
case RESPONSE_ONCE_GAME:
- if (adGame->gameResponseUsed(_responses[i]->getID())) {
+ if (adGame->gameResponseUsed(_responses[i]->_iD)) {
delete _responses[i];
_responses.removeAt(i);
i--;
@@ -660,44 +656,19 @@ void AdResponseBox::setLastResponseText(const char *text, const char *textOrig)
BaseUtils::setString(&_lastResponseTextOrig, textOrig);
}
-const char *AdResponseBox::getLastResponseText() const {
- return _lastResponseText;
-}
-
-const char *AdResponseBox::getLastResponseTextOrig() const {
- return _lastResponseTextOrig;
-}
-
-UIWindow *AdResponseBox::getResponseWindow() {
- return _window;
-}
-
-void AdResponseBox::addResponse(const AdResponse *response) {
- _responses.add(response);
-}
-
-int32 AdResponseBox::getIdForResponseNum(int32 num) const {
- assert(num < _responses.getSize());
- return _responses[num]->getID();
-}
-
-bool AdResponseBox::handleResponseNum(int32 num) {
- return handleResponse(_responses[num]);
-}
-
//////////////////////////////////////////////////////////////////////////
bool AdResponseBox::handleResponse(const AdResponse *response) {
- setLastResponseText(response->getText(), response->getTextOrig());
+ setLastResponseText(response->_text, response->_textOrig);
AdGame *adGame = (AdGame *)_gameRef;
switch (response->_responseType) {
case RESPONSE_ONCE:
- adGame->addBranchResponse(response->getID());
+ adGame->addBranchResponse(response->_iD);
break;
case RESPONSE_ONCE_GAME:
- adGame->addGameResponse(response->getID());
+ adGame->addGameResponse(response->_iD);
break;
default:
debugC(kWintermuteDebugGeneral, "AdResponseBox::HandleResponse - Unhandled enum");
diff --git a/engines/wintermute/ad/ad_response_box.h b/engines/wintermute/ad/ad_response_box.h
index d9eebfdbcc7..7597eeefc15 100644
--- a/engines/wintermute/ad/ad_response_box.h
+++ b/engines/wintermute/ad/ad_response_box.h
@@ -43,14 +43,10 @@ public:
BaseObject *getPrevAccessObject(BaseObject *CurrObject);
bool getObjects(BaseArray<UIObject *> &objects, bool interactiveOnly);
- void addResponse(const AdResponse* response);
bool handleResponse(const AdResponse *response);
- bool handleResponseNum(int32 num);
- int32 getIdForResponseNum(int32 num) const;
void setLastResponseText(const char *text, const char *textOrig);
- const char *getLastResponseText() const;
- const char *getLastResponseTextOrig() const;
-
+ char *_lastResponseText;
+ char *_lastResponseTextOrig;
DECLARE_PERSISTENT(AdResponseBox, BaseObject)
ScScript *_waitingScript;
bool listen(BaseScriptHolder *param1, uint32 param2) override;
@@ -62,35 +58,27 @@ public:
bool weedResponses();
bool display() override;
-
+ int32 _spacing;
+ int32 _scrollOffset;
+ BaseFont *_fontHover;
+ BaseFont *_font;
bool createButtons();
bool invalidateButtons();
void clearButtons();
void clearResponses();
AdResponseBox(BaseGame *inGame);
~AdResponseBox() override;
-
- bool loadFile(const char *filename);
- bool loadBuffer(char *buffer, bool complete = true);
- bool saveAsText(BaseDynamicBuffer *buffer, int indent) override;
-
- UIWindow *getResponseWindow();
- int32 getNumResponses() const;
-private:
- int32 _spacing;
- int32 _scrollOffset;
- BaseFont *_fontHover;
- BaseFont *_font;
+ BaseArray<const AdResponse *> _responses;
+ BaseArray<UIButton *> _respButtons;
+ UIWindow *_window;
+ UIWindow *_shieldWindow;
bool _horizontal;
Rect32 _responseArea;
int32 _verticalAlign;
TTextAlign _align;
- BaseArray<UIButton *> _respButtons;
- BaseArray<const AdResponse *> _responses;
- UIWindow *_shieldWindow;
- char *_lastResponseText;
- char *_lastResponseTextOrig;
- UIWindow *_window;
+ bool loadFile(const char *filename);
+ bool loadBuffer(char *buffer, bool complete = true);
+ bool saveAsText(BaseDynamicBuffer *buffer, int indent) override;
};
} // End of namespace Wintermute
More information about the Scummvm-git-logs
mailing list