Skip to content

Commit

Permalink
WINTERMUTE: Privatize members of AdResponseBox
Browse files Browse the repository at this point in the history
  • Loading branch information
somaen committed Dec 9, 2012
1 parent 7ff7431 commit 2ede3f5
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 26 deletions.
24 changes: 12 additions & 12 deletions engines/wintermute/ad/ad_game.cpp
Expand Up @@ -542,7 +542,7 @@ bool AdGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
res->_responseType = RESPONSE_ONCE_GAME;
}

_responseBox->_responses.add(res);
_responseBox->addResponse(res);
}
} else {
script->runtimeError("Game.AddResponse: response box is not defined");
Expand Down Expand Up @@ -584,15 +584,15 @@ bool AdGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
if (_responseBox) {
_responseBox->weedResponses();

if (_responseBox->_responses.size() == 0) {
if (_responseBox->getNumResponses() == 0) {
stack->pushNULL();
return STATUS_OK;
}


if (_responseBox->_responses.size() == 1 && autoSelectLast) {
stack->pushInt(_responseBox->_responses[0]->_iD);
_responseBox->handleResponse(_responseBox->_responses[0]);
if (_responseBox->getNumResponses() == 1 && autoSelectLast) {
stack->pushInt(_responseBox->getIdForResponseNum(0));
_responseBox->handleResponseNum(0);
_responseBox->clearResponses();
return STATUS_OK;
}
Expand All @@ -617,7 +617,7 @@ bool AdGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
stack->correctParams(0);
if (_responseBox) {
_responseBox->weedResponses();
stack->pushInt(_responseBox->_responses.size());
stack->pushInt(_responseBox->getNumResponses());
} else {
script->runtimeError("Game.GetNumResponses: response box is not defined");
stack->pushNULL();
Expand Down Expand Up @@ -754,8 +754,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->_window) {
stack->pushNative(_responseBox->_window, true);
if (_responseBox && _responseBox->getResponseWindow()) {
stack->pushNative(_responseBox->getResponseWindow(), true);
} else {
stack->pushNULL();
}
Expand Down Expand Up @@ -983,10 +983,10 @@ ScValue *AdGame::scGetProperty(const Common::String &name) {
// LastResponse (RO)
//////////////////////////////////////////////////////////////////////////
else if (name == "LastResponse") {
if (!_responseBox || !_responseBox->_lastResponseText) {
if (!_responseBox || !_responseBox->getLastResponseText()) {
_scValue->setString("");
} else {
_scValue->setString(_responseBox->_lastResponseText);
_scValue->setString(_responseBox->getLastResponseText());
}
return _scValue;
}
Expand All @@ -995,10 +995,10 @@ ScValue *AdGame::scGetProperty(const Common::String &name) {
// LastResponseOrig (RO)
//////////////////////////////////////////////////////////////////////////
else if (name == "LastResponseOrig") {
if (!_responseBox || !_responseBox->_lastResponseTextOrig) {
if (!_responseBox || !_responseBox->getLastResponseTextOrig()) {
_scValue->setString("");
} else {
_scValue->setString(_responseBox->_lastResponseTextOrig);
_scValue->setString(_responseBox->getLastResponseTextOrig());
}
return _scValue;
}
Expand Down
2 changes: 1 addition & 1 deletion engines/wintermute/ad/ad_response.h
Expand Up @@ -43,7 +43,7 @@ class AdResponse : public BaseObject {
bool setIconHover(const char *filename);
bool setIconPressed(const char *filename);
void setText(const char *text);
int _iD;
int32 _iD;
BaseSprite *_icon;
BaseSprite *_iconHover;
BaseSprite *_iconPressed;
Expand Down
27 changes: 27 additions & 0 deletions engines/wintermute/ad/ad_response_box.cpp
Expand Up @@ -96,6 +96,9 @@ AdResponseBox::~AdResponseBox() {
_waitingScript = NULL;
}

uint32 AdResponseBox::getNumResponses() const {
return _responses.size();
}

//////////////////////////////////////////////////////////////////////////
void AdResponseBox::clearResponses() {
Expand Down Expand Up @@ -627,6 +630,30 @@ 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(AdResponse *response) {
_responses.add(response);
}

int32 AdResponseBox::getIdForResponseNum(uint32 num) const {
assert(num < _responses.size());
return _responses[num]->_iD;
}

bool AdResponseBox::handleResponseNum(uint32 num) {
return handleResponse(_responses[num]);
}

//////////////////////////////////////////////////////////////////////////
bool AdResponseBox::handleResponse(AdResponse *response) {
Expand Down
38 changes: 25 additions & 13 deletions engines/wintermute/ad/ad_response_box.h
Expand Up @@ -44,10 +44,14 @@ class AdResponseBox : public BaseObject {
BaseObject *getPrevAccessObject(BaseObject *CurrObject);
bool getObjects(BaseArray<UIObject *> &objects, bool interactiveOnly);

void addResponse(AdResponse* response);
bool handleResponse(AdResponse *response);
bool handleResponseNum(uint32 num);
int32 getIdForResponseNum(uint32 num) const;
void setLastResponseText(const char *text, const char *textOrig);
char *_lastResponseText;
char *_lastResponseTextOrig;
const char *getLastResponseText() const;
const char *getLastResponseTextOrig() const;

DECLARE_PERSISTENT(AdResponseBox, BaseObject)
ScScript *_waitingScript;
virtual bool listen(BaseScriptHolder *param1, uint32 param2);
Expand All @@ -59,27 +63,35 @@ class AdResponseBox : public BaseObject {

bool weedResponses();
bool display();
int _spacing;
int _scrollOffset;
BaseFont *_fontHover;
BaseFont *_font;

bool createButtons();
bool invalidateButtons();
void clearButtons();
void clearResponses();
AdResponseBox(BaseGame *inGame);
virtual ~AdResponseBox();
BaseArray<AdResponse *> _responses;
BaseArray<UIButton *> _respButtons;
UIWindow *_window;
UIWindow *_shieldWindow;

bool loadFile(const char *filename);
bool loadBuffer(byte *buffer, bool complete = true);
virtual bool saveAsText(BaseDynamicBuffer *buffer, int indent);

UIWindow *getResponseWindow();
uint32 getNumResponses() const;
private:
int _spacing;
int _scrollOffset;
BaseFont *_fontHover;
BaseFont *_font;
bool _horizontal;
Rect32 _responseArea;
int _verticalAlign;
TTextAlign _align;
bool loadFile(const char *filename);
bool loadBuffer(byte *buffer, bool complete = true);
virtual bool saveAsText(BaseDynamicBuffer *buffer, int indent);
BaseArray<UIButton *> _respButtons;
BaseArray<AdResponse *> _responses;
UIWindow *_shieldWindow;
char *_lastResponseText;
char *_lastResponseTextOrig;
UIWindow *_window;
};

} // end of namespace Wintermute
Expand Down

0 comments on commit 2ede3f5

Please sign in to comment.