47
52
bool retval = true;
49
retval &= helper->openTag("road");
54
retval &= helper->openTag(Road::d_tag);
50
55
retval &= helper->saveData("id", d_id);
51
56
retval &= helper->saveData("x", getPos().x);
52
57
retval &= helper->saveData("y", getPos().y);
53
retval &= helper->saveData("type", d_type);
58
std::string type_str = roadTypeToString(Road::Type(d_type));
59
retval &= helper->saveData("type", type_str);
54
60
retval &= helper->closeTag();
65
std::string Road::roadTypeToString(const Road::Type type)
69
case Road::CONNECTS_EAST_AND_WEST:
70
return "Road::CONNECTS_EAST_AND_WEST";
71
case Road::CONNECTS_NORTH_AND_SOUTH:
72
return "Road::CONNECTS_NORTH_AND_SOUTH";
73
case Road::CONNECTS_ALL_DIRECTIONS:
74
return "Road::CONNECTS_ALL_DIRECTIONS";
75
case Road::CONNECTS_NORTH_AND_WEST:
76
return "Road::CONNECTS_NORTH_AND_WEST";
77
case Road::CONNECTS_NORTH_AND_EAST:
78
return "Road::CONNECTS_NORTH_AND_EAST";
79
case Road::CONNECTS_SOUTH_AND_EAST:
80
return "Road::CONNECTS_SOUTH_AND_EAST";
81
case Road::CONNECTS_WEST_AND_SOUTH:
82
return "Road::CONNECTS_WEST_AND_SOUTH";
83
case Road::CONNECTS_NORTH_AND_SOUTH_AND_EAST:
84
return "Road::CONNECTS_NORTH_AND_SOUTH_AND_EAST";
85
case Road::CONNECTS_EAST_WEST_AND_NORTH:
86
return "Road::CONNECTS_EAST_WEST_AND_NORTH";
87
case Road::CONNECTS_EAST_WEST_AND_SOUTH:
88
return "Road::CONNECTS_EAST_WEST_AND_SOUTH";
89
case Road::CONNECTS_NORTH_SOUTH_AND_WEST:
90
return "Road::CONNECTS_NORTH_SOUTH_AND_WEST";
91
case Road::CONNECTS_NORTH:
92
return "Road::CONNECTS_NORTH";
93
case Road::CONNECTS_SOUTH:
94
return "Road::CONNECTS_SOUTH";
95
case Road::CONNECTS_EAST:
96
return "Road::CONNECTS_EAST";
97
case Road::CONNECTS_WEST:
98
return "Road::CONNECTS_WEST";
100
return "Road::CONNECTS_EAST_AND_WEST";
103
Road::Type Road::roadTypeFromString(const std::string str)
105
if (str.size() > 0 && isdigit(str.c_str()[0]))
106
return Road::Type(atoi(str.c_str()));
107
if (str == "Road::CONNECTS_EAST_AND_WEST")
108
return Road::CONNECTS_EAST_AND_WEST;
109
else if (str == "Road::CONNECTS_NORTH_AND_SOUTH")
110
return Road::CONNECTS_NORTH_AND_SOUTH;
111
else if (str == "Road::CONNECTS_ALL_DIRECTIONS")
112
return Road::CONNECTS_ALL_DIRECTIONS;
113
else if (str == "Road::CONNECTS_NORTH_AND_WEST")
114
return Road::CONNECTS_NORTH_AND_WEST;
115
else if (str == "Road::CONNECTS_NORTH_AND_EAST")
116
return Road::CONNECTS_NORTH_AND_EAST;
117
else if (str == "Road::CONNECTS_SOUTH_AND_EAST")
118
return Road::CONNECTS_SOUTH_AND_EAST;
119
else if (str == "Road::CONNECTS_WEST_AND_SOUTH")
120
return Road::CONNECTS_WEST_AND_SOUTH;
121
else if (str == "Road::CONNECTS_NORTH_AND_SOUTH_AND_EAST")
122
return Road::CONNECTS_NORTH_AND_SOUTH_AND_EAST;
123
else if (str == "Road::CONNECTS_EAST_WEST_AND_NORTH")
124
return Road::CONNECTS_EAST_WEST_AND_NORTH;
125
else if (str == "Road::CONNECTS_EAST_WEST_AND_SOUTH")
126
return Road::CONNECTS_EAST_WEST_AND_SOUTH;
127
else if (str == "Road::CONNECTS_NORTH_SOUTH_AND_WEST")
128
return Road::CONNECTS_NORTH_SOUTH_AND_WEST;
129
else if (str == "Road::CONNECTS_NORTH")
130
return Road::CONNECTS_NORTH;
131
else if (str == "Road::CONNECTS_SOUTH")
132
return Road::CONNECTS_SOUTH;
133
else if (str == "Road::CONNECTS_EAST")
134
return Road::CONNECTS_EAST;
135
else if (str == "Road::CONNECTS_WEST")
136
return Road::CONNECTS_WEST;
137
return Road::CONNECTS_EAST_AND_WEST;