annotate src/road_map.h @ 8529:6a75c42267d1 draft

(svn r12104) -Fix (r12103): remember loading indicators transparency settings and make in switchable by Ctrl+9
author smatz <smatz@openttd.org>
date Sun, 10 Feb 2008 18:31:33 +0000
parents 6312fafcfe47
children 992fa65afba1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
1 /* $Id$ */
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
2
6393
ffd35446c110 (svn r9523) -Cleanup: doxygen changes. Time to take care of "R"
belugas <belugas@openttd.org>
parents: 6390
diff changeset
3 /** @file road_map.h */
ffd35446c110 (svn r9523) -Cleanup: doxygen changes. Time to take care of "R"
belugas <belugas@openttd.org>
parents: 6390
diff changeset
4
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
5 #ifndef ROAD_MAP_H
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
6 #define ROAD_MAP_H
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
7
8101
b222582555cb (svn r11662) -Codechange: move some rail types/related functions around.
rubidium <rubidium@openttd.org>
parents: 7932
diff changeset
8 #include "track_func.h"
b222582555cb (svn r11662) -Codechange: move some rail types/related functions around.
rubidium <rubidium@openttd.org>
parents: 7932
diff changeset
9 #include "rail_type.h"
8213
87c85bb42d6f (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium <rubidium@openttd.org>
parents: 8113
diff changeset
10 #include "town_type.h"
8102
afb4c7da91df (svn r11663) -Codechange: moving of the road related types and functions.
rubidium <rubidium@openttd.org>
parents: 8101
diff changeset
11 #include "road_func.h"
8108
4faab45e2603 (svn r11669) -Codechange: refactor tile.h -> tile_type.h and tile_map.h
rubidium <rubidium@openttd.org>
parents: 8102
diff changeset
12 #include "tile_map.h"
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
13
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
14
6248
0789677a15a0 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium <rubidium@openttd.org>
parents: 6172
diff changeset
15 enum RoadTileType {
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
16 ROAD_TILE_NORMAL,
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
17 ROAD_TILE_CROSSING,
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
18 ROAD_TILE_DEPOT
6248
0789677a15a0 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium <rubidium@openttd.org>
parents: 6172
diff changeset
19 };
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
20
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
21 static inline RoadTileType GetRoadTileType(TileIndex t)
8529
6a75c42267d1 (svn r12104) -Fix (r12103): remember loading indicators transparency settings and make in switchable by Ctrl+9
smatz <smatz@openttd.org>
parents: 8344
diff changeset
22 {
7370
fba35a9abf79 (svn r10733) -Codechange: change MP_STREET into MP_ROAD as we use the word "road" everywhere except in the tile type.
rubidium <rubidium@openttd.org>
parents: 6778
diff changeset
23 assert(IsTileType(t, MP_ROAD));
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
24 return (RoadTileType)GB(_m[t].m5, 6, 2);
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
25 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
26
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
27 static inline bool IsLevelCrossing(TileIndex t)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
28 {
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
29 return GetRoadTileType(t) == ROAD_TILE_CROSSING;
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
30 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
31
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
32 static inline bool IsLevelCrossingTile(TileIndex t)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
33 {
7370
fba35a9abf79 (svn r10733) -Codechange: change MP_STREET into MP_ROAD as we use the word "road" everywhere except in the tile type.
rubidium <rubidium@openttd.org>
parents: 6778
diff changeset
34 return IsTileType(t, MP_ROAD) && IsLevelCrossing(t);
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
35 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
36
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
37 static inline RoadBits GetRoadBits(TileIndex t, RoadType rt)
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
38 {
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
39 assert(GetRoadTileType(t) == ROAD_TILE_NORMAL);
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
40 switch (rt) {
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
41 default: NOT_REACHED();
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
42 case ROADTYPE_ROAD: return (RoadBits)GB(_m[t].m4, 0, 4);
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
43 case ROADTYPE_TRAM: return (RoadBits)GB(_m[t].m4, 4, 4);
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
44 case ROADTYPE_HWAY: return (RoadBits)GB(_m[t].m6, 2, 4);
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
45 }
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
46 }
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
47
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
48 static inline RoadBits GetAllRoadBits(TileIndex tile)
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
49 {
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
50 return GetRoadBits(tile, ROADTYPE_ROAD) | GetRoadBits(tile, ROADTYPE_TRAM) | GetRoadBits(tile, ROADTYPE_HWAY);
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
51 }
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
52
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
53 static inline void SetRoadBits(TileIndex t, RoadBits r, RoadType rt)
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
54 {
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
55 assert(GetRoadTileType(t) == ROAD_TILE_NORMAL); // XXX incomplete
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
56 switch (rt) {
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
57 default: NOT_REACHED();
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
58 case ROADTYPE_ROAD: SB(_m[t].m4, 0, 4, r); break;
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
59 case ROADTYPE_TRAM: SB(_m[t].m4, 4, 4, r); break;
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
60 case ROADTYPE_HWAY: SB(_m[t].m6, 2, 4, r); break;
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
61 }
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
62 }
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
63
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
64 static inline RoadTypes GetRoadTypes(TileIndex t)
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
65 {
7370
fba35a9abf79 (svn r10733) -Codechange: change MP_STREET into MP_ROAD as we use the word "road" everywhere except in the tile type.
rubidium <rubidium@openttd.org>
parents: 6778
diff changeset
66 if (IsTileType(t, MP_ROAD)) {
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
67 return (RoadTypes)GB(_me[t].m7, 5, 3);
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
68 } else {
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
69 return (RoadTypes)GB(_m[t].m3, 0, 3);
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
70 }
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
71 }
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
72
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
73 static inline void SetRoadTypes(TileIndex t, RoadTypes rt)
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
74 {
7370
fba35a9abf79 (svn r10733) -Codechange: change MP_STREET into MP_ROAD as we use the word "road" everywhere except in the tile type.
rubidium <rubidium@openttd.org>
parents: 6778
diff changeset
75 if (IsTileType(t, MP_ROAD)) {
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
76 SB(_me[t].m7, 5, 3, rt);
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
77 } else {
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
78 assert(IsTileType(t, MP_STATION) || IsTileType(t, MP_TUNNELBRIDGE));
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
79 SB(_m[t].m3, 0, 2, rt);
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
80 }
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
81 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
82
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
83 static inline Owner GetRoadOwner(TileIndex t, RoadType rt)
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
84 {
7370
fba35a9abf79 (svn r10733) -Codechange: change MP_STREET into MP_ROAD as we use the word "road" everywhere except in the tile type.
rubidium <rubidium@openttd.org>
parents: 6778
diff changeset
85 if (!IsTileType(t, MP_ROAD)) return GetTileOwner(t);
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
86
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
87 switch (GetRoadTileType(t)) {
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
88 default: NOT_REACHED();
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
89 case ROAD_TILE_NORMAL:
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
90 switch (rt) {
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
91 default: NOT_REACHED();
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
92 case ROADTYPE_ROAD: return (Owner)GB( _m[t].m1, 0, 5);
6764
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
93 case ROADTYPE_TRAM: {
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
94 /* Trams don't need OWNER_TOWN, and remapping OWNER_NONE
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
95 * to OWNER_TOWN makes it use one bit less */
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
96 Owner o = (Owner)GB( _m[t].m5, 0, 4);
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
97 return o == OWNER_TOWN ? OWNER_NONE : o;
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
98 }
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
99 case ROADTYPE_HWAY: return (Owner)GB(_me[t].m7, 0, 5);
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
100 }
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
101 case ROAD_TILE_CROSSING:
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
102 switch (rt) {
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
103 default: NOT_REACHED();
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
104 case ROADTYPE_ROAD: return (Owner)GB( _m[t].m4, 0, 5);
6764
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
105 case ROADTYPE_TRAM: {
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
106 /* Trams don't need OWNER_TOWN, and remapping OWNER_NONE
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
107 * to OWNER_TOWN makes it use one bit less */
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
108 Owner o = (Owner)GB( _m[t].m5, 0, 4);
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
109 return o == OWNER_TOWN ? OWNER_NONE : o;
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
110 }
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
111 case ROADTYPE_HWAY: return (Owner)GB(_me[t].m7, 0, 5);
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
112 }
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
113 case ROAD_TILE_DEPOT: return GetTileOwner(t);
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
114 }
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
115 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
116
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
117 static inline void SetRoadOwner(TileIndex t, RoadType rt, Owner o)
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
118 {
7370
fba35a9abf79 (svn r10733) -Codechange: change MP_STREET into MP_ROAD as we use the word "road" everywhere except in the tile type.
rubidium <rubidium@openttd.org>
parents: 6778
diff changeset
119 if (!IsTileType(t, MP_ROAD)) return SetTileOwner(t, o);
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
120
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
121 switch (GetRoadTileType(t)) {
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
122 default: NOT_REACHED();
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
123 case ROAD_TILE_NORMAL:
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
124 switch (rt) {
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
125 default: NOT_REACHED();
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
126 case ROADTYPE_ROAD: SB( _m[t].m1, 0, 5, o); break;
6764
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
127 case ROADTYPE_TRAM: SB( _m[t].m5, 0, 4, o == OWNER_NONE ? OWNER_TOWN : o); break;
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
128 case ROADTYPE_HWAY: SB(_me[t].m7, 0, 5, o); break;
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
129 }
6662
baa28c8cfe84 (svn r9893) -Fix (r9892): various small bugs that only act up when using something different than plain roads.
rubidium <rubidium@openttd.org>
parents: 6661
diff changeset
130 break;
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
131 case ROAD_TILE_CROSSING:
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
132 switch (rt) {
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
133 default: NOT_REACHED();
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
134 case ROADTYPE_ROAD: SB( _m[t].m4, 0, 5, o); break;
6764
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
135 /* Trams don't need OWNER_TOWN, and remapping OWNER_NONE
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
136 * to OWNER_TOWN makes it use one bit less */
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
137 case ROADTYPE_TRAM: SB( _m[t].m5, 0, 4, o == OWNER_NONE ? OWNER_TOWN : o); break;
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
138 case ROADTYPE_HWAY: SB(_me[t].m7, 0, 5, o); break;
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
139 }
6662
baa28c8cfe84 (svn r9893) -Fix (r9892): various small bugs that only act up when using something different than plain roads.
rubidium <rubidium@openttd.org>
parents: 6661
diff changeset
140 break;
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
141 case ROAD_TILE_DEPOT: return SetTileOwner(t, o);
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
142 }
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
143 }
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
144
6764
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
145 /** Which directions are disallowed ? */
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
146 enum DisallowedRoadDirections {
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
147 DRD_NONE, ///< None of the directions are disallowed
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
148 DRD_SOUTHBOUND, ///< All southbound traffic is disallowed
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
149 DRD_NORTHBOUND, ///< All northbound traffic is disallowed
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
150 DRD_BOTH, ///< All directions are disallowed
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
151 DRD_END
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
152 };
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
153 DECLARE_ENUM_AS_BIT_SET(DisallowedRoadDirections);
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
154
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
155 /**
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
156 * Gets the disallowed directions
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
157 * @param t the tile to get the directions from
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
158 * @return the disallowed directions
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
159 */
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
160 static inline DisallowedRoadDirections GetDisallowedRoadDirections(TileIndex t)
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
161 {
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
162 assert(GetRoadTileType(t) == ROAD_TILE_NORMAL);
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
163 return (DisallowedRoadDirections)GB(_m[t].m5, 4, 2);
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
164 }
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
165
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
166 /**
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
167 * Sets the disallowed directions
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
168 * @param t the tile to set the directions for
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
169 * @param drd the disallowed directions
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
170 */
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
171 static inline void SetDisallowedRoadDirections(TileIndex t, DisallowedRoadDirections drd)
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
172 {
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
173 assert(GetRoadTileType(t) == ROAD_TILE_NORMAL);
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
174 assert(drd < DRD_END);
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
175 SB(_m[t].m5, 4, 2, drd);
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
176 }
6ce333c8fd7e (svn r9999) -Feature: make it possible to disallow busses and lorries to go a specific way on straight pieces of road.
rubidium <rubidium@openttd.org>
parents: 6662
diff changeset
177
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
178 static inline Axis GetCrossingRoadAxis(TileIndex t)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
179 {
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
180 assert(GetRoadTileType(t) == ROAD_TILE_CROSSING);
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
181 return (Axis)GB(_m[t].m4, 6, 1);
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
182 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
183
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
184 static inline RoadBits GetCrossingRoadBits(TileIndex tile)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
185 {
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
186 return GetCrossingRoadAxis(tile) == AXIS_X ? ROAD_X : ROAD_Y;
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
187 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
188
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
189 static inline TrackBits GetCrossingRailBits(TileIndex tile)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
190 {
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
191 return AxisToTrackBits(OtherAxis(GetCrossingRoadAxis(tile)));
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
192 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
193
8344
6312fafcfe47 (svn r11910) -Fix: play 'ding-ding' crossing sound in more cases (except gameload and crossing construction)
smatz <smatz@openttd.org>
parents: 8213
diff changeset
194 static inline bool IsCrossingBarred(TileIndex t)
6312fafcfe47 (svn r11910) -Fix: play 'ding-ding' crossing sound in more cases (except gameload and crossing construction)
smatz <smatz@openttd.org>
parents: 8213
diff changeset
195 {
6312fafcfe47 (svn r11910) -Fix: play 'ding-ding' crossing sound in more cases (except gameload and crossing construction)
smatz <smatz@openttd.org>
parents: 8213
diff changeset
196 assert(GetRoadTileType(t) == ROAD_TILE_CROSSING);
6312fafcfe47 (svn r11910) -Fix: play 'ding-ding' crossing sound in more cases (except gameload and crossing construction)
smatz <smatz@openttd.org>
parents: 8213
diff changeset
197 return HasBit(_m[t].m4, 5);
6312fafcfe47 (svn r11910) -Fix: play 'ding-ding' crossing sound in more cases (except gameload and crossing construction)
smatz <smatz@openttd.org>
parents: 8213
diff changeset
198 }
6312fafcfe47 (svn r11910) -Fix: play 'ding-ding' crossing sound in more cases (except gameload and crossing construction)
smatz <smatz@openttd.org>
parents: 8213
diff changeset
199
6312fafcfe47 (svn r11910) -Fix: play 'ding-ding' crossing sound in more cases (except gameload and crossing construction)
smatz <smatz@openttd.org>
parents: 8213
diff changeset
200 static inline void SetCrossingBarred(TileIndex t, bool barred)
6312fafcfe47 (svn r11910) -Fix: play 'ding-ding' crossing sound in more cases (except gameload and crossing construction)
smatz <smatz@openttd.org>
parents: 8213
diff changeset
201 {
6312fafcfe47 (svn r11910) -Fix: play 'ding-ding' crossing sound in more cases (except gameload and crossing construction)
smatz <smatz@openttd.org>
parents: 8213
diff changeset
202 assert(GetRoadTileType(t) == ROAD_TILE_CROSSING);
6312fafcfe47 (svn r11910) -Fix: play 'ding-ding' crossing sound in more cases (except gameload and crossing construction)
smatz <smatz@openttd.org>
parents: 8213
diff changeset
203 SB(_m[t].m4, 5, 1, barred);
6312fafcfe47 (svn r11910) -Fix: play 'ding-ding' crossing sound in more cases (except gameload and crossing construction)
smatz <smatz@openttd.org>
parents: 8213
diff changeset
204 }
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
205
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
206 static inline void UnbarCrossing(TileIndex t)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
207 {
8344
6312fafcfe47 (svn r11910) -Fix: play 'ding-ding' crossing sound in more cases (except gameload and crossing construction)
smatz <smatz@openttd.org>
parents: 8213
diff changeset
208 SetCrossingBarred(t, false);
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
209 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
210
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
211 static inline void BarCrossing(TileIndex t)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
212 {
8344
6312fafcfe47 (svn r11910) -Fix: play 'ding-ding' crossing sound in more cases (except gameload and crossing construction)
smatz <smatz@openttd.org>
parents: 8213
diff changeset
213 SetCrossingBarred(t, true);
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
214 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
215
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
216 #define IsOnDesert IsOnSnow
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
217 static inline bool IsOnSnow(TileIndex t)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
218 {
7928
4e8dfd103163 (svn r11481) -Codechange: Rename the HASBIT function to fit with the naming style
skidd13 <skidd13@openttd.org>
parents: 7370
diff changeset
219 return HasBit(_m[t].m3, 7);
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
220 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
221
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
222 #define ToggleDesert ToggleSnow
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
223 static inline void ToggleSnow(TileIndex t)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
224 {
7932
712f252f0d4d (svn r11485) -Codechange: Remove the doubled function ToggleBitT and rename the remaining to fit with the naming style
skidd13 <skidd13@openttd.org>
parents: 7931
diff changeset
225 ToggleBit(_m[t].m3, 7);
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
226 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
227
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
228
6248
0789677a15a0 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium <rubidium@openttd.org>
parents: 6172
diff changeset
229 enum Roadside {
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
230 ROADSIDE_BARREN = 0,
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
231 ROADSIDE_GRASS = 1,
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
232 ROADSIDE_PAVED = 2,
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
233 ROADSIDE_STREET_LIGHTS = 3,
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
234 ROADSIDE_TREES = 5,
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
235 ROADSIDE_GRASS_ROAD_WORKS = 6,
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
236 ROADSIDE_PAVED_ROAD_WORKS = 7
6248
0789677a15a0 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium <rubidium@openttd.org>
parents: 6172
diff changeset
237 };
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
238
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
239 static inline Roadside GetRoadside(TileIndex tile)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
240 {
6172
b3b8cbc5e854 (svn r8935) -Codechange: unification of track type between road and rail tiles, unification of ground type between normal rail tiles and depots/waypoints and removing the need for RailTileSubType.
rubidium <rubidium@openttd.org>
parents: 5475
diff changeset
241 return (Roadside)GB(_m[tile].m3, 4, 3);
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
242 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
243
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
244 static inline void SetRoadside(TileIndex tile, Roadside s)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
245 {
6172
b3b8cbc5e854 (svn r8935) -Codechange: unification of track type between road and rail tiles, unification of ground type between normal rail tiles and depots/waypoints and removing the need for RailTileSubType.
rubidium <rubidium@openttd.org>
parents: 5475
diff changeset
246 SB(_m[tile].m3, 4, 3, s);
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
247 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
248
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
249 static inline bool HasRoadWorks(TileIndex t)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
250 {
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
251 return GetRoadside(t) >= ROADSIDE_GRASS_ROAD_WORKS;
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
252 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
253
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
254 static inline bool IncreaseRoadWorksCounter(TileIndex t)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
255 {
6172
b3b8cbc5e854 (svn r8935) -Codechange: unification of track type between road and rail tiles, unification of ground type between normal rail tiles and depots/waypoints and removing the need for RailTileSubType.
rubidium <rubidium@openttd.org>
parents: 5475
diff changeset
256 AB(_m[t].m3, 0, 4, 1);
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
257
6172
b3b8cbc5e854 (svn r8935) -Codechange: unification of track type between road and rail tiles, unification of ground type between normal rail tiles and depots/waypoints and removing the need for RailTileSubType.
rubidium <rubidium@openttd.org>
parents: 5475
diff changeset
258 return GB(_m[t].m3, 0, 4) == 15;
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
259 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
260
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
261 static inline void StartRoadWorks(TileIndex t)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
262 {
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
263 assert(!HasRoadWorks(t));
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
264 /* Remove any trees or lamps in case or roadwork */
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
265 switch (GetRoadside(t)) {
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
266 case ROADSIDE_BARREN:
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
267 case ROADSIDE_GRASS: SetRoadside(t, ROADSIDE_GRASS_ROAD_WORKS); break;
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
268 default: SetRoadside(t, ROADSIDE_PAVED_ROAD_WORKS); break;
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
269 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
270 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
271
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
272 static inline void TerminateRoadWorks(TileIndex t)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
273 {
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
274 assert(HasRoadWorks(t));
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
275 SetRoadside(t, (Roadside)(GetRoadside(t) - ROADSIDE_GRASS_ROAD_WORKS + ROADSIDE_GRASS));
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
276 /* Stop the counter */
6172
b3b8cbc5e854 (svn r8935) -Codechange: unification of track type between road and rail tiles, unification of ground type between normal rail tiles and depots/waypoints and removing the need for RailTileSubType.
rubidium <rubidium@openttd.org>
parents: 5475
diff changeset
277 SB(_m[t].m3, 0, 4, 0);
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
278 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
279
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
280
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
281 static inline DiagDirection GetRoadDepotDirection(TileIndex t)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
282 {
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
283 assert(GetRoadTileType(t) == ROAD_TILE_DEPOT);
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
284 return (DiagDirection)GB(_m[t].m5, 0, 2);
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
285 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
286
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
287
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
288 /**
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
289 * Returns the RoadBits on an arbitrary tile
6390
a6b14274ee2e (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas <belugas@openttd.org>
parents: 6248
diff changeset
290 * Special behaviour:
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
291 * - road depots: entrance is treated as road piece
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
292 * - road tunnels: entrance is treated as road piece
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
293 * - bridge ramps: start of the ramp is treated as road piece
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
294 * - bridge middle parts: bridge itself is ignored
6418
c8862595d06b (svn r9554) -Documentation: add documentation to some map accessors.
rubidium <rubidium@openttd.org>
parents: 6393
diff changeset
295 * @param tile the tile to get the road bits for
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
296 * @param rt the road type to get the road bits form
6418
c8862595d06b (svn r9554) -Documentation: add documentation to some map accessors.
rubidium <rubidium@openttd.org>
parents: 6393
diff changeset
297 * @return the road bits of the given tile
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
298 */
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
299 RoadBits GetAnyRoadBits(TileIndex tile, RoadType rt);
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
300
6418
c8862595d06b (svn r9554) -Documentation: add documentation to some map accessors.
rubidium <rubidium@openttd.org>
parents: 6393
diff changeset
301 /**
c8862595d06b (svn r9554) -Documentation: add documentation to some map accessors.
rubidium <rubidium@openttd.org>
parents: 6393
diff changeset
302 * Get the accessible track bits for the given tile.
c8862595d06b (svn r9554) -Documentation: add documentation to some map accessors.
rubidium <rubidium@openttd.org>
parents: 6393
diff changeset
303 * Special behaviour:
c8862595d06b (svn r9554) -Documentation: add documentation to some map accessors.
rubidium <rubidium@openttd.org>
parents: 6393
diff changeset
304 * - road depots: no track bits
c8862595d06b (svn r9554) -Documentation: add documentation to some map accessors.
rubidium <rubidium@openttd.org>
parents: 6393
diff changeset
305 * - non-drive-through stations: no track bits
c8862595d06b (svn r9554) -Documentation: add documentation to some map accessors.
rubidium <rubidium@openttd.org>
parents: 6393
diff changeset
306 * @param tile the tile to get the track bits for
c8862595d06b (svn r9554) -Documentation: add documentation to some map accessors.
rubidium <rubidium@openttd.org>
parents: 6393
diff changeset
307 * @return the track bits for the given tile
c8862595d06b (svn r9554) -Documentation: add documentation to some map accessors.
rubidium <rubidium@openttd.org>
parents: 6393
diff changeset
308 */
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
309 TrackBits GetAnyRoadTrackBits(TileIndex tile, RoadType rt);
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
310
8102
afb4c7da91df (svn r11663) -Codechange: moving of the road related types and functions.
rubidium <rubidium@openttd.org>
parents: 8101
diff changeset
311 /**
afb4c7da91df (svn r11663) -Codechange: moving of the road related types and functions.
rubidium <rubidium@openttd.org>
parents: 8101
diff changeset
312 * Return if the tile is a valid tile for a crossing.
afb4c7da91df (svn r11663) -Codechange: moving of the road related types and functions.
rubidium <rubidium@openttd.org>
parents: 8101
diff changeset
313 *
afb4c7da91df (svn r11663) -Codechange: moving of the road related types and functions.
rubidium <rubidium@openttd.org>
parents: 8101
diff changeset
314 * @note function is overloaded
afb4c7da91df (svn r11663) -Codechange: moving of the road related types and functions.
rubidium <rubidium@openttd.org>
parents: 8101
diff changeset
315 * @param tile the curent tile
afb4c7da91df (svn r11663) -Codechange: moving of the road related types and functions.
rubidium <rubidium@openttd.org>
parents: 8101
diff changeset
316 * @param ax the axis of the road over the rail
afb4c7da91df (svn r11663) -Codechange: moving of the road related types and functions.
rubidium <rubidium@openttd.org>
parents: 8101
diff changeset
317 * @return true if it is a valid tile
afb4c7da91df (svn r11663) -Codechange: moving of the road related types and functions.
rubidium <rubidium@openttd.org>
parents: 8101
diff changeset
318 */
afb4c7da91df (svn r11663) -Codechange: moving of the road related types and functions.
rubidium <rubidium@openttd.org>
parents: 8101
diff changeset
319 bool IsPossibleCrossing(const TileIndex tile, Axis ax);
afb4c7da91df (svn r11663) -Codechange: moving of the road related types and functions.
rubidium <rubidium@openttd.org>
parents: 8101
diff changeset
320
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
321
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
322 static inline void MakeRoadNormal(TileIndex t, RoadBits bits, RoadTypes rot, TownID town, Owner road, Owner tram, Owner hway)
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
323 {
7370
fba35a9abf79 (svn r10733) -Codechange: change MP_STREET into MP_ROAD as we use the word "road" everywhere except in the tile type.
rubidium <rubidium@openttd.org>
parents: 6778
diff changeset
324 SetTileType(t, MP_ROAD);
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
325 SetTileOwner(t, road);
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
326 _m[t].m2 = town;
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
327 _m[t].m3 = 0;
7928
4e8dfd103163 (svn r11481) -Codechange: Rename the HASBIT function to fit with the naming style
skidd13 <skidd13@openttd.org>
parents: 7370
diff changeset
328 _m[t].m4 = (HasBit(rot, ROADTYPE_TRAM) ? bits : 0) << 4 | (HasBit(rot, ROADTYPE_ROAD) ? bits : 0);
6778
3b713d300215 (svn r10014) -Fix: roads became automatically one way in the scenario editor.
rubidium <rubidium@openttd.org>
parents: 6764
diff changeset
329 _m[t].m5 = ROAD_TILE_NORMAL << 6;
3b713d300215 (svn r10014) -Fix: roads became automatically one way in the scenario editor.
rubidium <rubidium@openttd.org>
parents: 6764
diff changeset
330 SetRoadOwner(t, ROADTYPE_TRAM, tram);
7928
4e8dfd103163 (svn r11481) -Codechange: Rename the HASBIT function to fit with the naming style
skidd13 <skidd13@openttd.org>
parents: 7370
diff changeset
331 SB(_m[t].m6, 2, 4, HasBit(rot, ROADTYPE_HWAY) ? bits : 0);
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
332 _me[t].m7 = rot << 5 | hway;
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
333 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
334
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
335
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
336 static inline void MakeRoadCrossing(TileIndex t, Owner road, Owner tram, Owner hway, Owner rail, Axis roaddir, RailType rat, RoadTypes rot, uint town)
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
337 {
7370
fba35a9abf79 (svn r10733) -Codechange: change MP_STREET into MP_ROAD as we use the word "road" everywhere except in the tile type.
rubidium <rubidium@openttd.org>
parents: 6778
diff changeset
338 SetTileType(t, MP_ROAD);
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
339 SetTileOwner(t, rail);
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
340 _m[t].m2 = town;
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
341 _m[t].m3 = rat;
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
342 _m[t].m4 = roaddir << 6 | road;
6778
3b713d300215 (svn r10014) -Fix: roads became automatically one way in the scenario editor.
rubidium <rubidium@openttd.org>
parents: 6764
diff changeset
343 _m[t].m5 = ROAD_TILE_CROSSING << 6;
3b713d300215 (svn r10014) -Fix: roads became automatically one way in the scenario editor.
rubidium <rubidium@openttd.org>
parents: 6764
diff changeset
344 SetRoadOwner(t, ROADTYPE_TRAM, tram);
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
345 SB(_m[t].m6, 2, 4, 0);
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
346 _me[t].m7 = rot << 5 | hway;
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
347 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
348
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
349
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
350 static inline void MakeRoadDepot(TileIndex t, Owner owner, DiagDirection dir, RoadType rt)
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
351 {
7370
fba35a9abf79 (svn r10733) -Codechange: change MP_STREET into MP_ROAD as we use the word "road" everywhere except in the tile type.
rubidium <rubidium@openttd.org>
parents: 6778
diff changeset
352 SetTileType(t, MP_ROAD);
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
353 SetTileOwner(t, owner);
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
354 _m[t].m2 = 0;
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
355 _m[t].m3 = 0;
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
356 _m[t].m4 = 0;
6661
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
357 _m[t].m5 = ROAD_TILE_DEPOT << 6 | dir;
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
358 SB(_m[t].m6, 2, 4, 0);
5850ac8865e8 (svn r9892) -Codechange: lots of ground work for allowing multiple types of "road" with multiple owners on a single tile.
rubidium <rubidium@openttd.org>
parents: 6418
diff changeset
359 _me[t].m7 = RoadTypeToRoadTypes(rt) << 5;
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
360 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
361
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
362 #endif /* ROAD_MAP_H */