equal
deleted
inserted
replaced
455 |
455 |
456 if (v != NULL) v->waiting_triggers = triggers; |
456 if (v != NULL) v->waiting_triggers = triggers; |
457 } |
457 } |
458 |
458 |
459 |
459 |
460 static uint32 GetVehicleTypeInfo(EngineID engine_type) |
|
461 { |
|
462 /* Bit 0 Vehicle type is available on the market |
|
463 * Bit 1 Vehicle type is in the testing phase |
|
464 * Bit 2 Exclusive testing offer for a human player active */ |
|
465 const Engine *e = GetEngine(engine_type); |
|
466 uint32 var = 0; |
|
467 |
|
468 if (e->player_avail == 0xFF) SETBIT(var, 0); |
|
469 if (e->age < e->duration_phase_1) SETBIT(var, 1); |
|
470 if (e->player_avail > 0 && e->player_avail != 0xFF) SETBIT(var, 2); |
|
471 return var; |
|
472 } |
|
473 |
|
474 |
|
475 static uint32 GetGRFParameter(EngineID engine_type, byte parameter) |
460 static uint32 GetGRFParameter(EngineID engine_type, byte parameter) |
476 { |
461 { |
477 const GRFFile *file = GetEngineGRF(engine_type); |
462 const GRFFile *file = GetEngineGRF(engine_type); |
478 |
463 |
479 if (parameter >= file->param_end) return 0; |
464 if (parameter >= file->param_end) return 0; |
488 if (v == NULL) { |
473 if (v == NULL) { |
489 /* Vehicle does not exist, so we're in a purchase list */ |
474 /* Vehicle does not exist, so we're in a purchase list */ |
490 switch (variable) { |
475 switch (variable) { |
491 case 0x43: return _current_player; /* Owner information */ |
476 case 0x43: return _current_player; /* Owner information */ |
492 case 0x46: return 0; /* Motion counter */ |
477 case 0x46: return 0; /* Motion counter */ |
493 case 0x48: return GetVehicleTypeInfo(object->u.vehicle.self_type); /* Vehicle Type Info */ |
478 case 0x48: return GetEngine(object->u.vehicle.self_type)->flags; /* Vehicle Type Info */ |
494 case 0xC4: return clamp(_cur_year, ORIGINAL_BASE_YEAR, ORIGINAL_MAX_YEAR) - ORIGINAL_BASE_YEAR; /* Build year */ |
479 case 0xC4: return clamp(_cur_year, ORIGINAL_BASE_YEAR, ORIGINAL_MAX_YEAR) - ORIGINAL_BASE_YEAR; /* Build year */ |
495 case 0xDA: return INVALID_VEHICLE; /* Next vehicle */ |
480 case 0xDA: return INVALID_VEHICLE; /* Next vehicle */ |
496 case 0x7F: return GetGRFParameter(object->u.vehicle.self_type, parameter); /* Read GRF parameter */ |
481 case 0x7F: return GetGRFParameter(object->u.vehicle.self_type, parameter); /* Read GRF parameter */ |
497 } |
482 } |
498 |
483 |
599 const CargoSpec *cs = GetCargo(v->cargo_type); |
584 const CargoSpec *cs = GetCargo(v->cargo_type); |
600 |
585 |
601 return (cs->classes << 16) | (cs->weight << 8) | GetEngineGRF(v->engine_type)->cargo_map[v->cargo_type]; |
586 return (cs->classes << 16) | (cs->weight << 8) | GetEngineGRF(v->engine_type)->cargo_map[v->cargo_type]; |
602 } |
587 } |
603 |
588 |
604 case 0x48: return GetVehicleTypeInfo(v->engine_type); /* Vehicle Type Info */ |
589 case 0x48: return GetEngine(v->engine_type)->flags; /* Vehicle Type Info */ |
605 |
590 |
606 /* Variables which use the parameter */ |
591 /* Variables which use the parameter */ |
607 case 0x60: /* Count consist's engine ID occurance */ |
592 case 0x60: /* Count consist's engine ID occurance */ |
608 if (v->type != VEH_Train) return v->engine_type == parameter; |
593 if (v->type != VEH_Train) return v->engine_type == parameter; |
609 |
594 |