CDefObjInfoHandler.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. std::transform(nobj.defName.begin(), nobj.defName.end(), nobj.defName.begin(), (int(*)(int))toupper);
  21. for(int o=0; o<6; ++o)
  22. {
  23. nobj.blockMap[o] = 0xff;
  24. nobj.visitMap[o] = 0x00;
  25. }
  26. std::string mapStr;
  27. inp>>mapStr;
  28. std::reverse(mapStr.begin(), mapStr.end());
  29. for(int v=0; v<mapStr.size(); ++v)
  30. {
  31. if(mapStr[v]=='0')
  32. {
  33. nobj.blockMap[v/8] &= 255 - (128 >> (v%8));
  34. }
  35. }
  36. inp>>mapStr;
  37. std::reverse(mapStr.begin(), mapStr.end());
  38. for(int v=0; v<mapStr.size(); ++v)
  39. {
  40. if(mapStr[v]=='1')
  41. {
  42. nobj.visitMap[v/8] |= (128 >> (v%8));
  43. }
  44. }
  45. for(int yy=0; yy<2; ++yy)
  46. inp>>dump;
  47. inp>>nobj.type;
  48. inp>>nobj.subtype;
  49. inp>>nobj.objType;
  50. inp>>nobj.priority;
  51. objs.push_back(nobj);
  52. }
  53. }
  54. bool DefObjInfo::isVisitable() const
  55. {
  56. for(int g=0; g<6; ++g)
  57. {
  58. if(visitMap[g]!=0)
  59. return true;
  60. }
  61. return false;
  62. }