Mercurial > hg > openttd
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 |