CDefObjInfoHandler.cpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #include "stdafx.h"
  2. #include "CDefObjInfoHandler.h"
  3. #include "../CGameInfo.h"
  4. #include "CLodHandler.h"
  5. #include <sstream>
  6. bool DefObjInfo::operator==(const std::string & por) const
  7. {
  8. return this->defName == por;
  9. }
  10. void CDefObjInfoHandler::load()
  11. {
  12. std::istringstream inp(CGameInfo::mainObj->bitmaph->getTextFile("ZOBJCTS.TXT"));
  13. int objNumber;
  14. inp>>objNumber;
  15. for(int hh=0; hh<objNumber; ++hh)
  16. {
  17. DefObjInfo nobj;
  18. std::string dump;
  19. inp>>nobj.defName;
  20. for(int o=0; o<6; ++o)
  21. {
  22. nobj.blockMap[o] = 0xff;
  23. nobj.visitMap[o] = 0x00;
  24. }
  25. std::string mapStr;
  26. inp>>mapStr;
  27. std::reverse(mapStr.begin(), mapStr.end());
  28. for(int v=0; v<mapStr.size(); ++v)
  29. {
  30. if(mapStr[v]=='0')
  31. {
  32. nobj.blockMap[v/8] &= 255 - (128 >> (v%8));
  33. }
  34. }
  35. inp>>mapStr;
  36. std::reverse(mapStr.begin(), mapStr.end());
  37. for(int v=0; v<mapStr.size(); ++v)
  38. {
  39. if(mapStr[v]=='1')
  40. {
  41. nobj.visitMap[v/8] |= (128 >> (v%8));
  42. }
  43. }
  44. for(int yy=0; yy<2; ++yy)
  45. inp>>dump;
  46. inp>>nobj.type;
  47. inp>>nobj.subtype;
  48. inp>>nobj.objType;
  49. inp>>nobj.priority;
  50. objs.push_back(nobj);
  51. }
  52. }
  53. bool DefObjInfo::isVisitable() const
  54. {
  55. for(int g=0; g<6; ++g)
  56. {
  57. if(visitMap[g]!=0)
  58. return true;
  59. }
  60. return false;
  61. }