equal
deleted
inserted
replaced
521 |
521 |
522 if (v != NULL) v->waiting_triggers = triggers; |
522 if (v != NULL) v->waiting_triggers = triggers; |
523 } |
523 } |
524 |
524 |
525 |
525 |
526 static uint32 GetVehicleTypeInfo(EngineID engine_type) |
|
527 { |
|
528 /* Bit 0 Vehicle type is available on the market |
|
529 * Bit 1 Vehicle type is in the testing phase |
|
530 * Bit 2 Exclusive testing offer for a human player active */ |
|
531 const Engine *e = GetEngine(engine_type); |
|
532 uint32 var = 0; |
|
533 |
|
534 if (e->player_avail == 0xFF) SETBIT(var, 0); |
|
535 if (e->age < e->duration_phase_1) SETBIT(var, 1); |
|
536 if (e->player_avail > 0 && e->player_avail != 0xFF) SETBIT(var, 2); |
|
537 return var; |
|
538 } |
|
539 |
|
540 |
|
541 static uint32 GetGRFParameter(EngineID engine_type, byte parameter) |
526 static uint32 GetGRFParameter(EngineID engine_type, byte parameter) |
542 { |
527 { |
543 const GRFFile *file = GetEngineGRF(engine_type); |
528 const GRFFile *file = GetEngineGRF(engine_type); |
544 |
529 |
545 if (parameter >= file->param_end) return 0; |
530 if (parameter >= file->param_end) return 0; |
554 if (v == NULL) { |
539 if (v == NULL) { |
555 /* Vehicle does not exist, so we're in a purchase list */ |
540 /* Vehicle does not exist, so we're in a purchase list */ |
556 switch (variable) { |
541 switch (variable) { |
557 case 0x43: return _current_player; /* Owner information */ |
542 case 0x43: return _current_player; /* Owner information */ |
558 case 0x46: return 0; /* Motion counter */ |
543 case 0x46: return 0; /* Motion counter */ |
559 case 0x48: return GetVehicleTypeInfo(object->u.vehicle.self_type); /* Vehicle Type Info */ |
544 case 0x48: return GetEngine(object->u.vehicle.self_type)->flags; /* Vehicle Type Info */ |
560 case 0xC4: return clamp(_cur_year, ORIGINAL_BASE_YEAR, ORIGINAL_MAX_YEAR) - ORIGINAL_BASE_YEAR; /* Build year */ |
545 case 0xC4: return clamp(_cur_year, ORIGINAL_BASE_YEAR, ORIGINAL_MAX_YEAR) - ORIGINAL_BASE_YEAR; /* Build year */ |
561 case 0xDA: return INVALID_VEHICLE; /* Next vehicle */ |
546 case 0xDA: return INVALID_VEHICLE; /* Next vehicle */ |
562 case 0x7F: return GetGRFParameter(object->u.vehicle.self_type, parameter); /* Read GRF parameter */ |
547 case 0x7F: return GetGRFParameter(object->u.vehicle.self_type, parameter); /* Read GRF parameter */ |
563 } |
548 } |
564 |
549 |
667 CargoID cid = _global_cargo_id[_opt.landscape][v->cargo_type]; |
652 CargoID cid = _global_cargo_id[_opt.landscape][v->cargo_type]; |
668 |
653 |
669 return (_cargo_classes[cid] << 16) | (_cargoc.weights[v->cargo_type] << 8) | cid; |
654 return (_cargo_classes[cid] << 16) | (_cargoc.weights[v->cargo_type] << 8) | cid; |
670 } |
655 } |
671 |
656 |
672 case 0x48: return GetVehicleTypeInfo(v->engine_type); /* Vehicle Type Info */ |
657 case 0x48: return GetEngine(v->engine_type)->flags; /* Vehicle Type Info */ |
673 |
658 |
674 /* Variables which use the parameter */ |
659 /* Variables which use the parameter */ |
675 case 0x60: /* Count consist's engine ID occurance */ |
660 case 0x60: /* Count consist's engine ID occurance */ |
676 if (v->type != VEH_Train) return v->engine_type == parameter; |
661 if (v->type != VEH_Train) return v->engine_type == parameter; |
677 |
662 |