mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-02 04:13:26 +00:00
(svn r10154) -Fix [FS#870]: some vehicles were not drawn when having a high resolution and a high zoom-out level. Patch by B. N. SmatZ!.
This commit is contained in:
parent
991996eb36
commit
3b5203dbc6
@ -889,17 +889,29 @@ void ViewportAddVehicles(DrawPixelInfo *dpi)
|
|||||||
const int b = dpi->top + dpi->height;
|
const int b = dpi->top + dpi->height;
|
||||||
|
|
||||||
/* The hash area to scan */
|
/* The hash area to scan */
|
||||||
const int xl = GB(l - 70, 7, 6);
|
int xl, xu, yl, yu;
|
||||||
const int xu = GB(r, 7, 6);
|
|
||||||
const int yl = GB(t - 70, 6, 6) << 6;
|
|
||||||
const int yu = GB(b, 6, 6) << 6;
|
|
||||||
|
|
||||||
int x;
|
if (dpi->width + 70 < (1 << (7 + 6))) {
|
||||||
int y;
|
xl = GB(l - 70, 7, 6);
|
||||||
|
xu = GB(r, 7, 6);
|
||||||
|
} else {
|
||||||
|
/* scan whole hash row */
|
||||||
|
xl = 0;
|
||||||
|
xu = 0x3F;
|
||||||
|
}
|
||||||
|
|
||||||
for (y = yl;; y = (y + (1 << 6)) & (0x3F << 6)) {
|
if (dpi->height + 70 < (1 << (6 + 6))) {
|
||||||
for (x = xl;; x = (x + 1) & 0x3F) {
|
yl = GB(t - 70, 6, 6) << 6;
|
||||||
const Vehicle *v = _vehicle_position_hash[(x + y) & 0xFFFF];
|
yu = GB(b, 6, 6) << 6;
|
||||||
|
} else {
|
||||||
|
/* scan whole column */
|
||||||
|
yl = 0;
|
||||||
|
yu = 0x3F << 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int y = yl;; y = (y + (1 << 6)) & (0x3F << 6)) {
|
||||||
|
for (int x = xl;; x = (x + 1) & 0x3F) {
|
||||||
|
const Vehicle *v = _vehicle_position_hash[x + y]; // already masked & 0xFFF
|
||||||
|
|
||||||
while (v != NULL) {
|
while (v != NULL) {
|
||||||
if (!(v->vehstatus & VS_HIDDEN) &&
|
if (!(v->vehstatus & VS_HIDDEN) &&
|
||||||
|
Loading…
Reference in New Issue
Block a user