00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <libfuture.h>
00022
00023 #include "Terrain.h"
00024 #include "Area.h"
00025
00026
00027
00028 terrains_t Terrain::m_terrains;
00029
00030
00031 Terrain::Terrain(Database& db,Area& area,char tchar)
00032 :Object(db)
00033 ,m_area(area)
00034 {
00035 m_terrain = Terrain::GetTerrain(db, area, tchar);
00036 m_terrain -> area = area.GetNum();
00037 m_terrain -> tchar = tchar;
00038 }
00039
00040
00041 Terrain::~Terrain()
00042 {
00043 }
00044
00045
00046 db::Terrain *Terrain::GetTerrain(Database& db,Area& area,char tchar)
00047 {
00048 std::map<char,db::Terrain *>& ref = m_terrains[area.GetNum()];
00049 db::Terrain *p = ref[tchar];
00050 if (p != NULL)
00051 return p;
00052 std::string tmp;
00053 tmp += tchar;
00054 p = new db::Terrain(db, area.GetNum(), tmp);
00055 p -> area = area.GetNum();
00056 p -> tchar = tchar;
00057 ref[tchar] = p;
00058 return p;
00059 }
00060
00061
00062 bool Terrain::Exists()
00063 {
00064 if (m_terrain && m_terrain -> num)
00065 return true;
00066 return false;
00067 }
00068
00069
00070 const std::string& Terrain::GetColor()
00071 {
00072 return m_terrain -> tcolor;
00073 }
00074
00075
00076 char Terrain::GetChar()
00077 {
00078 return m_terrain -> tchar[0];
00079 }
00080
00081
00082 void Terrain::Save()
00083 {
00084 m_terrain -> save();
00085 }
00086
00087
00088 void Terrain::SetChar(char tchar)
00089 {
00090 m_terrain -> tchar = tchar;
00091 }
00092
00093
00094 void Terrain::SetColor(const std::string& x)
00095 {
00096 m_terrain -> tcolor = x;
00097 }
00098
00099
00100 const std::string& Terrain::GetName()
00101 {
00102 return m_terrain -> name;
00103 }
00104
00105
00106 void Terrain::SetName(const std::string& x)
00107 {
00108 m_terrain -> name = x;
00109 }
00110
00111
00112 bool Terrain::IsImpassable()
00113 {
00114 return m_terrain -> impassable ? true : false;
00115 }
00116
00117
00118 void Terrain::SetImpassable(bool x)
00119 {
00120 m_terrain -> impassable = x ? 1 : 0;
00121 }
00122
00123
00124 long Terrain::GetNum()
00125 {
00126 return m_terrain -> num;
00127 }
00128
00129
00130 double Terrain::GetDelay()
00131 {
00132 return m_terrain -> delay;
00133 }
00134
00135
00136 void Terrain::SetDelay(double d)
00137 {
00138 m_terrain -> delay = d;
00139 }
00140
00141