aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/items_lol.cpp
diff options
context:
space:
mode:
authorFlorian Kagerer2009-03-14 13:48:12 +0000
committerFlorian Kagerer2009-03-14 13:48:12 +0000
commit092f2a37e3e8ef1283ee04281727ed113061ff27 (patch)
tree2851442f7002d0d93f5f1f3aa5e9558d6cc30eee /engines/kyra/items_lol.cpp
parent6225bf905f95addf161790fb74268cf5fb0954c7 (diff)
downloadscummvm-rg350-092f2a37e3e8ef1283ee04281727ed113061ff27.tar.gz
scummvm-rg350-092f2a37e3e8ef1283ee04281727ed113061ff27.tar.bz2
scummvm-rg350-092f2a37e3e8ef1283ee04281727ed113061ff27.zip
LOL: - complete support for the three "special rooms" in the castle
svn-id: r39391
Diffstat (limited to 'engines/kyra/items_lol.cpp')
-rw-r--r--engines/kyra/items_lol.cpp47
1 files changed, 43 insertions, 4 deletions
diff --git a/engines/kyra/items_lol.cpp b/engines/kyra/items_lol.cpp
index 5eb0214ac6..3852bcf55b 100644
--- a/engines/kyra/items_lol.cpp
+++ b/engines/kyra/items_lol.cpp
@@ -31,10 +31,8 @@
namespace Kyra {
void LoLEngine::giveCredits(int credits, int redraw) {
- static const uint8 stashSetupData[] = { 4, 4, 4, 4, 2, 2, 2, 3, 3, 0, 1, 1 };
-
if (redraw)
- snd_playSoundEffect(0x65, 0xff);
+ snd_playSoundEffect(101, -1);
int t = credits / 30;
if (!t)
@@ -51,7 +49,7 @@ void LoLEngine::giveCredits(int credits, int redraw) {
do {
if (_credits < 60) {
- int d = stashSetupData[_credits % 12] - _credits / 12;
+ int d = _stashSetupData[_credits % 12] - _credits / 12;
if (d < 0)
d += 5;
_moneyColumnHeight[d]++;
@@ -71,6 +69,47 @@ void LoLEngine::giveCredits(int credits, int redraw) {
}
}
+void LoLEngine::takeCredits(int credits, int redraw) {
+ if (redraw)
+ snd_playSoundEffect(101, -1);
+
+ if (credits > _credits)
+ credits = _credits;
+
+ int t = credits / 30;
+ if (!t)
+ t = 1;
+
+ int cnt = 0;
+
+ while (credits && _credits > 0) {
+ if (t > credits)
+ t = credits;
+
+ if (_credits - t < 60 && t >= 0) {
+ cnt = 0;
+
+ do {
+ if (--_credits < 60) {
+ int d = _stashSetupData[_credits % 12] - _credits / 12;
+ if (d < 0)
+ d += 5;
+ _moneyColumnHeight[d]--;
+ }
+ } while (++cnt < t);
+ } else if (_credits - t < 60) {
+ _credits -= t;
+ }
+
+ if (redraw) {
+ gui_drawMoneyBox(6);
+ if (credits)
+ delay(_tickLength, 1);
+ }
+ credits -= t;
+ }
+}
+
int LoLEngine::makeItem(int itemIndex, int curFrame, int flags) {
int cnt = 0;
int r = 0;