aboutsummaryrefslogtreecommitdiff
path: root/engines/agos/icons.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/agos/icons.cpp')
-rw-r--r--engines/agos/icons.cpp39
1 files changed, 33 insertions, 6 deletions
diff --git a/engines/agos/icons.cpp b/engines/agos/icons.cpp
index 64703c29a1..d1c58b68fb 100644
--- a/engines/agos/icons.cpp
+++ b/engines/agos/icons.cpp
@@ -25,8 +25,12 @@
#include "common/stdafx.h"
+#include "common/system.h"
+
#include "common/file.h"
+#include "graphics/surface.h"
+
#include "agos/agos.h"
namespace AGOS {
@@ -193,7 +197,9 @@ void AGOSEngine_Simon2::drawIcon(WindowBlock *window, uint icon, uint x, uint y)
byte *src;
_lockWord |= 0x8000;
- dst = getFrontBuf();
+
+ Graphics::Surface *screen = _system->lockScreen();
+ dst = (byte *)screen->pixels;
dst += 110;
dst += x;
@@ -207,6 +213,8 @@ void AGOSEngine_Simon2::drawIcon(WindowBlock *window, uint icon, uint x, uint y)
src += READ_LE_UINT16(&((uint16 *)src)[icon * 2 + 1]);
decompressIcon(dst, src, 20, 10, 208, _dxSurfacePitch);
+ _system->unlockScreen();
+
_lockWord &= ~0x8000;
}
@@ -215,7 +223,9 @@ void AGOSEngine_Simon1::drawIcon(WindowBlock *window, uint icon, uint x, uint y)
byte *src;
_lockWord |= 0x8000;
- dst = getFrontBuf();
+
+ Graphics::Surface *screen = _system->lockScreen();
+ dst = (byte *)screen->pixels;
dst += (x + window->x) * 8;
dst += (y * 25 + window->y) * _dxSurfacePitch;
@@ -231,6 +241,8 @@ void AGOSEngine_Simon1::drawIcon(WindowBlock *window, uint icon, uint x, uint y)
decompressIcon(dst, src, 24, 12, 224, _dxSurfacePitch);
}
+ _system->unlockScreen();
+
_lockWord &= ~0x8000;
}
@@ -239,7 +251,9 @@ void AGOSEngine_Waxworks::drawIcon(WindowBlock *window, uint icon, uint x, uint
byte *src;
_lockWord |= 0x8000;
- dst = getFrontBuf();
+
+ Graphics::Surface *screen = _system->lockScreen();
+ dst = (byte *)screen->pixels;
dst += (x + window->x) * 8;
dst += (y * 20 + window->y) * _dxSurfacePitch;
@@ -255,6 +269,8 @@ void AGOSEngine_Waxworks::drawIcon(WindowBlock *window, uint icon, uint x, uint
decompressIcon(dst, src, 24, 10, color, _dxSurfacePitch);
}
+ _system->unlockScreen();
+
_lockWord &= ~0x8000;
}
@@ -263,7 +279,9 @@ void AGOSEngine_Elvira2::drawIcon(WindowBlock *window, uint icon, uint x, uint y
byte *src;
_lockWord |= 0x8000;
- dst = getFrontBuf();
+
+ Graphics::Surface *screen = _system->lockScreen();
+ dst = (byte *)screen->pixels;
dst += (x + window->x) * 8;
dst += (y * 8 + window->y) * _dxSurfacePitch;
@@ -279,6 +297,8 @@ void AGOSEngine_Elvira2::drawIcon(WindowBlock *window, uint icon, uint x, uint y
decompressIcon(dst, src, 24, 12, color, _dxSurfacePitch);
}
+ _system->unlockScreen();
+
_lockWord &= ~0x8000;
}
@@ -287,7 +307,9 @@ void AGOSEngine::drawIcon(WindowBlock *window, uint icon, uint x, uint y) {
byte *src;
_lockWord |= 0x8000;
- dst = getFrontBuf();
+
+ Graphics::Surface *screen = _system->lockScreen();
+ dst = (byte *)screen->pixels;
dst += (x + window->x) * 8;
dst += (y * 8 + window->y) * _dxSurfacePitch;
@@ -302,6 +324,8 @@ void AGOSEngine::drawIcon(WindowBlock *window, uint icon, uint x, uint y) {
decompressIconPlanar(dst, src, 24, 12, 16, _dxSurfacePitch, false);
}
+ _system->unlockScreen();
+
_lockWord &= ~0x8000;
}
@@ -882,7 +906,8 @@ void AGOSEngine::drawArrow(uint16 x, uint16 y, int8 dir) {
src = _arrowImage;
}
- byte *dst = getFrontBuf() + y * _screenWidth + x * 8;
+ Graphics::Surface *screen = _system->lockScreen();
+ byte *dst = (byte *)screen->pixels + y * _screenWidth + x * 8;
for (h = 0; h < 19; h++) {
for (w = 0; w < 16; w++) {
@@ -892,6 +917,8 @@ void AGOSEngine::drawArrow(uint16 x, uint16 y, int8 dir) {
src += dir;
dst+= _screenWidth;
}
+
+ _system->unlockScreen();
}
void AGOSEngine::removeArrows(WindowBlock *window, uint num) {