aboutsummaryrefslogtreecommitdiff
path: root/engines/dm/dungeonman.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/dm/dungeonman.cpp')
-rw-r--r--engines/dm/dungeonman.cpp54
1 files changed, 28 insertions, 26 deletions
diff --git a/engines/dm/dungeonman.cpp b/engines/dm/dungeonman.cpp
index 8100139581..d88363a0b3 100644
--- a/engines/dm/dungeonman.cpp
+++ b/engines/dm/dungeonman.cpp
@@ -1251,44 +1251,46 @@ uint16 DungeonMan::f140_getObjectWeight(Thing thing) {
2, 0, 8
};
+ Junk* junk;
+ uint16 weight;
+
if (thing == Thing::_none)
return 0;
+
+ junk = (Junk*)f156_getThingData(thing);
switch (thing.getType()) {
case k5_WeaponThingType:
- return g238_WeaponInfo[Weapon(f156_getThingData(thing)).getType()]._weight;
+ weight = g238_WeaponInfo[((Weapon*)junk)->getType()]._weight;
+ break;
case k6_ArmourThingType:
- return g239_ArmourInfo[Armour(f156_getThingData(thing)).getType()]._weight;
- case k10_JunkThingType: {
- Junk junk(f156_getThingData(thing));
- uint16 weight = g241_junkInfo[junk.getType()];
- if (junk.getType() == k1_JunkTypeWaterskin)
- weight += junk.getChargeCount() * 2;
- return weight;
- }
- case k9_ContainerThingType: {
- uint16 weight = 50;
- Container container(f156_getThingData(thing));
- Thing slotThing = container.getSlot();
- while (slotThing != Thing::_endOfList) {
- weight += f140_getObjectWeight(slotThing);
- slotThing = f159_getNextThing(slotThing);
+ weight = g239_ArmourInfo[((Armour*)junk)->getType()]._weight;
+ break;
+ case k10_JunkThingType:
+ weight = g241_junkInfo[junk->getType()];
+ if (junk->getType() == k1_JunkTypeWaterskin) {
+ weight += junk->getChargeCount() << 1;
}
- return weight;
- }
+ break;
+ case k9_ContainerThingType:
+ weight = 50;
+ thing = ((Container*)junk)->getSlot();
+ while (thing != Thing::_endOfList) {
+ weight += f140_getObjectWeight(thing);
+ thing = f159_getNextThing(thing);
+ }
+ break;
case k8_PotionThingType:
- if (Junk(f156_getThingData(thing)).getType() == k20_PotionTypeEmptyFlask) {
- return 1;
+ if (((Potion*)junk)->getType() == k20_PotionTypeEmptyFlask) {
+ weight = 1;
} else {
- return 3;
+ weight = 3;
}
- case k7_ScrollThingType:
- return 1;
- default:
break;
+ case k7_ScrollThingType:
+ weight = 1;
}
- assert(false); // this should never be taken
- return 0; // dummy
+ return weight; // this is garbage if none of the branches were taken
}