mirror of https://github.com/OpenTTD/OpenTTD
(svn r20437) -Codechange: lets Engines use GRFFilePropsBase as well
parent
3d21fb44aa
commit
29b489a055
|
@ -540,7 +540,7 @@ Money Aircraft::GetRunningCost() const
|
||||||
{
|
{
|
||||||
const Engine *e = Engine::Get(this->engine_type);
|
const Engine *e = Engine::Get(this->engine_type);
|
||||||
uint cost_factor = GetVehicleProperty(this, PROP_AIRCRAFT_RUNNING_COST_FACTOR, e->u.air.running_cost);
|
uint cost_factor = GetVehicleProperty(this, PROP_AIRCRAFT_RUNNING_COST_FACTOR, e->u.air.running_cost);
|
||||||
return GetPrice(PR_RUNNING_AIRCRAFT, cost_factor, e->grffile);
|
return GetPrice(PR_RUNNING_AIRCRAFT, cost_factor, e->grf_prop.grffile);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Aircraft::OnNewDay()
|
void Aircraft::OnNewDay()
|
||||||
|
|
|
@ -74,7 +74,7 @@ Engine::Engine() :
|
||||||
Engine::Engine(VehicleType type, EngineID base)
|
Engine::Engine(VehicleType type, EngineID base)
|
||||||
{
|
{
|
||||||
this->type = type;
|
this->type = type;
|
||||||
this->internal_id = base;
|
this->grf_prop.local_id = base;
|
||||||
this->list_position = base;
|
this->list_position = base;
|
||||||
|
|
||||||
/* Check if this base engine is within the original engine data range */
|
/* Check if this base engine is within the original engine data range */
|
||||||
|
@ -241,7 +241,7 @@ Money Engine::GetRunningCost() const
|
||||||
default: NOT_REACHED();
|
default: NOT_REACHED();
|
||||||
}
|
}
|
||||||
|
|
||||||
return GetPrice(base_price, cost_factor, this->grffile, -8);
|
return GetPrice(base_price, cost_factor, this->grf_prop.grffile, -8);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -281,7 +281,7 @@ Money Engine::GetCost() const
|
||||||
default: NOT_REACHED();
|
default: NOT_REACHED();
|
||||||
}
|
}
|
||||||
|
|
||||||
return GetPrice(base_price, cost_factor, this->grffile, -8);
|
return GetPrice(base_price, cost_factor, this->grf_prop.grffile, -8);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include "vehicle_type.h"
|
#include "vehicle_type.h"
|
||||||
#include "core/pool_type.hpp"
|
#include "core/pool_type.hpp"
|
||||||
#include "core/smallvec_type.hpp"
|
#include "core/smallvec_type.hpp"
|
||||||
|
#include "newgrf_commons.h"
|
||||||
|
|
||||||
typedef Pool<Engine, EngineID, 64, 64000> EnginePool;
|
typedef Pool<Engine, EngineID, 64, 64000> EnginePool;
|
||||||
extern EnginePool _engine_pool;
|
extern EnginePool _engine_pool;
|
||||||
|
@ -46,9 +47,13 @@ struct Engine : EnginePool::PoolItem<&_engine_pool> {
|
||||||
} u;
|
} u;
|
||||||
|
|
||||||
/* NewGRF related data */
|
/* NewGRF related data */
|
||||||
const struct GRFFile *grffile;
|
/**
|
||||||
const struct SpriteGroup *group[NUM_CARGO + 2];
|
* Properties related the the grf file.
|
||||||
uint16 internal_id; ///< ID within the GRF file
|
* NUM_CARGO real cargo plus two pseudo cargo sprite groups.
|
||||||
|
* Used for obtaining the sprite offset of custom sprites, and for
|
||||||
|
* evaluating callbacks.
|
||||||
|
*/
|
||||||
|
GRFFilePropsBase<NUM_CARGO + 2> grf_prop;
|
||||||
uint16 overrides_count;
|
uint16 overrides_count;
|
||||||
struct WagonOverride *overrides;
|
struct WagonOverride *overrides;
|
||||||
uint16 list_position;
|
uint16 list_position;
|
||||||
|
|
|
@ -357,7 +357,7 @@ static Engine *GetNewEngine(const GRFFile *file, VehicleType type, uint16 intern
|
||||||
EngineID engine = _engine_mngr.GetID(type, internal_id, scope_grfid);
|
EngineID engine = _engine_mngr.GetID(type, internal_id, scope_grfid);
|
||||||
if (engine != INVALID_ENGINE) {
|
if (engine != INVALID_ENGINE) {
|
||||||
Engine *e = Engine::Get(engine);
|
Engine *e = Engine::Get(engine);
|
||||||
if (e->grffile == NULL) e->grffile = file;
|
if (e->grf_prop.grffile == NULL) e->grf_prop.grffile = file;
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -367,8 +367,8 @@ static Engine *GetNewEngine(const GRFFile *file, VehicleType type, uint16 intern
|
||||||
if (engine != INVALID_ENGINE) {
|
if (engine != INVALID_ENGINE) {
|
||||||
Engine *e = Engine::Get(engine);
|
Engine *e = Engine::Get(engine);
|
||||||
|
|
||||||
if (e->grffile == NULL) {
|
if (e->grf_prop.grffile == NULL) {
|
||||||
e->grffile = file;
|
e->grf_prop.grffile = file;
|
||||||
grfmsg(5, "Replaced engine at index %d for GRFID %x, type %d, index %d", e->index, BSWAP32(file->grfid), type, internal_id);
|
grfmsg(5, "Replaced engine at index %d for GRFID %x, type %d, index %d", e->index, BSWAP32(file->grfid), type, internal_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -387,7 +387,7 @@ static Engine *GetNewEngine(const GRFFile *file, VehicleType type, uint16 intern
|
||||||
|
|
||||||
/* ... it's not, so create a new one based off an existing engine */
|
/* ... it's not, so create a new one based off an existing engine */
|
||||||
Engine *e = new Engine(type, internal_id);
|
Engine *e = new Engine(type, internal_id);
|
||||||
e->grffile = file;
|
e->grf_prop.grffile = file;
|
||||||
|
|
||||||
/* Reserve the engine slot */
|
/* Reserve the engine slot */
|
||||||
assert(_engine_mngr.Length() == e->index);
|
assert(_engine_mngr.Length() == e->index);
|
||||||
|
@ -6925,7 +6925,7 @@ static void CalculateRefitMasks()
|
||||||
/* Did the newgrf specify any refitting? If not, use defaults. */
|
/* Did the newgrf specify any refitting? If not, use defaults. */
|
||||||
if (_gted[engine].refitmask_valid) {
|
if (_gted[engine].refitmask_valid) {
|
||||||
if (ei->refit_mask != 0) {
|
if (ei->refit_mask != 0) {
|
||||||
const GRFFile *file = e->grffile;
|
const GRFFile *file = e->grf_prop.grffile;
|
||||||
if (file != NULL && file->cargo_max != 0) {
|
if (file != NULL && file->cargo_max != 0) {
|
||||||
/* Apply cargo translation table to the refit mask */
|
/* Apply cargo translation table to the refit mask */
|
||||||
uint num_cargo = min(32, file->cargo_max);
|
uint num_cargo = min(32, file->cargo_max);
|
||||||
|
@ -6987,7 +6987,7 @@ static void FinaliseEngineArray()
|
||||||
Engine *e;
|
Engine *e;
|
||||||
|
|
||||||
FOR_ALL_ENGINES(e) {
|
FOR_ALL_ENGINES(e) {
|
||||||
if (e->grffile == NULL) {
|
if (e->grf_prop.grffile == NULL) {
|
||||||
const EngineIDMapping &eid = _engine_mngr[e->index];
|
const EngineIDMapping &eid = _engine_mngr[e->index];
|
||||||
if (eid.grfid != INVALID_GRFID || eid.internal_id != eid.substitute_id) {
|
if (eid.grfid != INVALID_GRFID || eid.internal_id != eid.substitute_id) {
|
||||||
e->info.string_id = STR_NEWGRF_INVALID_ENGINE;
|
e->info.string_id = STR_NEWGRF_INVALID_ENGINE;
|
||||||
|
|
|
@ -92,12 +92,12 @@ void UnloadWagonOverrides(Engine *e)
|
||||||
void SetCustomEngineSprites(EngineID engine, byte cargo, const SpriteGroup *group)
|
void SetCustomEngineSprites(EngineID engine, byte cargo, const SpriteGroup *group)
|
||||||
{
|
{
|
||||||
Engine *e = Engine::Get(engine);
|
Engine *e = Engine::Get(engine);
|
||||||
assert(cargo < lengthof(e->group));
|
assert(cargo < lengthof(e->grf_prop.spritegroup));
|
||||||
|
|
||||||
if (e->group[cargo] != NULL) {
|
if (e->grf_prop.spritegroup[cargo] != NULL) {
|
||||||
grfmsg(6, "SetCustomEngineSprites: engine %d cargo %d already has group -- replacing", engine, cargo);
|
grfmsg(6, "SetCustomEngineSprites: engine %d cargo %d already has group -- replacing", engine, cargo);
|
||||||
}
|
}
|
||||||
e->group[cargo] = group;
|
e->grf_prop.spritegroup[cargo] = group;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -110,7 +110,7 @@ void SetCustomEngineSprites(EngineID engine, byte cargo, const SpriteGroup *grou
|
||||||
void SetEngineGRF(EngineID engine, const GRFFile *file)
|
void SetEngineGRF(EngineID engine, const GRFFile *file)
|
||||||
{
|
{
|
||||||
Engine *e = Engine::Get(engine);
|
Engine *e = Engine::Get(engine);
|
||||||
e->grffile = file;
|
e->grf_prop.grffile = file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -121,7 +121,7 @@ void SetEngineGRF(EngineID engine, const GRFFile *file)
|
||||||
*/
|
*/
|
||||||
const GRFFile *GetEngineGRF(EngineID engine)
|
const GRFFile *GetEngineGRF(EngineID engine)
|
||||||
{
|
{
|
||||||
return Engine::Get(engine)->grffile;
|
return Engine::Get(engine)->grf_prop.grffile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -655,12 +655,12 @@ static uint32 VehicleGetVariable(const ResolverObject *object, byte variable, by
|
||||||
/* Variables which use the parameter */
|
/* Variables which use the parameter */
|
||||||
case 0x60: // Count consist's engine ID occurance
|
case 0x60: // Count consist's engine ID occurance
|
||||||
//EngineID engine = GetNewEngineID(GetEngineGRF(v->engine_type), v->type, parameter);
|
//EngineID engine = GetNewEngineID(GetEngineGRF(v->engine_type), v->type, parameter);
|
||||||
if (v->type != VEH_TRAIN) return Engine::Get(v->engine_type)->internal_id == parameter;
|
if (v->type != VEH_TRAIN) return Engine::Get(v->engine_type)->grf_prop.local_id == parameter;
|
||||||
|
|
||||||
{
|
{
|
||||||
uint count = 0;
|
uint count = 0;
|
||||||
for (; v != NULL; v = v->Next()) {
|
for (; v != NULL; v = v->Next()) {
|
||||||
if (Engine::Get(v->engine_type)->internal_id == parameter) count++;
|
if (Engine::Get(v->engine_type)->grf_prop.local_id == parameter) count++;
|
||||||
}
|
}
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
@ -745,8 +745,8 @@ static uint32 VehicleGetVariable(const ResolverObject *object, byte variable, by
|
||||||
case 0x43: return GB(v->max_age, 8, 8);
|
case 0x43: return GB(v->max_age, 8, 8);
|
||||||
case 0x44: return Clamp(v->build_year, ORIGINAL_BASE_YEAR, ORIGINAL_MAX_YEAR) - ORIGINAL_BASE_YEAR;
|
case 0x44: return Clamp(v->build_year, ORIGINAL_BASE_YEAR, ORIGINAL_MAX_YEAR) - ORIGINAL_BASE_YEAR;
|
||||||
case 0x45: return v->unitnumber;
|
case 0x45: return v->unitnumber;
|
||||||
case 0x46: return Engine::Get(v->engine_type)->internal_id;
|
case 0x46: return Engine::Get(v->engine_type)->grf_prop.local_id;
|
||||||
case 0x47: return GB(Engine::Get(v->engine_type)->internal_id, 8, 8);
|
case 0x47: return GB(Engine::Get(v->engine_type)->grf_prop.local_id, 8, 8);
|
||||||
case 0x48:
|
case 0x48:
|
||||||
if (v->type != VEH_TRAIN || v->spritenum != 0xFD) return v->spritenum;
|
if (v->type != VEH_TRAIN || v->spritenum != 0xFD) return v->spritenum;
|
||||||
return HasBit(Train::From(v)->flags, VRF_REVERSE_DIRECTION) ? 0xFE : 0xFD;
|
return HasBit(Train::From(v)->flags, VRF_REVERSE_DIRECTION) ? 0xFE : 0xFD;
|
||||||
|
@ -877,7 +877,7 @@ static inline void NewVehicleResolver(ResolverObject *res, EngineID engine_type,
|
||||||
res->count = 0;
|
res->count = 0;
|
||||||
|
|
||||||
const Engine *e = Engine::Get(engine_type);
|
const Engine *e = Engine::Get(engine_type);
|
||||||
res->grffile = (e != NULL ? e->grffile : NULL);
|
res->grffile = (e != NULL ? e->grf_prop.grffile : NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -914,12 +914,12 @@ static const SpriteGroup *GetVehicleSpriteGroup(EngineID engine, const Vehicle *
|
||||||
|
|
||||||
const Engine *e = Engine::Get(engine);
|
const Engine *e = Engine::Get(engine);
|
||||||
|
|
||||||
assert(cargo < lengthof(e->group));
|
assert(cargo < lengthof(e->grf_prop.spritegroup));
|
||||||
group = e->group[cargo];
|
group = e->grf_prop.spritegroup[cargo];
|
||||||
if (group != NULL) return group;
|
if (group != NULL) return group;
|
||||||
|
|
||||||
/* Fall back to the default set if the selected cargo type is not defined */
|
/* Fall back to the default set if the selected cargo type is not defined */
|
||||||
return e->group[CT_DEFAULT];
|
return e->grf_prop.spritegroup[CT_DEFAULT];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1133,10 +1133,10 @@ void TriggerVehicle(Vehicle *v, VehicleTrigger trigger)
|
||||||
uint ListPositionOfEngine(EngineID engine)
|
uint ListPositionOfEngine(EngineID engine)
|
||||||
{
|
{
|
||||||
const Engine *e = Engine::Get(engine);
|
const Engine *e = Engine::Get(engine);
|
||||||
if (e->grffile == NULL) return e->list_position;
|
if (e->grf_prop.grffile == NULL) return e->list_position;
|
||||||
|
|
||||||
/* Crude sorting to group by GRF ID */
|
/* Crude sorting to group by GRF ID */
|
||||||
return (e->grffile->grfid * 256) + e->list_position;
|
return (e->grf_prop.grffile->grfid * 256) + e->list_position;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ListOrderChange {
|
struct ListOrderChange {
|
||||||
|
@ -1173,8 +1173,8 @@ void CommitVehicleListOrderChanges()
|
||||||
/* Populate map with current list positions */
|
/* Populate map with current list positions */
|
||||||
Engine *e;
|
Engine *e;
|
||||||
FOR_ALL_ENGINES_OF_TYPE(e, source_e->type) {
|
FOR_ALL_ENGINES_OF_TYPE(e, source_e->type) {
|
||||||
if (!_settings_game.vehicle.dynamic_engines || e->grffile == source_e->grffile) {
|
if (!_settings_game.vehicle.dynamic_engines || e->grf_prop.grffile == source_e->grf_prop.grffile) {
|
||||||
if (e->internal_id == target) target_e = e;
|
if (e->grf_prop.local_id == target) target_e = e;
|
||||||
lptr_map[e->list_position] = e;
|
lptr_map[e->list_position] = e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1650,7 +1650,7 @@ Money RoadVehicle::GetRunningCost() const
|
||||||
uint cost_factor = GetVehicleProperty(this, PROP_ROADVEH_RUNNING_COST_FACTOR, e->u.road.running_cost);
|
uint cost_factor = GetVehicleProperty(this, PROP_ROADVEH_RUNNING_COST_FACTOR, e->u.road.running_cost);
|
||||||
if (cost_factor == 0) return 0;
|
if (cost_factor == 0) return 0;
|
||||||
|
|
||||||
return GetPrice(e->u.road.running_cost_class, cost_factor, e->grffile);
|
return GetPrice(e->u.road.running_cost_class, cost_factor, e->grf_prop.grffile);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RoadVehicle::Tick()
|
bool RoadVehicle::Tick()
|
||||||
|
|
|
@ -162,7 +162,7 @@ Money Ship::GetRunningCost() const
|
||||||
{
|
{
|
||||||
const Engine *e = Engine::Get(this->engine_type);
|
const Engine *e = Engine::Get(this->engine_type);
|
||||||
uint cost_factor = GetVehicleProperty(this, PROP_SHIP_RUNNING_COST_FACTOR, e->u.ship.running_cost);
|
uint cost_factor = GetVehicleProperty(this, PROP_SHIP_RUNNING_COST_FACTOR, e->u.ship.running_cost);
|
||||||
return GetPrice(PR_RUNNING_SHIP, cost_factor, e->grffile);
|
return GetPrice(PR_RUNNING_SHIP, cost_factor, e->grf_prop.grffile);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Ship::OnNewDay()
|
void Ship::OnNewDay()
|
||||||
|
|
|
@ -61,7 +61,7 @@ static const NIVariable _niv_vehicles[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
class NIHVehicle : public NIHelper {
|
class NIHVehicle : public NIHelper {
|
||||||
bool IsInspectable(uint index) const { return Engine::Get(Vehicle::Get(index)->engine_type)->grffile != NULL; }
|
bool IsInspectable(uint index) const { return Engine::Get(Vehicle::Get(index)->engine_type)->grf_prop.grffile != NULL; }
|
||||||
uint GetParent(uint index) const { const Vehicle *first = Vehicle::Get(index)->First(); return GetInspectWindowNumber(GetGrfSpecFeature(first->type), first->index); }
|
uint GetParent(uint index) const { const Vehicle *first = Vehicle::Get(index)->First(); return GetInspectWindowNumber(GetGrfSpecFeature(first->type), first->index); }
|
||||||
const void *GetInstance(uint index)const { return Vehicle::Get(index); }
|
const void *GetInstance(uint index)const { return Vehicle::Get(index); }
|
||||||
const void *GetSpec(uint index) const { return Engine::Get(Vehicle::Get(index)->engine_type); }
|
const void *GetSpec(uint index) const { return Engine::Get(Vehicle::Get(index)->engine_type); }
|
||||||
|
|
|
@ -98,9 +98,9 @@ static void RailVehicleLengthChanged(const Train *u)
|
||||||
{
|
{
|
||||||
/* show a warning once for each engine in whole game and once for each GRF after each game load */
|
/* show a warning once for each engine in whole game and once for each GRF after each game load */
|
||||||
const Engine *engine = Engine::Get(u->engine_type);
|
const Engine *engine = Engine::Get(u->engine_type);
|
||||||
uint32 grfid = engine->grffile->grfid;
|
uint32 grfid = engine->grf_prop.grffile->grfid;
|
||||||
GRFConfig *grfconfig = GetGRFConfig(grfid);
|
GRFConfig *grfconfig = GetGRFConfig(grfid);
|
||||||
if (GamelogGRFBugReverse(grfid, engine->internal_id) || !HasBit(grfconfig->grf_bugs, GBUG_VEH_LENGTH)) {
|
if (GamelogGRFBugReverse(grfid, engine->grf_prop.local_id) || !HasBit(grfconfig->grf_bugs, GBUG_VEH_LENGTH)) {
|
||||||
ShowNewGrfVehicleError(u->engine_type, STR_NEWGRF_BROKEN, STR_NEWGRF_BROKEN_VEHICLE_LENGTH, GBUG_VEH_LENGTH, true);
|
ShowNewGrfVehicleError(u->engine_type, STR_NEWGRF_BROKEN, STR_NEWGRF_BROKEN_VEHICLE_LENGTH, GBUG_VEH_LENGTH, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -458,9 +458,9 @@ int Train::GetDisplayImageWidth(Point *offset) const
|
||||||
int vehicle_pitch = 0;
|
int vehicle_pitch = 0;
|
||||||
|
|
||||||
const Engine *e = Engine::Get(this->engine_type);
|
const Engine *e = Engine::Get(this->engine_type);
|
||||||
if (e->grffile != NULL && is_custom_sprite(e->u.rail.image_index)) {
|
if (e->grf_prop.grffile != NULL && is_custom_sprite(e->u.rail.image_index)) {
|
||||||
reference_width = e->grffile->traininfo_vehicle_width;
|
reference_width = e->grf_prop.grffile->traininfo_vehicle_width;
|
||||||
vehicle_pitch = e->grffile->traininfo_vehicle_pitch;
|
vehicle_pitch = e->grf_prop.grffile->traininfo_vehicle_pitch;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (offset != NULL) {
|
if (offset != NULL) {
|
||||||
|
@ -505,8 +505,8 @@ static SpriteID GetRailIcon(EngineID engine, bool rear_head, int &y)
|
||||||
if (is_custom_sprite(spritenum)) {
|
if (is_custom_sprite(spritenum)) {
|
||||||
SpriteID sprite = GetCustomVehicleIcon(engine, dir);
|
SpriteID sprite = GetCustomVehicleIcon(engine, dir);
|
||||||
if (sprite != 0) {
|
if (sprite != 0) {
|
||||||
if (e->grffile != NULL) {
|
if (e->grf_prop.grffile != NULL) {
|
||||||
y += e->grffile->traininfo_vehicle_pitch;
|
y += e->grf_prop.grffile->traininfo_vehicle_pitch;
|
||||||
}
|
}
|
||||||
return sprite;
|
return sprite;
|
||||||
}
|
}
|
||||||
|
@ -3984,7 +3984,7 @@ Money Train::GetRunningCost() const
|
||||||
/* Halve running cost for multiheaded parts */
|
/* Halve running cost for multiheaded parts */
|
||||||
if (v->IsMultiheaded()) cost_factor /= 2;
|
if (v->IsMultiheaded()) cost_factor /= 2;
|
||||||
|
|
||||||
cost += GetPrice(e->u.rail.running_cost_class, cost_factor, e->grffile);
|
cost += GetPrice(e->u.rail.running_cost_class, cost_factor, e->grf_prop.grffile);
|
||||||
} while ((v = v->GetNextVehicle()) != NULL);
|
} while ((v = v->GetNextVehicle()) != NULL);
|
||||||
|
|
||||||
return cost;
|
return cost;
|
||||||
|
|
|
@ -200,7 +200,7 @@ uint Vehicle::Crash(bool flooded)
|
||||||
void ShowNewGrfVehicleError(EngineID engine, StringID part1, StringID part2, GRFBugs bug_type, bool critical)
|
void ShowNewGrfVehicleError(EngineID engine, StringID part1, StringID part2, GRFBugs bug_type, bool critical)
|
||||||
{
|
{
|
||||||
const Engine *e = Engine::Get(engine);
|
const Engine *e = Engine::Get(engine);
|
||||||
uint32 grfid = e->grffile->grfid;
|
uint32 grfid = e->grf_prop.grffile->grfid;
|
||||||
GRFConfig *grfconfig = GetGRFConfig(grfid);
|
GRFConfig *grfconfig = GetGRFConfig(grfid);
|
||||||
|
|
||||||
if (!HasBit(grfconfig->grf_bugs, bug_type)) {
|
if (!HasBit(grfconfig->grf_bugs, bug_type)) {
|
||||||
|
|
|
@ -281,7 +281,7 @@ static CommandCost GetRefitCost(EngineID engine_type)
|
||||||
|
|
||||||
default: NOT_REACHED();
|
default: NOT_REACHED();
|
||||||
}
|
}
|
||||||
return CommandCost(expense_type, GetPrice(base_price, cost_factor, e->grffile, -10));
|
return CommandCost(expense_type, GetPrice(base_price, cost_factor, e->grf_prop.grffile, -10));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue