OpenTTD Source 20250205-master-gfd85ab1e2c
newgrf_roadtype.h
Go to the documentation of this file.
1/*
2 * This file is part of OpenTTD.
3 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
6 */
7
10#ifndef NEWGRF_ROADTYPE_H
11#define NEWGRF_ROADTYPE_H
12
13#include "road.h"
14#include "newgrf_commons.h"
15#include "newgrf_spritegroup.h"
16
21 const RoadTypeInfo *rti;
22
34
35 uint32_t GetRandomBits() const override;
36 uint32_t GetVariable(uint8_t variable, [[maybe_unused]] uint32_t parameter, bool &available) const override;
37};
38
42
43 RoadTypeResolverObject(const RoadTypeInfo *rti, TileIndex tile, TileContext context, RoadTypeSpriteGroup rtsg, uint32_t param1 = 0, uint32_t param2 = 0);
44
45 ScopeResolver *GetScope(VarSpriteGroupScope scope = VSG_SCOPE_SELF, uint8_t relative = 0) override
46 {
47 switch (scope) {
48 case VSG_SCOPE_SELF: return &this->roadtype_scope;
49 default: return ResolverObject::GetScope(scope, relative);
50 }
51 }
52
53 GrfSpecFeature GetFeature() const override;
54 uint32_t GetDebugID() const override;
55};
56
57SpriteID GetCustomRoadSprite(const RoadTypeInfo *rti, TileIndex tile, RoadTypeSpriteGroup rtsg, TileContext context = TCX_NORMAL, uint *num_results = nullptr);
58
59RoadType GetRoadTypeTranslation(RoadTramType rtt, uint8_t tracktype, const GRFFile *grffile);
60uint8_t GetReverseRoadTypeTranslation(RoadType roadtype, const GRFFile *grffile);
61
62void ConvertRoadTypes();
64void ClearRoadTypeLabelList();
65
66#endif /* NEWGRF_ROADTYPE_H */
uint32_t SpriteID
The number of a sprite, without mapping bits and colourtables.
Definition gfx_type.h:17
GrfSpecFeature
Definition newgrf.h:68
This file simplyfies and embeds a common mechanism of loading/saving and mapping of grf entities.
TileContext
Context for tile accesses.
@ TCX_NORMAL
Nothing special.
SpriteID GetCustomRoadSprite(const RoadTypeInfo *rti, TileIndex tile, RoadTypeSpriteGroup rtsg, TileContext context=TCX_NORMAL, uint *num_results=nullptr)
Get the sprite to draw for the given tile.
void SetCurrentRoadTypeLabelList()
Populate road type label list with current values.
void ConvertRoadTypes()
Test if any saved road type labels are different to the currently loaded road types.
uint8_t GetReverseRoadTypeTranslation(RoadType roadtype, const GRFFile *grffile)
Perform a reverse roadtype lookup to get the GRF internal ID.
RoadType GetRoadTypeTranslation(RoadTramType rtt, uint8_t tracktype, const GRFFile *grffile)
Translate an index to the GRF-local road/tramtype-translation table into a RoadType.
Action 2 handling.
VarSpriteGroupScope
@ VSG_SCOPE_SELF
Resolved object itself.
Road specific functions.
RoadTypeSpriteGroup
Sprite groups for a roadtype.
Definition road.h:49
RoadType
The different roadtypes we support.
Definition road_type.h:25
Dynamic data of a loaded NewGRF.
Definition newgrf.h:109
Interface for SpriteGroup-s to access the gamestate.
virtual ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, uint8_t relative=0)
Get a resolver for the scope.
Resolver object for road types.
RoadTypeScopeResolver roadtype_scope
Resolver for the roadtype scope.
uint32_t GetDebugID() const override
Get an identifier for the item being resolved.
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, uint8_t relative=0) override
Get a resolver for the scope.
GrfSpecFeature GetFeature() const override
Get the feature number being resolved for.
Resolver for the railtype scope.
TileContext context
Are we resolving sprites for the upper halftile, or on a bridge?
RoadTypeScopeResolver(ResolverObject &ro, const RoadTypeInfo *rti, TileIndex tile, TileContext context)
Constructor of the roadtype scope resolvers.
uint32_t GetVariable(uint8_t variable, uint32_t parameter, bool &available) const override
Get a variable value.
uint32_t GetRandomBits() const override
Get a few random bits.
TileIndex tile
Tracktile. For track on a bridge this is the southern bridgehead.
Interface to query and set values specific to a single VarSpriteGroupScope (action 2 scope).
ResolverObject & ro
Surrounding resolver object.