427 case 0x48: { // Accepted cargo types |
427 case 0x48: { // Accepted cargo types |
428 CargoID cargo_type; |
428 CargoID cargo_type; |
429 uint32 value = 0; |
429 uint32 value = 0; |
430 |
430 |
431 for (cargo_type = 0; cargo_type < NUM_CARGO; cargo_type++) { |
431 for (cargo_type = 0; cargo_type < NUM_CARGO; cargo_type++) { |
432 if (st->goods[cargo_type].acceptance) SETBIT(value, cargo_type); |
432 if (HASBIT(st->goods[cargo_type].acceptance_pickup, GoodsEntry::PICKUP)) SETBIT(value, cargo_type); |
433 } |
433 } |
434 return value; |
434 return value; |
435 } |
435 } |
436 case 0x49: |
436 case 0x49: |
437 if (!HASBIT(_svc.valid, 5)) { _svc.v49 = GetPlatformInfoHelper(tile, false, true, false); SETBIT(_svc.valid, 5); } |
437 if (!HASBIT(_svc.valid, 5)) { _svc.v49 = GetPlatformInfoHelper(tile, false, true, false); SETBIT(_svc.valid, 5); } |
465 case 0x60: return min(ge->cargo.Count(), 4095); |
465 case 0x60: return min(ge->cargo.Count(), 4095); |
466 case 0x61: return ge->days_since_pickup; |
466 case 0x61: return ge->days_since_pickup; |
467 case 0x62: return ge->rating; |
467 case 0x62: return ge->rating; |
468 case 0x63: return ge->cargo.DaysInTransit(); |
468 case 0x63: return ge->cargo.DaysInTransit(); |
469 case 0x64: return ge->last_speed | (ge->last_age << 8); |
469 case 0x64: return ge->last_speed | (ge->last_age << 8); |
470 case 0x65: return ge->acceptance << 3; |
470 case 0x65: return GB(ge->acceptance_pickup, GoodsEntry::ACCEPTANCE, 1) << 3; |
471 } |
471 } |
472 } |
472 } |
473 |
473 |
474 /* Handle cargo variables (deprecated) */ |
474 /* Handle cargo variables (deprecated) */ |
475 if (variable >= 0x8C && variable <= 0xEC) { |
475 if (variable >= 0x8C && variable <= 0xEC) { |
476 const GoodsEntry *g = &st->goods[GB(variable - 0x8C, 3, 4)]; |
476 const GoodsEntry *g = &st->goods[GB(variable - 0x8C, 3, 4)]; |
477 switch (GB(variable - 0x8C, 0, 3)) { |
477 switch (GB(variable - 0x8C, 0, 3)) { |
478 case 0: return g->cargo.Count(); |
478 case 0: return g->cargo.Count(); |
479 case 1: return GB(min(g->cargo.Count(), 4095), 0, 4) | (g->acceptance << 7); |
479 case 1: return GB(min(g->cargo.Count(), 4095), 0, 4) | (GB(g->acceptance_pickup, GoodsEntry::ACCEPTANCE, 1) << 7); |
480 case 2: return g->days_since_pickup; |
480 case 2: return g->days_since_pickup; |
481 case 3: return g->rating; |
481 case 3: return g->rating; |
482 case 4: return g->cargo.Source(); |
482 case 4: return g->cargo.Source(); |
483 case 5: return g->cargo.DaysInTransit(); |
483 case 5: return g->cargo.DaysInTransit(); |
484 case 6: return g->last_speed; |
484 case 6: return g->last_speed; |