mirror of https://github.com/OpenTTD/OpenTTD
(svn r11651) -Codechange [FS#1555]: implement GRF parameter querying for industries and fix a 'bug' as side effect.
parent
85b52f6a64
commit
9ecda0a97a
|
@ -36,6 +36,15 @@ IndustryType MapNewGRFIndustryType(IndustryType grf_type, uint32 grf_id)
|
||||||
return _industry_mngr.GetID(GB(grf_type, 0, 6), grf_id);
|
return _industry_mngr.GetID(GB(grf_type, 0, 6), grf_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint32 GetGRFParameter(IndustryType ind_id, byte parameter)
|
||||||
|
{
|
||||||
|
const IndustrySpec *indspec = GetIndustrySpec(ind_id);
|
||||||
|
const GRFFile *file = indspec->grf_prop.grffile;
|
||||||
|
|
||||||
|
if (parameter >= file->param_end) return 0;
|
||||||
|
return file->param[parameter];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds the distance for the closest tile with water/land given a tile
|
* Finds the distance for the closest tile with water/land given a tile
|
||||||
* @param tile the tile to find the distance too
|
* @param tile the tile to find the distance too
|
||||||
|
@ -269,6 +278,9 @@ uint32 IndustryGetVariable(const ResolverObject *object, byte variable, byte par
|
||||||
/* Get a variable from the persistent storage */
|
/* Get a variable from the persistent storage */
|
||||||
case 0x7C: return industry->psa.Get(parameter);
|
case 0x7C: return industry->psa.Get(parameter);
|
||||||
|
|
||||||
|
/* Read GRF parameter */
|
||||||
|
case 0x7F: return GetGRFParameter(industry->type, parameter);
|
||||||
|
|
||||||
/* Industry structure access*/
|
/* Industry structure access*/
|
||||||
case 0x80: return industry->xy;
|
case 0x80: return industry->xy;
|
||||||
case 0x81: return GB(industry->xy, 8, 8);
|
case 0x81: return GB(industry->xy, 8, 8);
|
||||||
|
|
|
@ -24,6 +24,15 @@
|
||||||
#include "sprite.h"
|
#include "sprite.h"
|
||||||
#include "transparency.h"
|
#include "transparency.h"
|
||||||
|
|
||||||
|
static uint32 GetGRFParameter(IndustryGfx indtile_id, byte parameter)
|
||||||
|
{
|
||||||
|
const IndustryTileSpec *indtspec = GetIndustryTileSpec(indtile_id);
|
||||||
|
const GRFFile *file = indtspec->grf_prop.grffile;
|
||||||
|
|
||||||
|
if (parameter >= file->param_end) return 0;
|
||||||
|
return file->param[parameter];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Based on newhouses equivalent, but adapted for newindustries
|
* Based on newhouses equivalent, but adapted for newindustries
|
||||||
* @param parameter from callback. It's in fact a pair of coordinates
|
* @param parameter from callback. It's in fact a pair of coordinates
|
||||||
|
@ -101,6 +110,9 @@ static uint32 IndustryTileGetVariable(const ResolverObject *object, byte variabl
|
||||||
|
|
||||||
/* Get industry tile ID at offset */
|
/* Get industry tile ID at offset */
|
||||||
case 0x62 : return GetIndustryIDAtOffset(GetNearbyTile(parameter, tile), inds);
|
case 0x62 : return GetIndustryIDAtOffset(GetNearbyTile(parameter, tile), inds);
|
||||||
|
|
||||||
|
/* Read GRF parameter */
|
||||||
|
case 0x7F: return GetGRFParameter(GetIndustryGfx(tile), parameter);
|
||||||
}
|
}
|
||||||
|
|
||||||
DEBUG(grf, 1, "Unhandled industry tile property 0x%X", variable);
|
DEBUG(grf, 1, "Unhandled industry tile property 0x%X", variable);
|
||||||
|
|
Loading…
Reference in New Issue