src/newgrf_engine.cpp
changeset 9750 7114408dd1fa
parent 9672 02fe9b0dc41b
child 10177 41ce7529a331
equal deleted inserted replaced
9749:ad943e548576 9750:7114408dd1fa
   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