diff options
author | Florian Kagerer | 2009-03-21 20:24:36 +0000 |
---|---|---|
committer | Florian Kagerer | 2009-03-21 20:24:36 +0000 |
commit | 0ce597db80bf76124d41649cf9e7ab5a1746c578 (patch) | |
tree | a92617492a6647c6a4463be54cf9635ddaa67735 /engines/kyra/screen.cpp | |
parent | c26a162606a00711ee619eda6f6f94cbbb1d990c (diff) | |
download | scummvm-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.cpp | 28 |
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]; |