mirror of
https://github.com/libretro/scummvm.git
synced 2025-04-18 06:31:02 +00:00
TITANIC: Adding PET Control bot methods
This commit is contained in:
parent
6f063c4703
commit
ad873455cf
@ -1055,6 +1055,16 @@ CTreeItem *CGameObject::petContainerRemove(CGameObject *obj) {
|
||||
return item;
|
||||
}
|
||||
|
||||
bool CGameObject::petDismissBot(const CString &name) {
|
||||
CPetControl *pet = getPetControl();
|
||||
return pet ? pet->dismissBot(name) : false;
|
||||
}
|
||||
|
||||
bool CGameObject::petDoorOrBellbotPresent() const {
|
||||
CPetControl *pet = getPetControl();
|
||||
return pet ? pet->isDoorOrBellbotPresent() : false;
|
||||
}
|
||||
|
||||
void CGameObject::petDisplayMessage(int unused, const CString &msg) {
|
||||
petDisplayMessage(msg);
|
||||
}
|
||||
|
@ -543,6 +543,16 @@ public:
|
||||
|
||||
CTreeItem *petContainerRemove(CGameObject *obj);
|
||||
|
||||
/**
|
||||
* Dismiss a bot
|
||||
*/
|
||||
bool petDismissBot(const CString &name);
|
||||
|
||||
/**
|
||||
* Is Doorbot or Bellbot present in the current view
|
||||
*/
|
||||
bool petDoorOrBellbotPresent() const;
|
||||
|
||||
/**
|
||||
* Display a message in the PET
|
||||
*/
|
||||
|
@ -569,9 +569,9 @@ void CPetControl::summonBot(const CString &name, int val) {
|
||||
}
|
||||
|
||||
void CPetControl::onSummonBot(const CString &name, int val) {
|
||||
CGameObject *bot = findObject(name, getHiddenRoom());
|
||||
CGameObject *bot = findBot(name, getHiddenRoom());
|
||||
if (!bot) {
|
||||
bot = findObject(name, getRoot());
|
||||
bot = findBot(name, getRoot());
|
||||
}
|
||||
|
||||
if (bot) {
|
||||
@ -582,6 +582,46 @@ void CPetControl::onSummonBot(const CString &name, int val) {
|
||||
}
|
||||
}
|
||||
|
||||
bool CPetControl::dismissBot(const CString &name) {
|
||||
CGameManager *gameManager = getGameManager();
|
||||
if (!gameManager)
|
||||
return false;
|
||||
CViewItem *view = gameManager->getView();
|
||||
if (!view)
|
||||
return false;
|
||||
|
||||
bool result = false;
|
||||
CDismissBotMsg dismissMsg;
|
||||
for (CTreeItem *treeItem = view->getFirstChild(); treeItem;
|
||||
treeItem = treeItem->scan(view)) {
|
||||
if (!treeItem->getName().compareToIgnoreCase(name))
|
||||
dismissMsg.execute(treeItem);
|
||||
else
|
||||
result = true;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
bool CPetControl::isDoorOrBellbotPresent() const {
|
||||
CGameManager *gameManager = getGameManager();
|
||||
if (!gameManager)
|
||||
return false;
|
||||
CViewItem *view = gameManager->getView();
|
||||
if (!view)
|
||||
return false;
|
||||
|
||||
for (CTreeItem *treeItem = view->getFirstChild(); treeItem;
|
||||
treeItem = treeItem->scan(view)) {
|
||||
CString name = treeItem->getName();
|
||||
if (static_cast<CGameObject *>(treeItem) &&
|
||||
(name.contains("Doorbot") || name.contains("BellBot")))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void CPetControl::startPetTimer(uint timerIndex, uint firstDuration, uint duration, CPetSection *target) {
|
||||
stopPetTimer(timerIndex);
|
||||
_timers[timerIndex]._id = addTimer(timerIndex, firstDuration, duration);
|
||||
@ -600,7 +640,7 @@ void CPetControl::setTimer44(int id, int val) {
|
||||
getGameManager()->setTimer44(id, val);
|
||||
}
|
||||
|
||||
CGameObject *CPetControl::findObject(const CString &name, CTreeItem *root) {
|
||||
CGameObject *CPetControl::findBot(const CString &name, CTreeItem *root) {
|
||||
for (CTreeItem *item = root; item; item = item->scan(root)) {
|
||||
if (!item->getName().compareToIgnoreCase(name)) {
|
||||
CGameObject *obj = static_cast<CGameObject *>(item);
|
||||
|
@ -98,12 +98,12 @@ private:
|
||||
*/
|
||||
bool isBotInView(const CString &name) const;
|
||||
|
||||
void setTimer44(int id, int val);
|
||||
|
||||
/**
|
||||
* Find an object under a given root
|
||||
* Find a bot under a given root
|
||||
*/
|
||||
CGameObject *findObject(const CString &name, CTreeItem *root);
|
||||
CGameObject *findBot(const CString &name, CTreeItem *root);
|
||||
|
||||
void setTimer44(int id, int val);
|
||||
protected:
|
||||
bool MouseButtonDownMsg(CMouseButtonDownMsg *msg);
|
||||
bool MouseDragStartMsg(CMouseDragStartMsg *msg);
|
||||
@ -301,6 +301,16 @@ public:
|
||||
*/
|
||||
void onSummonBot(const CString &name, int val);
|
||||
|
||||
/**
|
||||
* Dismiss an NPC
|
||||
*/
|
||||
bool dismissBot(const CString &name);
|
||||
|
||||
/**
|
||||
* Returns true if Doorbot or Bellbot present
|
||||
*/
|
||||
bool isDoorOrBellbotPresent() const;
|
||||
|
||||
/**
|
||||
* Start a timer for a Pet Area
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user