newgrf_engine.c
branch0.5
changeset 5459 74356913b47d
parent 5446 68d042c57e9e
child 5512 52869fa67090
equal deleted inserted replaced
5458:0a52d7d0e410 5459:74356913b47d
   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