From 030509c8eb4544885dabf67b85f83d3b296230de Mon Sep 17 00:00:00 2001 From: Sven Hesse Date: Sat, 2 Jun 2012 23:12:25 +0200 Subject: GOB: Draw the shield and health meters in Penetration --- engines/gob/minigames/geisha/meter.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'engines/gob/minigames/geisha/meter.cpp') diff --git a/engines/gob/minigames/geisha/meter.cpp b/engines/gob/minigames/geisha/meter.cpp index e3b9bd1ccf..9dcc717e48 100644 --- a/engines/gob/minigames/geisha/meter.cpp +++ b/engines/gob/minigames/geisha/meter.cpp @@ -42,6 +42,10 @@ Meter::~Meter() { delete _surface; } +int32 Meter::getMaxValue() const { + return _maxValue; +} + int32 Meter::getValue() const { return _value; } -- cgit v1.2.3 From 4392e4d7aab9114ff66a1fcda34d21f404b4ebcd Mon Sep 17 00:00:00 2001 From: Sven Hesse Date: Tue, 5 Jun 2012 17:01:40 +0200 Subject: GOB: Implement health gain/loss for mouths --- engines/gob/minigames/geisha/meter.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'engines/gob/minigames/geisha/meter.cpp') diff --git a/engines/gob/minigames/geisha/meter.cpp b/engines/gob/minigames/geisha/meter.cpp index 9dcc717e48..719ecf3d18 100644 --- a/engines/gob/minigames/geisha/meter.cpp +++ b/engines/gob/minigames/geisha/meter.cpp @@ -63,22 +63,36 @@ void Meter::setMaxValue() { setValue(_maxValue); } -void Meter::increase(int32 n) { +int32 Meter::increase(int32 n) { + if (n < 0) + return decrease(-n); + + int32 overflow = MAX(0, (_value + n) - _maxValue); + int32 value = CLIP(_value + n, 0, _maxValue); if (_value == value) - return; + return overflow; _value = value; _needUpdate = true; + + return overflow; } -void Meter::decrease(int32 n) { +int32 Meter::decrease(int32 n) { + if (n < 0) + return increase(-n); + + int32 underflow = -MIN(0, _value - n); + int32 value = CLIP(_value - n, 0, _maxValue); if (_value == value) - return; + return underflow; _value = value; _needUpdate = true; + + return underflow; } void Meter::draw(Surface &dest, int16 &left, int16 &top, int16 &right, int16 &bottom) { -- cgit v1.2.3 From f87e8b53f333c6799302d620a2c36668b92c77f0 Mon Sep 17 00:00:00 2001 From: Sven Hesse Date: Mon, 11 Jun 2012 15:09:48 +0200 Subject: GOB: Fix an AmigaOS compile error Should close bug #3534287. --- engines/gob/minigames/geisha/meter.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'engines/gob/minigames/geisha/meter.cpp') diff --git a/engines/gob/minigames/geisha/meter.cpp b/engines/gob/minigames/geisha/meter.cpp index 719ecf3d18..7ec3119866 100644 --- a/engines/gob/minigames/geisha/meter.cpp +++ b/engines/gob/minigames/geisha/meter.cpp @@ -67,7 +67,7 @@ int32 Meter::increase(int32 n) { if (n < 0) return decrease(-n); - int32 overflow = MAX(0, (_value + n) - _maxValue); + int32 overflow = MAX(0, (_value + n) - _maxValue); int32 value = CLIP(_value + n, 0, _maxValue); if (_value == value) @@ -83,7 +83,7 @@ int32 Meter::decrease(int32 n) { if (n < 0) return increase(-n); - int32 underflow = -MIN(0, _value - n); + int32 underflow = -MIN(0, _value - n); int32 value = CLIP(_value - n, 0, _maxValue); if (_value == value) -- cgit v1.2.3