diff options
author | Eugene Sandulenko | 2015-12-25 12:49:47 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2015-12-27 15:41:02 +0100 |
commit | 5f2ef620c18b36fe0d480474135aa78eb9eb0c01 (patch) | |
tree | 79944e688a45bc14b2f59e86404ceea35c076070 /engines/wage/entities.cpp | |
parent | 59b2809f3740923cc63477a25eaabde2535f6f2e (diff) | |
download | scummvm-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.cpp | 29 |
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) { |