930 |
930 |
931 for (uint16 i = w->vscroll.pos; i < _railstation.station_count && i < (uint)(w->vscroll.pos + w->vscroll.cap); i++) { |
931 for (uint16 i = w->vscroll.pos; i < _railstation.station_count && i < (uint)(w->vscroll.pos + w->vscroll.cap); i++) { |
932 const StationSpec *statspec = GetCustomStationSpec(_railstation.station_class, i); |
932 const StationSpec *statspec = GetCustomStationSpec(_railstation.station_class, i); |
933 |
933 |
934 if (statspec != NULL && statspec->name != 0) { |
934 if (statspec != NULL && statspec->name != 0) { |
935 if (HasBit(statspec->callbackmask, CBM_STATION_AVAIL) && GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE) == 0) { |
935 if (HasBit(statspec->callbackmask, CBM_STATION_AVAIL) && GB(GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE), 0, 8) == 0) { |
936 GfxFillRect(8, y - 2, 127, y + 10, (1 << PALETTE_MODIFIER_GREYOUT)); |
936 GfxFillRect(8, y - 2, 127, y + 10, (1 << PALETTE_MODIFIER_GREYOUT)); |
937 } |
937 } |
938 |
938 |
939 DrawStringTruncated(9, y, statspec->name, i == _railstation.station_type ? TC_WHITE : TC_BLACK, 118); |
939 DrawStringTruncated(9, y, statspec->name, i == _railstation.station_type ? TC_WHITE : TC_BLACK, 118); |
940 } else { |
940 } else { |
1075 |
1075 |
1076 /* Check station availability callback */ |
1076 /* Check station availability callback */ |
1077 statspec = GetCustomStationSpec(_railstation.station_class, y); |
1077 statspec = GetCustomStationSpec(_railstation.station_class, y); |
1078 if (statspec != NULL && |
1078 if (statspec != NULL && |
1079 HasBit(statspec->callbackmask, CBM_STATION_AVAIL) && |
1079 HasBit(statspec->callbackmask, CBM_STATION_AVAIL) && |
1080 GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE) == 0) return; |
1080 GB(GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE), 0, 8) == 0) return; |
1081 |
1081 |
1082 _railstation.station_type = y; |
1082 _railstation.station_type = y; |
1083 |
1083 |
1084 CheckSelectedSize(w, statspec); |
1084 CheckSelectedSize(w, statspec); |
1085 |
1085 |
1493 |
1493 |
1494 DrawWaypointSprite(2 + i * 68, 25, w->hscroll.pos + i, _cur_railtype); |
1494 DrawWaypointSprite(2 + i * 68, 25, w->hscroll.pos + i, _cur_railtype); |
1495 |
1495 |
1496 if (statspec != NULL && |
1496 if (statspec != NULL && |
1497 HasBit(statspec->callbackmask, CBM_STATION_AVAIL) && |
1497 HasBit(statspec->callbackmask, CBM_STATION_AVAIL) && |
1498 GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE) == 0) { |
1498 GB(GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE), 0, 8) == 0) { |
1499 GfxFillRect(4 + i * 68, 18, 67 + i * 68, 75, (1 << PALETTE_MODIFIER_GREYOUT)); |
1499 GfxFillRect(4 + i * 68, 18, 67 + i * 68, 75, (1 << PALETTE_MODIFIER_GREYOUT)); |
1500 } |
1500 } |
1501 } |
1501 } |
1502 } |
1502 } |
1503 break; |
1503 break; |
1513 |
1513 |
1514 /* Check station availability callback */ |
1514 /* Check station availability callback */ |
1515 const StationSpec *statspec = GetCustomStationSpec(STAT_CLASS_WAYP, type); |
1515 const StationSpec *statspec = GetCustomStationSpec(STAT_CLASS_WAYP, type); |
1516 if (statspec != NULL && |
1516 if (statspec != NULL && |
1517 HasBit(statspec->callbackmask, CBM_STATION_AVAIL) && |
1517 HasBit(statspec->callbackmask, CBM_STATION_AVAIL) && |
1518 GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE) == 0) return; |
1518 GB(GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE), 0, 8) == 0) return; |
1519 |
1519 |
1520 _cur_waypoint_type = type; |
1520 _cur_waypoint_type = type; |
1521 SndPlayFx(SND_15_BEEP); |
1521 SndPlayFx(SND_15_BEEP); |
1522 SetWindowDirty(w); |
1522 SetWindowDirty(w); |
1523 break; |
1523 break; |