aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/screen.cpp
diff options
context:
space:
mode:
authorFlorian Kagerer2009-03-21 20:24:36 +0000
committerFlorian Kagerer2009-03-21 20:24:36 +0000
commit0ce597db80bf76124d41649cf9e7ab5a1746c578 (patch)
treea92617492a6647c6a4463be54cf9635ddaa67735 /engines/kyra/screen.cpp
parentc26a162606a00711ee619eda6f6f94cbbb1d990c (diff)
downloadscummvm-rg350-0ce597db80bf76124d41649cf9e7ab5a1746c578.tar.gz
scummvm-rg350-0ce597db80bf76124d41649cf9e7ab5a1746c578.tar.bz2
scummvm-rg350-0ce597db80bf76124d41649cf9e7ab5a1746c578.zip
LOL: - added drawing code for certain gfx (blood and slime spots on the floor, teleporters, ice walls)
svn-id: r39599
Diffstat (limited to 'engines/kyra/screen.cpp')
-rw-r--r--engines/kyra/screen.cpp28
1 files changed, 24 insertions, 4 deletions
diff --git a/engines/kyra/screen.cpp b/engines/kyra/screen.cpp
index ec0a899dcc..6178552450 100644
--- a/engines/kyra/screen.cpp
+++ b/engines/kyra/screen.cpp
@@ -1248,12 +1248,14 @@ void Screen::drawShape(uint8 pageNum, const uint8 *shapeData, int x, int y, int
&Screen::drawShapePlotType14, // used by Kyra 1 (invisibility)
&Screen::drawShapePlotType11_15, // used by Kyra 1 (invisibility)
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ &Screen::drawShapePlotType33, // used by LoL (blood spots on the floor)
+ 0, 0, 0,
&Screen::drawShapePlotType37, // used by LoL (monsters)
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,
- &Screen::drawShapePlotType52,
+ &Screen::drawShapePlotType48, // used by LoL (slime spots on the floor)
+ 0, 0, 0,
+ &Screen::drawShapePlotType52, // used by LoL (projectiles)
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0
};
@@ -1815,6 +1817,17 @@ void Screen::drawShapePlotType14(uint8 *dst, uint8 cmd) {
*dst = cmd;
}
+void Screen::drawShapePlotType33(uint8 *dst, uint8 cmd) {
+ if (cmd == 255) {
+ *dst = _dsTable5[*dst];
+ } else {
+ for (int i = 0; i < _dsTableLoopCount; ++i)
+ cmd = _dsTable[cmd];
+ if (cmd)
+ *dst = cmd;
+ }
+}
+
void Screen::drawShapePlotType37(uint8 *dst, uint8 cmd) {
cmd = _dsTable2[cmd];
@@ -1829,6 +1842,13 @@ void Screen::drawShapePlotType37(uint8 *dst, uint8 cmd) {
*dst = cmd;
}
+void Screen::drawShapePlotType48(uint8 *dst, uint8 cmd) {
+ uint8 offs = _dsTable3[cmd];
+ if (!(offs & 0x80))
+ cmd = _dsTable4[(offs << 8) | *dst];
+ *dst = cmd;
+}
+
void Screen::drawShapePlotType52(uint8 *dst, uint8 cmd) {
cmd = _dsTable2[cmd];
uint8 offs = _dsTable3[cmd];