1717#include " ../../network/pakset_info.h"
1818#include " ../../tpl/array_tpl.h"
1919
20+ #include < cinttypes>
21+
2022
2123void roadsign_reader_t::register_obj (obj_desc_t *&data)
2224{
@@ -36,7 +38,7 @@ bool roadsign_reader_t::successfully_loaded() const
3638}
3739
3840
39- obj_desc_t * roadsign_reader_t::read_node (FILE *fp, obj_node_info_t &node)
41+ obj_desc_t *roadsign_reader_t ::read_node(FILE *fp, obj_node_info_t &node)
4042{
4143 array_tpl<char > desc_buf (node.size );
4244 if (fread (desc_buf.begin (), node.size , 1 , fp) != 1 ) {
@@ -48,55 +50,62 @@ obj_desc_t * roadsign_reader_t::read_node(FILE *fp, obj_node_info_t &node)
4850 const int version = v & 0x8000 ? v & 0x7FFF : 0 ;
4951 roadsign_desc_t *desc = new roadsign_desc_t ();
5052
51- if (version==5 ) {
52- // Versioned node, version 5
53- desc->min_speed = kmh_to_speed (decode_uint16 (p));
54- desc->price = decode_uint32 (p);
55- desc->flags = decode_uint16 (p);
53+ if (version == 6 ) {
54+ // cost as sint64, maintenance added
55+ desc->min_speed = kmh_to_speed (decode_uint16 (p));
56+ desc->price = decode_sint64 (p);
57+ desc->maintenance = decode_sint64 (p);
58+ desc->flags = decode_uint16 (p);
59+ desc->offset_left = decode_sint8 (p);
60+ desc->wtyp = decode_uint8 (p);
61+ desc->intro_date = decode_uint16 (p);
62+ desc->retire_date = decode_uint16 (p);
63+ }
64+ else if (version == 5 ) {
65+ desc->min_speed = kmh_to_speed (decode_uint16 (p));
66+ desc->price = decode_uint32 (p);
67+ desc->flags = decode_uint16 (p);
5668 desc->offset_left = decode_sint8 (p);
57- desc->wtyp = decode_uint8 (p);
58- desc->intro_date = decode_uint16 (p);
69+ desc->wtyp = decode_uint8 (p);
70+ desc->intro_date = decode_uint16 (p);
5971 desc->retire_date = decode_uint16 (p);
6072 }
61- else if (version==4 ) {
62- // Versioned node, version 4
63- desc->min_speed = kmh_to_speed (decode_uint16 (p));
64- desc->price = decode_uint32 (p);
65- desc->flags = decode_uint8 (p);
73+ else if (version == 4 ) {
74+ desc->min_speed = kmh_to_speed (decode_uint16 (p));
75+ desc->price = decode_uint32 (p);
76+ desc->flags = decode_uint8 (p);
6677 desc->offset_left = decode_sint8 (p);
67- desc->wtyp = decode_uint8 (p);
68- desc->intro_date = decode_uint16 (p);
78+ desc->wtyp = decode_uint8 (p);
79+ desc->intro_date = decode_uint16 (p);
6980 desc->retire_date = decode_uint16 (p);
7081 }
71- else if (version==3 ) {
72- // Versioned node, version 3
73- desc->min_speed = kmh_to_speed (decode_uint16 (p));
74- desc->price = decode_uint32 (p);
75- desc->flags = decode_uint8 (p);
82+ else if (version == 3 ) {
83+ desc->min_speed = kmh_to_speed (decode_uint16 (p));
84+ desc->price = decode_uint32 (p);
85+ desc->flags = decode_uint8 (p);
7686 desc->offset_left = 14 ;
77- desc->wtyp = decode_uint8 (p);
78- desc->intro_date = decode_uint16 (p);
87+ desc->wtyp = decode_uint8 (p);
88+ desc->intro_date = decode_uint16 (p);
7989 desc->retire_date = decode_uint16 (p);
8090 }
81- else if (version==2 ) {
82- // Versioned node, version 2
83- desc->min_speed = kmh_to_speed (decode_uint16 (p));
84- desc->price = decode_uint32 (p);
85- desc->flags = decode_uint8 (p);
91+ else if (version == 2 ) {
92+ desc->min_speed = kmh_to_speed (decode_uint16 (p));
93+ desc->price = decode_uint32 (p);
94+ desc->flags = decode_uint8 (p);
8695 desc->offset_left = 14 ;
87- desc->intro_date = DEFAULT_INTRO_YEAR*12 ;
96+ desc->intro_date = DEFAULT_INTRO_YEAR*12 ;
8897 desc->retire_date = DEFAULT_RETIRE_YEAR*12 ;
89- desc->wtyp = road_wt;
98+ desc->wtyp = road_wt;
9099 }
91- else if (version== 1 ) {
100+ else if (version == 1 ) {
92101 // Versioned node, version 1
93- desc->min_speed = kmh_to_speed (decode_uint16 (p));
94- desc->price = 50000 ;
95- desc->flags = decode_uint8 (p);
102+ desc->min_speed = kmh_to_speed (decode_uint16 (p));
103+ desc->price = 50000 ;
104+ desc->flags = decode_uint8 (p);
96105 desc->offset_left = 14 ;
97- desc->intro_date = DEFAULT_INTRO_YEAR*12 ;
106+ desc->intro_date = DEFAULT_INTRO_YEAR*12 ;
98107 desc->retire_date = DEFAULT_RETIRE_YEAR*12 ;
99- desc->wtyp = road_wt;
108+ desc->wtyp = road_wt;
100109 }
101110 else {
102111 dbg->fatal ( " roadsign_reader_t::read_node()" , " Cannot handle too new node version %i" , version );
@@ -108,10 +117,11 @@ obj_desc_t * roadsign_reader_t::read_node(FILE *fp, obj_node_info_t &node)
108117 }
109118
110119 PAKSET_INFO (" roadsign_reader_t::read_node()" ,
111- " version=%i, min_speed=%i, price=%i, flags=%x, wtyp=%i, offset_left=%i, intro=%i/%i, retire=%i/%i" ,
120+ " version=%i, min_speed=%i, price=%" PRId64 " , maintenance=% " PRId64, " flags=%x, wtyp=%i, offset_left=%i, intro=%i/%i, retire=%i/%i" ,
112121 version,
113122 desc->min_speed ,
114123 desc->price /100 ,
124+ desc->maintenance ,
115125 desc->flags ,
116126 desc->wtyp ,
117127 desc->offset_left ,
0 commit comments