1
0
forked from 0ad/0ad

Adds getInt to AtlasObject

Uses this instead of wxAtoi for consistency, and adds brief comment
about why wxAtof should be avoided

This was SVN commit r9643.
This commit is contained in:
historic_bruno 2011-06-21 02:56:49 +00:00
parent ef4df42895
commit abdc846a65
3 changed files with 21 additions and 3 deletions

View File

@ -139,6 +139,9 @@ public:
// Return the floating point value of this object // Return the floating point value of this object
double getDouble() const; double getDouble() const;
// Return the integer value of this object
int getInt() const;
// Check whether the object contains anything (even if those things are empty) // Check whether the object contains anything (even if those things are empty)
bool defined() const { return (bool)p; } bool defined() const { return (bool)p; }

View File

@ -140,6 +140,18 @@ double AtObj::getDouble() const
return val; return val;
} }
int AtObj::getInt() const
{
int val = 0;
if (p)
{
std::wstringstream s;
s << p->value;
s >> val;
}
return val;
}
void AtObj::add(const char* key, AtObj& data) void AtObj::add(const char* key, AtObj& data)
{ {
if (!p) if (!p)

View File

@ -552,12 +552,12 @@ void PlayerSettingsControl::ReadFromEngine()
AtObj clrObj = *player["Colour"]; AtObj clrObj = *player["Colour"];
if (clrObj.defined()) if (clrObj.defined())
{ {
colour = wxColor(wxAtoi(*clrObj["r"]), wxAtoi(*clrObj["g"]), wxAtoi(*clrObj["b"])); colour = wxColor((*clrObj["r"]).getInt(), (*clrObj["g"]).getInt(), (*clrObj["b"]).getInt());
} }
else else
{ {
clrObj = *playerDefs["Colour"]; clrObj = *playerDefs["Colour"];
colour = wxColor(wxAtoi(*clrObj["r"]), wxAtoi(*clrObj["g"]), wxAtoi(*clrObj["b"])); colour = wxColor((*clrObj["r"]).getInt(), (*clrObj["g"]).getInt(), (*clrObj["b"]).getInt());
} }
controls.colour->SetBackgroundColour(colour); controls.colour->SetBackgroundColour(colour);
@ -616,7 +616,7 @@ void PlayerSettingsControl::ReadFromEngine()
// team // team
if (player["Team"].defined()) if (player["Team"].defined())
controls.team->SetSelection(wxAtoi(*player["Team"])); controls.team->SetSelection((*player["Team"]).getInt());
else else
controls.team->SetSelection(0); controls.team->SetSelection(0);
@ -624,6 +624,9 @@ void PlayerSettingsControl::ReadFromEngine()
if (player["StartingCamera"].defined()) if (player["StartingCamera"].defined())
{ {
sCameraInfo info; sCameraInfo info;
// Don't use wxAtof because it depends on locales which
// may cause problems with decimal points
// see: http://www.wxwidgets.org/docs/faqgtk.htm#locale
AtObj camPos = *player["StartingCamera"]["Position"]; AtObj camPos = *player["StartingCamera"]["Position"];
info.pX = (float)(*camPos["x"]).getDouble(); info.pX = (float)(*camPos["x"]).getDouble();
info.pY = (float)(*camPos["y"]).getDouble(); info.pY = (float)(*camPos["y"]).getDouble();