From 30f74c5b74e14664b2d406a32e8eabae9e46e8ae Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Wed, 1 Jun 2022 23:47:03 +0100 Subject: [PATCH] Sprite group: Add getter function for sprite groups --- src/newgrf.cpp | 48 +++++++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 203fc49338..edd2488ec0 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -5556,6 +5556,12 @@ static const SpriteGroup *GetGroupFromGroupID(byte setid, byte type, uint16 grou return result; } +static const SpriteGroup *GetGroupByID(uint16 groupid) +{ + const SpriteGroup *result = _cur.spritegroups[groupid]; + return result; +} + /** * Helper function to either create a callback or a result sprite group. * @param feature GrfSpecFeature to define spritegroup for. @@ -6828,9 +6834,9 @@ static void VehicleMapSpriteGroup(ByteReader *buf, byte feature, uint8 idcount) grfmsg(7, "VehicleMapSpriteGroup: [%d] Engine %d...", i, engine); if (wagover) { - SetWagonOverrideSprites(engine, ctype, _cur.spritegroups[groupid], last_engines, last_engines_count); + SetWagonOverrideSprites(engine, ctype, GetGroupByID(groupid), last_engines, last_engines_count); } else { - SetCustomEngineSprites(engine, ctype, _cur.spritegroups[groupid]); + SetCustomEngineSprites(engine, ctype, GetGroupByID(groupid)); } } } @@ -6844,9 +6850,9 @@ static void VehicleMapSpriteGroup(ByteReader *buf, byte feature, uint8 idcount) EngineID engine = engines[i]; if (wagover) { - SetWagonOverrideSprites(engine, CT_DEFAULT, _cur.spritegroups[groupid], last_engines, last_engines_count); + SetWagonOverrideSprites(engine, CT_DEFAULT, GetGroupByID(groupid), last_engines, last_engines_count); } else { - SetCustomEngineSprites(engine, CT_DEFAULT, _cur.spritegroups[groupid]); + SetCustomEngineSprites(engine, CT_DEFAULT, GetGroupByID(groupid)); SetEngineGRF(engine, _cur.grffile); } } @@ -6875,7 +6881,7 @@ static void CanalMapSpriteGroup(ByteReader *buf, uint8 idcount) } _water_feature[cf].grffile = _cur.grffile; - _water_feature[cf].group = _cur.spritegroups[groupid]; + _water_feature[cf].group = GetGroupByID(groupid); } } @@ -6904,7 +6910,7 @@ static void StationMapSpriteGroup(ByteReader *buf, uint8 idcount) continue; } - statspec->grf_prop.spritegroup[ctype] = _cur.spritegroups[groupid]; + statspec->grf_prop.spritegroup[ctype] = GetGroupByID(groupid); } } @@ -6924,7 +6930,7 @@ static void StationMapSpriteGroup(ByteReader *buf, uint8 idcount) continue; } - statspec->grf_prop.spritegroup[CT_DEFAULT] = _cur.spritegroups[groupid]; + statspec->grf_prop.spritegroup[CT_DEFAULT] = GetGroupByID(groupid); statspec->grf_prop.grffile = _cur.grffile; statspec->grf_prop.local_id = stations[i]; StationClass::Assign(statspec); @@ -6959,7 +6965,7 @@ static void TownHouseMapSpriteGroup(ByteReader *buf, uint8 idcount) continue; } - hs->grf_prop.spritegroup[0] = _cur.spritegroups[groupid]; + hs->grf_prop.spritegroup[0] = GetGroupByID(groupid); } } @@ -6990,7 +6996,7 @@ static void IndustryMapSpriteGroup(ByteReader *buf, uint8 idcount) continue; } - indsp->grf_prop.spritegroup[0] = _cur.spritegroups[groupid]; + indsp->grf_prop.spritegroup[0] = GetGroupByID(groupid); } } @@ -7021,7 +7027,7 @@ static void IndustrytileMapSpriteGroup(ByteReader *buf, uint8 idcount) continue; } - indtsp->grf_prop.spritegroup[0] = _cur.spritegroups[groupid]; + indtsp->grf_prop.spritegroup[0] = GetGroupByID(groupid); } } @@ -7049,7 +7055,7 @@ static void CargoMapSpriteGroup(ByteReader *buf, uint8 idcount) CargoSpec *cs = CargoSpec::Get(cid); cs->grffile = _cur.grffile; - cs->group = _cur.spritegroups[groupid]; + cs->group = GetGroupByID(groupid); } } @@ -7072,7 +7078,7 @@ static void SignalsMapSpriteGroup(ByteReader *buf, uint8 idcount) switch (id) { case NSA3ID_CUSTOM_SIGNALS: - _cur.grffile->new_signals_group = _cur.spritegroups[groupid]; + _cur.grffile->new_signals_group = GetGroupByID(groupid); if (!HasBit(_cur.grffile->new_signal_ctrl_flags, NSCF_GROUPSET)) { SetBit(_cur.grffile->new_signal_ctrl_flags, NSCF_GROUPSET); _new_signals_grfs.push_back(_cur.grffile); @@ -7115,7 +7121,7 @@ static void ObjectMapSpriteGroup(ByteReader *buf, uint8 idcount) continue; } - spec->grf_prop.spritegroup[ctype] = _cur.spritegroups[groupid]; + spec->grf_prop.spritegroup[ctype] = GetGroupByID(groupid); } } @@ -7135,7 +7141,7 @@ static void ObjectMapSpriteGroup(ByteReader *buf, uint8 idcount) continue; } - spec->grf_prop.spritegroup[0] = _cur.spritegroups[groupid]; + spec->grf_prop.spritegroup[0] = GetGroupByID(groupid); spec->grf_prop.grffile = _cur.grffile; spec->grf_prop.local_id = objects[i]; } @@ -7163,7 +7169,7 @@ static void RailTypeMapSpriteGroup(ByteReader *buf, uint8 idcount) RailtypeInfo *rti = &_railtypes[railtypes[i]]; rti->grffile[ctype] = _cur.grffile; - rti->group[ctype] = _cur.spritegroups[groupid]; + rti->group[ctype] = GetGroupByID(groupid); } } } @@ -7196,7 +7202,7 @@ static void RoadTypeMapSpriteGroup(ByteReader *buf, uint8 idcount, RoadTramType RoadTypeInfo *rti = &_roadtypes[roadtypes[i]]; rti->grffile[ctype] = _cur.grffile; - rti->group[ctype] = _cur.spritegroups[groupid]; + rti->group[ctype] = GetGroupByID(groupid); } } } @@ -7232,7 +7238,7 @@ static void AirportMapSpriteGroup(ByteReader *buf, uint8 idcount) continue; } - as->grf_prop.spritegroup[0] = _cur.spritegroups[groupid]; + as->grf_prop.spritegroup[0] = GetGroupByID(groupid); } } @@ -7263,7 +7269,7 @@ static void AirportTileMapSpriteGroup(ByteReader *buf, uint8 idcount) continue; } - airtsp->grf_prop.spritegroup[0] = _cur.spritegroups[groupid]; + airtsp->grf_prop.spritegroup[0] = GetGroupByID(groupid); } } @@ -7291,7 +7297,7 @@ static void RoadStopMapSpriteGroup(ByteReader *buf, uint8 idcount) continue; } - roadstopspec->grf_prop.spritegroup[ctype] = _cur.spritegroups[groupid]; + roadstopspec->grf_prop.spritegroup[ctype] = GetGroupByID(groupid); } } @@ -7316,7 +7322,7 @@ static void RoadStopMapSpriteGroup(ByteReader *buf, uint8 idcount) continue; } - roadstopspec->grf_prop.spritegroup[CT_DEFAULT] = _cur.spritegroups[groupid]; + roadstopspec->grf_prop.spritegroup[CT_DEFAULT] = GetGroupByID(groupid); roadstopspec->grf_prop.grffile = _cur.grffile; roadstopspec->grf_prop.local_id = roadstops[i]; RoadStopClass::Assign(roadstopspec); @@ -7358,7 +7364,7 @@ static void FeatureMapSpriteGroup(ByteReader *buf) grfmsg(6, "FeatureMapSpriteGroup: Adding generic feature callback for feature %s", GetFeatureString(feature_ref)); - AddGenericCallback(feature, _cur.grffile, _cur.spritegroups[groupid]); + AddGenericCallback(feature, _cur.grffile, GetGroupByID(groupid)); return; }