00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _STEPS_H
00021 #define _STEPS_H
00022
00023 #include "Object.h"
00024 #include <map>
00025 #include <list>
00026
00027
00028 class Player;
00029 class Area;
00030 namespace db { class Steps; }
00031
00032 typedef std::map<long,db::Steps *> ycoord_m;
00033 typedef std::map<long,ycoord_m> zcoord_m;
00034 typedef std::map<long,zcoord_m> area_m;
00035 typedef std::map<long,area_m> steps_t;
00036
00039 class Steps : public Object
00040 {
00041 public:
00042 Steps(Database& ,Player& ,Area& ,long z,long y);
00043 ~Steps();
00044
00045 void Save();
00046 bool Exists();
00047 long GetNum();
00048
00049 void AddCoord(long x);
00050
00051 static db::Steps *GetStep(Player&,Area&,long z,long y);
00052
00053 private:
00054 static db::Steps *GetSteps(Database& ,Player& ,Area& ,long z,long y);
00055 static steps_t m_cache;
00056 Player& m_player;
00057 Area& m_area;
00058 db::Steps *m_steps;
00059 };
00060
00061
00062
00063
00064 #endif // _STEPS_H