Skip to content

Commit dc0a347

Browse files
committed
Add #1421: Regression test for train wagon including callbacks 0x36, 0x15 and random_switch
1 parent 7ad934d commit dc0a347

File tree

5 files changed

+341
-0
lines changed

5 files changed

+341
-0
lines changed

regression/013_train_callback.nml

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
grf {
2+
grfid: "NML\13";
3+
name: string(STR_REGRESSION_NAME);
4+
desc: string(STR_REGRESSION_DESC);
5+
version: 0;
6+
}
7+
8+
/*
9+
* ********************************************
10+
* Define cargo and railtype translation tables
11+
* ********************************************
12+
*/
13+
14+
cargotable { // cargos needed for special refit orders
15+
WDPR, SCRP, CMNT, WOOD, // bulk, bulk+piece+flat, tank, piece
16+
LVST, STEL, VEHI, BRCK, // piece+flat, piece, piece, piece
17+
WOOL, BUBL, TOYS, FZDR, // flat, flat, flat, tank
18+
FRUT, FRVG, FOOD, // bulk, bulk, piece
19+
20+
// cargos only referenced
21+
OIL_, GOOD, WATR, MILK,
22+
COAL, IORE, AORE, CLAY,
23+
GRVL, SAND, GRAI, RSGR,
24+
MAIZ, CORE, FERT, CTCD,
25+
SULP, WHEA, RFPR, COLA,
26+
PETR, PAPR, TOFF, SUGR,
27+
PASS, MAIL, BATT, SWET,
28+
RUBR, FMSP, ENSP, MNSP,
29+
FICR, PLAS, PLST
30+
}
31+
32+
railtypetable {
33+
RAIL, ELRL, MONO, MGLV,
34+
TRPD
35+
}
36+
37+
template tmpl_railwagon(x,y) {
38+
[ 0+x, y, 8,24, -3,-12]
39+
[ 16+x, y, 22,17, -14, -9]
40+
[ 48+x, y, 32,12, -16, -8]
41+
[ 96+x, y, 22,17, -6, -9]
42+
}
43+
44+
spriteblock(FEAT_TRAINS) {
45+
spriteset(bulk_wagon_empty_set, "temperate_railwagons.png") { tmpl_railwagon(0,25) }
46+
spriteset(bulk_wagon_coal_default_set, "temperate_railwagons.png") { tmpl_railwagon(0,250) }
47+
spritegroup bulk_wagon_coal_default_group {
48+
loaded: [bulk_wagon_empty_set, bulk_wagon_coal_default_set];
49+
loading: [bulk_wagon_empty_set, bulk_wagon_coal_default_set];
50+
}
51+
spriteset(bulk_wagon_coal_arctic_empty_set, "arctic_railwagons.pcx") { tmpl_railwagon(0,25) }
52+
spriteset(bulk_wagon_coal_arctic_full_set, "arctic_railwagons.pcx") { tmpl_railwagon(0,250) }
53+
spritegroup bulk_wagon_coal_arctic_group {
54+
loaded: [bulk_wagon_coal_arctic_empty_set, bulk_wagon_coal_arctic_full_set];
55+
loading: [bulk_wagon_coal_arctic_empty_set, bulk_wagon_coal_arctic_full_set];
56+
}
57+
spriteset(bulk_wagon_coal2_empty_set, "temperate_railwagons.png") { tmpl_railwagon(0,225) }
58+
spriteset(bulk_wagon_coal2_full_set, "temperate_railwagons.png") { tmpl_railwagon(0,350) }
59+
spritegroup bulk_wagon_coal2_group {
60+
loaded: [bulk_wagon_coal2_empty_set, bulk_wagon_coal2_full_set];
61+
loading: [bulk_wagon_coal2_empty_set, bulk_wagon_coal2_full_set];
62+
}
63+
64+
spriteset(bulk_wagon_empty_grain_set, "temperate_railwagons.png") { tmpl_railwagon(0,150) }
65+
spriteset(bulk_wagon_grain_set, "temperate_railwagons.png") { tmpl_railwagon(0,275) }
66+
spritegroup bulk_wagon_grain_group {
67+
loaded: [bulk_wagon_empty_grain_set, bulk_wagon_grain_set];
68+
loading: [bulk_wagon_empty_grain_set, bulk_wagon_grain_set];
69+
}
70+
71+
}
72+
73+
random_switch (FEAT_TRAINS, SELF, bulk_wagon_coal_default_switch, TRIGGER_VEHICLE_SERVICE) {
74+
2: bulk_wagon_coal_default_group;
75+
1: bulk_wagon_coal2_group;
76+
}
77+
78+
switch (FEAT_TRAINS, SELF, bulk_wagon_coal_climate_switch, climate) {
79+
CLIMATE_ARCTIC: bulk_wagon_coal_arctic_group;
80+
bulk_wagon_coal_default_switch;
81+
}
82+
83+
switch(FEAT_TRAINS, SELF, bulk_wagon_graphics_switch, cargo_type_in_veh) {
84+
COAL: bulk_wagon_coal_climate_switch;
85+
bulk_wagon_grain_group; // default to grain
86+
}
87+
88+
switch (FEAT_TRAINS, SELF, bulk_wagon_cb_capacity_switch, cargo_type_in_veh) {
89+
FICR: return 25;
90+
FRUT: return 20;
91+
FRVG: return 20;
92+
GRAI: return 25;
93+
MAIZ: return 25;
94+
RSGR: return 20;
95+
WHEA: return 25;
96+
CB_FAILED; // return capacity set in properties (30)
97+
}
98+
99+
switch (FEAT_TRAINS, SELF, bulk_wagon_cb_property_weight_switch, cargo_type_in_veh) {
100+
COAL: return 18;
101+
FRUT: return 18;
102+
FRVG: return 18;
103+
RSGR: return 18;
104+
CB_FAILED; // return weight set in properties (25t)
105+
}
106+
107+
switch (FEAT_TRAINS, SELF, bulk_wagon_cb_property_switch, extra_callback_info1) {
108+
0x16: bulk_wagon_cb_property_weight_switch;
109+
CB_FAILED;
110+
}
111+
112+
switch (FEAT_TRAINS, SELF, bulk_wagon_cb_switch, current_callback) {
113+
VEH_CB_REFITTED_CAPACITY: bulk_wagon_cb_capacity_switch;
114+
VEH_CB_VEHICLE_PROPERTIES: bulk_wagon_cb_property_switch;
115+
bulk_wagon_graphics_switch;
116+
}
117+
118+
119+
item(FEAT_TRAINS, bulk_wagon) {
120+
property {
121+
// We try to simulate the stats of the temperate grain wagon
122+
name: string(STR_NAME_BULK_WAGON);
123+
climates_available: CLIMATE_ALL;
124+
refittable_cargo_classes: CC_BULK;
125+
non_refittable_cargo_classes: CC_PASSENGERS | CC_MAIL | CC_ARMOURED | CC_LIQUID | CC_REFRIGERATED | CC_HAZARDOUS;
126+
refittable_cargo_types: bitmask(WDPR, SCRP, FRUT, FRVG);
127+
sprite_id: SPRITE_ID_NEW_TRAIN;
128+
introduction_date: date(1880,1,1);
129+
model_life: VEHICLE_NEVER_EXPIRES;
130+
retire_early: 0;
131+
vehicle_life: 30;
132+
reliability_decay: 0;
133+
loading_speed: 10;
134+
cost_factor: 182;
135+
running_cost_factor: 5;
136+
speed: 0;
137+
refit_cost: 40;
138+
callback_flags: VEH_CBF_REFITTED_CAPACITY;
139+
track_type: RAIL;
140+
power: 0;
141+
running_cost_base: RUNNING_COST_STEAM;
142+
cargo_capacity: 30;
143+
weight: 25 ton;
144+
bitmask_vehicle_info: 0;
145+
}
146+
graphics {
147+
bulk_wagon_cb_switch;
148+
}
149+
}
6.77 KB
Binary file not shown.
Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
// Automatically generated by GRFCODEC. Do not modify!
2+
// (Info version 7)
3+
// Escapes: 2+ 2- 2< 2> 2u< 2u> 2/ 2% 2u/ 2u% 2* 2& 2| 2^ 2sto = 2s 2rst = 2r 2+ 2ror = 2rot
4+
// Escapes: 71 70 7= 7! 7< 7> 7G 7g 7gG 7GG 7gg 7c 7C
5+
// Escapes: D= D+ D- Du* D* Du<< D<< D& D| Du/ D/ Du% D%
6+
// Escapes: DR DF DC DM DnF DnC DO
7+
// Format: spritenum pcxfile xpos ypos compression ysize xsize xrel yrel
8+
9+
0 * 4 \d55
10+
11+
1 * 16 14 "C" "INFO"
12+
"B" "PALS" \w1 "W"
13+
00
14+
00
15+
2 * 19 14 "C" "INFO"
16+
"B" "VRSN" \w4 \dx00000000
17+
00
18+
00
19+
3 * 16 14 "C" "INFO"
20+
"B" "NPAR" \w1 00
21+
00
22+
00
23+
4 * 52 08 07 "NML\13" "NML regression test" 00 "A test newgrf testing NML" 00
24+
5 * 208 00 08 \b1 32 FF \wx0000
25+
09 "WDPR" "SCRP" "CMNT" "WOOD" "LVST"
26+
"STEL" "VEHI" "BRCK" "WOOL" "BUBL"
27+
"TOYS" "FZDR" "FRUT" "FRVG" "FOOD"
28+
"OIL_" "GOOD" "WATR" "MILK" "COAL"
29+
"IORE" "AORE" "CLAY" "GRVL" "SAND"
30+
"GRAI" "RSGR" "MAIZ" "CORE" "FERT"
31+
"CTCD" "SULP" "WHEA" "RFPR" "COLA"
32+
"PETR" "PAPR" "TOFF" "SUGR" "PASS"
33+
"MAIL" "BATT" "SWET" "RUBR" "FMSP"
34+
"ENSP" "MNSP" "FICR" "PLAS" "PLST"
35+
36+
6 * 28 00 08 \b1 05 FF \wx0000
37+
12 "RAIL" "ELRL" "MONO" "MGLV" "TRPD"
38+
39+
7 * 6 01 00 \b8 FF \wx0004
40+
41+
8 temperate_railwagons.png 0 25 01 24 8 -3 -12
42+
9 temperate_railwagons.png 16 25 01 17 22 -14 -9
43+
10 temperate_railwagons.png 48 25 01 12 32 -16 -8
44+
11 temperate_railwagons.png 96 25 01 17 22 -6 -9
45+
46+
12 temperate_railwagons.png 0 250 01 24 8 -3 -12
47+
13 temperate_railwagons.png 16 250 01 17 22 -14 -9
48+
14 temperate_railwagons.png 48 250 01 12 32 -16 -8
49+
15 temperate_railwagons.png 96 250 01 17 22 -6 -9
50+
51+
16 arctic_railwagons.pcx 0 25 01 24 8 -3 -12
52+
17 arctic_railwagons.pcx 16 25 01 17 22 -14 -9
53+
18 arctic_railwagons.pcx 48 25 01 12 32 -16 -8
54+
19 arctic_railwagons.pcx 96 25 01 17 22 -6 -9
55+
56+
20 arctic_railwagons.pcx 0 250 01 24 8 -3 -12
57+
21 arctic_railwagons.pcx 16 250 01 17 22 -14 -9
58+
22 arctic_railwagons.pcx 48 250 01 12 32 -16 -8
59+
23 arctic_railwagons.pcx 96 250 01 17 22 -6 -9
60+
61+
24 temperate_railwagons.png 0 225 01 24 8 -3 -12
62+
25 temperate_railwagons.png 16 225 01 17 22 -14 -9
63+
26 temperate_railwagons.png 48 225 01 12 32 -16 -8
64+
27 temperate_railwagons.png 96 225 01 17 22 -6 -9
65+
66+
28 temperate_railwagons.png 0 350 01 24 8 -3 -12
67+
29 temperate_railwagons.png 16 350 01 17 22 -14 -9
68+
30 temperate_railwagons.png 48 350 01 12 32 -16 -8
69+
31 temperate_railwagons.png 96 350 01 17 22 -6 -9
70+
71+
32 temperate_railwagons.png 0 150 01 24 8 -3 -12
72+
33 temperate_railwagons.png 16 150 01 17 22 -14 -9
73+
34 temperate_railwagons.png 48 150 01 12 32 -16 -8
74+
35 temperate_railwagons.png 96 150 01 17 22 -6 -9
75+
76+
36 temperate_railwagons.png 0 275 01 24 8 -3 -12
77+
37 temperate_railwagons.png 16 275 01 17 22 -14 -9
78+
38 temperate_railwagons.png 48 275 01 12 32 -16 -8
79+
39 temperate_railwagons.png 96 275 01 17 22 -6 -9
80+
81+
// Name: bulk_wagon_coal_default_group
82+
40 * 13 02 00 FE \b2 \b2
83+
\w0 \w1
84+
\w0 \w1
85+
86+
// Name: bulk_wagon_coal_arctic_group
87+
41 * 13 02 00 FD \b2 \b2
88+
\w2 \w3
89+
\w2 \w3
90+
91+
// Name: bulk_wagon_coal2_group
92+
42 * 13 02 00 FC \b2 \b2
93+
\w4 \w5
94+
\w4 \w5
95+
96+
// Name: bulk_wagon_grain_group
97+
43 * 13 02 00 FB \b2 \b2
98+
\w6 \w7
99+
\w6 \w7
100+
101+
// Name: bulk_wagon_coal_default_switch
102+
44 * 15 02 00 FA 80 02 \b0 04
103+
\wx00FE \wx00FE \wx00FE
104+
\wx00FC
105+
106+
// param[64] = (param[131] & 255)
107+
45 * 9 0D 40 \D& 83 FF \dx000000FF
108+
109+
46 * 7 06
110+
40 04 FF \wx0006
111+
FF
112+
113+
// Name: bulk_wagon_coal_climate_switch
114+
47 * 23 02 00 FC 89
115+
1A 00 \dx00000000 \b1
116+
\wx00FD \dx00000001 \dx00000001
117+
\wx00FA
118+
119+
// Name: bulk_wagon_graphics_switch
120+
48 * 23 02 00 FA 89
121+
47 00 \dx000000FF \b1
122+
\wx00FC \dx00000013 \dx00000013
123+
\wx00FB
124+
125+
// Name: bulk_wagon_cb_capacity_switch
126+
49 * 83 02 00 FB 89
127+
47 00 \dx000000FF \b7
128+
\wx8019 \dx0000002F \dx0000002F
129+
\wx8014 \dx0000000C \dx0000000C
130+
\wx8014 \dx0000000D \dx0000000D
131+
\wx8019 \dx00000019 \dx00000019
132+
\wx8019 \dx0000001B \dx0000001B
133+
\wx8014 \dx0000001A \dx0000001A
134+
\wx8019 \dx00000020 \dx00000020
135+
\wx0000
136+
137+
// Name: bulk_wagon_cb_property_weight_switch
138+
50 * 53 02 00 FC 89
139+
47 00 \dx000000FF \b4
140+
\wx8012 \dx00000013 \dx00000013
141+
\wx8012 \dx0000000C \dx0000000C
142+
\wx8012 \dx0000000D \dx0000000D
143+
\wx8012 \dx0000001A \dx0000001A
144+
\wx0000
145+
146+
// Name: bulk_wagon_cb_property_switch
147+
51 * 23 02 00 FD 89
148+
10 00 \dxFFFFFFFF \b1
149+
\wx00FC \dx00000016 \dx00000016
150+
\wx0000
151+
152+
// Name: bulk_wagon_cb_switch
153+
52 * 33 02 00 FC 89
154+
0C 00 \dx0000FFFF \b2
155+
\wx00FB \dx00000015 \dx00000015
156+
\wx00FD \dx00000036 \dx00000036
157+
\wx00FA
158+
159+
53 * 72 00 00 \b26 01 FF \wx0074
160+
06 0F
161+
28 \wx0010
162+
15 FF
163+
29 \wx01CB
164+
15 FF
165+
1D \dx00003003
166+
15 FF
167+
12 FD
168+
2A \dx000A7A40
169+
04 FF
170+
26 00
171+
03 1E
172+
02 00
173+
07 0A
174+
17 B6
175+
0D 05
176+
09 \wx0000
177+
1C 28
178+
1E 08
179+
05 00
180+
0B \wx0000
181+
0E \dx00004C30
182+
14 1E
183+
16 19
184+
24 00
185+
25 00
186+
187+
54 * 27 04 00 7F 01 FF \wx0074 "NML Test bulk wagon" 00
188+
189+
55 * 9 03 00 01 FF \wx0074 \b0
190+
\wx00FC
191+

regression/lang/default.lng

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@ STR_REGRESSION_ERROR :Something bad (tm) has happened.
66
STR_REGRESSION_CARE :care
77
STR_ANSWER :42
88
STR_NAME_FOSTER_EXPRESS_TRAM :Foster Express Tram
9+
STR_NAME_BULK_WAGON :NML Test bulk wagon
910

1011
STR_STATIONS :Test Stations
7.59 KB
Loading

0 commit comments

Comments
 (0)