From 1f12dee3a052ceb8a6063a0f9a4d031d25dd4a04 Mon Sep 17 00:00:00 2001 From: darkvater Date: Sat, 13 Nov 2004 21:42:35 +0000 Subject: (svn r572) -newgrf: Support for custom (newGRF-yielded) refit masks for trains and aircrafts (pasky). --- aircraft_gui.c | 42 ++++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) (limited to 'aircraft_gui.c') diff --git a/aircraft_gui.c b/aircraft_gui.c index 0503a26e3..841f1e3d3 100644 --- a/aircraft_gui.c +++ b/aircraft_gui.c @@ -219,17 +219,39 @@ static void AircraftRefitWndProc(Window *w, WindowEvent *e) x = 6; y = 25; sel = WP(w,refit_d).sel; - b = _aircraft_refit_types[_opt.landscape]; - do { - color = 16; - if (sel == 0) { - cargo = *b; - color = 12; + +#define show_cargo(ctype) { \ + color = 16; \ + if (sel == 0) { \ + cargo = ctype; \ + color = 12; \ + } \ + sel--; \ + DrawString(x, y, _cargoc.names_s[ctype], color); \ + y += 10; \ + } + + if (_engine_refit_masks[v->engine_type]) { + uint32 mask = _engine_refit_masks[v->engine_type]; + int cid = 0; + + for (; mask; mask >>= 1, cid++) { + if (!(mask & 1)) // not this cid + continue; + if (!(_local_cargo_id_landscape[cid] & (1 << _opt.landscape))) // not in this landscape + continue; + + show_cargo(_local_cargo_id_ctype[cid]); } - sel--; - DrawString(x,y,_cargoc.names_s[*b], color); - y += 10; - } while (*++b != 0xFF); + + } else { // generic refit list + b = _aircraft_refit_types[_opt.landscape]; + do { + show_cargo(*b); + } while (*++b != 0xFF); + } + +#undef show_cargo WP(w,refit_d).cargo = cargo; -- cgit v1.2.3-54-g00ecf