934 // Draw first piece |
934 // Draw first piece |
935 // (necessary for cantilever bridges) |
935 // (necessary for cantilever bridges) |
936 image = b[12 + (ti->map5&0x01)]; |
936 image = b[12 + (ti->map5&0x01)]; |
937 piece = _map2[ti->tile]&0xF; |
937 piece = _map2[ti->tile]&0xF; |
938 if (image != 0 && piece != 0) { |
938 if (image != 0 && piece != 0) { |
939 if (!(_display_opt & DO_TRANS_BUILDINGS)) image = (image & 0x3FFF) | 0x03224000; |
939 if (_display_opt & DO_TRANS_BUILDINGS) image = (image & 0x3FFF) | 0x03224000; |
940 DrawGroundSpriteAt(image, x, y, z); |
940 DrawGroundSpriteAt(image, x, y, z); |
941 } |
941 } |
942 |
942 |
943 image = b[(ti->map5&0x01)*6 + piece]; |
943 image = b[(ti->map5&0x01)*6 + piece]; |
944 |
944 |
951 {1,8,4,2, 11,16,9,0}, |
951 {1,8,4,2, 11,16,9,0}, |
952 {4,8,1,2, 16,11,0,9}, |
952 {4,8,1,2, 16,11,0,9}, |
953 {2,4,8,1, 11,16,9,0}, |
953 {2,4,8,1, 11,16,9,0}, |
954 }; |
954 }; |
955 |
955 |
956 if (!(_display_opt & DO_TRANS_BUILDINGS)) image = (image & 0x3FFF) | 0x03224000; |
956 if (_display_opt & DO_TRANS_BUILDINGS) image = (image & 0x3FFF) | 0x03224000; |
957 |
957 |
958 p = _tileh_bits[(image & 1) * 2 + (ti->map5&0x01)]; |
958 p = _tileh_bits[(image & 1) * 2 + (ti->map5&0x01)]; |
959 front_height = ti->z + ((ti->tileh & p[0])?8:0); |
959 front_height = ti->z + ((ti->tileh & p[0])?8:0); |
960 back_height = ti->z + ((ti->tileh & p[1])?8:0); |
960 back_height = ti->z + ((ti->tileh & p[1])?8:0); |
961 if (ti->tileh & 0x10) { |
961 if (ti->tileh & 0x10) { |
1045 } else { |
1045 } else { |
1046 DrawGroundSprite(0x11C6 + _tileh_to_sprite[ti->tileh]); |
1046 DrawGroundSprite(0x11C6 + _tileh_to_sprite[ti->tileh]); |
1047 } |
1047 } |
1048 |
1048 |
1049 // draw ramp |
1049 // draw ramp |
1050 if (!(_display_opt & DO_TRANS_BUILDINGS)) image = (image & 0x3FFF) | 0x03224000; |
1050 if (_display_opt & DO_TRANS_BUILDINGS) image = (image & 0x3FFF) | 0x03224000; |
1051 AddSortableSpriteToDraw(image, ti->x, ti->y, 16, 16, 7, ti->z); |
1051 AddSortableSpriteToDraw(image, ti->x, ti->y, 16, 16, 7, ti->z); |
1052 } else { |
1052 } else { |
1053 // bridge middle part. |
1053 // bridge middle part. |
1054 uint z; |
1054 uint z; |
1055 int x,y; |
1055 int x,y; |
1092 |
1092 |
1093 z = GetBridgeHeight(ti) + 5; |
1093 z = GetBridgeHeight(ti) + 5; |
1094 |
1094 |
1095 // draw rail |
1095 // draw rail |
1096 image = b[0]; |
1096 image = b[0]; |
1097 if (!(_display_opt & DO_TRANS_BUILDINGS)) image = (image & 0x3FFF) | 0x03224000; |
1097 if (_display_opt & DO_TRANS_BUILDINGS) image = (image & 0x3FFF) | 0x03224000; |
1098 AddSortableSpriteToDraw(image, ti->x, ti->y, (ti->map5&1)?11:16, (ti->map5&1)?16:11, 1, z); |
1098 AddSortableSpriteToDraw(image, ti->x, ti->y, (ti->map5&1)?11:16, (ti->map5&1)?16:11, 1, z); |
1099 |
1099 |
1100 x = ti->x; |
1100 x = ti->x; |
1101 y = ti->y; |
1101 y = ti->y; |
1102 image = b[1]; |
1102 image = b[1]; |
1103 if (!(_display_opt & DO_TRANS_BUILDINGS)) image = (image & 0x3FFF) | 0x03224000; |
1103 if (_display_opt & DO_TRANS_BUILDINGS) image = (image & 0x3FFF) | 0x03224000; |
1104 |
1104 |
1105 // draw roof |
1105 // draw roof |
1106 if (ti->map5&1) { |
1106 if (ti->map5&1) { |
1107 x += 12; |
1107 x += 12; |
1108 if (image&0x3FFF) AddSortableSpriteToDraw(image, x,y, 1, 16, 0x28, z); |
1108 if (image&0x3FFF) AddSortableSpriteToDraw(image, x,y, 1, 16, 0x28, z); |
1113 |
1113 |
1114 if (ti->z + 5 == z ) { |
1114 if (ti->z + 5 == z ) { |
1115 // draw poles below for small bridges |
1115 // draw poles below for small bridges |
1116 image = b[2]; |
1116 image = b[2]; |
1117 if (image) { |
1117 if (image) { |
1118 if (!(_display_opt & DO_TRANS_BUILDINGS)) image = (image & 0x3FFF) | 0x03224000; |
1118 if (_display_opt & DO_TRANS_BUILDINGS) image = (image & 0x3FFF) | 0x03224000; |
1119 DrawGroundSpriteAt(image, x, y, z); |
1119 DrawGroundSpriteAt(image, x, y, z); |
1120 } |
1120 } |
1121 } else if (_patches.bridge_pillars) { |
1121 } else if (_patches.bridge_pillars) { |
1122 // draw pillars below for high bridges |
1122 // draw pillars below for high bridges |
1123 DrawBridgePillars(ti, x, y, z); |
1123 DrawBridgePillars(ti, x, y, z); |