diff options
author | Paul Gilbert | 2015-01-14 20:39:56 -0500 |
---|---|---|
committer | Paul Gilbert | 2015-01-14 20:39:56 -0500 |
commit | e6383519a167eebdbf5877e81c2e9e32e6a101a3 (patch) | |
tree | 72c8495fb30449f59466310aadc926a02b1cd99e | |
parent | 5f2e145580ae4c10fd384933ae65b66215779fd9 (diff) | |
download | scummvm-rg350-e6383519a167eebdbf5877e81c2e9e32e6a101a3.tar.gz scummvm-rg350-e6383519a167eebdbf5877e81c2e9e32e6a101a3.tar.bz2 scummvm-rg350-e6383519a167eebdbf5877e81c2e9e32e6a101a3.zip |
XEEN: Split in-game scene draw code into a separate file
-rw-r--r-- | engines/xeen/interface.cpp | 1679 | ||||
-rw-r--r-- | engines/xeen/interface.h | 76 | ||||
-rw-r--r-- | engines/xeen/interface_map.cpp | 1704 | ||||
-rw-r--r-- | engines/xeen/interface_map.h | 118 | ||||
-rw-r--r-- | engines/xeen/module.mk | 1 |
5 files changed, 1831 insertions, 1747 deletions
diff --git a/engines/xeen/interface.cpp b/engines/xeen/interface.cpp index ec66434c5f..deb8761b06 100644 --- a/engines/xeen/interface.cpp +++ b/engines/xeen/interface.cpp @@ -27,340 +27,7 @@ namespace Xeen { -OutdoorDrawList::OutdoorDrawList() : _skySprite(_data[1]), _groundSprite(_data[2]) { - _data[0] = DrawStruct(0, 8, 8); - _data[1] = DrawStruct(1, 8, 25); - _data[2] = DrawStruct(0, 8, 67); - _data[3] = DrawStruct(0, 8, 67); - _data[4] = DrawStruct(0, 38, 67); - _data[5] = DrawStruct(0, 84, 67); - _data[6] = DrawStruct(0, 134, 67); - _data[7] = DrawStruct(0, 117, 67); - _data[8] = DrawStruct(0, 117, 67); - _data[9] = DrawStruct(0, 103, 67); - _data[10] = DrawStruct(0, 8, 73); - _data[11] = DrawStruct(0, 8, 73); - _data[12] = DrawStruct(0, 30, 73); - _data[13] = DrawStruct(0, 181, 73); - _data[14] = DrawStruct(0, 154, 73); - _data[15] = DrawStruct(0, 129, 73); - _data[16] = DrawStruct(0, 87, 73); - _data[17] = DrawStruct(0, 8, 81); - _data[18] = DrawStruct(0, 8, 81); - _data[19] = DrawStruct(0, 202, 81); - _data[20] = DrawStruct(0, 145, 81); - _data[21] = DrawStruct(0, 63, 81); - _data[22] = DrawStruct(0, 8, 93); - _data[23] = DrawStruct(0, 169, 93); - _data[24] = DrawStruct(0, 31, 93); - _data[25] = DrawStruct(0, 8, 109); - _data[26] = DrawStruct(0, 201, 109); - _data[27] = DrawStruct(0, 8, 109); - _data[28] = DrawStruct(1, 65472, 61, 14, SPRFLAG_2000); - _data[29] = DrawStruct(1, 65496, 61, 14, 0); - _data[30] = DrawStruct(1, 65520, 61, 14, 0); - _data[31] = DrawStruct(1, 8, 61, 14, 0); - _data[32] = DrawStruct(1, 128, 61, 14, SPRFLAG_HORIZ_FLIPPED | SPRFLAG_2000); - _data[33] = DrawStruct(1, 104, 61, 14, SPRFLAG_HORIZ_FLIPPED); - _data[34] = DrawStruct(1, 80, 61, 14, SPRFLAG_HORIZ_FLIPPED); - _data[35] = DrawStruct(1, 56, 61, 14, SPRFLAG_HORIZ_FLIPPED); - _data[36] = DrawStruct(1, 32, 61, 14, 0); - _data[37] = DrawStruct(0, 65527, 61, 14, 0); - _data[38] = DrawStruct(0, 65478, 61, 14, 0); - _data[39] = DrawStruct(0, 40, 61, 14, 0); - _data[40] = DrawStruct(0, 65454, 61, 14, 0); - _data[41] = DrawStruct(0, 64, 61, 14, 0); - _data[42] = DrawStruct(0, 65495, 61, 14, 0); - _data[43] = DrawStruct(0, 65510, 61, 14, 0); - _data[44] = DrawStruct(0, 65502, 61, 14, 0); - _data[45] = DrawStruct(0, 65520, 61, 14, 0); - _data[46] = DrawStruct(0, 23, 61, 14, 0); - _data[47] = DrawStruct(0, 16, 61, 14, 0); - _data[48] = DrawStruct(0, 65478, 61, 14, 0); - _data[49] = DrawStruct(0, 40, 61, 14, 0); - _data[50] = DrawStruct(0, 65519, 61, 14, 0); - _data[51] = DrawStruct(0, 65535, 58, 14, 0); - _data[52] = DrawStruct(0, 65527, 58, 14, 0); - _data[53] = DrawStruct(0, 72, 58, 12, 0); - _data[54] = DrawStruct(0, 72, 58, 12, SPRFLAG_HORIZ_FLIPPED); - _data[55] = DrawStruct(0, 69, 63, 12, 0); - _data[56] = DrawStruct(0, 75, 63, 12, SPRFLAG_HORIZ_FLIPPED); - _data[57] = DrawStruct(0, 73, 53, 12, 0); - _data[58] = DrawStruct(0, 71, 53, 12, SPRFLAG_HORIZ_FLIPPED); - _data[59] = DrawStruct(0, 80, 57, 12, 0); - _data[60] = DrawStruct(0, 64, 57, 12, SPRFLAG_HORIZ_FLIPPED); - _data[61] = DrawStruct(2, 65525, 54, 8, 0); - _data[62] = DrawStruct(1, 65515, 54, 11, 0); - _data[63] = DrawStruct(2, 165, 54, 8, SPRFLAG_HORIZ_FLIPPED); - _data[64] = DrawStruct(1, 86, 54, 11, SPRFLAG_HORIZ_FLIPPED); - _data[65] = DrawStruct(1, 33, 54, 11, 0); - _data[66] = DrawStruct(0, 65528, 54, 12, 0); - _data[67] = DrawStruct(0, 65463, 54, 12, 0); - _data[68] = DrawStruct(0, 57, 54, 12, 0); - _data[69] = DrawStruct(0, 65471, 54, 12, 0); - _data[70] = DrawStruct(0, 65455, 54, 12, 0); - _data[71] = DrawStruct(0, 49, 54, 12, 0); - _data[72] = DrawStruct(0, 65, 54, 12, 0); - _data[73] = DrawStruct(0, 65512, 54, 12, 0); - _data[74] = DrawStruct(0, 9, 50, 12, 0); - _data[75] = DrawStruct(0, 65528, 50, 12, 0); - _data[76] = DrawStruct(0, 72, 53, 8, 0); - _data[77] = DrawStruct(0, 72, 53, 8, SPRFLAG_HORIZ_FLIPPED); - _data[78] = DrawStruct(0, 77, 58, 8, 0); - _data[79] = DrawStruct(0, 67, 58, 8, SPRFLAG_HORIZ_FLIPPED); - _data[80] = DrawStruct(0, 81, 47, 8, 0); - _data[81] = DrawStruct(0, 63, 47, 8, SPRFLAG_HORIZ_FLIPPED); - _data[82] = DrawStruct(0, 94, 52, 8, 0); - _data[83] = DrawStruct(0, 50, 52, 8, SPRFLAG_HORIZ_FLIPPED); - _data[84] = DrawStruct(2, 8, 40); - _data[85] = DrawStruct(2, 146, 40, 0, SPRFLAG_HORIZ_FLIPPED); - _data[86] = DrawStruct(1, 32, 40, 6, 0); - _data[87] = DrawStruct(0, 65529, 30, 7, 0); - _data[88] = DrawStruct(0, 65424, 30, 7, SPRFLAG_2000); - _data[89] = DrawStruct(0, 98, 30, 7, SPRFLAG_2000); - _data[90] = DrawStruct(0, 65424, 30, 8, SPRFLAG_2000); - _data[91] = DrawStruct(0, 98, 30, 8, SPRFLAG_2000); - _data[92] = DrawStruct(0, 65498, 30, 8, 0); - _data[93] = DrawStruct(0, 25, 30, 8, 0); - _data[94] = DrawStruct(0, 65529, 30, 8, 0); - _data[95] = DrawStruct(0, 72, 48, 4, 0); - _data[96] = DrawStruct(0, 72, 48, 4, SPRFLAG_HORIZ_FLIPPED); - _data[97] = DrawStruct(0, 85, 53, 4, 0); - _data[98] = DrawStruct(0, 59, 53, 4, SPRFLAG_HORIZ_FLIPPED); - _data[99] = DrawStruct(0, 89, 41, 4, 0); - _data[100] = DrawStruct(0, 55, 41, 4, SPRFLAG_HORIZ_FLIPPED); - _data[101] = DrawStruct(0, 106, 47, 4, 0); - _data[102] = DrawStruct(0, 38, 47, 4, SPRFLAG_HORIZ_FLIPPED); - _data[103] = DrawStruct(0, 8, 24); - _data[104] = DrawStruct(0, 169, 24, 0, SPRFLAG_HORIZ_FLIPPED); - _data[105] = DrawStruct(1, 32, 24); - _data[106] = DrawStruct(0, 65513, 40, 0, SPRFLAG_2000); - _data[107] = DrawStruct(0, 200, 40, 0, SPRFLAG_HORIZ_FLIPPED | SPRFLAG_2000); - _data[108] = DrawStruct(0, 8, 47); - _data[109] = DrawStruct(0, 169, 47, 0, SPRFLAG_HORIZ_FLIPPED); - _data[110] = DrawStruct(1, 65480, 65532, 32768, SPRFLAG_4000 | SPRFLAG_2000); - _data[111] = DrawStruct(0, 65531, 2, 0, SPRFLAG_4000 | SPRFLAG_2000); - _data[112] = DrawStruct(0, 65469, 2, 0, SPRFLAG_4000 | SPRFLAG_2000); - _data[113] = DrawStruct(0, 44, 73); - _data[114] = DrawStruct(0, 44, 73); - _data[115] = DrawStruct(0, 58, 14, 0, SPRFLAG_4000 | SPRFLAG_2000); - _data[116] = DrawStruct(0, 169, 73); - _data[117] = DrawStruct(0, 169, 73); - _data[118] = DrawStruct(0, 65531, 14, 0, SPRFLAG_4000 | SPRFLAG_2000); - _data[119] = DrawStruct(0, 110, 73); - _data[120] = DrawStruct(0, 110, 73); - _data[121] = DrawStruct(0, 65531, 14, 0, SPRFLAG_4000 | SPRFLAG_2000); - _data[122] = DrawStruct(0, 110, 73); - _data[123] = DrawStruct(0, 110, 73); - _data[124] = DrawStruct(0, 72, 43); - _data[125] = DrawStruct(0, 72, 43, 0, SPRFLAG_HORIZ_FLIPPED); - _data[126] = DrawStruct(0, 93, 48); - _data[127] = DrawStruct(0, 51, 48, 0, SPRFLAG_HORIZ_FLIPPED); - _data[128] = DrawStruct(0, 97, 36); - _data[129] = DrawStruct(0, 47, 36, 0, SPRFLAG_HORIZ_FLIPPED); - _data[130] = DrawStruct(0, 118, 42); - _data[131] = DrawStruct(0, 26, 42, 0, SPRFLAG_HORIZ_FLIPPED); -} - -/*------------------------------------------------------------------------*/ - -IndoorDrawList::IndoorDrawList() : - _sky(_data[1]), _ground(_data[2]), _horizon(_data[28]), - _swl_0F1R(_data[ 46]), _swl_0F1L(_data[44]), _swl_1F1R(_data[134]), - _swl_1F1L(_data[133]), _swl_2F2R(_data[110]), _swl_2F1R(_data[109]), - _swl_2F1L(_data[108]), _swl_2F2L(_data[107]), _swl_3F1R(_data[ 78]), - _swl_3F2R(_data[ 77]), _swl_3F3R(_data[ 76]), _swl_3F4R(_data[ 75]), - _swl_3F1L(_data[ 74]), _swl_3F2L(_data[ 73]), _swl_3F3L(_data[ 72]), - _swl_3F4L(_data[ 71]), _swl_4F4R(_data[ 33]), _swl_4F3R(_data[ 34]), - _swl_4F2R(_data[ 35]), _swl_4F1R(_data[ 36]), _swl_4F1L(_data[ 32]), - _swl_4F2L(_data[ 31]), _swl_4F3L(_data[ 30]), _swl_4F4L(_data[ 29]), - _fwl_4F4R(_data[ 45]), _fwl_4F3R(_data[ 44]), _fwl_4F2R(_data[ 43]), - _fwl_4F1R(_data[ 42]), _fwl_4F( _data[ 41]), _fwl_4F1L(_data[ 40]), - _fwl_4F2L(_data[ 39]), _fwl_4F3L(_data[ 38]), _fwl_4F4L(_data[ 37]), - _fwl_2F1R(_data[121]), _fwl_2F( _data[120]), _fwl_2F1L(_data[119]), - _fwl_3F2R(_data[ 91]), _fwl_3F1R(_data[ 90]), _fwl_3F( _data[ 89]), - _fwl_3F1L(_data[ 88]), _fwl_3F2L(_data[ 87]), _fwl_1F( _data[147]), - _fwl_1F1R(_data[145]), _fwl_1F1L(_data[143]), - _objects0(_data[149]), _objects1(_data[125]), _objects2(_data[126]), - _objects3(_data[127]), _objects4(_data[97]), _objects5(_data[98]), - _objects6(_data[99]), _objects7(_data[55]), _objects8(_data[56]), - _objects9(_data[58]), _objects10(_data[57]), _objects11(_data[59]) { - // Setup draw structure positions - _data[0] = DrawStruct(0, 8, 8); - _data[1] = DrawStruct(1, 8, 25); - _data[2] = DrawStruct(0, 8, 67); - _data[3] = DrawStruct(0, 8, 67); - _data[4] = DrawStruct(0, 38, 67); - _data[5] = DrawStruct(0, 84, 67); - _data[6] = DrawStruct(0, 134, 67); - _data[7] = DrawStruct(0, 117, 67); - _data[8] = DrawStruct(0, 117, 67); - _data[9] = DrawStruct(0, 103, 67); - _data[10] = DrawStruct(0, 8, 73); - _data[11] = DrawStruct(0, 8, 73); - _data[12] = DrawStruct(0, 30, 73); - _data[13] = DrawStruct(0, 181, 73); - _data[14] = DrawStruct(0, 154, 73); - _data[15] = DrawStruct(0, 129, 73); - _data[16] = DrawStruct(0, 87, 73); - _data[17] = DrawStruct(0, 8, 81); - _data[18] = DrawStruct(0, 8, 81); - _data[19] = DrawStruct(0, 202, 81); - _data[20] = DrawStruct(0, 145, 81); - _data[21] = DrawStruct(0, 63, 81); - _data[22] = DrawStruct(0, 8, 93); - _data[23] = DrawStruct(0, 169, 93); - _data[24] = DrawStruct(0, 31, 93); - _data[25] = DrawStruct(0, 8, 109); - _data[26] = DrawStruct(0, 201, 109); - _data[27] = DrawStruct(0, 8, 109); - _data[28] = DrawStruct(7, 8, 64); - _data[29] = DrawStruct(22, 32, 60); - _data[30] = DrawStruct(20, 56, 60); - _data[31] = DrawStruct(18, 80, 60); - _data[32] = DrawStruct(16, 104, 60); - _data[33] = DrawStruct(23, 152, 60, 0, SPRFLAG_HORIZ_FLIPPED); - _data[34] = DrawStruct(21, 144, 60, 0, SPRFLAG_HORIZ_FLIPPED); - _data[35] = DrawStruct(19, 131, 60, 0, SPRFLAG_HORIZ_FLIPPED); - _data[36] = DrawStruct(17, 120, 60, 0, SPRFLAG_HORIZ_FLIPPED); - _data[37] = DrawStruct(14, 8, 60); - _data[38] = DrawStruct(12, 32, 60); - _data[39] = DrawStruct(10, 56, 60); - _data[40] = DrawStruct(14, 80, 60); - _data[41] = DrawStruct(14, 104, 60); - _data[42] = DrawStruct(14, 128, 60); - _data[43] = DrawStruct(14, 152, 60); - _data[44] = DrawStruct(8, 176, 60); - _data[45] = DrawStruct(8, 200, 60); - _data[46] = DrawStruct(0, 65472, 61, 14, 0); - _data[47] = DrawStruct(0, 65496, 61, 14, 0); - _data[48] = DrawStruct(0, 65520, 61, 14, 0); - _data[49] = DrawStruct(0, 8, 61, 14, 0); - _data[50] = DrawStruct(0, 32, 61, 14, 0); - _data[51] = DrawStruct(0, 56, 61, 14, 0); - _data[52] = DrawStruct(0, 80, 61, 14, 0); - _data[53] = DrawStruct(0, 104, 61, 14, 0); - _data[54] = DrawStruct(0, 128, 61, 14, 0); - _data[55] = DrawStruct(0, 65527, 58, 14, 0); - _data[56] = DrawStruct(0, 65502, 58, 14, 0); - _data[57] = DrawStruct(0, 16, 58, 14, 0); - _data[58] = DrawStruct(0, 65478, 58, 14, 0); - _data[59] = DrawStruct(0, 40, 58, 14, 0); - _data[60] = DrawStruct(0, 65495, 58, 14, 0); - _data[61] = DrawStruct(0, 65510, 58, 14, 0); - _data[62] = DrawStruct(0, 65502, 58, 14, 0); - _data[63] = DrawStruct(0, 65520, 58, 14, 0); - _data[64] = DrawStruct(0, 23, 58, 14, 0); - _data[65] = DrawStruct(0, 16, 58, 14, 0); - _data[66] = DrawStruct(0, 65478, 58, 14, 0); - _data[67] = DrawStruct(0, 40, 58, 14, 0); - _data[68] = DrawStruct(0, 65519, 58, 14, 0); - _data[69] = DrawStruct(0, 65535, 58, 14, 0); - _data[70] = DrawStruct(0, 65527, 58, 14, 0); - _data[71] = DrawStruct(14, 8, 58); - _data[72] = DrawStruct(12, 8, 55); - _data[73] = DrawStruct(10, 32, 52); - _data[74] = DrawStruct(14, 88, 52); - _data[75] = DrawStruct(14, 128, 52, 0, SPRFLAG_HORIZ_FLIPPED); - _data[76] = DrawStruct(14, 152, 52, 0, SPRFLAG_HORIZ_FLIPPED); - _data[77] = DrawStruct(0, 176, 55, 0, SPRFLAG_HORIZ_FLIPPED); - _data[78] = DrawStruct(0, 200, 58, 0, SPRFLAG_HORIZ_FLIPPED); - _data[79] = DrawStruct(0, 72, 58, 12, 0); - _data[80] = DrawStruct(0, 72, 58, 12, SPRFLAG_HORIZ_FLIPPED); - _data[81] = DrawStruct(0, 69, 63, 12, 0); - _data[82] = DrawStruct(0, 75, 63, 12, SPRFLAG_HORIZ_FLIPPED); - _data[83] = DrawStruct(0, 73, 53, 12, 0); - _data[84] = DrawStruct(0, 71, 53, 12, SPRFLAG_HORIZ_FLIPPED); - _data[85] = DrawStruct(0, 80, 57, 12, 0); - _data[86] = DrawStruct(0, 64, 57, 12, SPRFLAG_HORIZ_FLIPPED); - _data[87] = DrawStruct(7, 65512, 52, 0, SPRFLAG_2000); - _data[88] = DrawStruct(7, 32, 52); - _data[89] = DrawStruct(7, 88, 52); - _data[90] = DrawStruct(0, 144, 52); - _data[91] = DrawStruct(0, 200, 52, 0, SPRFLAG_2000); - _data[92] = DrawStruct(0, 65457, 52, 11, SPRFLAG_2000); - _data[93] = DrawStruct(0, 65509, 52, 11, 0); - _data[94] = DrawStruct(0, 32, 52, 11, 0); - _data[95] = DrawStruct(0, 89, 52, 11, 0); - _data[96] = DrawStruct(0, 145, 52, 11, SPRFLAG_2000); - _data[97] = DrawStruct(0, 65528, 50, 12, 0); - _data[98] = DrawStruct(0, 65471, 50, 12, 0); - _data[99] = DrawStruct(0, 49, 50, 12, 0); - _data[100] = DrawStruct(0, 65471, 50, 12, 0); - _data[101] = DrawStruct(0, 65455, 50, 12, 0); - _data[102] = DrawStruct(0, 49, 50, 12, 0); - _data[103] = DrawStruct(0, 65, 50, 12, 0); - _data[104] = DrawStruct(0, 65512, 50, 12, 0); - _data[105] = DrawStruct(0, 9, 50, 12, 0); - _data[106] = DrawStruct(0, 65528, 50, 12, 0); - _data[107] = DrawStruct(7, 8, 48); - _data[108] = DrawStruct(7, 64, 40); - _data[109] = DrawStruct(6, 144, 40, 0, SPRFLAG_HORIZ_FLIPPED); - _data[110] = DrawStruct(6, 200, 48, 0, SPRFLAG_HORIZ_FLIPPED); - _data[111] = DrawStruct(0, 72, 53, 8, 0); - _data[112] = DrawStruct(0, 72, 53, 8, SPRFLAG_HORIZ_FLIPPED); - _data[113] = DrawStruct(0, 77, 58, 8, 0); - _data[114] = DrawStruct(0, 67, 58, 8, SPRFLAG_HORIZ_FLIPPED); - _data[115] = DrawStruct(0, 81, 47, 8, 0); - _data[116] = DrawStruct(0, 63, 47, 8, SPRFLAG_HORIZ_FLIPPED); - _data[117] = DrawStruct(0, 94, 52, 8, 0); - _data[118] = DrawStruct(0, 50, 52, 8, SPRFLAG_HORIZ_FLIPPED); - _data[119] = DrawStruct(6, 65496, 40, 0, SPRFLAG_2000); - _data[120] = DrawStruct(6, 64, 40); - _data[121] = DrawStruct(0, 168, 40, 0, SPRFLAG_2000); - _data[122] = DrawStruct(0, 65464, 40, 6, SPRFLAG_2000); - _data[123] = DrawStruct(0, 32, 40, 6, 0); - _data[124] = DrawStruct(0, 137, 40, 6, SPRFLAG_2000); - _data[125] = DrawStruct(0, 65529, 25, 7, 0); - _data[126] = DrawStruct(0, 65424, 25, 7, SPRFLAG_2000); - _data[127] = DrawStruct(0, 98, 25, 7, SPRFLAG_2000); - _data[128] = DrawStruct(0, 65424, 29, 8, SPRFLAG_2000); - _data[129] = DrawStruct(0, 98, 29, 8, SPRFLAG_2000); - _data[130] = DrawStruct(0, 65498, 29, 8, 0); - _data[131] = DrawStruct(0, 25, 29, 8, 0); - _data[132] = DrawStruct(0, 65529, 29, 8, 0); - _data[133] = DrawStruct(6, 32, 24); - _data[134] = DrawStruct(0, 168, 24, 0, SPRFLAG_HORIZ_FLIPPED); - _data[135] = DrawStruct(0, 72, 48, 4, 0); - _data[136] = DrawStruct(0, 72, 48, 4, SPRFLAG_HORIZ_FLIPPED); - _data[137] = DrawStruct(0, 85, 53, 4, 0); - _data[138] = DrawStruct(0, 59, 53, 4, SPRFLAG_HORIZ_FLIPPED); - _data[139] = DrawStruct(0, 89, 41, 4, 0); - _data[140] = DrawStruct(0, 55, 41, 4, SPRFLAG_HORIZ_FLIPPED); - _data[141] = DrawStruct(0, 106, 47, 4, 0); - _data[142] = DrawStruct(0, 38, 47, 4, SPRFLAG_HORIZ_FLIPPED); - _data[143] = DrawStruct(0, 65400, 24, 0, SPRFLAG_2000); - _data[144] = DrawStruct(0, 8, 12); - _data[145] = DrawStruct(0, 32, 24); - _data[146] = DrawStruct(0, 200, 12, 0, SPRFLAG_HORIZ_FLIPPED); - _data[147] = DrawStruct(0, 200, 24, 0, SPRFLAG_2000); - _data[148] = DrawStruct(0, 32, 24); - _data[149] = DrawStruct(0, 65531, 2, 0, SPRFLAG_4000 | SPRFLAG_2000); - _data[150] = DrawStruct(0, 65469, 10, 0, SPRFLAG_4000 | SPRFLAG_2000); - _data[151] = DrawStruct(0, 44, 73); - _data[152] = DrawStruct(0, 44, 73); - _data[153] = DrawStruct(0, 58, 14, 0, SPRFLAG_4000 | SPRFLAG_2000); - _data[154] = DrawStruct(0, 169, 73); - _data[155] = DrawStruct(0, 169, 73); - _data[156] = DrawStruct(0, 65531, 14, 0, SPRFLAG_4000 | SPRFLAG_2000); - _data[157] = DrawStruct(0, 110, 73); - _data[158] = DrawStruct(0, 110, 73); - _data[159] = DrawStruct(0, 65531, 14, 0, SPRFLAG_4000 | SPRFLAG_2000); - _data[160] = DrawStruct(0, 110, 73); - _data[161] = DrawStruct(0, 110, 73); - _data[162] = DrawStruct(0, 72, 43); - _data[163] = DrawStruct(0, 72, 43, 0, SPRFLAG_HORIZ_FLIPPED); - _data[164] = DrawStruct(0, 93, 48); - _data[165] = DrawStruct(0, 51, 48, 0, SPRFLAG_HORIZ_FLIPPED); - _data[166] = DrawStruct(0, 97, 36); - _data[167] = DrawStruct(0, 47, 36, 0, SPRFLAG_HORIZ_FLIPPED); - _data[168] = DrawStruct(0, 118, 42); - _data[169] = DrawStruct(0, 26, 42, 0, SPRFLAG_HORIZ_FLIPPED); -} - -/*------------------------------------------------------------------------*/ - -Interface::Interface(XeenEngine *vm) : ButtonContainer(), _vm(vm) { +Interface::Interface(XeenEngine *vm) : ButtonContainer(), InterfaceMap(vm), _vm(vm) { Common::fill(&_partyFaces[0], &_partyFaces[MAX_ACTIVE_PARTY], nullptr); _batUIFrame = 0; _spotDoorsUIFrame = 0; @@ -376,27 +43,18 @@ Interface::Interface(XeenEngine *vm) : ButtonContainer(), _vm(vm) { _buttonsLoaded = false; _hiliteChar = -1; _intrIndex1 = 0; - _flipWtr = false; - _flipWall = false; - _flipSky = false; - _flipGround = false; _flag1 = false; _animCounter = 0; _isAnimReset = false; - _charsShooting = false; _tillMove = 0; - _objNumber = 0; _thinWall = false; _overallFrame = 0; - _isShooting = false; Common::fill(&_combatCharIds[0], &_combatCharIds[8], 0); - Common::fill(&_wp[0], &_wp[20], 0); - Common::fill(&_wo[0], &_wo[308], 0); - initDrawStructs(); } + void Interface::initDrawStructs() { _faceDrawStructs[0] = DrawStruct(0, 0, 0); _faceDrawStructs[1] = DrawStruct(0, 101, 0); @@ -963,8 +621,8 @@ void Interface::draw3d(bool updateFlag) { const int INDOOR_COMBAT_POS[3][2] = { { 102, 134 }, { 36, 67 }, { 161, 161 } }; const int INDOOR_COMBAT_POS2[4] = { 8, 6, 4, 2 }; - // TODO: Double check this, since it's not being used? - MazeObject &objObject = map._mobData._objects[_objNumber - 1]; + // Double check this, since it's not being used? + //MazeObject &objObject = map._mobData._objects[_objNumber - 1]; for (int idx = 0; idx < 3; ++idx) { DrawStruct &ds1 = _indoorList[INDOOR_INDEXES[idx]]; @@ -1091,201 +749,6 @@ void Interface::animate3d() { } -void Interface::setIndoorsMonsters() { - -} - -void Interface::setIndoorObjects() { - Common::Point mazePos = _vm->_party._mazePosition; - _objNumber = 0; - const int8 *posOffset = &SCREEN_POSITIONING_X[_vm->_party._mazeDirection][0]; - Common::Point pt; - - Common::Array<MazeObject> &objects = _vm->_map->_mobData._objects; - for (uint idx = 0; idx < objects.size(); ++idx) { - MazeObject &mazeObject = objects[idx]; - - // Determine which half of the X/Y lists to use - int listOffset; - if (_vm->_files->_isDarkCc) { - listOffset = mazeObject._spriteId == 47 ? 1 : 0; - } - else { - listOffset = mazeObject._spriteId == 113 ? 1 : 0; - } - - // Position 1 - pt = Common::Point(mazePos.x + posOffset[2], mazePos.y + posOffset[194]); - if (pt == mazeObject._position && _indoorList._objects0._frame == -1) { - _indoorList._objects0._x = INDOOR_OBJECT_X[listOffset][0]; - _indoorList._objects0._y = INDOOR_OBJECT_Y[listOffset][0]; - _indoorList._objects0._frame = mazeObject._frame; - _indoorList._objects0._sprites = mazeObject._sprites; - _indoorList._objects0._flags &= ~SPRFLAG_HORIZ_FLIPPED; - if (mazeObject._flipped) - _indoorList._objects0._flags |= SPRFLAG_HORIZ_FLIPPED; - _objNumber = idx; - } - - // Position 2 - pt = Common::Point(mazePos.x + posOffset[7], mazePos.y + posOffset[199]); - if (pt == mazeObject._position && !_wo[27] && _indoorList._objects1._frame == -1) { - _indoorList._objects1._x = INDOOR_OBJECT_X[listOffset][1]; - _indoorList._objects1._y = INDOOR_OBJECT_Y[listOffset][1]; - _indoorList._objects1._frame = mazeObject._frame; - _indoorList._objects1._sprites = mazeObject._sprites; - _indoorList._objects1._flags &= ~SPRFLAG_HORIZ_FLIPPED; - if (mazeObject._flipped) - _indoorList._objects1._flags |= SPRFLAG_HORIZ_FLIPPED; - } - - // Position 3 - pt = Common::Point(mazePos.x + posOffset[5], mazePos.y + posOffset[197]); - if (pt == mazeObject._position && (!_wo[27] || !_wo[25]) && (!_wo[27] || !_wo[28]) && - (!_wo[23] || !_wo[25]) && (!_wo[23] || !_wo[28]) && - _indoorList._objects2._frame == -1) { - _indoorList._objects2._x = INDOOR_OBJECT_X[listOffset][2]; - _indoorList._objects2._y = INDOOR_OBJECT_Y[listOffset][2]; - _indoorList._objects2._frame = mazeObject._frame; - _indoorList._objects2._sprites = mazeObject._sprites; - _indoorList._objects2._flags &= ~SPRFLAG_HORIZ_FLIPPED; - if (mazeObject._flipped) - _indoorList._objects2._flags |= SPRFLAG_HORIZ_FLIPPED; - } - - // Position 4 - pt = Common::Point(mazePos.x + posOffset[9], mazePos.y + posOffset[201]); - if (pt == mazeObject._position && (!_wo[27] || !_wo[26]) && (!_wo[27] || !_wo[29]) && - (!_wo[24] || !_wo[26]) && (!_wo[24] || !_wo[29]) && _indoorList._objects3._frame == -1) { - _indoorList._objects3._x = INDOOR_OBJECT_X[listOffset][3]; - _indoorList._objects3._y = INDOOR_OBJECT_Y[listOffset][3]; - _indoorList._objects3._frame = mazeObject._frame; - _indoorList._objects3._sprites = mazeObject._sprites; - _indoorList._objects3._flags &= ~SPRFLAG_HORIZ_FLIPPED; - if (mazeObject._flipped) - _indoorList._objects3._flags |= SPRFLAG_HORIZ_FLIPPED; - } - - // Position 5 - pt = Common::Point(mazePos.x + posOffset[14], mazePos.y + posOffset[206]); - if (pt == mazeObject._position && !_wo[22] && !_wo[27] && _indoorList._objects4._frame == -1) { - _indoorList._objects4._x = INDOOR_OBJECT_X[listOffset][4]; - _indoorList._objects4._y = INDOOR_OBJECT_Y[listOffset][4]; - _indoorList._objects4._frame = mazeObject._frame; - _indoorList._objects4._sprites = mazeObject._sprites; - _indoorList._objects4._flags &= ~SPRFLAG_HORIZ_FLIPPED; - if (mazeObject._flipped) - _indoorList._objects4._flags |= SPRFLAG_HORIZ_FLIPPED; - } - - // Position 6 - pt = Common::Point(mazePos.x + posOffset[12], mazePos.y + posOffset[204]); - if (pt == mazeObject._position && !_wo[27] && (!_wo[22] || !_wo[23]) && (!_wo[22] || !_wo[20]) && - (!_wo[23] || !_wo[17]) && (!_wo[20] || !_wo[17]) && _indoorList._objects5._frame == -1) { - _indoorList._objects5._x = INDOOR_OBJECT_X[listOffset][5]; - _indoorList._objects5._y = INDOOR_OBJECT_Y[listOffset][5]; - _indoorList._objects5._frame = mazeObject._frame; - _indoorList._objects5._sprites = mazeObject._sprites; - _indoorList._objects5._flags &= ~SPRFLAG_HORIZ_FLIPPED; - if (mazeObject._flipped) - _indoorList._objects5._flags |= SPRFLAG_HORIZ_FLIPPED; - } - - // Position 7 - pt = Common::Point(mazePos.x + posOffset[16], mazePos.y + posOffset[208]); - if (pt == mazeObject._position && !_wo[27] && (!_wo[22] || !_wo[24]) && (!_wo[22] || !_wo[21]) && - (!_wo[24] || !_wo[19]) && (!_wo[21] || !_wo[19]) && _indoorList._objects6._frame == -1) { - _indoorList._objects6._x = INDOOR_OBJECT_X[listOffset][6]; - _indoorList._objects6._y = INDOOR_OBJECT_Y[listOffset][6]; - _indoorList._objects6._frame = mazeObject._frame; - _indoorList._objects6._sprites = mazeObject._sprites; - _indoorList._objects6._flags &= ~SPRFLAG_HORIZ_FLIPPED; - if (mazeObject._flipped) - _indoorList._objects6._flags |= SPRFLAG_HORIZ_FLIPPED; - } - - // Position 8 - pt = Common::Point(mazePos.x + posOffset[27], mazePos.y + posOffset[219]); - if (pt == mazeObject._position && !_wo[27] && !_wo[22] && !_wo[15] && _indoorList._objects7._frame == -1) { - _indoorList._objects7._x = INDOOR_OBJECT_X[listOffset][7]; - _indoorList._objects7._y = INDOOR_OBJECT_Y[listOffset][7]; - _indoorList._objects7._frame = mazeObject._frame; - _indoorList._objects7._sprites = mazeObject._sprites; - _indoorList._objects7._flags &= ~SPRFLAG_HORIZ_FLIPPED; - if (mazeObject._flipped) - _indoorList._objects7._flags |= SPRFLAG_HORIZ_FLIPPED; - } - - // Position 9 - pt = Common::Point(mazePos.x + posOffset[25], mazePos.y + posOffset[217]); - if (pt == mazeObject._position && !_wo[27] && (!_wo[15] || !_wo[17]) && (!_wo[15] || !_wo[12]) && - (!_wo[12] || !_wo[7]) && (!_wo[17] || !_wo[7]) && _indoorList._objects5._frame == -1) { - _indoorList._objects8._x = INDOOR_OBJECT_X[listOffset][8]; - _indoorList._objects8._y = INDOOR_OBJECT_Y[listOffset][8]; - _indoorList._objects8._frame = mazeObject._frame; - _indoorList._objects8._sprites = mazeObject._sprites; - _indoorList._objects8._flags &= ~SPRFLAG_HORIZ_FLIPPED; - if (mazeObject._flipped) - _indoorList._objects8._flags |= SPRFLAG_HORIZ_FLIPPED; - } - - // Position 10 - pt = Common::Point(mazePos.x + posOffset[23], mazePos.y + posOffset[215]); - if (pt == mazeObject._position && !_wo[27] && (!_wo[22] || !_wo[20]) && (!_wo[22] || !_wo[23]) && - (!_wo[20] || !_wo[17]) && (!_wo[23] || !_wo[17]) && !_wo[12] && !_wo[8] && - _indoorList._objects9._frame == -1) { - _indoorList._objects9._x = INDOOR_OBJECT_X[listOffset][9]; - _indoorList._objects9._y = INDOOR_OBJECT_Y[listOffset][9]; - _indoorList._objects9._frame = mazeObject._frame; - _indoorList._objects9._sprites = mazeObject._sprites; - _indoorList._objects9._flags &= ~SPRFLAG_HORIZ_FLIPPED; - if (mazeObject._flipped) - _indoorList._objects9._flags |= SPRFLAG_HORIZ_FLIPPED; - } - - // Block 11 - pt = Common::Point(mazePos.x + posOffset[29], mazePos.y + posOffset[221]); - if (pt == mazeObject._position && !_wo[27] && !_wo[22] && (!_wo[15] || !_wo[19]) && - (!_wo[15] || !_wo[14]) && (!_wo[14] || !_wo[9]) && (!_wo[19] || !_wo[9]) && - _indoorList._objects10._frame == -1) { - _indoorList._objects10._x = INDOOR_OBJECT_X[listOffset][10]; - _indoorList._objects10._y = INDOOR_OBJECT_Y[listOffset][10]; - _indoorList._objects10._frame = mazeObject._frame; - _indoorList._objects10._sprites = mazeObject._sprites; - _indoorList._objects10._flags &= ~SPRFLAG_HORIZ_FLIPPED; - if (mazeObject._flipped) - _indoorList._objects10._flags |= SPRFLAG_HORIZ_FLIPPED; - } - - // Block 12 - pt = Common::Point(mazePos.x + posOffset[31], mazePos.y + posOffset[223]); - if (pt == mazeObject._position && !_wo[27] && (!_wo[22] || !_wo[21]) && (!_wo[22] || !_wo[24]) && - (!_wo[21] || !_wo[19]) && (!_wo[24] || !_wo[19]) && !_wo[14] && !_wo[10] && - _indoorList._objects11._frame == -1) { - _indoorList._objects11._x = INDOOR_OBJECT_X[listOffset][11]; - _indoorList._objects11._y = INDOOR_OBJECT_Y[listOffset][11]; - _indoorList._objects11._frame = mazeObject._frame; - _indoorList._objects11._sprites = mazeObject._sprites; - _indoorList._objects11._flags &= ~SPRFLAG_HORIZ_FLIPPED; - if (mazeObject._flipped) - _indoorList._objects11._flags |= SPRFLAG_HORIZ_FLIPPED; - } - } -} - -void Interface::setIndoorWallPics() { - // TODO -} - - -void Interface::setOutdoorsMonsters() { - -} - -void Interface::setOutdoorsObjects() { - -} - void Interface::startup() { Screen &screen = *_vm->_screen; loadCharIcons(); @@ -2845,1140 +2308,6 @@ void Interface::setMazeBits() { } } -void Interface::drawIndoors() { - Map &map = *_vm->_map; - int surfaceId; - int idx; - - for (int cellIndex = 0; cellIndex < 25; ++cellIndex) { - map.getCell(DRAW_NUMBERS[cellIndex]); - - DrawStruct &drawStruct = _indoorList[3 + cellIndex]; - drawStruct._sprites = &map._surfaceSprites[map._currentSurfaceId]; - - surfaceId = map.mazeData()._surfaceTypes[map._currentSurfaceId]; - if (surfaceId == 5 || surfaceId == 12) { - drawStruct._flags = _flipWtr; - drawStruct._frame = DRAW_FRAMES[cellIndex][_flipWtr ? 1 : 0]; - } - else { - drawStruct._frame = DRAW_FRAMES[cellIndex][_flipWall ? 1 : 0]; - drawStruct._flags = _flipWall ? 0 : SPRFLAG_HORIZ_FLIPPED; - } - } - - if (!_wo[27] && !_wo[20] && !_wo[23] && !_wo[12] && !_wo[8] && !_wo[30]) { - if (_wo[39]) - _indoorList._swl_4F4L._frame = 22; - else if (_wo[83]) - _indoorList._swl_4F4L._frame = 46; - } - - if (!_wo[27] && !_wo[22] && !_wo[17] && !_wo[12] && !_wo[8]) { - if (_wo[38]) - _indoorList._swl_4F3L._frame = 20; - else if (_wo[82]) - _indoorList._swl_4F3L._frame = 44; - } - - if (!_wo[27] && !_wo[22] && !_wo[15] && !_wo[2] && !_wo[7]) { - if (_wo[37]) - _indoorList._swl_4F2L._frame = 18; - else if (_wo[81]) - _indoorList._swl_4F2L._frame = 42; - } - - if (!_wo[27] && !_wo[22] && !_wo[15] && !_wo[6]) { - if (_wo[36]) - _indoorList._swl_4F1L._frame = 16; - else if (_wo[80]) - _indoorList._swl_4F1L._frame = 40; - } - - if (!_wo[27] && !_wo[21] && !_wo[24] && !_wo[14] && !_wo[10] && !_wo[31]) { - if (_wo[43]) - _indoorList._swl_4F4R._frame = 23; - else if (_wo[87]) - _indoorList._swl_4F4R._frame = 47; - } - - if (!_wo[27] && !_wo[22] && !_wo[19] && !_wo[14] && !_wo[10]) { - if (_wo[42]) - _indoorList._swl_4F3R._frame = 21; - else if (_wo[86]) - _indoorList._swl_4F3R._frame = 45; - } - - if (!_wo[27] && !_wo[22] && !_wo[15] && !_wo[5] && !_wo[9]) { - if (_wo[41]) - _indoorList._swl_4F2R._frame = 19; - else if (_wo[85]) - _indoorList._swl_4F2R._frame = 43; - } - - if (!_wo[27] && !_wo[22] && !_wo[15] && !_wo[6]) { - if (_wo[40]) - _indoorList._swl_4F1R._frame = 17; - else if (_wo[84]) - _indoorList._swl_4F1R._frame = 41; - } - - if (!_wo[25] && !_wo[28] && !_wo[20] && !_wo[11] && - !_wo[16] && !_wo[30] && !_wo[32]) { - if (_wo[88]) - _indoorList._fwl_4F4L._frame = 7; - else if (_wo[78]) - _indoorList._fwl_4F4L._frame = 16; - else if (_wo[148]) - _indoorList._fwl_4F4L._frame = _overallFrame + 1; - else if (_wo[108]) - _indoorList._fwl_4F4L._frame = 8; - else if (_wo[168]) - _indoorList._fwl_4F4L._frame = 10; - else if (_wo[128]) - _indoorList._fwl_4F4L._frame = 9; - else if (_wo[34]) - _indoorList._fwl_4F4L._frame = 0; - else if (_wo[188]) - _indoorList._fwl_4F4L._frame = 15; - else if (_wo[208]) - _indoorList._fwl_4F4L._frame = 14; - else if (_wo[228]) - _indoorList._fwl_4F4L._frame = 6; - else if (_wo[248]) - _indoorList._fwl_4F4L._frame = 11; - else if (_wo[268]) - _indoorList._fwl_4F4L._frame = 12; - else if (_wo[288]) - _indoorList._fwl_4F4L._frame = 13; - } - - if (!_wo[26] && !_wo[29] && !_wo[21] && !_wo[13] && !_wo[18] && !_wo[31] && !_wo[33]) { - if (_wo[93]) - _indoorList._fwl_4F4R._frame = 7; - else if (_wo[79]) - _indoorList._fwl_4F4R._frame = 16; - else if (_wo[153]) - _indoorList._fwl_4F4R._frame = _overallFrame + 1; - else if (_wo[113]) - _indoorList._fwl_4F4R._frame = 8; - else if (_wo[173]) - _indoorList._fwl_4F4R._frame = 10; - else if (_wo[133]) - _indoorList._fwl_4F4R._frame = 9; - else if (_wo[35]) - _indoorList._fwl_4F4R._frame = 0; - else if (_wo[79]) - _indoorList._fwl_4F4R._frame = 15; - else if (_wo[213]) - _indoorList._fwl_4F4R._frame = 14; - else if (_wo[233]) - _indoorList._fwl_4F4R._frame = 6; - else if (_wo[253]) - _indoorList._fwl_4F4R._frame = 11; - else if (_wo[273]) - _indoorList._fwl_4F4R._frame = 12; - else if (_wo[293]) - _indoorList._fwl_4F4R._frame = 13; - } - - if (!_wo[25] && !_wo[28] && !_wo[20] && !_wo[11] && !_wo[16] && !_wo[30]) { - if (_wo[32]) - _indoorList._swl_3F4L._frame = 14; - else if (_wo[76]) - _indoorList._swl_3F4L._frame = 38; - } - - if (!_wo[26] && !_wo[29] && !_wo[21] && !_wo[13] && !_wo[18] && !_wo[31]) { - if (_wo[33]) - _indoorList._fwl_3F1R._frame = 15; - else if (_wo[77]) - _indoorList._swl_3F1R._frame = 39; - } - - if (_wo[28] && _wo[27]) { - } - else if (_wo[28] && _wo[12]) { - } - else if (_wo[28] && _wo[23]) { - } - else if (_wo[28] && _wo[8]) { - } - else if (_wo[25] && _wo[27]) { - } - else if (_wo[25] && _wo[12]) { - } - else if (_wo[25] && _wo[23]) { - } - else if (_wo[25] && _wo[8]) { - } - else if (_wo[11] && _wo[27]) { - } - else if (_wo[11] && _wo[12]) { - } - else if (_wo[11] && _wo[23]) { - } - else if (_wo[11] && _wo[8]) { - } - else if (_wo[17] && _wo[27]) { - } - else if (_wo[17] && _wo[12]) { - } - else if (_wo[17] && _wo[23]) { - } - else if (_wo[17] && _wo[8]) { - } - else if (_wo[20]) { - } - else if (_wo[30]) { - _indoorList._swl_3F3L._frame = 12; - } - else if (_wo[74]) { - _indoorList._swl_3F3L._frame = 36; - } - - if (_wo[29] && _wo[27]) { - } - else if (_wo[29] && _wo[14]) { - } - else if (_wo[29] && _wo[24]) { - } - else if (_wo[29] && _wo[10]) { - } - else if (_wo[26] && _wo[27]) { - } - else if (_wo[26] && _wo[14]) { - } - else if (_wo[26] && _wo[24]) { - } - else if (_wo[26] && _wo[10]) { - } - else if (_wo[13] && _wo[27]) { - } - else if (_wo[13] && _wo[14]) { - } - else if (_wo[13] && _wo[24]) { - } - else if (_wo[13] && _wo[10]) { - } - else if (_wo[19] && _wo[27]) { - } - else if (_wo[19] && _wo[24]) { - } - else if (_wo[19] && _wo[10]) { - } - else if (_wo[21]) { - } - else if (_wo[31]) { - _indoorList._swl_3F2R._frame = 13; - } - else if (_wo[75]) { - _indoorList._swl_3F2R._frame = 37; - } - - if (!_wo[27] && !_wo[20] && !_wo[12] && !_wo[23] && !_wo[8] && !_wo[30]) { - if (_wo[89]) - _indoorList._fwl_4F3L._frame = 7; - else if (_wo[44]) - _indoorList._fwl_4F3L._frame = 16; - else if (_wo[149]) - _indoorList._fwl_4F3L._frame = _overallFrame + 1; - else if (_wo[109]) - _indoorList._fwl_4F3L._frame = 8; - else if (_wo[169]) - _indoorList._fwl_4F3L._frame = 10; - else if (_wo[129]) - _indoorList._fwl_4F3L._frame = 9; - else if (_wo[0]) - _indoorList._fwl_4F3L._frame = 0; - else if (_wo[189]) - _indoorList._fwl_4F3L._frame = 15; - else if (_wo[209]) - _indoorList._fwl_4F3L._frame = 14; - else if (_wo[229]) - _indoorList._fwl_4F3L._frame = 6; - else if (_wo[249]) - _indoorList._fwl_4F3L._frame = 11; - else if (_wo[269]) - _indoorList._fwl_4F3L._frame = 12; - else if (_wo[289]) - _indoorList._fwl_4F3L._frame = 13; - } - - if (_wo[22] && _wo[20]) { - } - else if (_wo[22] && _wo[23]) { - } - else if (_wo[20] && _wo[17]) { - } - else if (_wo[23] && _wo[17]) { - } - else if (_wo[12]) { - } - else if (_wo[8]) { - } - else if (_wo[90]) { - _indoorList._fwl_4F2L._frame = 7; - } - else if (_wo[45]) { - _indoorList._fwl_4F2L._frame = 16; - } - else if (_wo[150]) { - _indoorList._fwl_4F2L._frame = _overallFrame + 1; - } - else if (_wo[110]) { - _indoorList._fwl_4F2L._frame = 8; - } - else if (_wo[170]) { - _indoorList._fwl_4F2L._frame = 10; - } - else if (_wo[130]) { - _indoorList._fwl_4F2L._frame = 9; - } - else if (_wo[1]) { - _indoorList._fwl_4F2L._frame = 0; - } - else if (_wo[190]) { - _indoorList._fwl_4F2L._frame = 15; - } - else if (_wo[210]) { - _indoorList._fwl_4F2L._frame = 14; - } - else if (_wo[230]) { - _indoorList._fwl_4F2L._frame = 6; - } - else if (_wo[250]) { - _indoorList._fwl_4F2L._frame = 11; - } - else if (_wo[270]) { - _indoorList._fwl_4F2L._frame = 12; - } - else if (_wo[290]) { - _indoorList._fwl_4F2L._frame = 13; - } - - if (_wo[15] && _wo[17]) { - } - else if (_wo[15] && _wo[12]) { - } - else if (_wo[12] && _wo[7]) { - } - else if (_wo[17] && _wo[7]) { - } - else if (_wo[91]) { - _indoorList._fwl_4F1L._frame = 7; - } - else if (_wo[46]) { - _indoorList._fwl_4F1L._frame = 16; - } - else if (_wo[151]) { - _indoorList._fwl_4F1L._frame = _overallFrame + 1; - } - else if (_wo[111]) { - _indoorList._fwl_4F1L._frame = 8; - } - else if (_wo[171]) { - _indoorList._fwl_4F1L._frame = 10; - } - else if (_wo[131]) { - _indoorList._fwl_4F1L._frame = 9; - } - else if (_wo[2]) { - _indoorList._fwl_4F1L._frame = 0; - } - else if (_wo[191]) { - _indoorList._fwl_4F1L._frame = 15; - } - else if (_wo[211]) { - _indoorList._fwl_4F1L._frame = 14; - } - else if (_wo[231]) { - _indoorList._fwl_4F1L._frame = 6; - } - else if (_wo[251]) { - _indoorList._fwl_4F1L._frame = 11; - } - else if (_wo[271]) { - _indoorList._fwl_4F1L._frame = 12; - } - else if (_wo[291]) { - _indoorList._fwl_4F1L._frame = 13; - } - - if (!_wo[27] && !_wo[21] && !_wo[14] && !_wo[24] && !_wo[10] && !_wo[31]) { - if (_wo[92]) { - _indoorList._fwl_4F3R._frame = 7; - } - else if (_wo[47]) { - _indoorList._fwl_4F3R._frame = 16; - } - else if (_wo[152]) { - _indoorList._fwl_4F3R._frame = _overallFrame + 1; - } - else if (_wo[112]) { - _indoorList._fwl_4F3R._frame = 8; - } - else if (_wo[172]) { - _indoorList._fwl_4F3R._frame = 10; - } - else if (_wo[132]) { - _indoorList._fwl_4F3R._frame = 9; - } - else if (_wo[3]) { - _indoorList._fwl_4F3R._frame = 0; - } - else if (_wo[192]) { - _indoorList._fwl_4F3R._frame = 15; - } - else if (_wo[212]) { - _indoorList._fwl_4F3R._frame = 14; - } - else if (_wo[232]) { - _indoorList._fwl_4F3R._frame = 6; - } - else if (_wo[252]) { - _indoorList._fwl_4F3R._frame = 11; - } - else if (_wo[272]) { - _indoorList._fwl_4F3R._frame = 12; - } - else if (_wo[292]) { - _indoorList._fwl_4F3R._frame = 13; - } - } - - if (_wo[22] && _wo[21]) { - } - else if (_wo[22] && _wo[24]) { - } - else if (_wo[21] && _wo[19]) { - } - else if (_wo[24] && _wo[19]) { - } - else if (_wo[14] || _wo[10]) { - } - else if (_wo[94]) { - _indoorList._fwl_4F2R._frame = 7; - } - else if (_wo[48]) { - _indoorList._fwl_4F2R._frame = 16; - } - else if (_wo[154]) { - _indoorList._fwl_4F2R._frame = _overallFrame + 1; - } - else if (_wo[114]) { - _indoorList._fwl_4F2R._frame = 8; - } - else if (_wo[174]) { - _indoorList._fwl_4F2R._frame = 10; - } - else if (_wo[134]) { - _indoorList._fwl_4F2R._frame = 9; - } - else if (_wo[4]) { - _indoorList._fwl_4F2R._frame = 0; - } - else if (_wo[194]) { - _indoorList._fwl_4F2R._frame = 15; - } - else if (_wo[214]) { - _indoorList._fwl_4F2R._frame = 14; - } - else if (_wo[234]) { - _indoorList._fwl_4F2R._frame = 6; - } - else if (_wo[254]) { - _indoorList._fwl_4F2R._frame = 11; - } - else if (_wo[274]) { - _indoorList._fwl_4F2R._frame = 12; - } - else if (_wo[294]) { - _indoorList._fwl_4F2R._frame = 13; - } - - if (_wo[15] && _wo[19]) { - } - else if (_wo[15] && _wo[14]) { - } - else if (_wo[14] && _wo[9]) { - } - else if (_wo[19] && _wo[9]) { - } - else if (_wo[95]) { - _indoorList._fwl_4F1R._frame = 7; - } - else if (_wo[49]) { - _indoorList._fwl_4F1R._frame = 16; - } - else if (_wo[155]) { - _indoorList._fwl_4F1R._frame = _overallFrame + 1; - } - else if (_wo[115]) { - _indoorList._fwl_4F1R._frame = 8; - } - else if (_wo[175]) { - _indoorList._fwl_4F1R._frame = 10; - } - else if (_wo[135]) { - _indoorList._fwl_4F1R._frame = 9; - } - else if (_wo[5]) { - _indoorList._fwl_4F1R._frame = 0; - } - else if (_wo[195]) { - _indoorList._fwl_4F1R._frame = 15; - } - else if (_wo[215]) { - _indoorList._fwl_4F1R._frame = 14; - } - else if (_wo[235]) { - _indoorList._fwl_4F1R._frame = 6; - } - else if (_wo[255]) { - _indoorList._fwl_4F1R._frame = 11; - } - else if (_wo[275]) { - _indoorList._fwl_4F1R._frame = 12; - } - else if (_wo[295]) { - _indoorList._fwl_4F1R._frame = 13; - } - - if (_wo[27] || _wo[22] || _wo[15] || _wo[96]) { - } - else if (_wo[50]) { - _indoorList._fwl_4F._frame = 16; - } - else if (_wo[156]) { - _indoorList._fwl_4F._frame = _overallFrame + 1; - } - else if (_wo[116]) { - _indoorList._fwl_4F._frame = 8; - } - else if (_wo[176]) { - _indoorList._fwl_4F._frame = 10; - } - else if (_wo[136]) { - _indoorList._fwl_4F._frame = 9; - } - else if (_wo[6]) { - _indoorList._fwl_4F._frame = 0; - } - else if (_wo[196]) { - _indoorList._fwl_4F._frame = 15; - } - else if (_wo[216]) { - _indoorList._fwl_4F._frame = 14; - } - else if (_wo[236]) { - _indoorList._fwl_4F._frame = 6; - } - else if (_wo[256]) { - _indoorList._fwl_4F._frame = 11; - } - else if (_wo[276]) { - _indoorList._fwl_4F._frame = 12; - } - else if (_wo[296]) { - _indoorList._fwl_4F._frame = 13; - } - - if (!_wo[27] && !_wo[22] && !_wo[15]) { - if (_wo[7]) - _indoorList._swl_3F1L._frame = 8; - else if (_wo[51]) - _indoorList._swl_3F1L._frame = 32; - } - - if (_wo[22] && _wo[23]) { - } - else if (_wo[22] && _wo[20]) { - } - else if (_wo[17] && _wo[23]) { - } - else if (_wo[17] && _wo[20]) { - } - else if (_wo[8]) { - _indoorList._swl_3F2L._frame = 10; - } - else if (_wo[52]) { - _indoorList._swl_3F2L._frame = 34; - } - - if (_wo[27] || _wo[22] || _wo[15]) { - } - else if (_wo[9]) { - _indoorList._swl_3F4R._frame = 9; - } - else if (_wo[53]) { - _indoorList._swl_3F4R._frame = 33; - } - - if (_wo[22] && _wo[24]) { - } - else if (_wo[22] && _wo[21]) { - } - else if (_wo[19] && _wo[24]) { - } - else if (_wo[19] && _wo[21]) { - } - else if (_wo[14]) { - } - else if (_wo[10]) { - _indoorList._swl_3F3R._frame = 11; - } - else if (_wo[54]) { - _indoorList._swl_3F3R._frame = 35; - } - - if (_wo[25] || _wo[28] || _wo[20] || _wo[16]) { - } - else if (_wo[97]) { - _indoorList._fwl_3F2L._frame = 24; - } - else if (_wo[55]) { - _indoorList._fwl_3F2L._frame = 33; - } - else if (_wo[137]) { - _indoorList._fwl_3F2L._frame = 26; - } - else if (_wo[157]) { - _indoorList._fwl_3F2L._frame = _overallFrame + 18; - } - else if (_wo[117]) { - _indoorList._fwl_3F2L._frame = 25; - } - else if (_wo[177]) { - _indoorList._fwl_3F2L._frame = 27; - } - else if (_wo[11]) { - _indoorList._fwl_3F2L._frame = 17; - } - else if (_wo[197]) { - _indoorList._fwl_3F2L._frame = 32; - } - else if (_wo[217]) { - _indoorList._fwl_3F2L._frame = 31; - } - else if (_wo[237]) { - _indoorList._fwl_3F2L._frame = 23; - } - else if (_wo[257]) { - _indoorList._fwl_3F2L._frame = 28; - } - else if (_wo[277]) { - _indoorList._fwl_3F2L._frame = 29; - } - else if (_wo[297]) { - _indoorList._fwl_3F2L._frame = 30; - } - - if (_wo[22] && _wo[23]) { - } - else if (_wo[22] && _wo[20]) { - } - else if (_wo[23] && _wo[17]) { - } - else if (_wo[20] && _wo[17]) { - } - else if (_wo[98]) { - _indoorList._fwl_3F1L._frame = 24; - } - else if (_wo[56]) { - _indoorList._fwl_3F1L._frame = 33; - } - else if (_wo[178]) { - _indoorList._fwl_3F1L._frame = 27; - } - else if (_wo[118]) { - _indoorList._fwl_3F1L._frame = 25; - } - else if (_wo[158]) { - _indoorList._fwl_3F1L._frame = _overallFrame + 18; - } - else if (_wo[138]) { - _indoorList._fwl_3F1L._frame = 26; - } - else if (_wo[12]) { - _indoorList._fwl_3F1L._frame = 17; - } - else if (_wo[198]) { - _indoorList._fwl_3F1L._frame = 32; - } - else if (_wo[218]) { - _indoorList._fwl_3F1L._frame = 31; - } - else if (_wo[238]) { - _indoorList._fwl_3F1L._frame = 23; - } - else if (_wo[258]) { - _indoorList._fwl_3F1L._frame = 28; - } - else if (_wo[278]) { - _indoorList._fwl_3F1L._frame = 29; - } - else if (_wo[298]) { - _indoorList._fwl_3F1L._frame = 30; - } - - if (_wo[26] || _wo[29] || _wo[21] || _wo[18]) { - } - else if (_wo[99]) { - _indoorList._fwl_3F2R._frame = 24; - } - else if (_wo[57]) { - _indoorList._fwl_3F2R._frame = 33; - } - else if (_wo[139]) { - _indoorList._fwl_3F2R._frame = 26; - } - else if (_wo[159]) { - _indoorList._fwl_3F2R._frame = _overallFrame + 18; - } - else if (_wo[119]) { - _indoorList._fwl_3F2R._frame = 25; - } - else if (_wo[179]) { - _indoorList._fwl_3F2R._frame = 27; - } - else if (_wo[13]) { - _indoorList._fwl_3F2R._frame = 17; - } - else if (_wo[199]) { - _indoorList._fwl_3F2R._frame = 32; - } - else if (_wo[219]) { - _indoorList._fwl_3F2R._frame = 31; - } - else if (_wo[239]) { - _indoorList._fwl_3F2R._frame = 23; - } - else if (_wo[259]) { - _indoorList._fwl_3F2R._frame = 28; - } - else if (_wo[279]) { - _indoorList._fwl_3F2R._frame = 29; - } - else if (_wo[299]) { - _indoorList._fwl_3F2R._frame = 30; - } - - if (_wo[22] && _wo[24]) { - } - else if (_wo[22] && _wo[21]) { - } - else if (_wo[24] && _wo[19]) { - } - else if (_wo[21] && _wo[19]) { - } - else if (_wo[100]) { - _indoorList._fwl_3F1R._frame = 24; - } - else if (_wo[58]) { - _indoorList._fwl_3F1R._frame = 33; - } - else if (_wo[140]) { - _indoorList._fwl_3F1R._frame = 26; - } - else if (_wo[160]) { - _indoorList._fwl_3F1R._frame = _overallFrame + 18; - } - else if (_wo[120]) { - _indoorList._fwl_3F1R._frame = 25; - } - else if (_wo[180]) { - _indoorList._fwl_3F1R._frame = 27; - } - else if (_wo[14]) { - _indoorList._fwl_3F1R._frame = 17; - } - else if (_wo[200]) { - _indoorList._fwl_3F1R._frame = 32; - } - else if (_wo[220]) { - _indoorList._fwl_3F1R._frame = 31; - } - else if (_wo[240]) { - _indoorList._fwl_3F1R._frame = 23; - } - else if (_wo[260]) { - _indoorList._fwl_3F1R._frame = 28; - } - else if (_wo[280]) { - _indoorList._fwl_3F1R._frame = 29; - } - else if (_wo[300]) { - _indoorList._fwl_3F1R._frame = 30; - } - - if (_wo[22] || _wo[27]) { - } - else if (_wo[101]) { - _indoorList._fwl_3F._frame = 24; - } - else if (_wo[59]) { - _indoorList._fwl_3F._frame = 33; - } - else if (_wo[141]) { - _indoorList._fwl_3F._frame = 26; - } - else if (_wo[161]) { - _indoorList._fwl_3F._frame = _overallFrame + 18; - } - else if (_wo[121]) { - _indoorList._fwl_3F._frame = 25; - } - else if (_wo[181]) { - _indoorList._fwl_3F._frame = 27; - } - else if (_wo[15]) { - _indoorList._fwl_3F._frame = 17; - } - else if (_wo[201]) { - _indoorList._fwl_3F._frame = 32; - } - else if (_wo[221]) { - _indoorList._fwl_3F._frame = 31; - } - else if (_wo[241]) { - _indoorList._fwl_3F._frame = 23; - } - else if (_wo[261]) { - _indoorList._fwl_3F._frame = 28; - } - else if (_wo[281]) { - _indoorList._fwl_3F._frame = 29; - } - else if (_wo[301]) { - _indoorList._fwl_3F._frame = 30; - } - - if (_wo[25] || _wo[28] || _wo[20]) { - } - else if (_wo[16]) { - _indoorList._swl_2F2L._frame = 6; - } - else if (_wo[60]) { - _indoorList._swl_2F2L._frame = 30; - } - - if (_wo[27] || _wo[22]) { - } - else if (_wo[17]) { - _indoorList._swl_2F1L._frame = 4; - } - else if (_wo[61]) { - _indoorList._swl_2F1L._frame = 28; - } - - if (_wo[26] || _wo[29] || _wo[21]) { - } - else if (_wo[18]) { - _indoorList._swl_2F2R._frame = 7; - } - else if (_wo[62]) { - _indoorList._swl_2F2R._frame = 31; - } - - if (_wo[27] || _wo[22]) { - } - else if (_wo[19]) { - _indoorList._swl_2F1R._frame = 5; - } - else if (_wo[63]) { - _indoorList._swl_2F1R._frame = 29; - } - - if (_wo[27] && _wo[25]) { - } - else if (_wo[27] && _wo[28]) { - } - else if (_wo[23] & _wo[25]) { - } - else if (_wo[23] && _wo[28]) { - } - else if (_wo[102]) { - _indoorList._fwl_2F1L._frame = 7; - } - else if (_wo[64]) { - _indoorList._fwl_2F1L._frame = 16; - } - else if (_wo[182]) { - _indoorList._fwl_2F1L._frame = 10; - } - else if (_wo[122]) { - _indoorList._fwl_2F1L._frame = 8; - } - else if (_wo[142]) { - _indoorList._fwl_2F1L._frame = 9; - } - else if (_wo[162]) { - _indoorList._fwl_2F1L._frame = _overallFrame + 1; - } - else if (_wo[20]) { - _indoorList._fwl_2F1L._frame = 0; - } - else if (_wo[202]) { - _indoorList._fwl_2F1L._frame = 15; - } - else if (_wo[222]) { - _indoorList._fwl_2F1L._frame = 14; - } - else if (_wo[242]) { - _indoorList._fwl_2F1L._frame = 6; - } - else if (_wo[262]) { - _indoorList._fwl_2F1L._frame = 11; - } - else if (_wo[282]) { - _indoorList._fwl_2F1L._frame = 12; - } - else if (_wo[302]) { - _indoorList._fwl_2F1L._frame = 13; - } - - if (_wo[27] && _wo[26]) { - } - else if (_wo[27] && _wo[29]) { - } - else if (_wo[24] && _wo[26]) { - } - else if (_wo[24] && _wo[29]) { - } - else if (_wo[103]) { - _indoorList._fwl_2F1R._frame = 7; - } - else if (_wo[65]) { - _indoorList._fwl_2F1R._frame = 16; - } - else if (_wo[183]) { - _indoorList._fwl_2F1R._frame = 10; - } - else if (_wo[123]) { - _indoorList._fwl_2F1R._frame = 8; - } - else if (_wo[143]) { - _indoorList._fwl_2F1R._frame = 9; - } - else if (_wo[163]) { - _indoorList._fwl_2F1R._frame = _overallFrame + 1; - } - else if (_wo[21]) { - _indoorList._fwl_2F1R._frame = 0; - } - else if (_wo[203]) { - _indoorList._fwl_2F1R._frame = 15; - } - else if (_wo[223]) { - _indoorList._fwl_2F1R._frame = 14; - } - else if (_wo[243]) { - _indoorList._fwl_2F1R._frame = 6; - } - else if (_wo[263]) { - _indoorList._fwl_2F1R._frame = 11; - } - else if (_wo[283]) { - _indoorList._fwl_2F1R._frame = 12; - } - else if (_wo[303]) { - _indoorList._fwl_2F1R._frame = 13; - } - - if (_wo[27]) { - - } - else if (_wo[104]) { - _indoorList._fwl_2F._frame = 7; - } - else if (_wo[66]) { - _indoorList._fwl_2F._frame = 16; - } - else if (_wo[184]) { - _indoorList._fwl_2F._frame = 10; - } - else if (_wo[124]) { - _indoorList._fwl_2F._frame = 8; - } - else if (_wo[144]) { - _indoorList._fwl_2F._frame = 9; - } - else if (_wo[164]) { - _indoorList._fwl_2F._frame = _overallFrame + 1; - } - else if (_wo[22]) { - _indoorList._fwl_2F._frame = 0; - } - else if (_wo[204]) { - _indoorList._fwl_2F._frame = 15; - } - else if (_wo[224]) { - _indoorList._fwl_2F._frame = 14; - } - else if (_wo[244]) { - _indoorList._fwl_2F._frame = 6; - } - else if (_wo[264]) { - _indoorList._fwl_2F._frame = 11; - } - else if (_wo[284]) { - _indoorList._fwl_2F._frame = 12; - } - else if (_wo[304]) { - _indoorList._fwl_2F._frame = 13; - } - - if (_wo[27]) { - } - else if (_wo[23]) { - _indoorList._swl_1F1L._frame = 2; - } - else if (_wo[67]) { - _indoorList._swl_1F1L._frame = 26; - } - - if (_wo[27]) { - } - else if (_wo[24]) { - _indoorList._swl_1F1R._frame = 3; - } - else if (_wo[68]) { - _indoorList._swl_1F1R._frame = 27; - } - - if (_wo[28]) { - } - else if (_wo[105] || _wo[25] || _wo[165] || _wo[125] || _wo[185] || _wo[145]) { - _indoorList._fwl_1F1L._frame = 0; - _indoorList._fwl_1F1L._sprites = &map._wallSprites._fwl1; - } - else if (_wo[69]) { - _indoorList._fwl_1F1L._frame = 9; - _indoorList._fwl_1F1L._sprites = &map._wallSprites._fwl2; - } - - if (_wo[29]) { - } - else if (_wo[106] || _wo[26] || _wo[166] || _wo[126] || _wo[186] || _wo[146]) { - _indoorList._fwl_1F._frame = 0; - _indoorList._fwl_1F._sprites = &map._wallSprites._fwl1; - } - else if (_wo[70]) { - _indoorList._fwl_1F._frame = 9; - _indoorList._fwl_1F._sprites = &map._wallSprites._fwl2; - } - - if (_wo[107]) { - _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; - if (_vm->_openDoor) - _indoorList._fwl_1F1R._frame = 0; - else - _indoorList._fwl_1F1R._frame = map.mazeData()._wallKind ? 1 : 10; - } - else if (_wo[71]) { - _indoorList._fwl_1F1R._frame = 9; - _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; - } - else if (_wo[167]) { - _indoorList._fwl_1F1R._frame = _overallFrame + 1; - _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; - } - else if (_wo[127]) { - _indoorList._fwl_1F1R._frame = 1; - _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; - } - else if (_wo[147]) { - _indoorList._fwl_1F1R._frame = 2; - _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; - } - else if (_wo[187]) { - _indoorList._fwl_1F1R._frame = 3; - _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; - } - else if (_wo[27]) { - _indoorList._fwl_1F1R._frame = 0; - _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl1; - } - else if (_wo[207]) { - _indoorList._fwl_1F1R._frame = 8; - _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; - } - else if (_wo[227]) { - _indoorList._fwl_1F1R._frame = 7; - _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; - } - else if (_wo[247]) { - _indoorList._fwl_1F1R._frame = 6; - _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl1; - } - else if (_wo[267]) { - _indoorList._fwl_1F1R._frame = 4; - _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; - } - else if (_wo[287]) { - _indoorList._fwl_1F1R._frame = 5; - _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; - } - else if (_wo[307]) { - _indoorList._fwl_1F1R._frame = 6; - _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; - } - - if (_wo[28]) { - _indoorList._swl_0F1L._frame = 0; - } - else if (_wo[72]) { - _indoorList._swl_0F1L._frame = 24; - } - - if (_wo[29]) { - _indoorList._swl_0F1R._frame = 1; - } - else if (_wo[73]) { - _indoorList._swl_0F1R._frame = 25; - } - - map.cellFlagLookup(_vm->_party._mazePosition); - - // WORKAROUND: Original did an array lookup on _skySprites. - // Was this a feature for multiple skys that was abandoned? - _indoorList[0]._sprites = &map._skySprites; - _indoorList[0]._flags = _flipSky ? SPRFLAG_HORIZ_FLIPPED : 0; - - if (_vm->_openDoor) { - Common::Point pt( - _vm->_party._mazePosition.x + SCREEN_POSITIONING_X[ - _vm->_party._mazeDirection][_vm->_party._mazePosition.x], - _vm->_party._mazePosition.y + SCREEN_POSITIONING_Y[ - _vm->_party._mazeDirection][_vm->_party._mazePosition.y] - ); - map.cellFlagLookup(pt); - - _indoorList._sky._sprites = &map._skySprites; - } else { - _indoorList._sky._sprites = _indoorList[0]._sprites; - } - - _indoorList._sky._flags = _flipSky ? SPRFLAG_HORIZ_FLIPPED : 0; - _indoorList._ground._flags = _flipGround ? SPRFLAG_HORIZ_FLIPPED : 0; - _indoorList._horizon._frame = 7; - - // Finally draw the darn indoor scene - _vm->_screen->_windows[3].drawList(&_indoorList[0], _indoorList.size()); - - // Check for any character shooting - _isShooting = false; - for (int i = 0; i < _vm->_party._partyCount; ++i) { - if (_vm->_combat->_shooting[i]) - _isShooting = true; - } - - _charsShooting = _isShooting; - - // TODO -} - void Interface::updateAutoMap() { // TODO } diff --git a/engines/xeen/interface.h b/engines/xeen/interface.h index f84885f307..4667592b20 100644 --- a/engines/xeen/interface.h +++ b/engines/xeen/interface.h @@ -25,6 +25,7 @@ #include "common/scummsys.h" #include "xeen/dialogs.h" +#include "xeen/interface_map.h" #include "xeen/party.h" #include "xeen/screen.h" @@ -32,55 +33,7 @@ namespace Xeen { class XeenEngine; -class OutdoorDrawList { -public: - DrawStruct _data[132]; - DrawStruct &_skySprite; - DrawStruct &_groundSprite; -public: - OutdoorDrawList(); - - DrawStruct &operator[](int idx) { - assert(idx < size()); - return _data[idx]; - } - - int size() const { return 132; } -}; - -class IndoorDrawList { -public: - DrawStruct _data[170]; - DrawStruct &_sky; - DrawStruct &_ground; - DrawStruct &_horizon; - DrawStruct &_swl_0F1R, _swl_0F1L, _swl_1F1R, _swl_1F1L, - _swl_2F2R, _swl_2F1R, _swl_2F1L, _swl_2F2L, - _swl_3F1R, _swl_3F2R, _swl_3F3R, _swl_3F4R, - _swl_3F1L, _swl_3F2L, _swl_3F3L, _swl_3F4L, - _swl_4F4R, _swl_4F3R, _swl_4F2R, _swl_4F1R, - _swl_4F1L, _swl_4F2L, _swl_4F3L, _swl_4F4L; - DrawStruct &_fwl_4F4R, _fwl_4F3R, _fwl_4F2R, _fwl_4F1R, - _fwl_4F, _fwl_4F1L, _fwl_4F2L, _fwl_4F3L, _fwl_4F4L; - DrawStruct &_fwl_2F1R, _fwl_2F, _fwl_2F1L, _fwl_3F2R, - _fwl_3F1R, _fwl_3F, _fwl_3F1L, _fwl_3F2L; - DrawStruct &_fwl_1F, _fwl_1F1R, _fwl_1F1L; - DrawStruct &_objects0, _objects1, _objects2, _objects3; - DrawStruct &_objects4, _objects5, _objects6, _objects7; - DrawStruct &_objects8, _objects9, _objects10, _objects11; -public: - IndoorDrawList(); - - DrawStruct &operator[](int idx) { - assert(idx < size()); - return _data[idx]; - } - - int size() const { return 170; } -}; - - -class Interface: public ButtonContainer { +class Interface: public ButtonContainer, public InterfaceMap { private: XeenEngine *_vm; SpriteResource _dseFace; @@ -115,26 +68,17 @@ private: Common::String _interfaceText; int _hiliteChar; int _intrIndex1; - bool _flipWtr; - bool _flipWall; - bool _flipSky; - bool _flipGround; bool _flag1; int _animCounter; bool _isAnimReset; - bool _charsShooting; byte _tillMove; - int _objNumber; - byte _wp[20]; - byte _wo[308]; bool _thinWall; int _overallFrame; - bool _isShooting; - - void loadSprites(); void initDrawStructs(); + void loadSprites(); + void assembleBorder(); void setupBackground(); @@ -149,18 +93,6 @@ private: void animate3d(); - void setIndoorsMonsters(); - - void setIndoorObjects(); - - void setIndoorWallPics(); - - void drawIndoors(); - - void setOutdoorsMonsters(); - - void setOutdoorsObjects(); - void moveMonsters(); void setMainButtons(); diff --git a/engines/xeen/interface_map.cpp b/engines/xeen/interface_map.cpp new file mode 100644 index 0000000000..d88f9421ed --- /dev/null +++ b/engines/xeen/interface_map.cpp @@ -0,0 +1,1704 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "xeen/interface.h" +#include "xeen/dialogs_error.h" +#include "xeen/resources.h" +#include "xeen/xeen.h" + +namespace Xeen { + +OutdoorDrawList::OutdoorDrawList() : _skySprite(_data[1]), _groundSprite(_data[2]) { + _data[0] = DrawStruct(0, 8, 8); + _data[1] = DrawStruct(1, 8, 25); + _data[2] = DrawStruct(0, 8, 67); + _data[3] = DrawStruct(0, 8, 67); + _data[4] = DrawStruct(0, 38, 67); + _data[5] = DrawStruct(0, 84, 67); + _data[6] = DrawStruct(0, 134, 67); + _data[7] = DrawStruct(0, 117, 67); + _data[8] = DrawStruct(0, 117, 67); + _data[9] = DrawStruct(0, 103, 67); + _data[10] = DrawStruct(0, 8, 73); + _data[11] = DrawStruct(0, 8, 73); + _data[12] = DrawStruct(0, 30, 73); + _data[13] = DrawStruct(0, 181, 73); + _data[14] = DrawStruct(0, 154, 73); + _data[15] = DrawStruct(0, 129, 73); + _data[16] = DrawStruct(0, 87, 73); + _data[17] = DrawStruct(0, 8, 81); + _data[18] = DrawStruct(0, 8, 81); + _data[19] = DrawStruct(0, 202, 81); + _data[20] = DrawStruct(0, 145, 81); + _data[21] = DrawStruct(0, 63, 81); + _data[22] = DrawStruct(0, 8, 93); + _data[23] = DrawStruct(0, 169, 93); + _data[24] = DrawStruct(0, 31, 93); + _data[25] = DrawStruct(0, 8, 109); + _data[26] = DrawStruct(0, 201, 109); + _data[27] = DrawStruct(0, 8, 109); + _data[28] = DrawStruct(1, 65472, 61, 14, SPRFLAG_2000); + _data[29] = DrawStruct(1, 65496, 61, 14, 0); + _data[30] = DrawStruct(1, 65520, 61, 14, 0); + _data[31] = DrawStruct(1, 8, 61, 14, 0); + _data[32] = DrawStruct(1, 128, 61, 14, SPRFLAG_HORIZ_FLIPPED | SPRFLAG_2000); + _data[33] = DrawStruct(1, 104, 61, 14, SPRFLAG_HORIZ_FLIPPED); + _data[34] = DrawStruct(1, 80, 61, 14, SPRFLAG_HORIZ_FLIPPED); + _data[35] = DrawStruct(1, 56, 61, 14, SPRFLAG_HORIZ_FLIPPED); + _data[36] = DrawStruct(1, 32, 61, 14, 0); + _data[37] = DrawStruct(0, 65527, 61, 14, 0); + _data[38] = DrawStruct(0, 65478, 61, 14, 0); + _data[39] = DrawStruct(0, 40, 61, 14, 0); + _data[40] = DrawStruct(0, 65454, 61, 14, 0); + _data[41] = DrawStruct(0, 64, 61, 14, 0); + _data[42] = DrawStruct(0, 65495, 61, 14, 0); + _data[43] = DrawStruct(0, 65510, 61, 14, 0); + _data[44] = DrawStruct(0, 65502, 61, 14, 0); + _data[45] = DrawStruct(0, 65520, 61, 14, 0); + _data[46] = DrawStruct(0, 23, 61, 14, 0); + _data[47] = DrawStruct(0, 16, 61, 14, 0); + _data[48] = DrawStruct(0, 65478, 61, 14, 0); + _data[49] = DrawStruct(0, 40, 61, 14, 0); + _data[50] = DrawStruct(0, 65519, 61, 14, 0); + _data[51] = DrawStruct(0, 65535, 58, 14, 0); + _data[52] = DrawStruct(0, 65527, 58, 14, 0); + _data[53] = DrawStruct(0, 72, 58, 12, 0); + _data[54] = DrawStruct(0, 72, 58, 12, SPRFLAG_HORIZ_FLIPPED); + _data[55] = DrawStruct(0, 69, 63, 12, 0); + _data[56] = DrawStruct(0, 75, 63, 12, SPRFLAG_HORIZ_FLIPPED); + _data[57] = DrawStruct(0, 73, 53, 12, 0); + _data[58] = DrawStruct(0, 71, 53, 12, SPRFLAG_HORIZ_FLIPPED); + _data[59] = DrawStruct(0, 80, 57, 12, 0); + _data[60] = DrawStruct(0, 64, 57, 12, SPRFLAG_HORIZ_FLIPPED); + _data[61] = DrawStruct(2, 65525, 54, 8, 0); + _data[62] = DrawStruct(1, 65515, 54, 11, 0); + _data[63] = DrawStruct(2, 165, 54, 8, SPRFLAG_HORIZ_FLIPPED); + _data[64] = DrawStruct(1, 86, 54, 11, SPRFLAG_HORIZ_FLIPPED); + _data[65] = DrawStruct(1, 33, 54, 11, 0); + _data[66] = DrawStruct(0, 65528, 54, 12, 0); + _data[67] = DrawStruct(0, 65463, 54, 12, 0); + _data[68] = DrawStruct(0, 57, 54, 12, 0); + _data[69] = DrawStruct(0, 65471, 54, 12, 0); + _data[70] = DrawStruct(0, 65455, 54, 12, 0); + _data[71] = DrawStruct(0, 49, 54, 12, 0); + _data[72] = DrawStruct(0, 65, 54, 12, 0); + _data[73] = DrawStruct(0, 65512, 54, 12, 0); + _data[74] = DrawStruct(0, 9, 50, 12, 0); + _data[75] = DrawStruct(0, 65528, 50, 12, 0); + _data[76] = DrawStruct(0, 72, 53, 8, 0); + _data[77] = DrawStruct(0, 72, 53, 8, SPRFLAG_HORIZ_FLIPPED); + _data[78] = DrawStruct(0, 77, 58, 8, 0); + _data[79] = DrawStruct(0, 67, 58, 8, SPRFLAG_HORIZ_FLIPPED); + _data[80] = DrawStruct(0, 81, 47, 8, 0); + _data[81] = DrawStruct(0, 63, 47, 8, SPRFLAG_HORIZ_FLIPPED); + _data[82] = DrawStruct(0, 94, 52, 8, 0); + _data[83] = DrawStruct(0, 50, 52, 8, SPRFLAG_HORIZ_FLIPPED); + _data[84] = DrawStruct(2, 8, 40); + _data[85] = DrawStruct(2, 146, 40, 0, SPRFLAG_HORIZ_FLIPPED); + _data[86] = DrawStruct(1, 32, 40, 6, 0); + _data[87] = DrawStruct(0, 65529, 30, 7, 0); + _data[88] = DrawStruct(0, 65424, 30, 7, SPRFLAG_2000); + _data[89] = DrawStruct(0, 98, 30, 7, SPRFLAG_2000); + _data[90] = DrawStruct(0, 65424, 30, 8, SPRFLAG_2000); + _data[91] = DrawStruct(0, 98, 30, 8, SPRFLAG_2000); + _data[92] = DrawStruct(0, 65498, 30, 8, 0); + _data[93] = DrawStruct(0, 25, 30, 8, 0); + _data[94] = DrawStruct(0, 65529, 30, 8, 0); + _data[95] = DrawStruct(0, 72, 48, 4, 0); + _data[96] = DrawStruct(0, 72, 48, 4, SPRFLAG_HORIZ_FLIPPED); + _data[97] = DrawStruct(0, 85, 53, 4, 0); + _data[98] = DrawStruct(0, 59, 53, 4, SPRFLAG_HORIZ_FLIPPED); + _data[99] = DrawStruct(0, 89, 41, 4, 0); + _data[100] = DrawStruct(0, 55, 41, 4, SPRFLAG_HORIZ_FLIPPED); + _data[101] = DrawStruct(0, 106, 47, 4, 0); + _data[102] = DrawStruct(0, 38, 47, 4, SPRFLAG_HORIZ_FLIPPED); + _data[103] = DrawStruct(0, 8, 24); + _data[104] = DrawStruct(0, 169, 24, 0, SPRFLAG_HORIZ_FLIPPED); + _data[105] = DrawStruct(1, 32, 24); + _data[106] = DrawStruct(0, 65513, 40, 0, SPRFLAG_2000); + _data[107] = DrawStruct(0, 200, 40, 0, SPRFLAG_HORIZ_FLIPPED | SPRFLAG_2000); + _data[108] = DrawStruct(0, 8, 47); + _data[109] = DrawStruct(0, 169, 47, 0, SPRFLAG_HORIZ_FLIPPED); + _data[110] = DrawStruct(1, 65480, 65532, 32768, SPRFLAG_4000 | SPRFLAG_2000); + _data[111] = DrawStruct(0, 65531, 2, 0, SPRFLAG_4000 | SPRFLAG_2000); + _data[112] = DrawStruct(0, 65469, 2, 0, SPRFLAG_4000 | SPRFLAG_2000); + _data[113] = DrawStruct(0, 44, 73); + _data[114] = DrawStruct(0, 44, 73); + _data[115] = DrawStruct(0, 58, 14, 0, SPRFLAG_4000 | SPRFLAG_2000); + _data[116] = DrawStruct(0, 169, 73); + _data[117] = DrawStruct(0, 169, 73); + _data[118] = DrawStruct(0, 65531, 14, 0, SPRFLAG_4000 | SPRFLAG_2000); + _data[119] = DrawStruct(0, 110, 73); + _data[120] = DrawStruct(0, 110, 73); + _data[121] = DrawStruct(0, 65531, 14, 0, SPRFLAG_4000 | SPRFLAG_2000); + _data[122] = DrawStruct(0, 110, 73); + _data[123] = DrawStruct(0, 110, 73); + _data[124] = DrawStruct(0, 72, 43); + _data[125] = DrawStruct(0, 72, 43, 0, SPRFLAG_HORIZ_FLIPPED); + _data[126] = DrawStruct(0, 93, 48); + _data[127] = DrawStruct(0, 51, 48, 0, SPRFLAG_HORIZ_FLIPPED); + _data[128] = DrawStruct(0, 97, 36); + _data[129] = DrawStruct(0, 47, 36, 0, SPRFLAG_HORIZ_FLIPPED); + _data[130] = DrawStruct(0, 118, 42); + _data[131] = DrawStruct(0, 26, 42, 0, SPRFLAG_HORIZ_FLIPPED); +} + +/*------------------------------------------------------------------------*/ + +IndoorDrawList::IndoorDrawList() : + _sky(_data[1]), _ground(_data[2]), _horizon(_data[28]), + _swl_0F1R(_data[ 46]), _swl_0F1L(_data[44]), _swl_1F1R(_data[134]), + _swl_1F1L(_data[133]), _swl_2F2R(_data[110]), _swl_2F1R(_data[109]), + _swl_2F1L(_data[108]), _swl_2F2L(_data[107]), _swl_3F1R(_data[ 78]), + _swl_3F2R(_data[ 77]), _swl_3F3R(_data[ 76]), _swl_3F4R(_data[ 75]), + _swl_3F1L(_data[ 74]), _swl_3F2L(_data[ 73]), _swl_3F3L(_data[ 72]), + _swl_3F4L(_data[ 71]), _swl_4F4R(_data[ 33]), _swl_4F3R(_data[ 34]), + _swl_4F2R(_data[ 35]), _swl_4F1R(_data[ 36]), _swl_4F1L(_data[ 32]), + _swl_4F2L(_data[ 31]), _swl_4F3L(_data[ 30]), _swl_4F4L(_data[ 29]), + _fwl_4F4R(_data[ 45]), _fwl_4F3R(_data[ 44]), _fwl_4F2R(_data[ 43]), + _fwl_4F1R(_data[ 42]), _fwl_4F( _data[ 41]), _fwl_4F1L(_data[ 40]), + _fwl_4F2L(_data[ 39]), _fwl_4F3L(_data[ 38]), _fwl_4F4L(_data[ 37]), + _fwl_2F1R(_data[121]), _fwl_2F( _data[120]), _fwl_2F1L(_data[119]), + _fwl_3F2R(_data[ 91]), _fwl_3F1R(_data[ 90]), _fwl_3F( _data[ 89]), + _fwl_3F1L(_data[ 88]), _fwl_3F2L(_data[ 87]), _fwl_1F( _data[147]), + _fwl_1F1R(_data[145]), _fwl_1F1L(_data[143]), + _objects0(_data[149]), _objects1(_data[125]), _objects2(_data[126]), + _objects3(_data[127]), _objects4(_data[97]), _objects5(_data[98]), + _objects6(_data[99]), _objects7(_data[55]), _objects8(_data[56]), + _objects9(_data[58]), _objects10(_data[57]), _objects11(_data[59]) { + // Setup draw structure positions + _data[0] = DrawStruct(0, 8, 8); + _data[1] = DrawStruct(1, 8, 25); + _data[2] = DrawStruct(0, 8, 67); + _data[3] = DrawStruct(0, 8, 67); + _data[4] = DrawStruct(0, 38, 67); + _data[5] = DrawStruct(0, 84, 67); + _data[6] = DrawStruct(0, 134, 67); + _data[7] = DrawStruct(0, 117, 67); + _data[8] = DrawStruct(0, 117, 67); + _data[9] = DrawStruct(0, 103, 67); + _data[10] = DrawStruct(0, 8, 73); + _data[11] = DrawStruct(0, 8, 73); + _data[12] = DrawStruct(0, 30, 73); + _data[13] = DrawStruct(0, 181, 73); + _data[14] = DrawStruct(0, 154, 73); + _data[15] = DrawStruct(0, 129, 73); + _data[16] = DrawStruct(0, 87, 73); + _data[17] = DrawStruct(0, 8, 81); + _data[18] = DrawStruct(0, 8, 81); + _data[19] = DrawStruct(0, 202, 81); + _data[20] = DrawStruct(0, 145, 81); + _data[21] = DrawStruct(0, 63, 81); + _data[22] = DrawStruct(0, 8, 93); + _data[23] = DrawStruct(0, 169, 93); + _data[24] = DrawStruct(0, 31, 93); + _data[25] = DrawStruct(0, 8, 109); + _data[26] = DrawStruct(0, 201, 109); + _data[27] = DrawStruct(0, 8, 109); + _data[28] = DrawStruct(7, 8, 64); + _data[29] = DrawStruct(22, 32, 60); + _data[30] = DrawStruct(20, 56, 60); + _data[31] = DrawStruct(18, 80, 60); + _data[32] = DrawStruct(16, 104, 60); + _data[33] = DrawStruct(23, 152, 60, 0, SPRFLAG_HORIZ_FLIPPED); + _data[34] = DrawStruct(21, 144, 60, 0, SPRFLAG_HORIZ_FLIPPED); + _data[35] = DrawStruct(19, 131, 60, 0, SPRFLAG_HORIZ_FLIPPED); + _data[36] = DrawStruct(17, 120, 60, 0, SPRFLAG_HORIZ_FLIPPED); + _data[37] = DrawStruct(14, 8, 60); + _data[38] = DrawStruct(12, 32, 60); + _data[39] = DrawStruct(10, 56, 60); + _data[40] = DrawStruct(14, 80, 60); + _data[41] = DrawStruct(14, 104, 60); + _data[42] = DrawStruct(14, 128, 60); + _data[43] = DrawStruct(14, 152, 60); + _data[44] = DrawStruct(8, 176, 60); + _data[45] = DrawStruct(8, 200, 60); + _data[46] = DrawStruct(0, 65472, 61, 14, 0); + _data[47] = DrawStruct(0, 65496, 61, 14, 0); + _data[48] = DrawStruct(0, 65520, 61, 14, 0); + _data[49] = DrawStruct(0, 8, 61, 14, 0); + _data[50] = DrawStruct(0, 32, 61, 14, 0); + _data[51] = DrawStruct(0, 56, 61, 14, 0); + _data[52] = DrawStruct(0, 80, 61, 14, 0); + _data[53] = DrawStruct(0, 104, 61, 14, 0); + _data[54] = DrawStruct(0, 128, 61, 14, 0); + _data[55] = DrawStruct(0, 65527, 58, 14, 0); + _data[56] = DrawStruct(0, 65502, 58, 14, 0); + _data[57] = DrawStruct(0, 16, 58, 14, 0); + _data[58] = DrawStruct(0, 65478, 58, 14, 0); + _data[59] = DrawStruct(0, 40, 58, 14, 0); + _data[60] = DrawStruct(0, 65495, 58, 14, 0); + _data[61] = DrawStruct(0, 65510, 58, 14, 0); + _data[62] = DrawStruct(0, 65502, 58, 14, 0); + _data[63] = DrawStruct(0, 65520, 58, 14, 0); + _data[64] = DrawStruct(0, 23, 58, 14, 0); + _data[65] = DrawStruct(0, 16, 58, 14, 0); + _data[66] = DrawStruct(0, 65478, 58, 14, 0); + _data[67] = DrawStruct(0, 40, 58, 14, 0); + _data[68] = DrawStruct(0, 65519, 58, 14, 0); + _data[69] = DrawStruct(0, 65535, 58, 14, 0); + _data[70] = DrawStruct(0, 65527, 58, 14, 0); + _data[71] = DrawStruct(14, 8, 58); + _data[72] = DrawStruct(12, 8, 55); + _data[73] = DrawStruct(10, 32, 52); + _data[74] = DrawStruct(14, 88, 52); + _data[75] = DrawStruct(14, 128, 52, 0, SPRFLAG_HORIZ_FLIPPED); + _data[76] = DrawStruct(14, 152, 52, 0, SPRFLAG_HORIZ_FLIPPED); + _data[77] = DrawStruct(0, 176, 55, 0, SPRFLAG_HORIZ_FLIPPED); + _data[78] = DrawStruct(0, 200, 58, 0, SPRFLAG_HORIZ_FLIPPED); + _data[79] = DrawStruct(0, 72, 58, 12, 0); + _data[80] = DrawStruct(0, 72, 58, 12, SPRFLAG_HORIZ_FLIPPED); + _data[81] = DrawStruct(0, 69, 63, 12, 0); + _data[82] = DrawStruct(0, 75, 63, 12, SPRFLAG_HORIZ_FLIPPED); + _data[83] = DrawStruct(0, 73, 53, 12, 0); + _data[84] = DrawStruct(0, 71, 53, 12, SPRFLAG_HORIZ_FLIPPED); + _data[85] = DrawStruct(0, 80, 57, 12, 0); + _data[86] = DrawStruct(0, 64, 57, 12, SPRFLAG_HORIZ_FLIPPED); + _data[87] = DrawStruct(7, 65512, 52, 0, SPRFLAG_2000); + _data[88] = DrawStruct(7, 32, 52); + _data[89] = DrawStruct(7, 88, 52); + _data[90] = DrawStruct(0, 144, 52); + _data[91] = DrawStruct(0, 200, 52, 0, SPRFLAG_2000); + _data[92] = DrawStruct(0, 65457, 52, 11, SPRFLAG_2000); + _data[93] = DrawStruct(0, 65509, 52, 11, 0); + _data[94] = DrawStruct(0, 32, 52, 11, 0); + _data[95] = DrawStruct(0, 89, 52, 11, 0); + _data[96] = DrawStruct(0, 145, 52, 11, SPRFLAG_2000); + _data[97] = DrawStruct(0, 65528, 50, 12, 0); + _data[98] = DrawStruct(0, 65471, 50, 12, 0); + _data[99] = DrawStruct(0, 49, 50, 12, 0); + _data[100] = DrawStruct(0, 65471, 50, 12, 0); + _data[101] = DrawStruct(0, 65455, 50, 12, 0); + _data[102] = DrawStruct(0, 49, 50, 12, 0); + _data[103] = DrawStruct(0, 65, 50, 12, 0); + _data[104] = DrawStruct(0, 65512, 50, 12, 0); + _data[105] = DrawStruct(0, 9, 50, 12, 0); + _data[106] = DrawStruct(0, 65528, 50, 12, 0); + _data[107] = DrawStruct(7, 8, 48); + _data[108] = DrawStruct(7, 64, 40); + _data[109] = DrawStruct(6, 144, 40, 0, SPRFLAG_HORIZ_FLIPPED); + _data[110] = DrawStruct(6, 200, 48, 0, SPRFLAG_HORIZ_FLIPPED); + _data[111] = DrawStruct(0, 72, 53, 8, 0); + _data[112] = DrawStruct(0, 72, 53, 8, SPRFLAG_HORIZ_FLIPPED); + _data[113] = DrawStruct(0, 77, 58, 8, 0); + _data[114] = DrawStruct(0, 67, 58, 8, SPRFLAG_HORIZ_FLIPPED); + _data[115] = DrawStruct(0, 81, 47, 8, 0); + _data[116] = DrawStruct(0, 63, 47, 8, SPRFLAG_HORIZ_FLIPPED); + _data[117] = DrawStruct(0, 94, 52, 8, 0); + _data[118] = DrawStruct(0, 50, 52, 8, SPRFLAG_HORIZ_FLIPPED); + _data[119] = DrawStruct(6, 65496, 40, 0, SPRFLAG_2000); + _data[120] = DrawStruct(6, 64, 40); + _data[121] = DrawStruct(0, 168, 40, 0, SPRFLAG_2000); + _data[122] = DrawStruct(0, 65464, 40, 6, SPRFLAG_2000); + _data[123] = DrawStruct(0, 32, 40, 6, 0); + _data[124] = DrawStruct(0, 137, 40, 6, SPRFLAG_2000); + _data[125] = DrawStruct(0, 65529, 25, 7, 0); + _data[126] = DrawStruct(0, 65424, 25, 7, SPRFLAG_2000); + _data[127] = DrawStruct(0, 98, 25, 7, SPRFLAG_2000); + _data[128] = DrawStruct(0, 65424, 29, 8, SPRFLAG_2000); + _data[129] = DrawStruct(0, 98, 29, 8, SPRFLAG_2000); + _data[130] = DrawStruct(0, 65498, 29, 8, 0); + _data[131] = DrawStruct(0, 25, 29, 8, 0); + _data[132] = DrawStruct(0, 65529, 29, 8, 0); + _data[133] = DrawStruct(6, 32, 24); + _data[134] = DrawStruct(0, 168, 24, 0, SPRFLAG_HORIZ_FLIPPED); + _data[135] = DrawStruct(0, 72, 48, 4, 0); + _data[136] = DrawStruct(0, 72, 48, 4, SPRFLAG_HORIZ_FLIPPED); + _data[137] = DrawStruct(0, 85, 53, 4, 0); + _data[138] = DrawStruct(0, 59, 53, 4, SPRFLAG_HORIZ_FLIPPED); + _data[139] = DrawStruct(0, 89, 41, 4, 0); + _data[140] = DrawStruct(0, 55, 41, 4, SPRFLAG_HORIZ_FLIPPED); + _data[141] = DrawStruct(0, 106, 47, 4, 0); + _data[142] = DrawStruct(0, 38, 47, 4, SPRFLAG_HORIZ_FLIPPED); + _data[143] = DrawStruct(0, 65400, 24, 0, SPRFLAG_2000); + _data[144] = DrawStruct(0, 8, 12); + _data[145] = DrawStruct(0, 32, 24); + _data[146] = DrawStruct(0, 200, 12, 0, SPRFLAG_HORIZ_FLIPPED); + _data[147] = DrawStruct(0, 200, 24, 0, SPRFLAG_2000); + _data[148] = DrawStruct(0, 32, 24); + _data[149] = DrawStruct(0, 65531, 2, 0, SPRFLAG_4000 | SPRFLAG_2000); + _data[150] = DrawStruct(0, 65469, 10, 0, SPRFLAG_4000 | SPRFLAG_2000); + _data[151] = DrawStruct(0, 44, 73); + _data[152] = DrawStruct(0, 44, 73); + _data[153] = DrawStruct(0, 58, 14, 0, SPRFLAG_4000 | SPRFLAG_2000); + _data[154] = DrawStruct(0, 169, 73); + _data[155] = DrawStruct(0, 169, 73); + _data[156] = DrawStruct(0, 65531, 14, 0, SPRFLAG_4000 | SPRFLAG_2000); + _data[157] = DrawStruct(0, 110, 73); + _data[158] = DrawStruct(0, 110, 73); + _data[159] = DrawStruct(0, 65531, 14, 0, SPRFLAG_4000 | SPRFLAG_2000); + _data[160] = DrawStruct(0, 110, 73); + _data[161] = DrawStruct(0, 110, 73); + _data[162] = DrawStruct(0, 72, 43); + _data[163] = DrawStruct(0, 72, 43, 0, SPRFLAG_HORIZ_FLIPPED); + _data[164] = DrawStruct(0, 93, 48); + _data[165] = DrawStruct(0, 51, 48, 0, SPRFLAG_HORIZ_FLIPPED); + _data[166] = DrawStruct(0, 97, 36); + _data[167] = DrawStruct(0, 47, 36, 0, SPRFLAG_HORIZ_FLIPPED); + _data[168] = DrawStruct(0, 118, 42); + _data[169] = DrawStruct(0, 26, 42, 0, SPRFLAG_HORIZ_FLIPPED); +} + +/*------------------------------------------------------------------------*/ + +InterfaceMap::InterfaceMap(XeenEngine *vm): _vm(vm) { + Common::fill(&_wp[0], &_wp[20], 0); + Common::fill(&_wo[0], &_wo[308], 0); + _overallFrame = 0; + _flipWtr = false; + _flipWall = false; + _flipSky = false; + _flipGround = false; + _isShooting = false; + _charsShooting = false; + _objNumber = 0; +} + +void InterfaceMap::setIndoorsMonsters() { + +} + +void InterfaceMap::setIndoorObjects() { + Common::Point mazePos = _vm->_party._mazePosition; + _objNumber = 0; + const int8 *posOffset = &SCREEN_POSITIONING_X[_vm->_party._mazeDirection][0]; + Common::Point pt; + + Common::Array<MazeObject> &objects = _vm->_map->_mobData._objects; + for (uint idx = 0; idx < objects.size(); ++idx) { + MazeObject &mazeObject = objects[idx]; + + // Determine which half of the X/Y lists to use + int listOffset; + if (_vm->_files->_isDarkCc) { + listOffset = mazeObject._spriteId == 47 ? 1 : 0; + } + else { + listOffset = mazeObject._spriteId == 113 ? 1 : 0; + } + + // Position 1 + pt = Common::Point(mazePos.x + posOffset[2], mazePos.y + posOffset[194]); + if (pt == mazeObject._position && _indoorList._objects0._frame == -1) { + _indoorList._objects0._x = INDOOR_OBJECT_X[listOffset][0]; + _indoorList._objects0._y = INDOOR_OBJECT_Y[listOffset][0]; + _indoorList._objects0._frame = mazeObject._frame; + _indoorList._objects0._sprites = mazeObject._sprites; + _indoorList._objects0._flags &= ~SPRFLAG_HORIZ_FLIPPED; + if (mazeObject._flipped) + _indoorList._objects0._flags |= SPRFLAG_HORIZ_FLIPPED; + _objNumber = idx; + } + + // Position 2 + pt = Common::Point(mazePos.x + posOffset[7], mazePos.y + posOffset[199]); + if (pt == mazeObject._position && !_wo[27] && _indoorList._objects1._frame == -1) { + _indoorList._objects1._x = INDOOR_OBJECT_X[listOffset][1]; + _indoorList._objects1._y = INDOOR_OBJECT_Y[listOffset][1]; + _indoorList._objects1._frame = mazeObject._frame; + _indoorList._objects1._sprites = mazeObject._sprites; + _indoorList._objects1._flags &= ~SPRFLAG_HORIZ_FLIPPED; + if (mazeObject._flipped) + _indoorList._objects1._flags |= SPRFLAG_HORIZ_FLIPPED; + } + + // Position 3 + pt = Common::Point(mazePos.x + posOffset[5], mazePos.y + posOffset[197]); + if (pt == mazeObject._position && (!_wo[27] || !_wo[25]) && (!_wo[27] || !_wo[28]) && + (!_wo[23] || !_wo[25]) && (!_wo[23] || !_wo[28]) && + _indoorList._objects2._frame == -1) { + _indoorList._objects2._x = INDOOR_OBJECT_X[listOffset][2]; + _indoorList._objects2._y = INDOOR_OBJECT_Y[listOffset][2]; + _indoorList._objects2._frame = mazeObject._frame; + _indoorList._objects2._sprites = mazeObject._sprites; + _indoorList._objects2._flags &= ~SPRFLAG_HORIZ_FLIPPED; + if (mazeObject._flipped) + _indoorList._objects2._flags |= SPRFLAG_HORIZ_FLIPPED; + } + + // Position 4 + pt = Common::Point(mazePos.x + posOffset[9], mazePos.y + posOffset[201]); + if (pt == mazeObject._position && (!_wo[27] || !_wo[26]) && (!_wo[27] || !_wo[29]) && + (!_wo[24] || !_wo[26]) && (!_wo[24] || !_wo[29]) && _indoorList._objects3._frame == -1) { + _indoorList._objects3._x = INDOOR_OBJECT_X[listOffset][3]; + _indoorList._objects3._y = INDOOR_OBJECT_Y[listOffset][3]; + _indoorList._objects3._frame = mazeObject._frame; + _indoorList._objects3._sprites = mazeObject._sprites; + _indoorList._objects3._flags &= ~SPRFLAG_HORIZ_FLIPPED; + if (mazeObject._flipped) + _indoorList._objects3._flags |= SPRFLAG_HORIZ_FLIPPED; + } + + // Position 5 + pt = Common::Point(mazePos.x + posOffset[14], mazePos.y + posOffset[206]); + if (pt == mazeObject._position && !_wo[22] && !_wo[27] && _indoorList._objects4._frame == -1) { + _indoorList._objects4._x = INDOOR_OBJECT_X[listOffset][4]; + _indoorList._objects4._y = INDOOR_OBJECT_Y[listOffset][4]; + _indoorList._objects4._frame = mazeObject._frame; + _indoorList._objects4._sprites = mazeObject._sprites; + _indoorList._objects4._flags &= ~SPRFLAG_HORIZ_FLIPPED; + if (mazeObject._flipped) + _indoorList._objects4._flags |= SPRFLAG_HORIZ_FLIPPED; + } + + // Position 6 + pt = Common::Point(mazePos.x + posOffset[12], mazePos.y + posOffset[204]); + if (pt == mazeObject._position && !_wo[27] && (!_wo[22] || !_wo[23]) && (!_wo[22] || !_wo[20]) && + (!_wo[23] || !_wo[17]) && (!_wo[20] || !_wo[17]) && _indoorList._objects5._frame == -1) { + _indoorList._objects5._x = INDOOR_OBJECT_X[listOffset][5]; + _indoorList._objects5._y = INDOOR_OBJECT_Y[listOffset][5]; + _indoorList._objects5._frame = mazeObject._frame; + _indoorList._objects5._sprites = mazeObject._sprites; + _indoorList._objects5._flags &= ~SPRFLAG_HORIZ_FLIPPED; + if (mazeObject._flipped) + _indoorList._objects5._flags |= SPRFLAG_HORIZ_FLIPPED; + } + + // Position 7 + pt = Common::Point(mazePos.x + posOffset[16], mazePos.y + posOffset[208]); + if (pt == mazeObject._position && !_wo[27] && (!_wo[22] || !_wo[24]) && (!_wo[22] || !_wo[21]) && + (!_wo[24] || !_wo[19]) && (!_wo[21] || !_wo[19]) && _indoorList._objects6._frame == -1) { + _indoorList._objects6._x = INDOOR_OBJECT_X[listOffset][6]; + _indoorList._objects6._y = INDOOR_OBJECT_Y[listOffset][6]; + _indoorList._objects6._frame = mazeObject._frame; + _indoorList._objects6._sprites = mazeObject._sprites; + _indoorList._objects6._flags &= ~SPRFLAG_HORIZ_FLIPPED; + if (mazeObject._flipped) + _indoorList._objects6._flags |= SPRFLAG_HORIZ_FLIPPED; + } + + // Position 8 + pt = Common::Point(mazePos.x + posOffset[27], mazePos.y + posOffset[219]); + if (pt == mazeObject._position && !_wo[27] && !_wo[22] && !_wo[15] && _indoorList._objects7._frame == -1) { + _indoorList._objects7._x = INDOOR_OBJECT_X[listOffset][7]; + _indoorList._objects7._y = INDOOR_OBJECT_Y[listOffset][7]; + _indoorList._objects7._frame = mazeObject._frame; + _indoorList._objects7._sprites = mazeObject._sprites; + _indoorList._objects7._flags &= ~SPRFLAG_HORIZ_FLIPPED; + if (mazeObject._flipped) + _indoorList._objects7._flags |= SPRFLAG_HORIZ_FLIPPED; + } + + // Position 9 + pt = Common::Point(mazePos.x + posOffset[25], mazePos.y + posOffset[217]); + if (pt == mazeObject._position && !_wo[27] && (!_wo[15] || !_wo[17]) && (!_wo[15] || !_wo[12]) && + (!_wo[12] || !_wo[7]) && (!_wo[17] || !_wo[7]) && _indoorList._objects5._frame == -1) { + _indoorList._objects8._x = INDOOR_OBJECT_X[listOffset][8]; + _indoorList._objects8._y = INDOOR_OBJECT_Y[listOffset][8]; + _indoorList._objects8._frame = mazeObject._frame; + _indoorList._objects8._sprites = mazeObject._sprites; + _indoorList._objects8._flags &= ~SPRFLAG_HORIZ_FLIPPED; + if (mazeObject._flipped) + _indoorList._objects8._flags |= SPRFLAG_HORIZ_FLIPPED; + } + + // Position 10 + pt = Common::Point(mazePos.x + posOffset[23], mazePos.y + posOffset[215]); + if (pt == mazeObject._position && !_wo[27] && (!_wo[22] || !_wo[20]) && (!_wo[22] || !_wo[23]) && + (!_wo[20] || !_wo[17]) && (!_wo[23] || !_wo[17]) && !_wo[12] && !_wo[8] && + _indoorList._objects9._frame == -1) { + _indoorList._objects9._x = INDOOR_OBJECT_X[listOffset][9]; + _indoorList._objects9._y = INDOOR_OBJECT_Y[listOffset][9]; + _indoorList._objects9._frame = mazeObject._frame; + _indoorList._objects9._sprites = mazeObject._sprites; + _indoorList._objects9._flags &= ~SPRFLAG_HORIZ_FLIPPED; + if (mazeObject._flipped) + _indoorList._objects9._flags |= SPRFLAG_HORIZ_FLIPPED; + } + + // Block 11 + pt = Common::Point(mazePos.x + posOffset[29], mazePos.y + posOffset[221]); + if (pt == mazeObject._position && !_wo[27] && !_wo[22] && (!_wo[15] || !_wo[19]) && + (!_wo[15] || !_wo[14]) && (!_wo[14] || !_wo[9]) && (!_wo[19] || !_wo[9]) && + _indoorList._objects10._frame == -1) { + _indoorList._objects10._x = INDOOR_OBJECT_X[listOffset][10]; + _indoorList._objects10._y = INDOOR_OBJECT_Y[listOffset][10]; + _indoorList._objects10._frame = mazeObject._frame; + _indoorList._objects10._sprites = mazeObject._sprites; + _indoorList._objects10._flags &= ~SPRFLAG_HORIZ_FLIPPED; + if (mazeObject._flipped) + _indoorList._objects10._flags |= SPRFLAG_HORIZ_FLIPPED; + } + + // Block 12 + pt = Common::Point(mazePos.x + posOffset[31], mazePos.y + posOffset[223]); + if (pt == mazeObject._position && !_wo[27] && (!_wo[22] || !_wo[21]) && (!_wo[22] || !_wo[24]) && + (!_wo[21] || !_wo[19]) && (!_wo[24] || !_wo[19]) && !_wo[14] && !_wo[10] && + _indoorList._objects11._frame == -1) { + _indoorList._objects11._x = INDOOR_OBJECT_X[listOffset][11]; + _indoorList._objects11._y = INDOOR_OBJECT_Y[listOffset][11]; + _indoorList._objects11._frame = mazeObject._frame; + _indoorList._objects11._sprites = mazeObject._sprites; + _indoorList._objects11._flags &= ~SPRFLAG_HORIZ_FLIPPED; + if (mazeObject._flipped) + _indoorList._objects11._flags |= SPRFLAG_HORIZ_FLIPPED; + } + } +} + +void InterfaceMap::setIndoorWallPics() { + // TODO +} + +void InterfaceMap::setOutdoorsMonsters() { + +} + +void InterfaceMap::setOutdoorsObjects() { + +} + +void InterfaceMap::drawIndoors() { + Map &map = *_vm->_map; + int surfaceId; + int idx; + + for (int cellIndex = 0; cellIndex < 25; ++cellIndex) { + map.getCell(DRAW_NUMBERS[cellIndex]); + + DrawStruct &drawStruct = _indoorList[3 + cellIndex]; + drawStruct._sprites = &map._surfaceSprites[map._currentSurfaceId]; + + surfaceId = map.mazeData()._surfaceTypes[map._currentSurfaceId]; + if (surfaceId == 5 || surfaceId == 12) { + drawStruct._flags = _flipWtr; + drawStruct._frame = DRAW_FRAMES[cellIndex][_flipWtr ? 1 : 0]; + } + else { + drawStruct._frame = DRAW_FRAMES[cellIndex][_flipWall ? 1 : 0]; + drawStruct._flags = _flipWall ? 0 : SPRFLAG_HORIZ_FLIPPED; + } + } + + if (!_wo[27] && !_wo[20] && !_wo[23] && !_wo[12] && !_wo[8] && !_wo[30]) { + if (_wo[39]) + _indoorList._swl_4F4L._frame = 22; + else if (_wo[83]) + _indoorList._swl_4F4L._frame = 46; + } + + if (!_wo[27] && !_wo[22] && !_wo[17] && !_wo[12] && !_wo[8]) { + if (_wo[38]) + _indoorList._swl_4F3L._frame = 20; + else if (_wo[82]) + _indoorList._swl_4F3L._frame = 44; + } + + if (!_wo[27] && !_wo[22] && !_wo[15] && !_wo[2] && !_wo[7]) { + if (_wo[37]) + _indoorList._swl_4F2L._frame = 18; + else if (_wo[81]) + _indoorList._swl_4F2L._frame = 42; + } + + if (!_wo[27] && !_wo[22] && !_wo[15] && !_wo[6]) { + if (_wo[36]) + _indoorList._swl_4F1L._frame = 16; + else if (_wo[80]) + _indoorList._swl_4F1L._frame = 40; + } + + if (!_wo[27] && !_wo[21] && !_wo[24] && !_wo[14] && !_wo[10] && !_wo[31]) { + if (_wo[43]) + _indoorList._swl_4F4R._frame = 23; + else if (_wo[87]) + _indoorList._swl_4F4R._frame = 47; + } + + if (!_wo[27] && !_wo[22] && !_wo[19] && !_wo[14] && !_wo[10]) { + if (_wo[42]) + _indoorList._swl_4F3R._frame = 21; + else if (_wo[86]) + _indoorList._swl_4F3R._frame = 45; + } + + if (!_wo[27] && !_wo[22] && !_wo[15] && !_wo[5] && !_wo[9]) { + if (_wo[41]) + _indoorList._swl_4F2R._frame = 19; + else if (_wo[85]) + _indoorList._swl_4F2R._frame = 43; + } + + if (!_wo[27] && !_wo[22] && !_wo[15] && !_wo[6]) { + if (_wo[40]) + _indoorList._swl_4F1R._frame = 17; + else if (_wo[84]) + _indoorList._swl_4F1R._frame = 41; + } + + if (!_wo[25] && !_wo[28] && !_wo[20] && !_wo[11] && + !_wo[16] && !_wo[30] && !_wo[32]) { + if (_wo[88]) + _indoorList._fwl_4F4L._frame = 7; + else if (_wo[78]) + _indoorList._fwl_4F4L._frame = 16; + else if (_wo[148]) + _indoorList._fwl_4F4L._frame = _overallFrame + 1; + else if (_wo[108]) + _indoorList._fwl_4F4L._frame = 8; + else if (_wo[168]) + _indoorList._fwl_4F4L._frame = 10; + else if (_wo[128]) + _indoorList._fwl_4F4L._frame = 9; + else if (_wo[34]) + _indoorList._fwl_4F4L._frame = 0; + else if (_wo[188]) + _indoorList._fwl_4F4L._frame = 15; + else if (_wo[208]) + _indoorList._fwl_4F4L._frame = 14; + else if (_wo[228]) + _indoorList._fwl_4F4L._frame = 6; + else if (_wo[248]) + _indoorList._fwl_4F4L._frame = 11; + else if (_wo[268]) + _indoorList._fwl_4F4L._frame = 12; + else if (_wo[288]) + _indoorList._fwl_4F4L._frame = 13; + } + + if (!_wo[26] && !_wo[29] && !_wo[21] && !_wo[13] && !_wo[18] && !_wo[31] && !_wo[33]) { + if (_wo[93]) + _indoorList._fwl_4F4R._frame = 7; + else if (_wo[79]) + _indoorList._fwl_4F4R._frame = 16; + else if (_wo[153]) + _indoorList._fwl_4F4R._frame = _overallFrame + 1; + else if (_wo[113]) + _indoorList._fwl_4F4R._frame = 8; + else if (_wo[173]) + _indoorList._fwl_4F4R._frame = 10; + else if (_wo[133]) + _indoorList._fwl_4F4R._frame = 9; + else if (_wo[35]) + _indoorList._fwl_4F4R._frame = 0; + else if (_wo[79]) + _indoorList._fwl_4F4R._frame = 15; + else if (_wo[213]) + _indoorList._fwl_4F4R._frame = 14; + else if (_wo[233]) + _indoorList._fwl_4F4R._frame = 6; + else if (_wo[253]) + _indoorList._fwl_4F4R._frame = 11; + else if (_wo[273]) + _indoorList._fwl_4F4R._frame = 12; + else if (_wo[293]) + _indoorList._fwl_4F4R._frame = 13; + } + + if (!_wo[25] && !_wo[28] && !_wo[20] && !_wo[11] && !_wo[16] && !_wo[30]) { + if (_wo[32]) + _indoorList._swl_3F4L._frame = 14; + else if (_wo[76]) + _indoorList._swl_3F4L._frame = 38; + } + + if (!_wo[26] && !_wo[29] && !_wo[21] && !_wo[13] && !_wo[18] && !_wo[31]) { + if (_wo[33]) + _indoorList._fwl_3F1R._frame = 15; + else if (_wo[77]) + _indoorList._swl_3F1R._frame = 39; + } + + if (_wo[28] && _wo[27]) { + } + else if (_wo[28] && _wo[12]) { + } + else if (_wo[28] && _wo[23]) { + } + else if (_wo[28] && _wo[8]) { + } + else if (_wo[25] && _wo[27]) { + } + else if (_wo[25] && _wo[12]) { + } + else if (_wo[25] && _wo[23]) { + } + else if (_wo[25] && _wo[8]) { + } + else if (_wo[11] && _wo[27]) { + } + else if (_wo[11] && _wo[12]) { + } + else if (_wo[11] && _wo[23]) { + } + else if (_wo[11] && _wo[8]) { + } + else if (_wo[17] && _wo[27]) { + } + else if (_wo[17] && _wo[12]) { + } + else if (_wo[17] && _wo[23]) { + } + else if (_wo[17] && _wo[8]) { + } + else if (_wo[20]) { + } + else if (_wo[30]) { + _indoorList._swl_3F3L._frame = 12; + } + else if (_wo[74]) { + _indoorList._swl_3F3L._frame = 36; + } + + if (_wo[29] && _wo[27]) { + } + else if (_wo[29] && _wo[14]) { + } + else if (_wo[29] && _wo[24]) { + } + else if (_wo[29] && _wo[10]) { + } + else if (_wo[26] && _wo[27]) { + } + else if (_wo[26] && _wo[14]) { + } + else if (_wo[26] && _wo[24]) { + } + else if (_wo[26] && _wo[10]) { + } + else if (_wo[13] && _wo[27]) { + } + else if (_wo[13] && _wo[14]) { + } + else if (_wo[13] && _wo[24]) { + } + else if (_wo[13] && _wo[10]) { + } + else if (_wo[19] && _wo[27]) { + } + else if (_wo[19] && _wo[24]) { + } + else if (_wo[19] && _wo[10]) { + } + else if (_wo[21]) { + } + else if (_wo[31]) { + _indoorList._swl_3F2R._frame = 13; + } + else if (_wo[75]) { + _indoorList._swl_3F2R._frame = 37; + } + + if (!_wo[27] && !_wo[20] && !_wo[12] && !_wo[23] && !_wo[8] && !_wo[30]) { + if (_wo[89]) + _indoorList._fwl_4F3L._frame = 7; + else if (_wo[44]) + _indoorList._fwl_4F3L._frame = 16; + else if (_wo[149]) + _indoorList._fwl_4F3L._frame = _overallFrame + 1; + else if (_wo[109]) + _indoorList._fwl_4F3L._frame = 8; + else if (_wo[169]) + _indoorList._fwl_4F3L._frame = 10; + else if (_wo[129]) + _indoorList._fwl_4F3L._frame = 9; + else if (_wo[0]) + _indoorList._fwl_4F3L._frame = 0; + else if (_wo[189]) + _indoorList._fwl_4F3L._frame = 15; + else if (_wo[209]) + _indoorList._fwl_4F3L._frame = 14; + else if (_wo[229]) + _indoorList._fwl_4F3L._frame = 6; + else if (_wo[249]) + _indoorList._fwl_4F3L._frame = 11; + else if (_wo[269]) + _indoorList._fwl_4F3L._frame = 12; + else if (_wo[289]) + _indoorList._fwl_4F3L._frame = 13; + } + + if (_wo[22] && _wo[20]) { + } + else if (_wo[22] && _wo[23]) { + } + else if (_wo[20] && _wo[17]) { + } + else if (_wo[23] && _wo[17]) { + } + else if (_wo[12]) { + } + else if (_wo[8]) { + } + else if (_wo[90]) { + _indoorList._fwl_4F2L._frame = 7; + } + else if (_wo[45]) { + _indoorList._fwl_4F2L._frame = 16; + } + else if (_wo[150]) { + _indoorList._fwl_4F2L._frame = _overallFrame + 1; + } + else if (_wo[110]) { + _indoorList._fwl_4F2L._frame = 8; + } + else if (_wo[170]) { + _indoorList._fwl_4F2L._frame = 10; + } + else if (_wo[130]) { + _indoorList._fwl_4F2L._frame = 9; + } + else if (_wo[1]) { + _indoorList._fwl_4F2L._frame = 0; + } + else if (_wo[190]) { + _indoorList._fwl_4F2L._frame = 15; + } + else if (_wo[210]) { + _indoorList._fwl_4F2L._frame = 14; + } + else if (_wo[230]) { + _indoorList._fwl_4F2L._frame = 6; + } + else if (_wo[250]) { + _indoorList._fwl_4F2L._frame = 11; + } + else if (_wo[270]) { + _indoorList._fwl_4F2L._frame = 12; + } + else if (_wo[290]) { + _indoorList._fwl_4F2L._frame = 13; + } + + if (_wo[15] && _wo[17]) { + } + else if (_wo[15] && _wo[12]) { + } + else if (_wo[12] && _wo[7]) { + } + else if (_wo[17] && _wo[7]) { + } + else if (_wo[91]) { + _indoorList._fwl_4F1L._frame = 7; + } + else if (_wo[46]) { + _indoorList._fwl_4F1L._frame = 16; + } + else if (_wo[151]) { + _indoorList._fwl_4F1L._frame = _overallFrame + 1; + } + else if (_wo[111]) { + _indoorList._fwl_4F1L._frame = 8; + } + else if (_wo[171]) { + _indoorList._fwl_4F1L._frame = 10; + } + else if (_wo[131]) { + _indoorList._fwl_4F1L._frame = 9; + } + else if (_wo[2]) { + _indoorList._fwl_4F1L._frame = 0; + } + else if (_wo[191]) { + _indoorList._fwl_4F1L._frame = 15; + } + else if (_wo[211]) { + _indoorList._fwl_4F1L._frame = 14; + } + else if (_wo[231]) { + _indoorList._fwl_4F1L._frame = 6; + } + else if (_wo[251]) { + _indoorList._fwl_4F1L._frame = 11; + } + else if (_wo[271]) { + _indoorList._fwl_4F1L._frame = 12; + } + else if (_wo[291]) { + _indoorList._fwl_4F1L._frame = 13; + } + + if (!_wo[27] && !_wo[21] && !_wo[14] && !_wo[24] && !_wo[10] && !_wo[31]) { + if (_wo[92]) { + _indoorList._fwl_4F3R._frame = 7; + } + else if (_wo[47]) { + _indoorList._fwl_4F3R._frame = 16; + } + else if (_wo[152]) { + _indoorList._fwl_4F3R._frame = _overallFrame + 1; + } + else if (_wo[112]) { + _indoorList._fwl_4F3R._frame = 8; + } + else if (_wo[172]) { + _indoorList._fwl_4F3R._frame = 10; + } + else if (_wo[132]) { + _indoorList._fwl_4F3R._frame = 9; + } + else if (_wo[3]) { + _indoorList._fwl_4F3R._frame = 0; + } + else if (_wo[192]) { + _indoorList._fwl_4F3R._frame = 15; + } + else if (_wo[212]) { + _indoorList._fwl_4F3R._frame = 14; + } + else if (_wo[232]) { + _indoorList._fwl_4F3R._frame = 6; + } + else if (_wo[252]) { + _indoorList._fwl_4F3R._frame = 11; + } + else if (_wo[272]) { + _indoorList._fwl_4F3R._frame = 12; + } + else if (_wo[292]) { + _indoorList._fwl_4F3R._frame = 13; + } + } + + if (_wo[22] && _wo[21]) { + } + else if (_wo[22] && _wo[24]) { + } + else if (_wo[21] && _wo[19]) { + } + else if (_wo[24] && _wo[19]) { + } + else if (_wo[14] || _wo[10]) { + } + else if (_wo[94]) { + _indoorList._fwl_4F2R._frame = 7; + } + else if (_wo[48]) { + _indoorList._fwl_4F2R._frame = 16; + } + else if (_wo[154]) { + _indoorList._fwl_4F2R._frame = _overallFrame + 1; + } + else if (_wo[114]) { + _indoorList._fwl_4F2R._frame = 8; + } + else if (_wo[174]) { + _indoorList._fwl_4F2R._frame = 10; + } + else if (_wo[134]) { + _indoorList._fwl_4F2R._frame = 9; + } + else if (_wo[4]) { + _indoorList._fwl_4F2R._frame = 0; + } + else if (_wo[194]) { + _indoorList._fwl_4F2R._frame = 15; + } + else if (_wo[214]) { + _indoorList._fwl_4F2R._frame = 14; + } + else if (_wo[234]) { + _indoorList._fwl_4F2R._frame = 6; + } + else if (_wo[254]) { + _indoorList._fwl_4F2R._frame = 11; + } + else if (_wo[274]) { + _indoorList._fwl_4F2R._frame = 12; + } + else if (_wo[294]) { + _indoorList._fwl_4F2R._frame = 13; + } + + if (_wo[15] && _wo[19]) { + } + else if (_wo[15] && _wo[14]) { + } + else if (_wo[14] && _wo[9]) { + } + else if (_wo[19] && _wo[9]) { + } + else if (_wo[95]) { + _indoorList._fwl_4F1R._frame = 7; + } + else if (_wo[49]) { + _indoorList._fwl_4F1R._frame = 16; + } + else if (_wo[155]) { + _indoorList._fwl_4F1R._frame = _overallFrame + 1; + } + else if (_wo[115]) { + _indoorList._fwl_4F1R._frame = 8; + } + else if (_wo[175]) { + _indoorList._fwl_4F1R._frame = 10; + } + else if (_wo[135]) { + _indoorList._fwl_4F1R._frame = 9; + } + else if (_wo[5]) { + _indoorList._fwl_4F1R._frame = 0; + } + else if (_wo[195]) { + _indoorList._fwl_4F1R._frame = 15; + } + else if (_wo[215]) { + _indoorList._fwl_4F1R._frame = 14; + } + else if (_wo[235]) { + _indoorList._fwl_4F1R._frame = 6; + } + else if (_wo[255]) { + _indoorList._fwl_4F1R._frame = 11; + } + else if (_wo[275]) { + _indoorList._fwl_4F1R._frame = 12; + } + else if (_wo[295]) { + _indoorList._fwl_4F1R._frame = 13; + } + + if (_wo[27] || _wo[22] || _wo[15] || _wo[96]) { + } + else if (_wo[50]) { + _indoorList._fwl_4F._frame = 16; + } + else if (_wo[156]) { + _indoorList._fwl_4F._frame = _overallFrame + 1; + } + else if (_wo[116]) { + _indoorList._fwl_4F._frame = 8; + } + else if (_wo[176]) { + _indoorList._fwl_4F._frame = 10; + } + else if (_wo[136]) { + _indoorList._fwl_4F._frame = 9; + } + else if (_wo[6]) { + _indoorList._fwl_4F._frame = 0; + } + else if (_wo[196]) { + _indoorList._fwl_4F._frame = 15; + } + else if (_wo[216]) { + _indoorList._fwl_4F._frame = 14; + } + else if (_wo[236]) { + _indoorList._fwl_4F._frame = 6; + } + else if (_wo[256]) { + _indoorList._fwl_4F._frame = 11; + } + else if (_wo[276]) { + _indoorList._fwl_4F._frame = 12; + } + else if (_wo[296]) { + _indoorList._fwl_4F._frame = 13; + } + + if (!_wo[27] && !_wo[22] && !_wo[15]) { + if (_wo[7]) + _indoorList._swl_3F1L._frame = 8; + else if (_wo[51]) + _indoorList._swl_3F1L._frame = 32; + } + + if (_wo[22] && _wo[23]) { + } + else if (_wo[22] && _wo[20]) { + } + else if (_wo[17] && _wo[23]) { + } + else if (_wo[17] && _wo[20]) { + } + else if (_wo[8]) { + _indoorList._swl_3F2L._frame = 10; + } + else if (_wo[52]) { + _indoorList._swl_3F2L._frame = 34; + } + + if (_wo[27] || _wo[22] || _wo[15]) { + } + else if (_wo[9]) { + _indoorList._swl_3F4R._frame = 9; + } + else if (_wo[53]) { + _indoorList._swl_3F4R._frame = 33; + } + + if (_wo[22] && _wo[24]) { + } + else if (_wo[22] && _wo[21]) { + } + else if (_wo[19] && _wo[24]) { + } + else if (_wo[19] && _wo[21]) { + } + else if (_wo[14]) { + } + else if (_wo[10]) { + _indoorList._swl_3F3R._frame = 11; + } + else if (_wo[54]) { + _indoorList._swl_3F3R._frame = 35; + } + + if (_wo[25] || _wo[28] || _wo[20] || _wo[16]) { + } + else if (_wo[97]) { + _indoorList._fwl_3F2L._frame = 24; + } + else if (_wo[55]) { + _indoorList._fwl_3F2L._frame = 33; + } + else if (_wo[137]) { + _indoorList._fwl_3F2L._frame = 26; + } + else if (_wo[157]) { + _indoorList._fwl_3F2L._frame = _overallFrame + 18; + } + else if (_wo[117]) { + _indoorList._fwl_3F2L._frame = 25; + } + else if (_wo[177]) { + _indoorList._fwl_3F2L._frame = 27; + } + else if (_wo[11]) { + _indoorList._fwl_3F2L._frame = 17; + } + else if (_wo[197]) { + _indoorList._fwl_3F2L._frame = 32; + } + else if (_wo[217]) { + _indoorList._fwl_3F2L._frame = 31; + } + else if (_wo[237]) { + _indoorList._fwl_3F2L._frame = 23; + } + else if (_wo[257]) { + _indoorList._fwl_3F2L._frame = 28; + } + else if (_wo[277]) { + _indoorList._fwl_3F2L._frame = 29; + } + else if (_wo[297]) { + _indoorList._fwl_3F2L._frame = 30; + } + + if (_wo[22] && _wo[23]) { + } + else if (_wo[22] && _wo[20]) { + } + else if (_wo[23] && _wo[17]) { + } + else if (_wo[20] && _wo[17]) { + } + else if (_wo[98]) { + _indoorList._fwl_3F1L._frame = 24; + } + else if (_wo[56]) { + _indoorList._fwl_3F1L._frame = 33; + } + else if (_wo[178]) { + _indoorList._fwl_3F1L._frame = 27; + } + else if (_wo[118]) { + _indoorList._fwl_3F1L._frame = 25; + } + else if (_wo[158]) { + _indoorList._fwl_3F1L._frame = _overallFrame + 18; + } + else if (_wo[138]) { + _indoorList._fwl_3F1L._frame = 26; + } + else if (_wo[12]) { + _indoorList._fwl_3F1L._frame = 17; + } + else if (_wo[198]) { + _indoorList._fwl_3F1L._frame = 32; + } + else if (_wo[218]) { + _indoorList._fwl_3F1L._frame = 31; + } + else if (_wo[238]) { + _indoorList._fwl_3F1L._frame = 23; + } + else if (_wo[258]) { + _indoorList._fwl_3F1L._frame = 28; + } + else if (_wo[278]) { + _indoorList._fwl_3F1L._frame = 29; + } + else if (_wo[298]) { + _indoorList._fwl_3F1L._frame = 30; + } + + if (_wo[26] || _wo[29] || _wo[21] || _wo[18]) { + } + else if (_wo[99]) { + _indoorList._fwl_3F2R._frame = 24; + } + else if (_wo[57]) { + _indoorList._fwl_3F2R._frame = 33; + } + else if (_wo[139]) { + _indoorList._fwl_3F2R._frame = 26; + } + else if (_wo[159]) { + _indoorList._fwl_3F2R._frame = _overallFrame + 18; + } + else if (_wo[119]) { + _indoorList._fwl_3F2R._frame = 25; + } + else if (_wo[179]) { + _indoorList._fwl_3F2R._frame = 27; + } + else if (_wo[13]) { + _indoorList._fwl_3F2R._frame = 17; + } + else if (_wo[199]) { + _indoorList._fwl_3F2R._frame = 32; + } + else if (_wo[219]) { + _indoorList._fwl_3F2R._frame = 31; + } + else if (_wo[239]) { + _indoorList._fwl_3F2R._frame = 23; + } + else if (_wo[259]) { + _indoorList._fwl_3F2R._frame = 28; + } + else if (_wo[279]) { + _indoorList._fwl_3F2R._frame = 29; + } + else if (_wo[299]) { + _indoorList._fwl_3F2R._frame = 30; + } + + if (_wo[22] && _wo[24]) { + } + else if (_wo[22] && _wo[21]) { + } + else if (_wo[24] && _wo[19]) { + } + else if (_wo[21] && _wo[19]) { + } + else if (_wo[100]) { + _indoorList._fwl_3F1R._frame = 24; + } + else if (_wo[58]) { + _indoorList._fwl_3F1R._frame = 33; + } + else if (_wo[140]) { + _indoorList._fwl_3F1R._frame = 26; + } + else if (_wo[160]) { + _indoorList._fwl_3F1R._frame = _overallFrame + 18; + } + else if (_wo[120]) { + _indoorList._fwl_3F1R._frame = 25; + } + else if (_wo[180]) { + _indoorList._fwl_3F1R._frame = 27; + } + else if (_wo[14]) { + _indoorList._fwl_3F1R._frame = 17; + } + else if (_wo[200]) { + _indoorList._fwl_3F1R._frame = 32; + } + else if (_wo[220]) { + _indoorList._fwl_3F1R._frame = 31; + } + else if (_wo[240]) { + _indoorList._fwl_3F1R._frame = 23; + } + else if (_wo[260]) { + _indoorList._fwl_3F1R._frame = 28; + } + else if (_wo[280]) { + _indoorList._fwl_3F1R._frame = 29; + } + else if (_wo[300]) { + _indoorList._fwl_3F1R._frame = 30; + } + + if (_wo[22] || _wo[27]) { + } + else if (_wo[101]) { + _indoorList._fwl_3F._frame = 24; + } + else if (_wo[59]) { + _indoorList._fwl_3F._frame = 33; + } + else if (_wo[141]) { + _indoorList._fwl_3F._frame = 26; + } + else if (_wo[161]) { + _indoorList._fwl_3F._frame = _overallFrame + 18; + } + else if (_wo[121]) { + _indoorList._fwl_3F._frame = 25; + } + else if (_wo[181]) { + _indoorList._fwl_3F._frame = 27; + } + else if (_wo[15]) { + _indoorList._fwl_3F._frame = 17; + } + else if (_wo[201]) { + _indoorList._fwl_3F._frame = 32; + } + else if (_wo[221]) { + _indoorList._fwl_3F._frame = 31; + } + else if (_wo[241]) { + _indoorList._fwl_3F._frame = 23; + } + else if (_wo[261]) { + _indoorList._fwl_3F._frame = 28; + } + else if (_wo[281]) { + _indoorList._fwl_3F._frame = 29; + } + else if (_wo[301]) { + _indoorList._fwl_3F._frame = 30; + } + + if (_wo[25] || _wo[28] || _wo[20]) { + } + else if (_wo[16]) { + _indoorList._swl_2F2L._frame = 6; + } + else if (_wo[60]) { + _indoorList._swl_2F2L._frame = 30; + } + + if (_wo[27] || _wo[22]) { + } + else if (_wo[17]) { + _indoorList._swl_2F1L._frame = 4; + } + else if (_wo[61]) { + _indoorList._swl_2F1L._frame = 28; + } + + if (_wo[26] || _wo[29] || _wo[21]) { + } + else if (_wo[18]) { + _indoorList._swl_2F2R._frame = 7; + } + else if (_wo[62]) { + _indoorList._swl_2F2R._frame = 31; + } + + if (_wo[27] || _wo[22]) { + } + else if (_wo[19]) { + _indoorList._swl_2F1R._frame = 5; + } + else if (_wo[63]) { + _indoorList._swl_2F1R._frame = 29; + } + + if (_wo[27] && _wo[25]) { + } + else if (_wo[27] && _wo[28]) { + } + else if (_wo[23] & _wo[25]) { + } + else if (_wo[23] && _wo[28]) { + } + else if (_wo[102]) { + _indoorList._fwl_2F1L._frame = 7; + } + else if (_wo[64]) { + _indoorList._fwl_2F1L._frame = 16; + } + else if (_wo[182]) { + _indoorList._fwl_2F1L._frame = 10; + } + else if (_wo[122]) { + _indoorList._fwl_2F1L._frame = 8; + } + else if (_wo[142]) { + _indoorList._fwl_2F1L._frame = 9; + } + else if (_wo[162]) { + _indoorList._fwl_2F1L._frame = _overallFrame + 1; + } + else if (_wo[20]) { + _indoorList._fwl_2F1L._frame = 0; + } + else if (_wo[202]) { + _indoorList._fwl_2F1L._frame = 15; + } + else if (_wo[222]) { + _indoorList._fwl_2F1L._frame = 14; + } + else if (_wo[242]) { + _indoorList._fwl_2F1L._frame = 6; + } + else if (_wo[262]) { + _indoorList._fwl_2F1L._frame = 11; + } + else if (_wo[282]) { + _indoorList._fwl_2F1L._frame = 12; + } + else if (_wo[302]) { + _indoorList._fwl_2F1L._frame = 13; + } + + if (_wo[27] && _wo[26]) { + } + else if (_wo[27] && _wo[29]) { + } + else if (_wo[24] && _wo[26]) { + } + else if (_wo[24] && _wo[29]) { + } + else if (_wo[103]) { + _indoorList._fwl_2F1R._frame = 7; + } + else if (_wo[65]) { + _indoorList._fwl_2F1R._frame = 16; + } + else if (_wo[183]) { + _indoorList._fwl_2F1R._frame = 10; + } + else if (_wo[123]) { + _indoorList._fwl_2F1R._frame = 8; + } + else if (_wo[143]) { + _indoorList._fwl_2F1R._frame = 9; + } + else if (_wo[163]) { + _indoorList._fwl_2F1R._frame = _overallFrame + 1; + } + else if (_wo[21]) { + _indoorList._fwl_2F1R._frame = 0; + } + else if (_wo[203]) { + _indoorList._fwl_2F1R._frame = 15; + } + else if (_wo[223]) { + _indoorList._fwl_2F1R._frame = 14; + } + else if (_wo[243]) { + _indoorList._fwl_2F1R._frame = 6; + } + else if (_wo[263]) { + _indoorList._fwl_2F1R._frame = 11; + } + else if (_wo[283]) { + _indoorList._fwl_2F1R._frame = 12; + } + else if (_wo[303]) { + _indoorList._fwl_2F1R._frame = 13; + } + + if (_wo[27]) { + + } + else if (_wo[104]) { + _indoorList._fwl_2F._frame = 7; + } + else if (_wo[66]) { + _indoorList._fwl_2F._frame = 16; + } + else if (_wo[184]) { + _indoorList._fwl_2F._frame = 10; + } + else if (_wo[124]) { + _indoorList._fwl_2F._frame = 8; + } + else if (_wo[144]) { + _indoorList._fwl_2F._frame = 9; + } + else if (_wo[164]) { + _indoorList._fwl_2F._frame = _overallFrame + 1; + } + else if (_wo[22]) { + _indoorList._fwl_2F._frame = 0; + } + else if (_wo[204]) { + _indoorList._fwl_2F._frame = 15; + } + else if (_wo[224]) { + _indoorList._fwl_2F._frame = 14; + } + else if (_wo[244]) { + _indoorList._fwl_2F._frame = 6; + } + else if (_wo[264]) { + _indoorList._fwl_2F._frame = 11; + } + else if (_wo[284]) { + _indoorList._fwl_2F._frame = 12; + } + else if (_wo[304]) { + _indoorList._fwl_2F._frame = 13; + } + + if (_wo[27]) { + } + else if (_wo[23]) { + _indoorList._swl_1F1L._frame = 2; + } + else if (_wo[67]) { + _indoorList._swl_1F1L._frame = 26; + } + + if (_wo[27]) { + } + else if (_wo[24]) { + _indoorList._swl_1F1R._frame = 3; + } + else if (_wo[68]) { + _indoorList._swl_1F1R._frame = 27; + } + + if (_wo[28]) { + } + else if (_wo[105] || _wo[25] || _wo[165] || _wo[125] || _wo[185] || _wo[145]) { + _indoorList._fwl_1F1L._frame = 0; + _indoorList._fwl_1F1L._sprites = &map._wallSprites._fwl1; + } + else if (_wo[69]) { + _indoorList._fwl_1F1L._frame = 9; + _indoorList._fwl_1F1L._sprites = &map._wallSprites._fwl2; + } + + if (_wo[29]) { + } + else if (_wo[106] || _wo[26] || _wo[166] || _wo[126] || _wo[186] || _wo[146]) { + _indoorList._fwl_1F._frame = 0; + _indoorList._fwl_1F._sprites = &map._wallSprites._fwl1; + } + else if (_wo[70]) { + _indoorList._fwl_1F._frame = 9; + _indoorList._fwl_1F._sprites = &map._wallSprites._fwl2; + } + + if (_wo[107]) { + _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; + if (_vm->_openDoor) + _indoorList._fwl_1F1R._frame = 0; + else + _indoorList._fwl_1F1R._frame = map.mazeData()._wallKind ? 1 : 10; + } + else if (_wo[71]) { + _indoorList._fwl_1F1R._frame = 9; + _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; + } + else if (_wo[167]) { + _indoorList._fwl_1F1R._frame = _overallFrame + 1; + _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; + } + else if (_wo[127]) { + _indoorList._fwl_1F1R._frame = 1; + _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; + } + else if (_wo[147]) { + _indoorList._fwl_1F1R._frame = 2; + _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; + } + else if (_wo[187]) { + _indoorList._fwl_1F1R._frame = 3; + _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; + } + else if (_wo[27]) { + _indoorList._fwl_1F1R._frame = 0; + _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl1; + } + else if (_wo[207]) { + _indoorList._fwl_1F1R._frame = 8; + _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; + } + else if (_wo[227]) { + _indoorList._fwl_1F1R._frame = 7; + _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; + } + else if (_wo[247]) { + _indoorList._fwl_1F1R._frame = 6; + _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl1; + } + else if (_wo[267]) { + _indoorList._fwl_1F1R._frame = 4; + _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; + } + else if (_wo[287]) { + _indoorList._fwl_1F1R._frame = 5; + _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; + } + else if (_wo[307]) { + _indoorList._fwl_1F1R._frame = 6; + _indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2; + } + + if (_wo[28]) { + _indoorList._swl_0F1L._frame = 0; + } + else if (_wo[72]) { + _indoorList._swl_0F1L._frame = 24; + } + + if (_wo[29]) { + _indoorList._swl_0F1R._frame = 1; + } + else if (_wo[73]) { + _indoorList._swl_0F1R._frame = 25; + } + + map.cellFlagLookup(_vm->_party._mazePosition); + + // WORKAROUND: Original did an array lookup on _skySprites. + // Was this a feature for multiple skys that was abandoned? + _indoorList[0]._sprites = &map._skySprites; + _indoorList[0]._flags = _flipSky ? SPRFLAG_HORIZ_FLIPPED : 0; + + if (_vm->_openDoor) { + Common::Point pt( + _vm->_party._mazePosition.x + SCREEN_POSITIONING_X[ + _vm->_party._mazeDirection][_vm->_party._mazePosition.x], + _vm->_party._mazePosition.y + SCREEN_POSITIONING_Y[ + _vm->_party._mazeDirection][_vm->_party._mazePosition.y] + ); + map.cellFlagLookup(pt); + + _indoorList._sky._sprites = &map._skySprites; + } else { + _indoorList._sky._sprites = _indoorList[0]._sprites; + } + + _indoorList._sky._flags = _flipSky ? SPRFLAG_HORIZ_FLIPPED : 0; + _indoorList._ground._flags = _flipGround ? SPRFLAG_HORIZ_FLIPPED : 0; + _indoorList._horizon._frame = 7; + + // Finally draw the darn indoor scene + _vm->_screen->_windows[3].drawList(&_indoorList[0], _indoorList.size()); + + // Check for any character shooting + _isShooting = false; + for (int i = 0; i < _vm->_party._partyCount; ++i) { + if (_vm->_combat->_shooting[i]) + _isShooting = true; + } + + _charsShooting = _isShooting; + + // TODO +} + +} // End of namespace Xeen diff --git a/engines/xeen/interface_map.h b/engines/xeen/interface_map.h new file mode 100644 index 0000000000..01cd1d2c48 --- /dev/null +++ b/engines/xeen/interface_map.h @@ -0,0 +1,118 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef XEEN_INTERFACE_MAP_H +#define XEEN_INTERFACE_MAP_H + +#include "common/scummsys.h" +#include "xeen/screen.h" + +namespace Xeen { + +class XeenEngine; + +class OutdoorDrawList { +public: + DrawStruct _data[132]; + DrawStruct &_skySprite; + DrawStruct &_groundSprite; +public: + OutdoorDrawList(); + + DrawStruct &operator[](int idx) { + assert(idx < size()); + return _data[idx]; + } + + int size() const { return 132; } +}; + +class IndoorDrawList { +public: + DrawStruct _data[170]; + DrawStruct &_sky; + DrawStruct &_ground; + DrawStruct &_horizon; + DrawStruct &_swl_0F1R, _swl_0F1L, _swl_1F1R, _swl_1F1L, + _swl_2F2R, _swl_2F1R, _swl_2F1L, _swl_2F2L, + _swl_3F1R, _swl_3F2R, _swl_3F3R, _swl_3F4R, + _swl_3F1L, _swl_3F2L, _swl_3F3L, _swl_3F4L, + _swl_4F4R, _swl_4F3R, _swl_4F2R, _swl_4F1R, + _swl_4F1L, _swl_4F2L, _swl_4F3L, _swl_4F4L; + DrawStruct &_fwl_4F4R, _fwl_4F3R, _fwl_4F2R, _fwl_4F1R, + _fwl_4F, _fwl_4F1L, _fwl_4F2L, _fwl_4F3L, _fwl_4F4L; + DrawStruct &_fwl_2F1R, _fwl_2F, _fwl_2F1L, _fwl_3F2R, + _fwl_3F1R, _fwl_3F, _fwl_3F1L, _fwl_3F2L; + DrawStruct &_fwl_1F, _fwl_1F1R, _fwl_1F1L; + DrawStruct &_objects0, _objects1, _objects2, _objects3; + DrawStruct &_objects4, _objects5, _objects6, _objects7; + DrawStruct &_objects8, _objects9, _objects10, _objects11; +public: + IndoorDrawList(); + + DrawStruct &operator[](int idx) { + assert(idx < size()); + return _data[idx]; + } + + int size() const { return 170; } +}; + + +class InterfaceMap { +private: + XeenEngine *_vm; + + void initDrawStructs(); +protected: + byte _wp[20]; + byte _wo[308]; + int _overallFrame; + bool _flipWtr; + bool _flipWall; + bool _flipSky; + bool _flipGround; + bool _isShooting; + bool _charsShooting; + int _objNumber; +public: + OutdoorDrawList _outdoorList; + IndoorDrawList _indoorList; +public: + InterfaceMap(XeenEngine *vm); + + void setIndoorsMonsters(); + + void setIndoorObjects(); + + void setIndoorWallPics(); + + void drawIndoors(); + + void setOutdoorsMonsters(); + + void setOutdoorsObjects(); +}; + +} // End of namespace Xeen + +#endif /* XEEN_INTERFACE_MAP_H */ diff --git a/engines/xeen/module.mk b/engines/xeen/module.mk index 2c22322f25..d6b8097386 100644 --- a/engines/xeen/module.mk +++ b/engines/xeen/module.mk @@ -14,6 +14,7 @@ MODULE_OBJS := \ files.o \ font.o \ interface.o \ + interface_map.o \ items.o \ map.o \ party.o \ |