[Scummvm-git-logs] scummvm master -> b1e83d068a91088259507978b5e343e876652a93
whiterandrek
whiterandrek at gmail.com
Fri May 29 07:03:50 UTC 2020
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
e6d3c38e1e PETKA: renamed structure
6bcf12a69b PETKA: store perspective struct in the bg object
792aeef513 PETKA: simplified reading objects
b1e83d068a PETKA: access objects through getters
Commit: e6d3c38e1ed9af2a955f40faf162f914a723a9c9
https://github.com/scummvm/scummvm/commit/e6d3c38e1ed9af2a955f40faf162f914a723a9c9
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-29T08:57:28+03:00
Commit Message:
PETKA: renamed structure
Changed paths:
engines/petka/objects/heroes.cpp
engines/petka/objects/object_bg.cpp
engines/petka/petka.cpp
engines/petka/q_system.h
diff --git a/engines/petka/objects/heroes.cpp b/engines/petka/objects/heroes.cpp
index b69abd22ac..5fde27e0fe 100644
--- a/engines/petka/objects/heroes.cpp
+++ b/engines/petka/objects/heroes.cpp
@@ -182,20 +182,20 @@ double QObjectPetka::calcSmth(int y) {
y = MIN(y, 480);
- if (!qsys->_unkMap.contains(qsys->_room->_name)) {
+ if (!qsys->_perspectives.contains(qsys->_room->_name)) {
return 1.0;
}
- const UnkStruct &unk = qsys->_unkMap.getVal(qsys->_room->_name);
+ const Perspective &pers = qsys->_perspectives.getVal(qsys->_room->_name);
- double res = (y - unk.f3) * unk.f2 / (unk.f4 - unk.f3);
+ double res = (y - pers.y0) * pers.k / (pers.y1 - pers.y0);
if (res < 0.0)
res = 0.0;
- if (res + unk.f1 > unk.f5)
- return unk.f5;
- return res + unk.f1;
+ if (res + pers.f0 > pers.f1)
+ return pers.f1;
+ return res + pers.f0;
}
void QObjectPetka::updateWalk() {
diff --git a/engines/petka/objects/object_bg.cpp b/engines/petka/objects/object_bg.cpp
index 6f25b63834..ee2deee6a8 100644
--- a/engines/petka/objects/object_bg.cpp
+++ b/engines/petka/objects/object_bg.cpp
@@ -147,9 +147,9 @@ void QObjectBG::readInisData(Common::INIFile &names, Common::INIFile &cast, Comm
bgs->getKey(_name, "Settings", perspective);
if (!perspective.empty()) {
// todo store this structure in bg object
- UnkStruct unk;
- sscanf(perspective.c_str(), "%lf %lf %d %d %lf", &unk.f1, &unk.f2, &unk.f3, &unk.f4, &unk.f5);
- g_vm->getQSystem()->_unkMap.setVal(_name, unk);
+ Perspective unk;
+ sscanf(perspective.c_str(), "%lf %lf %d %d %lf", &unk.f0, &unk.k, &unk.y0, &unk.y1, &unk.f1);
+ g_vm->getQSystem()->_perspectives.setVal(_name, unk);
}
}
QMessageObject::readInisData(names, cast, bgs);
diff --git a/engines/petka/petka.cpp b/engines/petka/petka.cpp
index 01043bdf05..8afc802114 100644
--- a/engines/petka/petka.cpp
+++ b/engines/petka/petka.cpp
@@ -93,7 +93,7 @@ Common::Error PetkaEngine::run() {
_soundMgr.reset(new SoundMgr());
_vsys.reset(new VideoSystem());
- loadPart(isDemo() ? 1 : 0);
+ loadPart(2);
while (!shouldQuit()) {
Common::Event event;
diff --git a/engines/petka/q_system.h b/engines/petka/q_system.h
index 1a1f8f2968..5838b1c412 100644
--- a/engines/petka/q_system.h
+++ b/engines/petka/q_system.h
@@ -47,12 +47,13 @@ class InterfacePanel;
class InterfaceMap;
class Interface;
-struct UnkStruct {
+// Linear Interpolation
+struct Perspective {
+ double f0;
+ double k;
+ int y0;
+ int y1;
double f1;
- double f2;
- int f3;
- int f4;
- double f5;
};
class QSystem {
@@ -97,7 +98,7 @@ public:
Interface *_currInterface;
Interface *_prevInterface;
- Common::HashMap<Common::String, UnkStruct> _unkMap;
+ Common::HashMap<Common::String, Perspective> _perspectives;
int _isIniting;
int _fxId;
Commit: 6bcf12a69be5b18ab9391cdcc39a19fc19264bcb
https://github.com/scummvm/scummvm/commit/6bcf12a69be5b18ab9391cdcc39a19fc19264bcb
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-29T09:07:31+03:00
Commit Message:
PETKA: store perspective struct in the bg object
Changed paths:
engines/petka/objects/heroes.cpp
engines/petka/objects/object_bg.cpp
engines/petka/objects/object_bg.h
engines/petka/q_system.h
diff --git a/engines/petka/objects/heroes.cpp b/engines/petka/objects/heroes.cpp
index 5fde27e0fe..83afb70b9e 100644
--- a/engines/petka/objects/heroes.cpp
+++ b/engines/petka/objects/heroes.cpp
@@ -181,14 +181,7 @@ double QObjectPetka::calcSmth(int y) {
y = MIN(y, 480);
-
- if (!qsys->_perspectives.contains(qsys->_room->_name)) {
- return 1.0;
- }
-
- const Perspective &pers = qsys->_perspectives.getVal(qsys->_room->_name);
-
-
+ const Perspective &pers = qsys->_room->_persp;
double res = (y - pers.y0) * pers.k / (pers.y1 - pers.y0);
if (res < 0.0)
res = 0.0;
diff --git a/engines/petka/objects/object_bg.cpp b/engines/petka/objects/object_bg.cpp
index ee2deee6a8..e6e904f813 100644
--- a/engines/petka/objects/object_bg.cpp
+++ b/engines/petka/objects/object_bg.cpp
@@ -146,10 +146,13 @@ void QObjectBG::readInisData(Common::INIFile &names, Common::INIFile &cast, Comm
Common::String perspective;
bgs->getKey(_name, "Settings", perspective);
if (!perspective.empty()) {
- // todo store this structure in bg object
- Perspective unk;
- sscanf(perspective.c_str(), "%lf %lf %d %d %lf", &unk.f0, &unk.k, &unk.y0, &unk.y1, &unk.f1);
- g_vm->getQSystem()->_perspectives.setVal(_name, unk);
+ sscanf(perspective.c_str(), "%lf %lf %d %d %lf", &_persp.f0, &_persp.k, &_persp.y0, &_persp.y1, &_persp.f1);
+ } else {
+ _persp.f0 = 1.0;
+ _persp.f1 = 1.0;
+ _persp.k = 0.0;
+ _persp.y0 = 0;
+ _persp.y1 = 480;
}
}
QMessageObject::readInisData(names, cast, bgs);
diff --git a/engines/petka/objects/object_bg.h b/engines/petka/objects/object_bg.h
index 41e3082cf9..e60b42c355 100644
--- a/engines/petka/objects/object_bg.h
+++ b/engines/petka/objects/object_bg.h
@@ -27,6 +27,15 @@
namespace Petka {
+// Linear Interpolation
+struct Perspective {
+ double f0;
+ double k;
+ int y0;
+ int y1;
+ double f1;
+};
+
class QObjectBG : public QMessageObject {
public:
QObjectBG();
@@ -42,6 +51,7 @@ public:
int _showMap;
int _fxId;
int _musicId;
+ Perspective _persp;
};
} // End of namespace Petka
diff --git a/engines/petka/q_system.h b/engines/petka/q_system.h
index 5838b1c412..b848c9afda 100644
--- a/engines/petka/q_system.h
+++ b/engines/petka/q_system.h
@@ -47,15 +47,6 @@ class InterfacePanel;
class InterfaceMap;
class Interface;
-// Linear Interpolation
-struct Perspective {
- double f0;
- double k;
- int y0;
- int y1;
- double f1;
-};
-
class QSystem {
public:
explicit QSystem();
@@ -98,8 +89,6 @@ public:
Interface *_currInterface;
Interface *_prevInterface;
- Common::HashMap<Common::String, Perspective> _perspectives;
-
int _isIniting;
int _fxId;
int _musicId;
Commit: 792aeef5133286085f643b6e1377dbbc431efa92
https://github.com/scummvm/scummvm/commit/792aeef5133286085f643b6e1377dbbc431efa92
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-29T09:40:36+03:00
Commit Message:
PETKA: simplified reading objects
Changed paths:
engines/petka/interfaces/main.cpp
engines/petka/objects/object.cpp
engines/petka/objects/object_bg.cpp
engines/petka/q_system.cpp
engines/petka/q_system.h
diff --git a/engines/petka/interfaces/main.cpp b/engines/petka/interfaces/main.cpp
index 0912313ebc..4f62cce633 100644
--- a/engines/petka/interfaces/main.cpp
+++ b/engines/petka/interfaces/main.cpp
@@ -69,8 +69,8 @@ void InterfaceMain::start(int id) {
g_vm->getQSystem()->update();
g_vm->getQSystem()->_isIniting = 0;
- _objs.push_back(g_vm->getQSystem()->_petka.get());
- _objs.push_back(g_vm->getQSystem()->_chapayev.get());
+ _objs.push_back(g_vm->getQSystem()->_petka);
+ _objs.push_back(g_vm->getQSystem()->_chapayev);
Common::ScopedPtr<Common::SeekableReadStream> bgsStream(g_vm->openFile("BGs.ini", true));
Common::INIFile bgsIni;
@@ -180,11 +180,11 @@ void InterfaceMain::onLeftButtonDown(const Common::Point p) {
switch (cursor->_actionType) {
case kActionWalk: {
- QObjectPetka *petka = g_vm->getQSystem()->_petka.get();
+ QObjectPetka *petka = g_vm->getQSystem()->_petka;
if (petka->_heroReaction) {
for (uint i = 0; i < petka->_heroReaction->messages.size(); ++i) {
if (petka->_heroReaction->messages[i].opcode == kGoTo) {
- QObjectChapayev *chapay = g_vm->getQSystem()->_chapayev.get();
+ QObjectChapayev *chapay = g_vm->getQSystem()->_chapayev;
chapay->stopWalk();
break;
}
@@ -196,7 +196,7 @@ void InterfaceMain::onLeftButtonDown(const Common::Point p) {
break;
}
case kActionObjUseChapayev: {
- QObjectChapayev *chapay = g_vm->getQSystem()->_chapayev.get();
+ QObjectChapayev *chapay = g_vm->getQSystem()->_chapayev;
chapay->walk(p.x, p.y);
break;
}
diff --git a/engines/petka/objects/object.cpp b/engines/petka/objects/object.cpp
index 069aab4e00..26eb5384a3 100644
--- a/engines/petka/objects/object.cpp
+++ b/engines/petka/objects/object.cpp
@@ -557,7 +557,7 @@ void QObject::onClick(int x, int y) {
g_vm->getQSystem()->addMessage(_id, kTalk, 0, 0, 0, 0, this);
break;
case kActionObjUseChapayev:
- g_vm->getQSystem()->addMessage(_id, kObjectUse, x, y, 0, 0, g_vm->getQSystem()->_chapayev.get());
+ g_vm->getQSystem()->addMessage(_id, kObjectUse, x, y, 0, 0, g_vm->getQSystem()->_chapayev);
break;
case kActionObjUse:
g_vm->getQSystem()->addMessage(_id, kObjectUse, 0, 0, 0, 0, cursor->_invObj);
diff --git a/engines/petka/objects/object_bg.cpp b/engines/petka/objects/object_bg.cpp
index e6e904f813..eef86df6ec 100644
--- a/engines/petka/objects/object_bg.cpp
+++ b/engines/petka/objects/object_bg.cpp
@@ -116,13 +116,13 @@ void QObjectBG::goTo() {
return;
}
- Common::Array<QObjectBG> &bgs = sys->_bgs;
+ /*Common::Array<QObjectBG> &bgs = sys->_bgs;
for (uint i = 0; i < bgs.size(); ++i) {
if (bgsIni.getKey(bgs[i]._name, _name, entranceName)) {
setEntrance(entranceName);
break;
}
- }
+ }*/
}
void QObjectBG::setEntrance(const Common::String &name) {
diff --git a/engines/petka/q_system.cpp b/engines/petka/q_system.cpp
index 4d37790a01..8ef5372e07 100644
--- a/engines/petka/q_system.cpp
+++ b/engines/petka/q_system.cpp
@@ -49,7 +49,9 @@ QSystem::QSystem()
_sceneWidth(640) {}
QSystem::~QSystem() {
-
+ for (uint i = 0; i < _allObjects.size(); ++i) {
+ delete _allObjects[i];
+ }
}
bool QSystem::init() {
@@ -76,42 +78,34 @@ bool QSystem::init() {
if (bgsStream)
bgsIni.loadFromStream(*bgsStream);
- uint32 objsCount = stream->readUint32LE() - 2;
+ uint32 objsCount = stream->readUint32LE();
uint32 bgsCount = stream->readUint32LE();
-
- _objs.resize(objsCount);
- _bgs.resize(bgsCount);
-
- _petka.reset(new QObjectPetka());
- _petka->readScriptData(*stream);
- _petka->readInisData(namesIni, castIni, nullptr);
- _allObjects.push_back(_petka.get());
-
- _chapayev.reset(new QObjectChapayev());
- _chapayev->readScriptData(*stream);
- _chapayev->readInisData(namesIni, castIni, nullptr);
- _allObjects.push_back(_chapayev.get());
-
- for (uint i = 0; i < objsCount; ++i) {
- _objs[i].readScriptData(*stream);
- _objs[i].readInisData(namesIni, castIni, nullptr);
- _allObjects.push_back(&_objs[i]);
- }
- for (uint i = 0; i < bgsCount; ++i) {
- _bgs[i].readScriptData(*stream);
- _bgs[i].readInisData(namesIni, castIni, &bgsIni);
- _allObjects.push_back(&_bgs[i]);
+ _allObjects.reserve(objsCount + bgsCount + 3);
+ for (uint i = 0; i < objsCount + bgsCount; ++i) {
+ QMessageObject *obj = nullptr;
+ if (i == 0) {
+ obj = _petka = new QObjectPetka;
+ } else if (i == 1) {
+ obj = _chapayev = new QObjectChapayev;
+ } else if (i < objsCount) {
+ obj = new QObject;
+ } else {
+ obj = new QObjectBG;
+ }
+ obj->readScriptData(*stream);
+ obj->readInisData(namesIni, castIni, &bgsIni);
+ _allObjects.push_back(obj);
}
addMessageForAllObjects(kTotalInit);
- _cursor.reset(new QObjectCursor());
- _case.reset(new QObjectCase());
- _star.reset(new QObjectStar());
+ _cursor = new QObjectCursor;
+ _case = new QObjectCase;
+ _star = new QObjectStar;
- _allObjects.push_back(_cursor.get());
- _allObjects.push_back(_case.get());
- _allObjects.push_back(_star.get());
+ _allObjects.push_back(_cursor);
+ _allObjects.push_back(_case);
+ _allObjects.push_back(_star);
_mainInterface.reset(new InterfaceMain());
_startupInterface.reset(new InterfaceStartup());
diff --git a/engines/petka/q_system.h b/engines/petka/q_system.h
index b848c9afda..dd41ca0c30 100644
--- a/engines/petka/q_system.h
+++ b/engines/petka/q_system.h
@@ -71,15 +71,13 @@ public:
void setChapayev();
public:
- Common::Array<QObject> _objs;
- Common::Array<QObjectBG> _bgs;
Common::Array<QMessageObject *> _allObjects;
Common::List<QMessage> _messages;
- Common::ScopedPtr<QObjectPetka> _petka;
- Common::ScopedPtr<QObjectChapayev> _chapayev;
- Common::ScopedPtr<QObjectCursor> _cursor;
- Common::ScopedPtr<QObjectCase> _case;
- Common::ScopedPtr<QObjectStar> _star;
+ QObjectPetka *_petka;
+ QObjectChapayev *_chapayev;
+ QObjectCursor *_cursor;
+ QObjectCase *_case;
+ QObjectStar *_star;
Common::ScopedPtr<InterfaceMain> _mainInterface;
Common::ScopedPtr<InterfaceSaveLoad> _saveLoadInterface;
Common::ScopedPtr<InterfaceSequence> _sequenceInterface;
Commit: b1e83d068a91088259507978b5e343e876652a93
https://github.com/scummvm/scummvm/commit/b1e83d068a91088259507978b5e343e876652a93
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-29T10:03:08+03:00
Commit Message:
PETKA: access objects through getters
Changed paths:
engines/petka/interfaces/dialog_interface.cpp
engines/petka/interfaces/interface.cpp
engines/petka/interfaces/main.cpp
engines/petka/interfaces/map.cpp
engines/petka/interfaces/panel.cpp
engines/petka/interfaces/save_load.cpp
engines/petka/interfaces/startup.cpp
engines/petka/objects/object.cpp
engines/petka/objects/object_bg.cpp
engines/petka/objects/object_case.cpp
engines/petka/objects/object_star.cpp
engines/petka/q_system.cpp
engines/petka/q_system.h
diff --git a/engines/petka/interfaces/dialog_interface.cpp b/engines/petka/interfaces/dialog_interface.cpp
index 6ebde5e7b4..e5ca825d3a 100644
--- a/engines/petka/interfaces/dialog_interface.cpp
+++ b/engines/petka/interfaces/dialog_interface.cpp
@@ -66,7 +66,7 @@ void DialogInterface::start(uint id, QMessageObject *sender) {
}
void DialogInterface::initCursor() {
- QObjectCursor *cursor = _qsys->_cursor.get();
+ QObjectCursor *cursor = _qsys->getCursor();
_savedCursorId = cursor->_resourceId;
_savedCursorActType = cursor->_actionType;
@@ -80,7 +80,7 @@ void DialogInterface::initCursor() {
}
void DialogInterface::restoreCursor() {
- QObjectCursor *cursor = _qsys->_cursor.get();
+ QObjectCursor *cursor = _qsys->getCursor();
cursor->_isShown = _wasCursorShown;
cursor->_animate = _wasCursorAnim;
cursor->_resourceId = _savedCursorId;
@@ -100,7 +100,7 @@ void DialogInterface::next(int choice) {
}
_afterUserMsg = _isUserMsg;
- _qsys->_cursor->_isShown = false;
+ _qsys->getCursor()->_isShown = false;
if (_isUserMsg)
return;
if (_firstTime)
@@ -158,7 +158,7 @@ void DialogInterface::startUserMsg(uint16 arg) {
sendMsg(kSaid);
_isUserMsg = true;
restoreCursor();
- _qsys->addMessage(_qsys->_chapayev->_id, kUserMsg, arg);
+ _qsys->addMessage(_qsys->getChapay()->_id, kUserMsg, arg);
}
bool DialogInterface::isActive() {
@@ -239,7 +239,7 @@ void DialogInterface::onMenuOpcode() {
_dialog->getMenuChoices(choices);
_qsys->_mainInterface->setTextChoice(choices, 0xFFFF, g_system->getScreenFormat().RGBToColor(0xFF, 0, 0));
- _qsys->_cursor->_isShown = true;
+ _qsys->getCursor()->_isShown = true;
_state = kMenu;
}
diff --git a/engines/petka/interfaces/interface.cpp b/engines/petka/interfaces/interface.cpp
index a032312f63..4797b02699 100644
--- a/engines/petka/interfaces/interface.cpp
+++ b/engines/petka/interfaces/interface.cpp
@@ -60,7 +60,7 @@ QVisibleObject *Interface::findObject(int resourceId) {
}
void Interface::initCursor(int id, bool show, bool animate) {
- QObjectCursor *cursor = g_vm->getQSystem()->_cursor.get();
+ QObjectCursor *cursor = g_vm->getQSystem()->getCursor();
_objs.push_back(cursor);
cursor->_resourceId = id;
cursor->_isShown = show;
diff --git a/engines/petka/interfaces/main.cpp b/engines/petka/interfaces/main.cpp
index 4f62cce633..28d5ef0a93 100644
--- a/engines/petka/interfaces/main.cpp
+++ b/engines/petka/interfaces/main.cpp
@@ -60,17 +60,17 @@ InterfaceMain::InterfaceMain() {
}
}
- _objs.push_back(g_vm->getQSystem()->_cursor.get());
- _objs.push_back(g_vm->getQSystem()->_case.get());
- _objs.push_back(g_vm->getQSystem()->_star.get());
+ _objs.push_back(g_vm->getQSystem()->getCursor());
+ _objs.push_back(g_vm->getQSystem()->getCase());
+ _objs.push_back(g_vm->getQSystem()->getStar());
}
void InterfaceMain::start(int id) {
g_vm->getQSystem()->update();
g_vm->getQSystem()->_isIniting = 0;
- _objs.push_back(g_vm->getQSystem()->_petka);
- _objs.push_back(g_vm->getQSystem()->_chapayev);
+ _objs.push_back(g_vm->getQSystem()->getPetka());
+ _objs.push_back(g_vm->getQSystem()->getChapay());
Common::ScopedPtr<Common::SeekableReadStream> bgsStream(g_vm->openFile("BGs.ini", true));
Common::INIFile bgsIni;
@@ -165,7 +165,7 @@ void InterfaceMain::unloadRoom(bool fromSave) {
}
void InterfaceMain::onLeftButtonDown(const Common::Point p) {
- QObjectCursor *cursor = g_vm->getQSystem()->_cursor.get();
+ QObjectCursor *cursor = g_vm->getQSystem()->getCursor();
if (!cursor->_isShown) {
_dialog.next(-1);
return;
@@ -180,11 +180,11 @@ void InterfaceMain::onLeftButtonDown(const Common::Point p) {
switch (cursor->_actionType) {
case kActionWalk: {
- QObjectPetka *petka = g_vm->getQSystem()->_petka;
+ QObjectPetka *petka = g_vm->getQSystem()->getPetka();
if (petka->_heroReaction) {
for (uint i = 0; i < petka->_heroReaction->messages.size(); ++i) {
if (petka->_heroReaction->messages[i].opcode == kGoTo) {
- QObjectChapayev *chapay = g_vm->getQSystem()->_chapayev;
+ QObjectChapayev *chapay = g_vm->getQSystem()->getChapay();
chapay->stopWalk();
break;
}
@@ -196,7 +196,7 @@ void InterfaceMain::onLeftButtonDown(const Common::Point p) {
break;
}
case kActionObjUseChapayev: {
- QObjectChapayev *chapay = g_vm->getQSystem()->_chapayev;
+ QObjectChapayev *chapay = g_vm->getQSystem()->getChapay();
chapay->walk(p.x, p.y);
break;
}
@@ -206,12 +206,12 @@ void InterfaceMain::onLeftButtonDown(const Common::Point p) {
}
void InterfaceMain::onRightButtonDown(const Common::Point p) {
- QObjectStar *star = g_vm->getQSystem()->_star.get();
- // QObjectCase *objCase = g_vm->getQSystem()->_case.get();
- QObjectCursor *cursor = g_vm->getQSystem()->_cursor.get();
+ QObjectStar *star = g_vm->getQSystem()->getStar();
+ QObjectCase *objCase = g_vm->getQSystem()->getCase();
+ QObjectCursor *cursor = g_vm->getQSystem()->getCursor();
if (!star->_isActive)
return;
- if (g_vm->getQSystem()->_case.get()->_isShown && cursor->_actionType == kActionObjUse) {
+ if (objCase->_isShown && cursor->_actionType == kActionObjUse) {
cursor->setAction(kActionTake);
} else {
star->setPos(p);
@@ -223,7 +223,7 @@ void InterfaceMain::onMouseMove(const Common::Point p) {
QMessageObject *prevObj = (QMessageObject *)_objUnderCursor;
_objUnderCursor = nullptr;
- QObjectCursor *cursor = g_vm->getQSystem()->_cursor.get();
+ QObjectCursor *cursor = g_vm->getQSystem()->getCursor();
if (cursor->_isShown) {
for (int i = _objs.size() - 1; i >= 0; --i) {
if (_objs[i]->isInPoint(p.x, p.y)) {
@@ -257,7 +257,7 @@ void InterfaceMain::setTextChoice(const Common::Array<Common::U32String> &choice
void InterfaceMain::setTextDescription(const Common::U32String &text, int frame) {
removeTexts();
- QObjectStar *star = g_vm->getQSystem()->_star.get();
+ QObjectStar *star = g_vm->getQSystem()->getStar();
star->_isActive = 0;
_objUnderCursor = nullptr;
_hasTextDesc = true;
@@ -267,7 +267,7 @@ void InterfaceMain::setTextDescription(const Common::U32String &text, int frame)
void InterfaceMain::removeTextDescription() {
_hasTextDesc = false;
_objUnderCursor = nullptr;
- g_vm->getQSystem()->_star->_isActive = true;
+ g_vm->getQSystem()->getStar()->_isActive = true;
removeTexts();
}
diff --git a/engines/petka/interfaces/map.cpp b/engines/petka/interfaces/map.cpp
index bdec4047d5..bd452d1a9b 100644
--- a/engines/petka/interfaces/map.cpp
+++ b/engines/petka/interfaces/map.cpp
@@ -67,7 +67,7 @@ void InterfaceMap::start(int id) {
break;
}
- QObjectCursor *cursor = sys->_cursor.get();
+ QObjectCursor *cursor = sys->getCursor();
_savedCursorId = cursor->_resourceId;
_savedCursorActionType = cursor->_actionType;
@@ -85,7 +85,7 @@ void InterfaceMap::start(int id) {
void InterfaceMap::stop() {
QSystem *sys = g_vm->getQSystem();
- QObjectCursor *cursor = sys->_cursor.get();
+ QObjectCursor *cursor = sys->getCursor();
if (_objUnderCursor)
((QMessageObject *)_objUnderCursor)->_isShown = false;
@@ -138,7 +138,7 @@ void InterfaceMap::onMouseMove(const Common::Point p) {
}
}
- QObjectCursor *cursor = g_vm->getQSystem()->_cursor.get();
+ QObjectCursor *cursor = g_vm->getQSystem()->getCursor();
cursor->_animate = _objUnderCursor != nullptr;
cursor->_isShown = true;
cursor->setCursorPos(p.x, p.y, 0);
diff --git a/engines/petka/interfaces/panel.cpp b/engines/petka/interfaces/panel.cpp
index a767142567..9324b79ece 100644
--- a/engines/petka/interfaces/panel.cpp
+++ b/engines/petka/interfaces/panel.cpp
@@ -118,7 +118,7 @@ void InterfacePanel::start(int id) {
break;
}
- QObjectCursor *cursor = g_vm->getQSystem()->_cursor.get();
+ QObjectCursor *cursor = g_vm->getQSystem()->getCursor();
_savedCursorRes = cursor->_resourceId;
_savedCursorType = cursor->_actionType;
@@ -139,7 +139,7 @@ void InterfacePanel::start(int id) {
void InterfacePanel::stop() {
QSystem *sys = g_vm->getQSystem();
- QObjectCursor *cursor = sys->_cursor.get();
+ QObjectCursor *cursor = sys->getCursor();
sys->_xOffset = _savedXOffset;
sys->_sceneWidth = _savedSceneWidth;
@@ -262,7 +262,7 @@ void InterfacePanel::onMouseMove(const Common::Point p) {
flc->setFrame(frame);
g_vm->videoSystem()->addDirtyRect(_objectPoints[pointIndex], *flc);
}
- QObjectCursor *cursor = g_vm->getQSystem()->_cursor.get();
+ QObjectCursor *cursor = g_vm->getQSystem()->getCursor();
cursor->_isShown = 1;
cursor->setCursorPos(p.x, p.y, 0);
}
diff --git a/engines/petka/interfaces/save_load.cpp b/engines/petka/interfaces/save_load.cpp
index fade3e9aea..9866c24945 100644
--- a/engines/petka/interfaces/save_load.cpp
+++ b/engines/petka/interfaces/save_load.cpp
@@ -48,7 +48,7 @@ InterfaceSaveLoad::InterfaceSaveLoad() {
void InterfaceSaveLoad::start(int id) {
QSystem *sys = g_vm->getQSystem();
- QObjectCursor *cursor = sys->_cursor.get();
+ QObjectCursor *cursor = sys->getCursor();
_loadMode = (id == kLoadMode);
@@ -73,7 +73,7 @@ void InterfaceSaveLoad::start(int id) {
void InterfaceSaveLoad::stop() {
QSystem *sys = g_vm->getQSystem();
- QObjectCursor *cursor = g_vm->getQSystem()->_cursor.get();
+ QObjectCursor *cursor = g_vm->getQSystem()->getCursor();
sys->_xOffset = _savedXOffset;
sys->_sceneWidth = _savedSceneWidth;
@@ -109,7 +109,7 @@ void InterfaceSaveLoad::onRightButtonDown(const Common::Point p) {
}
void InterfaceSaveLoad::onMouseMove(const Common::Point p) {
- QObjectCursor *cursor = g_vm->getQSystem()->_cursor.get();
+ QObjectCursor *cursor = g_vm->getQSystem()->getCursor();
cursor->_animate = findSaveLoadRectIndex(p) != -1 || _nextPageRect.contains(p) || _prevPageRect.contains(p);
cursor->setCursorPos(p.x, p.y, 0);
}
diff --git a/engines/petka/interfaces/startup.cpp b/engines/petka/interfaces/startup.cpp
index 782e91e42d..57866c8f73 100644
--- a/engines/petka/interfaces/startup.cpp
+++ b/engines/petka/interfaces/startup.cpp
@@ -123,7 +123,7 @@ void InterfaceStartup::onMouseMove(const Common::Point p) {
}
}
- QObjectCursor *cursor = g_vm->getQSystem()->_cursor.get();
+ QObjectCursor *cursor = g_vm->getQSystem()->getCursor();
cursor->_animate = _objUnderCursor != nullptr;
cursor->_isShown = true;
cursor->setCursorPos(p.x, p.y, 0);
diff --git a/engines/petka/objects/object.cpp b/engines/petka/objects/object.cpp
index 26eb5384a3..a2b14ff892 100644
--- a/engines/petka/objects/object.cpp
+++ b/engines/petka/objects/object.cpp
@@ -90,13 +90,13 @@ void QMessageObject::processMessage(const QMessage &msg) {
if (reacted || !g_vm->getBigDialogue()->findHandler(_id, msg.opcode, nullptr)) {
switch (msg.opcode) {
case kAddInv:
- g_vm->getQSystem()->_case->addItem(msg.objId);
+ g_vm->getQSystem()->getCase()->addItem(msg.objId);
break;
case kDelInv:
- g_vm->getQSystem()->_case->removeItem(msg.objId);
+ g_vm->getQSystem()->getCase()->removeItem(msg.objId);
break;
case kSetInv:
- g_vm->getQSystem()->_case->transformItem(msg.sender->_id, msg.objId);
+ g_vm->getQSystem()->getCase()->transformItem(msg.sender->_id, msg.objId);
break;
case kAvi: {
Common::String videoName = g_vm->resMgr()->findResourceName((uint16) msg.arg1);
@@ -107,7 +107,7 @@ void QMessageObject::processMessage(const QMessage &msg) {
g_vm->getQSystem()->_mainInterface->_dialog.endUserMsg();
break;
case kCursor:
- g_vm->getQSystem()->_cursor->setInvItem(this, msg.arg1);
+ g_vm->getQSystem()->getCursor()->setInvItem(this, msg.arg1);
g_vm->videoSystem()->makeAllDirty();
break;
case kDialog:
@@ -142,8 +142,8 @@ void QMessageObject::processMessage(const QMessage &msg) {
show(false);
break;
case kStop:
- g_vm->getQSystem()->_cursor.get()->show(msg.arg1);
- g_vm->getQSystem()->_star.get()->_isActive = msg.arg1;
+ g_vm->getQSystem()->getCursor()->show(msg.arg1);
+ g_vm->getQSystem()->getStar()->_isActive = msg.arg1;
break;
case kShow:
show(true);
@@ -154,10 +154,10 @@ void QMessageObject::processMessage(const QMessage &msg) {
case kSystem:
switch (msg.arg1){
case 0:
- g_vm->getQSystem()->_star->_isActive = 0;
+ g_vm->getQSystem()->getStar()->_isActive = 0;
break;
case 1:
- g_vm->getQSystem()->_star->_isActive = 1;
+ g_vm->getQSystem()->getStar()->_isActive = 1;
break;
case 242:
g_system->quit();
@@ -180,18 +180,18 @@ void QMessageObject::processMessage(const QMessage &msg) {
_isActive = false;
break;
case kJump:
- g_vm->getQSystem()->_petka->setPos((msg.arg1 == 0xffff ? _walkX : msg.arg1), (msg.arg2 == -1 ? _walkY : msg.arg2));
+ g_vm->getQSystem()->getPetka()->setPos((msg.arg1 == 0xffff ? _walkX : msg.arg1), (msg.arg2 == -1 ? _walkY : msg.arg2));
break;
case kJumpVich:
- g_vm->getQSystem()->_petka->setPos((msg.arg1 == 0xffff ? _walkX : msg.arg1), (msg.arg2 == -1 ? _walkY : msg.arg2));
+ g_vm->getQSystem()->getPetka()->setPos((msg.arg1 == 0xffff ? _walkX : msg.arg1), (msg.arg2 == -1 ? _walkY : msg.arg2));
break;
case kWalk:
if (!reacted) {
if (_walkX == -1) {
- g_vm->getQSystem()->_petka->walk(msg.arg1, msg.arg2);
+ g_vm->getQSystem()->getPetka()->walk(msg.arg1, msg.arg2);
} else {
- g_vm->getQSystem()->_petka->walk(_walkX, _walkY);
+ g_vm->getQSystem()->getPetka()->walk(_walkX, _walkY);
}
}
break;
@@ -203,12 +203,12 @@ void QMessageObject::processMessage(const QMessage &msg) {
destY = _walkY;
}
if (destX != -1) {
- g_vm->getQSystem()->_petka->walk(destX, destY);
- QReaction *r = g_vm->getQSystem()->_petka->_heroReaction;
+ g_vm->getQSystem()->getPetka()->walk(destX, destY);
+ QReaction *r = g_vm->getQSystem()->getPetka()->_heroReaction;
if (r) {
for (uint i = 0; i < r->messages.size(); ++i) {
if (r->messages[i].opcode == kGoTo) {
- g_vm->getQSystem()->_chapayev->walk(_walkX, _walkY);
+ g_vm->getQSystem()->getChapay()->walk(_walkX, _walkY);
break;
}
}
@@ -218,9 +218,9 @@ void QMessageObject::processMessage(const QMessage &msg) {
}
case kWalkVich:
if (msg.arg1 == 0xffff || msg.arg2 == -1) {
- g_vm->getQSystem()->_chapayev->walk(msg.arg1, msg.arg2);
+ g_vm->getQSystem()->getChapay()->walk(msg.arg1, msg.arg2);
} else if (_walkX != -1) {
- g_vm->getQSystem()->_chapayev->walk(_walkX, _walkY);
+ g_vm->getQSystem()->getChapay()->walk(_walkX, _walkY);
}
break;
case kDescription: {
@@ -302,10 +302,10 @@ void QMessageObject::processReaction(QReaction *r, const QMessage *msg) {
}
case kWalk:
case kWalkTo:
- g_vm->getQSystem()->_petka->setReactionAfterWalk(j, r, this, deleteReaction);
+ g_vm->getQSystem()->getPetka()->setReactionAfterWalk(j, r, this, deleteReaction);
return;
case kWalkVich:
- g_vm->getQSystem()->_chapayev->setReactionAfterWalk(j, r, this, deleteReaction);
+ g_vm->getQSystem()->getChapay()->setReactionAfterWalk(j, r, this, deleteReaction);
return;
default:
processed = false;
@@ -539,7 +539,7 @@ void QObject::setPos(int x, int y) {
}
void QObject::onClick(int x, int y) {
- QObjectCursor *cursor = g_vm->getQSystem()->_cursor.get();
+ QObjectCursor *cursor = g_vm->getQSystem()->getCursor();
switch (cursor->_actionType) {
case kActionLook:
g_vm->getQSystem()->addMessage(_id, kLook, 0, 0, 0, 0, this);
@@ -557,7 +557,7 @@ void QObject::onClick(int x, int y) {
g_vm->getQSystem()->addMessage(_id, kTalk, 0, 0, 0, 0, this);
break;
case kActionObjUseChapayev:
- g_vm->getQSystem()->addMessage(_id, kObjectUse, x, y, 0, 0, g_vm->getQSystem()->_chapayev);
+ g_vm->getQSystem()->addMessage(_id, kObjectUse, x, y, 0, 0, g_vm->getQSystem()->getChapay());
break;
case kActionObjUse:
g_vm->getQSystem()->addMessage(_id, kObjectUse, 0, 0, 0, 0, cursor->_invObj);
diff --git a/engines/petka/objects/object_bg.cpp b/engines/petka/objects/object_bg.cpp
index eef86df6ec..ef3fd39021 100644
--- a/engines/petka/objects/object_bg.cpp
+++ b/engines/petka/objects/object_bg.cpp
@@ -97,8 +97,8 @@ void QObjectBG::draw() {
void QObjectBG::goTo() {
QSystem *sys = g_vm->getQSystem();
- sys->_petka->stopWalk();
- sys->_chapayev->stopWalk();
+ sys->getPetka()->stopWalk();
+ sys->getChapay()->stopWalk();
int oldRoomId = sys->_mainInterface->_roomId;
sys->_mainInterface->loadRoom(_id, false);
@@ -129,11 +129,11 @@ void QObjectBG::setEntrance(const Common::String &name) {
QSystem *sys = g_vm->getQSystem();
QMessageObject *entrance = sys->findObject(name);
if (entrance) {
- sys->_petka->_z = 0;
- sys->_chapayev->_z = 0;
+ sys->getPetka()->_z = 0;
+ sys->getChapay()->_z = 0;
- sys->_petka->setPos(entrance->_walkX, entrance->_walkY);
- sys->_chapayev->setPos(entrance->_walkX, entrance->_walkY - 2);
+ sys->getPetka()->setPos(entrance->_walkX, entrance->_walkY);
+ sys->getChapay()->setPos(entrance->_walkX, entrance->_walkY - 2);
sys->_xOffset = CLIP<int32>(entrance->_walkX - 320, 0, sys->_sceneWidth - 640);
sys->_field6C = sys->_xOffset;
diff --git a/engines/petka/objects/object_case.cpp b/engines/petka/objects/object_case.cpp
index 58b9f5cebb..33ef7ba7f5 100644
--- a/engines/petka/objects/object_case.cpp
+++ b/engines/petka/objects/object_case.cpp
@@ -166,7 +166,7 @@ void QObjectCase::onMouseMove(int x, int y) {
if (i == kButtonsCount && _clickedObjIndex != kInvalidButton) {
_clickedObjIndex = kInvalidButton;
} else if (i != _clickedObjIndex) {
- if ((i != kChapayevButton || g_vm->getQSystem()->_chapayev->_isShown) && (i != kMapButton || g_vm->getQSystem()->_room->_showMap)) {
+ if ((i != kChapayevButton || g_vm->getQSystem()->getChapay()->_isShown) && (i != kMapButton || g_vm->getQSystem()->_room->_showMap)) {
flc = g_vm->resMgr()->loadFlic(kFirstButtonResourceId + i);
g_vm->videoSystem()->addDirtyMskRects(*flc);
_clickedObjIndex = i;
diff --git a/engines/petka/objects/object_star.cpp b/engines/petka/objects/object_star.cpp
index c3c6acef8e..60eac2f501 100644
--- a/engines/petka/objects/object_star.cpp
+++ b/engines/petka/objects/object_star.cpp
@@ -72,9 +72,9 @@ void QObjectStar::onClick(int x, int y) {
return;
}
if (button == kCaseButtonIndex) {
- g_vm->getQSystem()->_case->show(1);
+ g_vm->getQSystem()->getCase()->show(1);
} else {
- QObjectCursor *cursor = g_vm->getQSystem()->_cursor.get();
+ QObjectCursor *cursor = g_vm->getQSystem()->getCursor();
cursor->setAction(button - 1);
}
show(0);
diff --git a/engines/petka/q_system.cpp b/engines/petka/q_system.cpp
index 8ef5372e07..9ed22f59dc 100644
--- a/engines/petka/q_system.cpp
+++ b/engines/petka/q_system.cpp
@@ -44,9 +44,8 @@
namespace Petka {
QSystem::QSystem()
- : _cursor(nullptr), _case(nullptr), _star(nullptr), _petka(nullptr), _chapayev(nullptr),
- _mainInterface(nullptr), _currInterface(nullptr), _prevInterface(nullptr), _isIniting(0),
- _sceneWidth(640) {}
+ : _mainInterface(nullptr), _currInterface(nullptr), _prevInterface(nullptr),
+ _isIniting(0), _sceneWidth(640) {}
QSystem::~QSystem() {
for (uint i = 0; i < _allObjects.size(); ++i) {
@@ -84,9 +83,9 @@ bool QSystem::init() {
for (uint i = 0; i < objsCount + bgsCount; ++i) {
QMessageObject *obj = nullptr;
if (i == 0) {
- obj = _petka = new QObjectPetka;
+ obj = new QObjectPetka;
} else if (i == 1) {
- obj = _chapayev = new QObjectChapayev;
+ obj = new QObjectChapayev;
} else if (i < objsCount) {
obj = new QObject;
} else {
@@ -99,13 +98,9 @@ bool QSystem::init() {
addMessageForAllObjects(kTotalInit);
- _cursor = new QObjectCursor;
- _case = new QObjectCase;
- _star = new QObjectStar;
-
- _allObjects.push_back(_cursor);
- _allObjects.push_back(_case);
- _allObjects.push_back(_star);
+ _allObjects.push_back(new QObjectCursor);
+ _allObjects.push_back(new QObjectCase);
+ _allObjects.push_back(new QObjectStar);
_mainInterface.reset(new InterfaceMain());
_startupInterface.reset(new InterfaceStartup());
@@ -165,8 +160,8 @@ void QSystem::update() {
}
void QSystem::togglePanelInterface() {
- if (_currInterface != _startupInterface.get() && _star->_isActive) {
- _case->show(0);
+ if (_currInterface != _startupInterface.get() && getStar()->_isActive) {
+ getCase()->show(0);
if (_currInterface == _panelInterface.get()) {
_currInterface->stop();
} else if (_currInterface == _mainInterface.get()) {
@@ -176,8 +171,8 @@ void QSystem::togglePanelInterface() {
}
void QSystem::toggleMapInterface() {
- if (_currInterface != _startupInterface.get() && _star->_isActive && _room->_showMap) {
- _case->show(0);
+ if (_currInterface != _startupInterface.get() && getStar()->_isActive && _room->_showMap) {
+ getCase()->show(0);
if (_currInterface == _mapInterface.get()) {
_currInterface->stop();
} else if (_currInterface == _mainInterface.get()) {
@@ -188,8 +183,8 @@ void QSystem::toggleMapInterface() {
}
void QSystem::setChapayev() {
- if (_star->_isActive && _currInterface == _mainInterface.get() && _chapayev->_isShown) {
- _cursor->setAction(kActionObjUseChapayev);
+ if (getStar()->_isActive && _currInterface == _mainInterface.get() && getChapay()->_isShown) {
+ getCursor()->setAction(kActionObjUseChapayev);
}
}
@@ -224,9 +219,10 @@ void QSystem::load(Common::ReadStream *s) {
}
uint itemSize = s->readUint32LE();
- _case->_items.clear();
+ QObjectCase *objCase = getCase();
+ objCase->_items.clear();
for (uint i = 0; i < itemSize; ++i) {
- _case->_items.push_back(s->readSint32LE());
+ objCase->_items.push_back(s->readSint32LE());
}
_room = (QObjectBG *)findObject(readString(s));
@@ -236,13 +232,14 @@ void QSystem::load(Common::ReadStream *s) {
g_vm->getBigDialogue()->load(s);
- _cursor->_resourceId = s->readUint32LE();
- _cursor->_actionType = s->readUint32LE();
+ QObjectCursor *cursor = getCursor();
+ cursor->_resourceId = s->readUint32LE();
+ cursor->_actionType = s->readUint32LE();
int invObjId = s->readSint32LE();
if (invObjId != -1) {
- _cursor->_invObj = findObject(invObjId);
+ cursor->_invObj = findObject(invObjId);
} else {
- _cursor->_invObj = nullptr;
+ cursor->_invObj = nullptr;
}
g_vm->videoSystem()->makeAllDirty();
@@ -263,9 +260,10 @@ void QSystem::save(Common::WriteStream *s) {
s->writeUint32LE(_allObjects[i]->_animate);
}
- s->writeUint32LE(_case->_items.size());
- for (uint i = 0; i < _case->_items.size(); ++i) {
- s->writeSint32LE(_case->_items[i]);
+ QObjectCase *objCase = getCase();
+ s->writeUint32LE(objCase->_items.size());
+ for (uint i = 0; i < objCase->_items.size(); ++i) {
+ s->writeSint32LE(objCase->_items[i]);
}
writeString(s, _room->_name);
@@ -274,13 +272,34 @@ void QSystem::save(Common::WriteStream *s) {
g_vm->getBigDialogue()->save(s);
- s->writeUint32LE(_cursor->_resourceId);
- s->writeUint32LE(_cursor->_actionType);
- if (_cursor->_invObj) {
- s->writeSint32LE(_cursor->_invObj->_resourceId);
+ QObjectCursor *cursor = getCursor();
+ s->writeUint32LE(cursor->_resourceId);
+ s->writeUint32LE(cursor->_actionType);
+ if (cursor->_invObj) {
+ s->writeSint32LE(cursor->_invObj->_resourceId);
} else {
s->writeSint32LE(-1);
}
}
+QObjectPetka *QSystem::getPetka() const {
+ return (QObjectPetka *)_allObjects[0];
+}
+
+QObjectChapayev *QSystem::getChapay() const {
+ return (QObjectChapayev *)_allObjects[1];
+}
+
+QObjectCursor *QSystem::getCursor() const {
+ return (QObjectCursor *)_allObjects[_allObjects.size() - 3];
+}
+
+QObjectCase *QSystem::getCase() const {
+ return (QObjectCase *)_allObjects[_allObjects.size() - 2];
+}
+
+QObjectStar *QSystem::getStar() const {
+ return (QObjectStar *)_allObjects.back();
+}
+
}
diff --git a/engines/petka/q_system.h b/engines/petka/q_system.h
index dd41ca0c30..9c6dfe9ed3 100644
--- a/engines/petka/q_system.h
+++ b/engines/petka/q_system.h
@@ -65,6 +65,12 @@ public:
QMessageObject *findObject(int16 id);
QMessageObject *findObject(const Common::String &name);
+ QObjectPetka *getPetka() const;
+ QObjectChapayev *getChapay() const;
+ QObjectCursor *getCursor() const;
+ QObjectCase *getCase() const;
+ QObjectStar *getStar() const;
+
void togglePanelInterface();
void toggleMapInterface();
@@ -73,11 +79,6 @@ public:
public:
Common::Array<QMessageObject *> _allObjects;
Common::List<QMessage> _messages;
- QObjectPetka *_petka;
- QObjectChapayev *_chapayev;
- QObjectCursor *_cursor;
- QObjectCase *_case;
- QObjectStar *_star;
Common::ScopedPtr<InterfaceMain> _mainInterface;
Common::ScopedPtr<InterfaceSaveLoad> _saveLoadInterface;
Common::ScopedPtr<InterfaceSequence> _sequenceInterface;
More information about the Scummvm-git-logs
mailing list