BaseSprite *AdActor::getTalkStance(const char *stance) { // forced stance? if (_forcedTalkAnimName && !_forcedTalkAnimUsed) { _forcedTalkAnimUsed = true; delete _animSprite; _animSprite = new BaseSprite(_gameRef, this); if (_animSprite) { bool res = _animSprite->loadFile(_forcedTalkAnimName); if (DID_FAIL(res)) { _gameRef->LOG(res, "AdActor::GetTalkStance: error loading talk sprite (object:\"%s\" sprite:\"%s\")", getName(), _forcedTalkAnimName); delete _animSprite; _animSprite = nullptr; } else { return _animSprite; } } } // old way if (_talkSprites.size() > 0 || _talkSpritesEx.size() > 0) { return getTalkStanceOld(stance); } // new way BaseSprite *ret = nullptr; // do we have an animation with this name? AdSpriteSet *anim = getAnimByName(stance); if (anim) { ret = anim->getSprite(_dir); } // not - get a random talk if (!ret) { BaseArray<AdSpriteSet *> talkAnims; for (uint32 i = 0; i < _anims.size(); i++) { if (_talkAnimName.compareToIgnoreCase(_anims[i]->getName()) == 0) { talkAnims.add(_anims[i]); } } if (talkAnims.size() > 0) { int rnd = BaseEngine::instance().randInt(0, talkAnims.size() - 1); ret = talkAnims[rnd]->getSprite(_dir); } else { if (_standSprite) { ret = _standSprite->getSprite(_dir); } else { anim = getAnimByName(_idleAnimName); if (anim) { ret = anim->getSprite(_dir); } } } } return ret; }
BaseObject *AdResponseBox::getPrevAccessObject(BaseObject *currObject) { BaseArray<UIObject *> objects; getObjects(objects, true); if (objects.size() == 0) { return nullptr; } else { if (currObject != nullptr) { for (int i = objects.size() - 1; i >= 0; i--) { if (objects[i] == currObject) { if (i > 0) { return objects[i - 1]; } else { break; } } } } return objects[objects.size() - 1]; } return nullptr; }
BaseObject *AdResponseBox::getNextAccessObject(BaseObject *currObject) { BaseArray<UIObject *> objects; getObjects(objects, true); if (objects.size() == 0) { return nullptr; } else { if (currObject != nullptr) { for (uint32 i = 0; i < objects.size(); i++) { if (objects[i] == currObject) { if (i < objects.size() - 1) { return objects[i + 1]; } else { break; } } } } return objects[0]; } return nullptr; }