* Encode a NewsReference for serialisation, e.g. for writing in the crash log. * @param reference The reference to serialise. * @return Reference serialised into a single uint32_t. */
| 918 | * @return Reference serialised into a single uint32_t. |
| 919 | */ |
| 920 | uint32_t SerialiseNewsReference(const NewsReference &reference) |
| 921 | { |
| 922 | struct visitor { |
| 923 | uint32_t operator()(const std::monostate &) { return 0; } |
| 924 | uint32_t operator()(const TileIndex &t) { return t.base(); } |
| 925 | uint32_t operator()(const VehicleID v) { return v.base(); } |
| 926 | uint32_t operator()(const StationID s) { return s.base(); } |
| 927 | uint32_t operator()(const IndustryID i) { return i.base(); } |
| 928 | uint32_t operator()(const TownID t) { return t.base(); } |
| 929 | uint32_t operator()(const EngineID e) { return e.base(); } |
| 930 | }; |
| 931 | |
| 932 | return std::visit(visitor{}, reference); |
| 933 | } |
| 934 | |
| 935 | /** |
| 936 | * Create a new custom news item. |