mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-11 13:10:45 +00:00
Change: Add variable ground types for road waypoints
This commit is contained in:
parent
eebd5e47db
commit
c35a5e5cb1
@ -876,6 +876,22 @@
|
|||||||
<li>m2: index into the array of stations</li>
|
<li>m2: index into the array of stations</li>
|
||||||
<li>m3 bits 7..4: persistent random data for railway stations/waypoints and airports)</li>
|
<li>m3 bits 7..4: persistent random data for railway stations/waypoints and airports)</li>
|
||||||
<li>m3 bits 7..4: <a href="#OwnershipInfo">owner</a> of tram tracks (road stop)</li>
|
<li>m3 bits 7..4: <a href="#OwnershipInfo">owner</a> of tram tracks (road stop)</li>
|
||||||
|
<li>m3 bits 3..2: ground type (road waypoints)
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td><tt>0</tt> </td>
|
||||||
|
<td>on bare land</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><tt>1</tt> </td>
|
||||||
|
<td>on grass</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><tt>2</tt> </td>
|
||||||
|
<td>paved</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</li>
|
||||||
<li>m4: custom station id; 0 means standard graphics</li>
|
<li>m4: custom station id; 0 means standard graphics</li>
|
||||||
<li>m4: <a href="#RoadType">Roadtype</a> for road stops</li>
|
<li>m4: <a href="#RoadType">Roadtype</a> for road stops</li>
|
||||||
<li>m5: graphics index (range from 0..255 for each station type):
|
<li>m5: graphics index (range from 0..255 for each station type):
|
||||||
@ -997,6 +1013,7 @@
|
|||||||
|
|
||||||
<li>m7 bits 4..0: <a href="#OwnershipInfo">owner</a> of road (road stops)</li>
|
<li>m7 bits 4..0: <a href="#OwnershipInfo">owner</a> of road (road stops)</li>
|
||||||
<li>m7: animation frame (railway stations/waypoints, airports)</li>
|
<li>m7: animation frame (railway stations/waypoints, airports)</li>
|
||||||
|
<li>m8 bit 15: Snow or desert present (road waypoints)</li>
|
||||||
<li>m8 bits 11..6: <a href="#TramType">Tramtype</a></li>
|
<li>m8 bits 11..6: <a href="#TramType">Tramtype</a></li>
|
||||||
<li>m8 bits 5..0: <a href="#TrackType">track type</a> for railway stations/waypoints</li>
|
<li>m8 bits 5..0: <a href="#TrackType">track type</a> for railway stations/waypoints</li>
|
||||||
<li>m8 bits 5..0: custom road stop id; 0 means standard graphics</li>
|
<li>m8 bits 5..0: custom road stop id; 0 means standard graphics</li>
|
||||||
|
@ -181,10 +181,10 @@ the array so you can quickly see what is used and what is not.
|
|||||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan=7>5</td>
|
<td rowspan=8>5</td>
|
||||||
<td class="caption">rail station</td>
|
<td class="caption">rail station</td>
|
||||||
<td class="bits" rowspan=7><span class="free">O</span><span class="used" title="Water class">XX</span> <span class="used" title="Owner">XXXXX</span></td>
|
<td class="bits" rowspan=8><span class="free">O</span><span class="used" title="Water class">XX</span> <span class="used" title="Owner">XXXXX</span></td>
|
||||||
<td class="bits" rowspan=7><span class="pool" title="Station index on pool">XXXX XXXX XXXX XXXX</span></td>
|
<td class="bits" rowspan=8><span class="pool" title="Station index on pool">XXXX XXXX XXXX XXXX</span></td>
|
||||||
<td class="bits" rowspan=2><span class="used" title="Random bits">XXXX</span> <span class="free">OOOO</span></td>
|
<td class="bits" rowspan=2><span class="used" title="Random bits">XXXX</span> <span class="free">OOOO</span></td>
|
||||||
<td class="bits" rowspan=2><span class="used" title="Custom station specifications ID">XXXX XXXX</span></td>
|
<td class="bits" rowspan=2><span class="used" title="Custom station specifications ID">XXXX XXXX</span></td>
|
||||||
<td class="bits"><span class="used" title="Graphics index">XXXX XXXX</span></td>
|
<td class="bits"><span class="used" title="Graphics index">XXXX XXXX</span></td>
|
||||||
@ -199,12 +199,17 @@ the array so you can quickly see what is used and what is not.
|
|||||||
<tr>
|
<tr>
|
||||||
<td class="caption">road stop</td>
|
<td class="caption">road stop</td>
|
||||||
<td class="bits"><span class="used" title="Owner of tram">XXXX</span> <span class="free">OOOO</span></td>
|
<td class="bits"><span class="used" title="Owner of tram">XXXX</span> <span class="free">OOOO</span></td>
|
||||||
<td class="bits"><span class="free">OO</span><span class="used" title="Roadtype for road stop">XX XXXX</span></td>
|
<td class="bits" rowspan=2><span class="free">OO</span><span class="used" title="Roadtype for road stop">XX XXXX</span></td>
|
||||||
<td class="bits"><span class="usable" title="Graphics index">OOOO O</span><span class="used" title="Graphics index: 00 (exit towards NE), 01 (exit towards SE), 02 (exit towards SW), 03 (exit towards NW), 04 (drive through X), 05 (drive through Y)">XXX</span></td>
|
<td class="bits" rowspan=2><span class="usable" title="Graphics index">OOOO O</span><span class="used" title="Graphics index: 00 (exit towards NE), 01 (exit towards SE), 02 (exit towards SW), 03 (exit towards NW), 04 (drive through X), 05 (drive through Y)">XXX</span></td>
|
||||||
<td class="bits" rowspan=5><span class="free">O</span><span class="used" title="Station type">XXX X</span><span class="free">OOO</span></td>
|
<td class="bits" rowspan=6><span class="free">O</span><span class="used" title="Station type">XXX X</span><span class="free">OOO</span></td>
|
||||||
<td class="bits"><span class="free">OOO</span><span class="used" title="Owner of road">X XXXX</span></td>
|
<td class="bits" rowspan=2><span class="free">OOO</span><span class="used" title="Owner of road">X XXXX</span></td>
|
||||||
<td class="bits"><span class="free">OOOO</span> <span class="used" title="Tram type">XXXX XX</span> <span class="used" title="Custom road stops specifications ID">XXXXXX</span></td>
|
<td class="bits"><span class="free">OOOO</span> <span class="used" title="Tram type">XXXX XX</span> <span class="used" title="Custom road stops specifications ID">XXXXXX</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="caption">road waypoint</td>
|
||||||
|
<td class="bits"><span class="used" title="Owner of tram">XXXX</span> <span class="used" title="Pavement type">XX</span><span class="free">OO</span></td>
|
||||||
|
<td class="bits"><span class="used" title="Snow/desert present">X</span><span class="free">OOO</span> <span class="used" title="Tram type">XXXX XX<span class="free">OO OOOO</span></td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="caption">airport</td>
|
<td class="caption">airport</td>
|
||||||
<td class="bits"><span class="used" title="Random bits">XXXX</span> <span class="free">OOOO</span></td>
|
<td class="bits"><span class="used" title="Random bits">XXXX</span> <span class="free">OOOO</span></td>
|
||||||
|
@ -1359,13 +1359,13 @@ static uint GetRoadSpriteOffset(Slope slope, RoadBits bits)
|
|||||||
* By default, roads are always drawn as unpaved if they are on desert or
|
* By default, roads are always drawn as unpaved if they are on desert or
|
||||||
* above the snow line, but NewGRFs can override this for desert.
|
* above the snow line, but NewGRFs can override this for desert.
|
||||||
*
|
*
|
||||||
* @param tile The tile the road is on
|
* @param snow_or_desert Is snowy or desert tile
|
||||||
* @param roadside What sort of road this is
|
* @param roadside What sort of road this is
|
||||||
* @return True if snow/desert road sprites should be used.
|
* @return True if snow/desert road sprites should be used.
|
||||||
*/
|
*/
|
||||||
static bool DrawRoadAsSnowDesert(TileIndex tile, Roadside roadside)
|
static bool DrawRoadAsSnowDesert(bool snow_or_desert, Roadside roadside)
|
||||||
{
|
{
|
||||||
return (IsOnSnow(tile) &&
|
return (snow_or_desert &&
|
||||||
!(_settings_game.game_creation.landscape == LT_TROPIC && HasGrfMiscBit(GMB_DESERT_PAVED_ROADS) &&
|
!(_settings_game.game_creation.landscape == LT_TROPIC && HasGrfMiscBit(GMB_DESERT_PAVED_ROADS) &&
|
||||||
roadside != ROADSIDE_BARREN && roadside != ROADSIDE_GRASS && roadside != ROADSIDE_GRASS_ROAD_WORKS));
|
roadside != ROADSIDE_BARREN && roadside != ROADSIDE_GRASS && roadside != ROADSIDE_GRASS_ROAD_WORKS));
|
||||||
}
|
}
|
||||||
@ -1556,13 +1556,14 @@ void DrawRoadOverlays(const TileInfo *ti, PaletteID pal, const RoadTypeInfo *roa
|
|||||||
* @param roadside Road side type
|
* @param roadside Road side type
|
||||||
* @param rti Road type info
|
* @param rti Road type info
|
||||||
* @param offset Road sprite offset
|
* @param offset Road sprite offset
|
||||||
|
* @param snow_or_desert Whether to get snow/desert ground sprite
|
||||||
* @param[out] pal Palette to draw.
|
* @param[out] pal Palette to draw.
|
||||||
*/
|
*/
|
||||||
static SpriteID GetRoadGroundSprite(const TileInfo *ti, Roadside roadside, const RoadTypeInfo *rti, uint offset, PaletteID *pal)
|
static SpriteID GetRoadGroundSprite(const TileInfo *ti, Roadside roadside, const RoadTypeInfo *rti, uint offset, bool snow_or_desert, PaletteID *pal)
|
||||||
{
|
{
|
||||||
/* Draw bare ground sprite if no road or road uses overlay system. */
|
/* Draw bare ground sprite if no road or road uses overlay system. */
|
||||||
if (rti == nullptr || rti->UsesOverlay()) {
|
if (rti == nullptr || rti->UsesOverlay()) {
|
||||||
if (DrawRoadAsSnowDesert(ti->tile, roadside)) {
|
if (DrawRoadAsSnowDesert(snow_or_desert, roadside)) {
|
||||||
return SPR_FLAT_SNOW_DESERT_TILE + SlopeToSpriteOffset(ti->tileh);
|
return SPR_FLAT_SNOW_DESERT_TILE + SlopeToSpriteOffset(ti->tileh);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1577,7 +1578,7 @@ static SpriteID GetRoadGroundSprite(const TileInfo *ti, Roadside roadside, const
|
|||||||
|
|
||||||
/* Draw original road base sprite */
|
/* Draw original road base sprite */
|
||||||
SpriteID image = SPR_ROAD_Y + offset;
|
SpriteID image = SPR_ROAD_Y + offset;
|
||||||
if (DrawRoadAsSnowDesert(ti->tile, roadside)) {
|
if (DrawRoadAsSnowDesert(snow_or_desert, roadside)) {
|
||||||
image += 19;
|
image += 19;
|
||||||
} else {
|
} else {
|
||||||
switch (roadside) {
|
switch (roadside) {
|
||||||
@ -1591,6 +1592,30 @@ static SpriteID GetRoadGroundSprite(const TileInfo *ti, Roadside roadside, const
|
|||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Draw road ground sprites.
|
||||||
|
* @param ti TileInfo
|
||||||
|
* @param road Road bits
|
||||||
|
* @param tram Tram bits
|
||||||
|
* @param road_rti Road road type information
|
||||||
|
* @param tram_rti Tram road type information
|
||||||
|
* @param roadside Roadside type
|
||||||
|
* @param snow_or_desert Whether to draw snow/desert ground sprites
|
||||||
|
*/
|
||||||
|
void DrawRoadGroundSprites(const TileInfo *ti, RoadBits road, RoadBits tram, const RoadTypeInfo *road_rti, const RoadTypeInfo *tram_rti, Roadside roadside, bool snow_or_desert)
|
||||||
|
{
|
||||||
|
/* Determine sprite offsets */
|
||||||
|
uint road_offset = GetRoadSpriteOffset(ti->tileh, road);
|
||||||
|
uint tram_offset = GetRoadSpriteOffset(ti->tileh, tram);
|
||||||
|
|
||||||
|
/* Draw baseset underlay */
|
||||||
|
PaletteID pal = PAL_NONE;
|
||||||
|
SpriteID image = GetRoadGroundSprite(ti, roadside, road_rti, road == ROAD_NONE ? tram_offset : road_offset, snow_or_desert, &pal);
|
||||||
|
DrawGroundSprite(image, pal);
|
||||||
|
|
||||||
|
DrawRoadOverlays(ti, pal, road_rti, tram_rti, road_offset, tram_offset);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Draw ground sprite and road pieces
|
* Draw ground sprite and road pieces
|
||||||
* @param ti TileInfo
|
* @param ti TileInfo
|
||||||
@ -1610,18 +1635,7 @@ static void DrawRoadBits(TileInfo *ti)
|
|||||||
/* DrawFoundation() modifies ti. */
|
/* DrawFoundation() modifies ti. */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Determine sprite offsets */
|
DrawRoadGroundSprites(ti, road, tram, road_rti, tram_rti, GetRoadside(ti->tile), IsOnSnow(ti->tile));
|
||||||
uint road_offset = GetRoadSpriteOffset(ti->tileh, road);
|
|
||||||
uint tram_offset = GetRoadSpriteOffset(ti->tileh, tram);
|
|
||||||
|
|
||||||
/* Draw baseset underlay */
|
|
||||||
Roadside roadside = GetRoadside(ti->tile);
|
|
||||||
|
|
||||||
PaletteID pal = PAL_NONE;
|
|
||||||
SpriteID image = GetRoadGroundSprite(ti, roadside, road_rti, road == ROAD_NONE ? tram_offset : road_offset, &pal);
|
|
||||||
DrawGroundSprite(image, pal);
|
|
||||||
|
|
||||||
DrawRoadOverlays(ti, pal, road_rti, tram_rti, road_offset, tram_offset);
|
|
||||||
|
|
||||||
/* Draw one way */
|
/* Draw one way */
|
||||||
if (road_rti != nullptr) {
|
if (road_rti != nullptr) {
|
||||||
@ -1654,6 +1668,7 @@ static void DrawRoadBits(TileInfo *ti)
|
|||||||
if (!HasBit(_display_opt, DO_FULL_DETAIL) || _cur_dpi->zoom > ZOOM_LVL_DETAIL) return;
|
if (!HasBit(_display_opt, DO_FULL_DETAIL) || _cur_dpi->zoom > ZOOM_LVL_DETAIL) return;
|
||||||
|
|
||||||
/* Do not draw details (street lights, trees) under low bridge */
|
/* Do not draw details (street lights, trees) under low bridge */
|
||||||
|
Roadside roadside = GetRoadside(ti->tile);
|
||||||
if (IsBridgeAbove(ti->tile) && (roadside == ROADSIDE_TREES || roadside == ROADSIDE_STREET_LIGHTS)) {
|
if (IsBridgeAbove(ti->tile) && (roadside == ROADSIDE_TREES || roadside == ROADSIDE_STREET_LIGHTS)) {
|
||||||
int height = GetBridgeHeight(GetNorthernBridgeEnd(ti->tile));
|
int height = GetBridgeHeight(GetNorthernBridgeEnd(ti->tile));
|
||||||
int minz = GetTileMaxZ(ti->tile) + 2;
|
int minz = GetTileMaxZ(ti->tile) + 2;
|
||||||
@ -1712,7 +1727,7 @@ static void DrawTile_Road(TileInfo *ti)
|
|||||||
SpriteID image = SPR_ROAD_Y + axis;
|
SpriteID image = SPR_ROAD_Y + axis;
|
||||||
|
|
||||||
Roadside roadside = GetRoadside(ti->tile);
|
Roadside roadside = GetRoadside(ti->tile);
|
||||||
if (DrawRoadAsSnowDesert(ti->tile, roadside)) {
|
if (DrawRoadAsSnowDesert(IsOnSnow(ti->tile), roadside)) {
|
||||||
image += 19;
|
image += 19;
|
||||||
} else {
|
} else {
|
||||||
switch (roadside) {
|
switch (roadside) {
|
||||||
@ -1728,7 +1743,7 @@ static void DrawTile_Road(TileInfo *ti)
|
|||||||
if (IsCrossingBarred(ti->tile)) image += 2;
|
if (IsCrossingBarred(ti->tile)) image += 2;
|
||||||
|
|
||||||
Roadside roadside = GetRoadside(ti->tile);
|
Roadside roadside = GetRoadside(ti->tile);
|
||||||
if (DrawRoadAsSnowDesert(ti->tile, roadside)) {
|
if (DrawRoadAsSnowDesert(IsOnSnow(ti->tile), roadside)) {
|
||||||
image += 8;
|
image += 8;
|
||||||
} else {
|
} else {
|
||||||
switch (roadside) {
|
switch (roadside) {
|
||||||
|
@ -159,6 +159,8 @@ void UpdateAdjacentLevelCrossingTilesOnLevelCrossingRemoval(TileIndex tile, Axis
|
|||||||
void UpdateCompanyRoadInfrastructure(RoadType rt, Owner o, int count);
|
void UpdateCompanyRoadInfrastructure(RoadType rt, Owner o, int count);
|
||||||
|
|
||||||
struct TileInfo;
|
struct TileInfo;
|
||||||
|
enum Roadside : uint8_t;
|
||||||
void DrawRoadOverlays(const TileInfo *ti, PaletteID pal, const RoadTypeInfo *road_rti, const RoadTypeInfo *tram_rit, uint road_offset, uint tram_offset, bool draw_underlay = true);
|
void DrawRoadOverlays(const TileInfo *ti, PaletteID pal, const RoadTypeInfo *road_rti, const RoadTypeInfo *tram_rit, uint road_offset, uint tram_offset, bool draw_underlay = true);
|
||||||
|
void DrawRoadGroundSprites(const TileInfo *ti, RoadBits road, RoadBits tram, const RoadTypeInfo *road_rti, const RoadTypeInfo *tram_rti, Roadside roadside, bool snow_or_desert);
|
||||||
|
|
||||||
#endif /* ROAD_FUNC_H */
|
#endif /* ROAD_FUNC_H */
|
||||||
|
@ -474,7 +474,7 @@ inline void ToggleSnow(Tile t)
|
|||||||
|
|
||||||
|
|
||||||
/** The possible road side decorations. */
|
/** The possible road side decorations. */
|
||||||
enum Roadside {
|
enum Roadside : uint8_t {
|
||||||
ROADSIDE_BARREN = 0, ///< Road on barren land
|
ROADSIDE_BARREN = 0, ///< Road on barren land
|
||||||
ROADSIDE_GRASS = 1, ///< Road on grass
|
ROADSIDE_GRASS = 1, ///< Road on grass
|
||||||
ROADSIDE_PAVED = 2, ///< Road with paved sidewalks
|
ROADSIDE_PAVED = 2, ///< Road with paved sidewalks
|
||||||
|
@ -66,6 +66,7 @@
|
|||||||
#include "timer/timer_game_economy.h"
|
#include "timer/timer_game_economy.h"
|
||||||
#include "timer/timer_game_tick.h"
|
#include "timer/timer_game_tick.h"
|
||||||
#include "cheat_type.h"
|
#include "cheat_type.h"
|
||||||
|
#include "road_func.h"
|
||||||
|
|
||||||
#include "widgets/station_widget.h"
|
#include "widgets/station_widget.h"
|
||||||
|
|
||||||
@ -3254,6 +3255,20 @@ draw_default_foundation:
|
|||||||
DrawClearLandTile(ti, 3);
|
DrawClearLandTile(ti, 3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (IsRoadWaypointTile(ti->tile)) {
|
||||||
|
RoadBits bits = GetRoadStopDir(ti->tile) == DIAGDIR_NE ? ROAD_X : ROAD_Y;
|
||||||
|
RoadType road_rt = GetRoadTypeRoad(ti->tile);
|
||||||
|
RoadType tram_rt = GetRoadTypeTram(ti->tile);
|
||||||
|
RoadBits road = (road_rt != INVALID_ROADTYPE) ? bits : ROAD_NONE;
|
||||||
|
RoadBits tram = (tram_rt != INVALID_ROADTYPE) ? bits : ROAD_NONE;
|
||||||
|
const RoadTypeInfo *road_rti = (road_rt != INVALID_ROADTYPE) ? GetRoadTypeInfo(road_rt) : nullptr;
|
||||||
|
const RoadTypeInfo *tram_rti = (tram_rt != INVALID_ROADTYPE) ? GetRoadTypeInfo(tram_rt) : nullptr;
|
||||||
|
|
||||||
|
if (ti->tileh != SLOPE_FLAT) {
|
||||||
|
DrawFoundation(ti, FOUNDATION_LEVELED);
|
||||||
|
}
|
||||||
|
|
||||||
|
DrawRoadGroundSprites(ti, road, tram, road_rti, tram_rti, GetRoadWaypointRoadside(ti->tile), IsRoadWaypointOnSnowOrDesert(ti->tile));
|
||||||
} else {
|
} else {
|
||||||
if (layout != nullptr) {
|
if (layout != nullptr) {
|
||||||
/* Sprite layout which needs preprocessing */
|
/* Sprite layout which needs preprocessing */
|
||||||
@ -3601,6 +3616,42 @@ static void TileLoop_Station(TileIndex tile)
|
|||||||
TileLoop_Water(tile);
|
TileLoop_Water(tile);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case STATION_ROADWAYPOINT: {
|
||||||
|
switch (_settings_game.game_creation.landscape) {
|
||||||
|
case LT_ARCTIC:
|
||||||
|
if (IsRoadWaypointOnSnowOrDesert(tile) != (GetTileZ(tile) > GetSnowLine())) {
|
||||||
|
ToggleRoadWaypointOnSnowOrDesert(tile);
|
||||||
|
MarkTileDirtyByTile(tile);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LT_TROPIC:
|
||||||
|
if (GetTropicZone(tile) == TROPICZONE_DESERT && !IsRoadWaypointOnSnowOrDesert(tile)) {
|
||||||
|
ToggleRoadWaypointOnSnowOrDesert(tile);
|
||||||
|
MarkTileDirtyByTile(tile);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
|
||||||
|
HouseZonesBits new_zone = HZB_TOWN_EDGE;
|
||||||
|
const Town *t = ClosestTownFromTile(tile, UINT_MAX);
|
||||||
|
if (t != nullptr) {
|
||||||
|
new_zone = GetTownRadiusGroup(t, tile);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Adjust road ground type depending on 'new_zone' */
|
||||||
|
Roadside new_rs = new_zone > HZB_TOWN_EDGE ? ROADSIDE_PAVED : ROADSIDE_GRASS;
|
||||||
|
Roadside cur_rs = GetRoadWaypointRoadside(tile);
|
||||||
|
|
||||||
|
if (new_rs != cur_rs) {
|
||||||
|
SetRoadWaypointRoadside(tile, cur_rs == ROADSIDE_BARREN ? new_rs : ROADSIDE_BARREN);
|
||||||
|
MarkTileDirtyByTile(tile);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -280,6 +280,49 @@ inline bool IsDriveThroughStopTile(Tile t)
|
|||||||
|
|
||||||
StationGfx GetTranslatedAirportTileID(StationGfx gfx);
|
StationGfx GetTranslatedAirportTileID(StationGfx gfx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the decorations of a road waypoint.
|
||||||
|
* @param tile The tile to query.
|
||||||
|
* @return The road decoration of the tile.
|
||||||
|
*/
|
||||||
|
static inline Roadside GetRoadWaypointRoadside(Tile tile)
|
||||||
|
{
|
||||||
|
assert(IsRoadWaypointTile(tile));
|
||||||
|
return (Roadside)GB(tile.m3(), 2, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the decorations of a road waypoint.
|
||||||
|
* @param tile The tile to change.
|
||||||
|
* @param s The new road decoration of the tile.
|
||||||
|
*/
|
||||||
|
static inline void SetRoadWaypointRoadside(Tile tile, Roadside s)
|
||||||
|
{
|
||||||
|
assert(IsRoadWaypointTile(tile));
|
||||||
|
SB(tile.m3(), 2, 2, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if a road waypoint tile has snow/desert.
|
||||||
|
* @param t The tile to query.
|
||||||
|
* @return True if the tile has snow/desert.
|
||||||
|
*/
|
||||||
|
static inline bool IsRoadWaypointOnSnowOrDesert(Tile t)
|
||||||
|
{
|
||||||
|
assert(IsRoadWaypointTile(t));
|
||||||
|
return HasBit(t.m8(), 15);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Toggle the snow/desert state of a road waypoint tile.
|
||||||
|
* @param t The tile to change.
|
||||||
|
*/
|
||||||
|
static inline void ToggleRoadWaypointOnSnowOrDesert(Tile t)
|
||||||
|
{
|
||||||
|
assert(IsRoadWaypointTile(t));
|
||||||
|
ToggleBit(t.m8(), 15);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the station graphics of this airport tile
|
* Get the station graphics of this airport tile
|
||||||
* @param t the tile to query
|
* @param t the tile to query
|
||||||
|
Loading…
Reference in New Issue
Block a user