aboutsummaryrefslogtreecommitdiff
path: root/engines/wage/entities.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2015-12-25 12:49:47 +0100
committerEugene Sandulenko2015-12-27 15:41:02 +0100
commit5f2ef620c18b36fe0d480474135aa78eb9eb0c01 (patch)
tree79944e688a45bc14b2f59e86404ceea35c076070 /engines/wage/entities.cpp
parent59b2809f3740923cc63477a25eaabde2535f6f2e (diff)
downloadscummvm-rg350-5f2ef620c18b36fe0d480474135aa78eb9eb0c01.tar.gz
scummvm-rg350-5f2ef620c18b36fe0d480474135aa78eb9eb0c01.tar.bz2
scummvm-rg350-5f2ef620c18b36fe0d480474135aa78eb9eb0c01.zip
WAGE: Implemented World::move(Obj *obj, Chr *chr)
Diffstat (limited to 'engines/wage/entities.cpp')
-rw-r--r--engines/wage/entities.cpp29
1 files changed, 28 insertions, 1 deletions
diff --git a/engines/wage/entities.cpp b/engines/wage/entities.cpp
index 6ec3b7c884..8bde170fd4 100644
--- a/engines/wage/entities.cpp
+++ b/engines/wage/entities.cpp
@@ -124,6 +124,33 @@ Obj::Obj(String name, Common::SeekableReadStream *data) : _currentOwner(NULL), _
_sound = readPascalString(data);
}
+Chr *Obj::removeFromChr() {
+ if (_currentOwner != NULL) {
+ for (int i = _currentOwner->_inventory.size() - 1; i >= 0; i--)
+ if (_currentOwner->_inventory[i] == this)
+ _currentOwner->_inventory.remove_at(i);
+
+ for (int i = 0; i < Chr::NUMBER_OF_ARMOR_TYPES; i++) {
+ if (_currentOwner->_armor[i] == this) {
+ _currentOwner->_armor[i] = NULL;
+ }
+ }
+ }
+
+ return _currentOwner;
+}
+
+Designed *Obj::removeFromCharOrScene() {
+ Designed *from = removeFromChr();
+
+ if (_currentScene != NULL) {
+ _currentScene->_objs.remove(this);
+ from = _currentScene;
+ }
+
+ return from;
+}
+
Chr::Chr(String name, Common::SeekableReadStream *data) {
_name = name;
_classType = CHR;
@@ -207,7 +234,7 @@ WeaponArray *Chr::getWeapons() {
void Chr::wearObjs() {
for (int i = 0; i < _inventory.size(); i++)
- wearObjIfPossible(&_inventory[i]);
+ wearObjIfPossible(_inventory[i]);
}
int Chr::wearObjIfPossible(Obj *obj) {