@@ -24,15 +24,15 @@
|
||||
/** Scope resolver for generic objects and properties. */
|
||||
struct GenericScopeResolver : public ScopeResolver {
|
||||
CargoID cargo_type;
|
||||
uint8 default_selection;
|
||||
uint8 src_industry; ///< Source industry substitute type. 0xFF for "town", 0xFE for "unknown".
|
||||
uint8 dst_industry; ///< Destination industry substitute type. 0xFF for "town", 0xFE for "unknown".
|
||||
uint8 distance;
|
||||
uint8_t default_selection;
|
||||
uint8_t src_industry; ///< Source industry substitute type. 0xFF for "town", 0xFE for "unknown".
|
||||
uint8_t dst_industry; ///< Destination industry substitute type. 0xFF for "town", 0xFE for "unknown".
|
||||
uint8_t distance;
|
||||
AIConstructionEvent event;
|
||||
uint8 count;
|
||||
uint8 station_size;
|
||||
uint8_t count;
|
||||
uint8_t station_size;
|
||||
|
||||
uint8 feature;
|
||||
uint8_t feature;
|
||||
|
||||
/**
|
||||
* Generic scope resolver.
|
||||
@@ -45,7 +45,7 @@ struct GenericScopeResolver : public ScopeResolver {
|
||||
{
|
||||
}
|
||||
|
||||
uint32 GetVariable(uint16 variable, uint32 parameter, GetVariableExtra *extra) const override;
|
||||
uint32_t GetVariable(uint16_t variable, uint32_t parameter, GetVariableExtra *extra) const override;
|
||||
|
||||
private:
|
||||
bool ai_callback; ///< Callback comes from the AI.
|
||||
@@ -71,7 +71,7 @@ struct GenericResolverObject : public ResolverObject {
|
||||
return (GrfSpecFeature)this->generic_scope.feature;
|
||||
}
|
||||
|
||||
uint32 GetDebugID() const override
|
||||
uint32_t GetDebugID() const override
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@@ -97,7 +97,7 @@ static GenericCallbackList _gcl[GSF_END];
|
||||
*/
|
||||
void ResetGenericCallbacks()
|
||||
{
|
||||
for (uint8 feature = 0; feature < lengthof(_gcl); feature++) {
|
||||
for (uint8_t feature = 0; feature < lengthof(_gcl); feature++) {
|
||||
_gcl[feature].clear();
|
||||
}
|
||||
}
|
||||
@@ -121,7 +121,7 @@ void AddGenericCallback(GrfSpecFeature feature, const GRFFile *file, const Sprit
|
||||
_gcl[feature].push_back(GenericCallback(file, group));
|
||||
}
|
||||
|
||||
/* virtual */ uint32 GenericScopeResolver::GetVariable(uint16 variable, uint32 parameter, GetVariableExtra *extra) const
|
||||
/* virtual */ uint32_t GenericScopeResolver::GetVariable(uint16_t variable, uint32_t parameter, GetVariableExtra *extra) const
|
||||
{
|
||||
if (this->ai_callback) {
|
||||
switch (variable) {
|
||||
@@ -167,7 +167,7 @@ GenericResolverObject::GenericResolverObject(bool ai_callback, CallbackID callba
|
||||
* @param[out] file Optionally returns the GRFFile which made the final decision for the callback result. May be nullptr if not required.
|
||||
* @return callback value if successful or CALLBACK_FAILED
|
||||
*/
|
||||
static uint16 GetGenericCallbackResult(uint8 feature, ResolverObject &object, uint32 param1_grfv7, uint32 param1_grfv8, const GRFFile **file)
|
||||
static uint16_t GetGenericCallbackResult(uint8_t feature, ResolverObject &object, uint32_t param1_grfv7, uint32_t param1_grfv8, const GRFFile **file)
|
||||
{
|
||||
assert(feature < lengthof(_gcl));
|
||||
|
||||
@@ -177,7 +177,7 @@ static uint16 GetGenericCallbackResult(uint8 feature, ResolverObject &object, ui
|
||||
object.root_spritegroup = it->group;
|
||||
/* Set callback param based on GRF version. */
|
||||
object.callback_param1 = it->file->grf_version >= 8 ? param1_grfv8 : param1_grfv7;
|
||||
uint16 result = object.ResolveCallback();
|
||||
uint16_t result = object.ResolveCallback();
|
||||
if (result == CALLBACK_FAILED) continue;
|
||||
|
||||
/* Return NewGRF file if necessary */
|
||||
@@ -206,7 +206,7 @@ static uint16 GetGenericCallbackResult(uint8 feature, ResolverObject &object, ui
|
||||
* @param[out] file Optionally returns the GRFFile which made the final decision for the callback result. May be nullptr if not required.
|
||||
* @return callback value if successful or CALLBACK_FAILED
|
||||
*/
|
||||
uint16 GetAiPurchaseCallbackResult(GrfSpecFeature feature, CargoID cargo_type, uint8 default_selection, IndustryType src_industry, IndustryType dst_industry, uint8 distance, AIConstructionEvent event, uint8 count, uint8 station_size, const GRFFile **file)
|
||||
uint16_t GetAiPurchaseCallbackResult(GrfSpecFeature feature, CargoID cargo_type, uint8_t default_selection, IndustryType src_industry, IndustryType dst_industry, uint8_t distance, AIConstructionEvent event, uint8_t count, uint8_t station_size, const GRFFile **file)
|
||||
{
|
||||
GenericResolverObject object(true, CBID_GENERIC_AI_PURCHASE_SELECTION);
|
||||
|
||||
@@ -232,7 +232,7 @@ uint16 GetAiPurchaseCallbackResult(GrfSpecFeature feature, CargoID cargo_type, u
|
||||
object.generic_scope.station_size = station_size;
|
||||
object.generic_scope.feature = feature;
|
||||
|
||||
uint16 callback = GetGenericCallbackResult(feature, object, 0, 0, file);
|
||||
uint16_t callback = GetGenericCallbackResult(feature, object, 0, 0, file);
|
||||
if (callback != CALLBACK_FAILED) callback = GB(callback, 0, 8);
|
||||
return callback;
|
||||
}
|
||||
@@ -247,35 +247,35 @@ void AmbientSoundEffectCallback(TileIndex tile)
|
||||
assert_tile(IsTileType(tile, MP_CLEAR) || IsTileType(tile, MP_TREES) || IsTileType(tile, MP_WATER), tile);
|
||||
|
||||
/* Only run every 1/200-th time. */
|
||||
uint32 r; // Save for later
|
||||
uint32_t r; // Save for later
|
||||
if (!Chance16R(1, 200, r) || !_settings_client.sound.ambient) return;
|
||||
|
||||
/* Prepare resolver object. */
|
||||
GenericResolverObject object(false, CBID_SOUNDS_AMBIENT_EFFECT);
|
||||
object.generic_scope.feature = GSF_SOUNDFX;
|
||||
|
||||
uint32 param1_v7 = GetTileType(tile) << 28 | Clamp(TileHeight(tile), 0, 15) << 24 | GB(r, 16, 8) << 16 | GetTerrainType(tile);
|
||||
uint32 param1_v8 = GetTileType(tile) << 24 | GetTileZ(tile) << 16 | GB(r, 16, 8) << 8 | (HasTileWaterClass(tile) ? GetWaterClass(tile) : 0) << 3 | GetTerrainType(tile);
|
||||
uint32_t param1_v7 = GetTileType(tile) << 28 | Clamp(TileHeight(tile), 0, 15) << 24 | GB(r, 16, 8) << 16 | GetTerrainType(tile);
|
||||
uint32_t param1_v8 = GetTileType(tile) << 24 | GetTileZ(tile) << 16 | GB(r, 16, 8) << 8 | (HasTileWaterClass(tile) ? GetWaterClass(tile) : 0) << 3 | GetTerrainType(tile);
|
||||
|
||||
/* Run callback. */
|
||||
const GRFFile *grf_file;
|
||||
uint16 callback = GetGenericCallbackResult(GSF_SOUNDFX, object, param1_v7, param1_v8, &grf_file);
|
||||
uint16_t callback = GetGenericCallbackResult(GSF_SOUNDFX, object, param1_v7, param1_v8, &grf_file);
|
||||
|
||||
if (callback != CALLBACK_FAILED) PlayTileSound(grf_file, callback, tile);
|
||||
}
|
||||
|
||||
uint16 GetTownZonesCallback(Town *t)
|
||||
uint16_t GetTownZonesCallback(Town *t)
|
||||
{
|
||||
TownResolverObject object(nullptr, t, true);
|
||||
object.callback = XCBID_TOWN_ZONES;
|
||||
|
||||
const uint16 MAX_RETURN_VERSION = 0;
|
||||
const uint16_t MAX_RETURN_VERSION = 0;
|
||||
|
||||
for (GenericCallbackList::const_reverse_iterator it = _gcl[GSF_FAKE_TOWNS].rbegin(); it != _gcl[GSF_FAKE_TOWNS].rend(); ++it) {
|
||||
if (!HasBit(it->file->observed_feature_tests, GFTOF_TOWN_ZONE_CALLBACK)) continue;
|
||||
object.grffile = it->file;
|
||||
object.root_spritegroup = it->group;
|
||||
uint16 result = object.ResolveCallback();
|
||||
uint16_t result = object.ResolveCallback();
|
||||
if (result == CALLBACK_FAILED || result > MAX_RETURN_VERSION) continue;
|
||||
|
||||
return result;
|
||||
|
Reference in New Issue
Block a user