aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/core/game_object.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/titanic/core/game_object.cpp')
-rw-r--r--engines/titanic/core/game_object.cpp59
1 files changed, 33 insertions, 26 deletions
diff --git a/engines/titanic/core/game_object.cpp b/engines/titanic/core/game_object.cpp
index 3a5f6567a6..3e1cb0858c 100644
--- a/engines/titanic/core/game_object.cpp
+++ b/engines/titanic/core/game_object.cpp
@@ -59,11 +59,11 @@ CGameObject::CGameObject(): CNamedItem() {
_field34 = 0;
_field38 = 0;
_field3C = 0;
- _field40 = 0;
+ _nonvisual = false;
_field44 = 0xF0;
_field48 = 0xF0;
_field4C = 0xFF;
- _isMail = false;
+ _isPendingMail = false;
_destRoomFlags = 0;
_roomFlags = 0;
_visible = true;
@@ -106,7 +106,7 @@ void CGameObject::save(SimpleFile *file, int indent) {
file->writeNumberLine(_cursorId, indent + 1);
_movieClips.save(file, indent + 1);
file->writeNumberLine(_field60, indent + 1);
- file->writeNumberLine(_field40, indent + 1);
+ file->writeNumberLine(_nonvisual, indent + 1);
file->writeQuotedLine(_resource, indent + 1);
file->writeBounds(_bounds, indent + 1);
@@ -119,7 +119,7 @@ void CGameObject::save(SimpleFile *file, int indent) {
file->writeNumberLine(_field4C, indent + 1);
file->writeNumberLine(_fieldB8, indent + 1);
file->writeNumberLine(_visible, indent + 1);
- file->writeNumberLine(_isMail, indent + 1);
+ file->writeNumberLine(_isPendingMail, indent + 1);
file->writeNumberLine(_destRoomFlags, indent + 1);
file->writeNumberLine(_roomFlags, indent + 1);
@@ -157,7 +157,7 @@ void CGameObject::load(SimpleFile *file) {
// Deliberate fall-through
case 3:
- _field40 = file->readNumber();
+ _nonvisual = file->readNumber();
// Deliberate fall-through
case 2:
@@ -174,7 +174,7 @@ void CGameObject::load(SimpleFile *file) {
_field4C = file->readNumber();
_fieldB8 = file->readNumber();
_visible = file->readNumber() != 0;
- _isMail = file->readNumber();
+ _isPendingMail = file->readNumber();
_destRoomFlags = file->readNumber();
_roomFlags = file->readNumber();
@@ -203,8 +203,8 @@ void CGameObject::draw(CScreenManager *screenManager) {
return;
}
- if (_field40) {
- // If a text object is defined, handle drawing it
+ if (_nonvisual) {
+ // If a text is defined, handle drawing it
if (_text && _bounds.intersects(getGameManager()->_bounds))
_text->draw(screenManager);
@@ -265,11 +265,11 @@ void CGameObject::stopMovie() {
_surface->stopMovie();
}
-bool CGameObject::checkPoint(const Point &pt, bool ignore40, bool visibleOnly) {
+bool CGameObject::checkPoint(const Point &pt, bool ignoreSurface, bool visibleOnly) {
if ((!_visible && visibleOnly) || !_bounds.contains(pt))
return false;
- if (ignore40 || _field40)
+ if (ignoreSurface || _nonvisual)
return true;
if (!_surface) {
@@ -548,6 +548,10 @@ void CGameObject::sound8(bool flag) const {
}
void CGameObject::setVisible(bool val) {
+ if (_name.contains("ylinder")) {
+ warning("TODO");
+ }
+
if (val != _visible) {
_visible = val;
makeDirty();
@@ -867,10 +871,10 @@ CViewItem *CGameObject::parseView(const CString &viewString) {
// Ensure we have the specified room
if (project) {
- if (room->getName() != roomName) {
+ if (room->getName().compareToIgnoreCase(roomName)) {
// Scan for the correct room
for (room = project->findFirstRoom();
- room && room->getName() != roomName;
+ room && room->getName().compareToIgnoreCase(roomName);
room = project->findNextRoom(room)) ;
}
}
@@ -879,13 +883,13 @@ CViewItem *CGameObject::parseView(const CString &viewString) {
// Find the designated node within the room
CNodeItem *node = dynamic_cast<CNodeItem *>(room->findChildInstanceOf(CNodeItem::_type));
- while (node && node->getName() != nodeName)
+ while (node && node->getName().compareToIgnoreCase(nodeName))
node = dynamic_cast<CNodeItem *>(room->findNextInstanceOf(CNodeItem::_type, node));
if (!node)
return nullptr;
CViewItem *view = dynamic_cast<CViewItem *>(node->findChildInstanceOf(CViewItem::_type));
- while (view && view->getName() != viewName)
+ while (view && view->getName().compareToIgnoreCase(viewName))
view = dynamic_cast<CViewItem *>(node->findNextInstanceOf(CViewItem::_type, view));
if (!view)
return nullptr;
@@ -1046,12 +1050,12 @@ Season CGameObject::stateGetSeason() const {
return getGameManager()->_gameState._seasonNum;
}
-void CGameObject::stateSet24() {
- getGameManager()->_gameState.set24(1);
+void CGameObject::stateSetParrotMet() {
+ getGameManager()->_gameState.setParrotMet(true);
}
-int CGameObject::stateGet24() const {
- return getGameManager()->_gameState.get24();
+bool CGameObject::stateGetParrotMet() const {
+ return getGameManager()->_gameState.getParrotMet();
}
void CGameObject::stateInc38() {
@@ -1081,10 +1085,11 @@ void CGameObject::setMovieFrameRate(double rate) {
void CGameObject::setText(const CString &str, int border, int borderRight) {
if (!_text)
- _text = new CPetText();
+ _text = new CTextControl();
_textBorder = border;
_textBorderRight = borderRight;
+ setTextBounds();
_text->setText(str);
CScreenManager *screenManager = getGameManager()->setScreenManager();
_text->scrollToTop(screenManager);
@@ -1092,7 +1097,7 @@ void CGameObject::setText(const CString &str, int border, int borderRight) {
void CGameObject::setTextHasBorders(bool hasBorders) {
if (!_text)
- _text = new CPetText();
+ _text = new CTextControl();
_text->setHasBorder(hasBorders);
}
@@ -1108,14 +1113,14 @@ void CGameObject::setTextBounds() {
void CGameObject::setTextColor(byte r, byte g, byte b) {
if (!_text)
- _text = new CPetText();
+ _text = new CTextControl();
_text->setColor(r, g, b);
}
void CGameObject::setTextFontNumber(int fontNumber) {
if (!_text)
- _text = new CPetText();
+ _text = new CTextControl();
_text->setFontNumber(fontNumber);
}
@@ -1132,11 +1137,13 @@ CTextCursor *CGameObject::getTextCursor() const {
void CGameObject::scrollTextUp() {
if (_text)
_text->scrollUp(CScreenManager::_screenManagerPtr);
+ makeDirty();
}
void CGameObject::scrollTextDown() {
if (_text)
_text->scrollDown(CScreenManager::_screenManagerPtr);
+ makeDirty();
}
void CGameObject::lockMouse() {
@@ -1451,10 +1458,10 @@ CGameObject *CGameObject::findMail(uint roomFlags) const {
return mailMan ? mailMan->findMail(roomFlags) : nullptr;
}
-void CGameObject::removeMail(uint destRoomFlags, uint newRoomFlags) {
+void CGameObject::sendMail(uint currRoomFlags, uint newRoomFlags) {
CMailMan *mailMan = getMailMan();
if (mailMan)
- mailMan->removeMail(destRoomFlags, newRoomFlags);
+ mailMan->sendMail(currRoomFlags, newRoomFlags);
}
void CGameObject::resetMail() {
@@ -1604,10 +1611,10 @@ int CGameObject::petGetRoomsWellEntry() const {
return petControl ? petControl->getRoomsWellEntry() : 0;
}
-void CGameObject::petSetRooms1D4(int v) {
+void CGameObject::petSetRoomsElevatorBroken(bool flag) {
CPetControl *pet = getPetControl();
if (pet)
- pet->setRooms1D4(v);
+ pet->setRoomsElevatorBroken(flag);
}
void CGameObject::petOnSummonBot(const CString &name, int val) {