comparison src/newgrf_engine.cpp @ 9750:0654bf387d06 draft

(svn r13885) -Fix [FS#2168]: Var 0x7F is not feature-specific.
author frosch <frosch@openttd.org>
date Wed, 30 Jul 2008 18:23:12 +0000 (2008-07-30)
parents 28e252610709
children 2748e8fea4a2
comparison
equal deleted inserted replaced
9749:d3514ad21801 9750:0654bf387d06
437 437
438 if (v != NULL) v->waiting_triggers = triggers; 438 if (v != NULL) v->waiting_triggers = triggers;
439 } 439 }
440 440
441 441
442 static uint32 GetGRFParameter(EngineID engine_type, byte parameter)
443 {
444 const GRFFile *file = GetEngineGRF(engine_type);
445
446 if (file == NULL) return 0;
447 if (parameter >= file->param_end) return 0;
448 return file->param[parameter];
449 }
450
451
452 static uint8 LiveryHelper(EngineID engine, const Vehicle *v) 442 static uint8 LiveryHelper(EngineID engine, const Vehicle *v)
453 { 443 {
454 const Livery *l; 444 const Livery *l;
455 445
456 if (v == NULL) { 446 if (v == NULL) {
477 case 0x46: return 0; // Motion counter 467 case 0x46: return 0; // Motion counter
478 case 0x48: return GetEngine(object->u.vehicle.self_type)->flags; // Vehicle Type Info 468 case 0x48: return GetEngine(object->u.vehicle.self_type)->flags; // Vehicle Type Info
479 case 0x49: return _cur_year; // 'Long' format build year 469 case 0x49: return _cur_year; // 'Long' format build year
480 case 0xC4: return Clamp(_cur_year, ORIGINAL_BASE_YEAR, ORIGINAL_MAX_YEAR) - ORIGINAL_BASE_YEAR; // Build year 470 case 0xC4: return Clamp(_cur_year, ORIGINAL_BASE_YEAR, ORIGINAL_MAX_YEAR) - ORIGINAL_BASE_YEAR; // Build year
481 case 0xDA: return INVALID_VEHICLE; // Next vehicle 471 case 0xDA: return INVALID_VEHICLE; // Next vehicle
482 case 0x7F: return GetGRFParameter(object->u.vehicle.self_type, parameter); // Read GRF parameter
483 } 472 }
484 473
485 *available = false; 474 *available = false;
486 return UINT_MAX; 475 return UINT_MAX;
487 } 476 }
629 for (; v != NULL; v = v->Next()) { 618 for (; v != NULL; v = v->Next()) {
630 if (GetEngine(v->engine_type)->internal_id == parameter) count++; 619 if (GetEngine(v->engine_type)->internal_id == parameter) count++;
631 } 620 }
632 return count; 621 return count;
633 } 622 }
634
635 case 0x7F: return GetGRFParameter(v->engine_type, parameter); // Read GRF parameter
636 623
637 case 0xFE: 624 case 0xFE:
638 case 0xFF: { 625 case 0xFF: {
639 uint16 modflags = 0; 626 uint16 modflags = 0;
640 627
830 res->callback_param2 = 0; 817 res->callback_param2 = 0;
831 res->last_value = 0; 818 res->last_value = 0;
832 res->trigger = 0; 819 res->trigger = 0;
833 res->reseed = 0; 820 res->reseed = 0;
834 res->count = 0; 821 res->count = 0;
822
823 const Engine *e = GetEngine(engine_type);
824 res->grffile = (e != NULL ? e->grffile : NULL);
835 } 825 }
836 826
837 827
838 /** Retrieve the SpriteGroup for the specified vehicle. 828 /** Retrieve the SpriteGroup for the specified vehicle.
839 * If the vehicle is not specified, the purchase list group for the engine is 829 * If the vehicle is not specified, the purchase list group for the engine is