initial commit, lordsawar source, slightly modified
[lordsawar] / src / tilestyle.cpp
1 // Copyright (C) 2007, 2008, 2009 Ben Asselstine
2 //
3 //  This program is free software; you can redistribute it and/or modify
4 //  it under the terms of the GNU General Public License as published by
5 //  the Free Software Foundation; either version 3 of the License, or
6 //  (at your option) any later version.
7 //
8 //  This program is distributed in the hope that it will be useful,
9 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
10 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 //  GNU Library General Public License for more details.
12 //
13 //  You should have received a copy of the GNU General Public License
14 //  along with this program; if not, write to the Free Software
15 //  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 
16 //  02110-1301, USA.
17
18 #include <iostream>
19 #include <iomanip>
20
21
22 #include "tilestyle.h"
23 #include "ucompose.hpp"
24 #include "defs.h"
25
26 std::string TileStyle::d_tag = "tilestyle";
27 using namespace std;
28
29 TileStyle::TileStyle()
30   : d_image(0)
31 {
32 }
33
34 TileStyle::TileStyle(XML_Helper* helper)
35   : d_image(0)
36 {
37   int i;
38   char *end = NULL;
39   std::string idstr;
40
41   helper->getData(idstr, "id");
42   unsigned long int val = 0;
43   val = strtoul (idstr.c_str(), &end, 0);
44   d_id = (guint32) val;
45   helper->getData(i, "type");
46   d_type = static_cast<TileStyle::Type>(i);
47
48 }
49     
50 TileStyle::~TileStyle()
51 {
52 }
53
54 bool TileStyle::save(XML_Helper *helper)
55 {
56   bool retval = true;
57
58   retval &= helper->openTag(d_tag);
59   Glib::ustring idstr;
60   
61   idstr = String::ucompose ("0x%1", Glib::ustring::format(std::hex, std::setfill(L'0'), std::setw(2), d_id));
62   retval &= helper->saveData("id", idstr);
63   retval &= helper->saveData("type", d_type);
64   retval &= helper->closeTag();
65
66   return retval;
67 }
68
69 std::string TileStyle::getTypeName() const
70 {
71   return getTypeName(d_type);
72 }
73
74 std::string TileStyle::getTypeName(Type type)
75 {
76   switch (type)
77     {
78     case LONE:
79       return _("Lone");
80       break;
81     case OUTERTOPLEFT:
82       return _("Outer Top-Left");
83       break;
84     case OUTERTOPCENTER:
85       return _("Outer Top-Centre");
86       break;
87     case OUTERTOPRIGHT:
88       return _("Outer Top-Right");
89       break;
90     case OUTERBOTTOMLEFT:
91       return _("Outer Bottom-Left");
92       break;
93     case OUTERBOTTOMCENTER:
94       return _("Outer Bottom-Centre");
95       break;
96     case OUTERBOTTOMRIGHT:
97       return _("Outer Bottom-Right");
98       break;
99     case OUTERMIDDLELEFT:
100       return _("Outer Middle-Left");
101       break;
102     case INNERMIDDLECENTER:
103       return _("Outer Middle-Centre");
104       break;
105     case OUTERMIDDLERIGHT:
106       return _("Outer Middle-Right");
107       break;
108     case INNERTOPLEFT:
109       return _("Inner Top-Left");
110       break;
111     case INNERTOPRIGHT:
112       return _("Inner Top-Right");
113       break;
114     case INNERBOTTOMLEFT:
115       return _("Inner Bottom-Left");
116       break;
117     case INNERBOTTOMRIGHT:
118       return _("Inner Bottom-Right");
119       break;
120     case TOPLEFTTOBOTTOMRIGHTDIAGONAL:
121       return _("Top-Left To Bottom-Right Diagonal");
122       break;
123     case BOTTOMLEFTTOTOPRIGHTDIAGONAL:
124       return _("Bottom-Left to Top-Right Diagonal");
125       break;
126     case OTHER:
127       return _("Other");
128       break;
129     default:
130       return "unknown";
131     }
132 }
133         
134 TileStyle::Type TileStyle::typeNameToType(std::string name)
135 {
136   if (name == _("Lone"))
137     return LONE;
138   else if (name == _("Outer Top-Left"))
139     return OUTERTOPLEFT;
140   else if (name == _("Outer Top-Centre"))
141     return OUTERTOPCENTER;
142   else if (name == _("Outer Top-Right"))
143     return OUTERTOPRIGHT;
144   else if (name == _("Outer Bottom-Left"))
145     return OUTERBOTTOMLEFT;
146   else if (name == _("Outer Bottom-Centre"))
147     return OUTERBOTTOMCENTER;
148   else if (name == _("Outer Bottom-Right"))
149     return OUTERBOTTOMRIGHT;
150   else if (name == _("Outer Middle-Left"))
151     return OUTERMIDDLELEFT;
152   else if (name == _("Outer Middle-Centre"))
153     return INNERMIDDLECENTER;
154   else if (name == _("Outer Middle-Right"))
155     return OUTERMIDDLERIGHT;
156   else if (name == _("Inner Top-Left"))
157     return INNERTOPLEFT;
158   else if (name == _("Inner Top-Right"))
159     return INNERTOPRIGHT;
160   else if (name == _("Inner Bottom-Left"))
161     return INNERBOTTOMLEFT;
162   else if (name == _("Inner Bottom-Right"))
163     return INNERBOTTOMRIGHT;
164   else if (name == _("Top-Left To Bottom-Right Diagonal"))
165     return TOPLEFTTOBOTTOMRIGHTDIAGONAL;
166   else if (name == _("Bottom-Left to Top-Right Diagonal"))
167     return BOTTOMLEFTTOTOPRIGHTDIAGONAL;
168   else if (name == _("Other"))
169     return OTHER;
170   else
171     return OTHER;
172 }
173
174 // End of file