- Option 1:
- Define road/tramtype using different "allocate label" properties.
- 0x07: Allocate road label
- 0x08: Allocate tram label
- RoadTypeReserveInfo:
- case 0x07: GetRoadTypeByLabel(rtl, ROADTYPE_ROAD, false);
- rt = AllocateRoadType(rtl, ROADTYPE_ROAD);
- case 0x08: GetRoadTypeByLabel(rtl, ROADTYPE_TRAM, false);
- rt = AllocateRoadType(rtl, ROADTYPE_TRAM);
- Option 2:
- Flag in property 0x10.
- RoadTypeReserveInfo:
- Labels are not immediately allocated, but only collected per GRF:
- RoadTypeReserveInfo also collects the road/tram flag.
- After the reservation pass, stuff are really allocated.
- Problem: This breaks GRF loading stages, and essentially adds a second reservation stage. GRFs cannot properly test for already defined labels.
- Option 3:
- Separate GRF features, both with property 8
- Advantage: (GRF feature, ID) is a key to the type, as it is to all other thing like industries.
- => Option 3 > Option 1 > Option 2