CDefObjInfoHandler.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #include "../stdafx.h"
  2. #include "CDefObjInfoHandler.h"
  3. #include "../CGameInfo.h"
  4. #include "CLodHandler.h"
  5. #include <sstream>
  6. bool CGDefInfo::isVisitable()
  7. {
  8. for (int i=0; i<6; i++)
  9. {
  10. if (visitMap[i])
  11. return true;
  12. }
  13. return false;
  14. }
  15. bool DefObjInfo::operator==(const std::string & por) const
  16. {
  17. return this->defName == por;
  18. }
  19. void CDefObjInfoHandler::load()
  20. {
  21. nodrze<int> ideki;
  22. std::istringstream inp(CGameInfo::mainObj->bitmaph->getTextFile("ZOBJCTS.TXT"));
  23. int objNumber;
  24. inp>>objNumber;
  25. for(int hh=0; hh<objNumber; ++hh)
  26. {
  27. CGDefInfo* nobj = new CGDefInfo();
  28. nobj->handler = NULL;
  29. std::string dump;
  30. inp>>nobj->name;
  31. std::transform(nobj->name.begin(), nobj->name.end(), nobj->name.begin(), (int(*)(int))toupper);
  32. for(int o=0; o<6; ++o)
  33. {
  34. nobj->blockMap[o] = 0xff;
  35. nobj->visitMap[o] = 0x00;
  36. }
  37. std::string mapStr;
  38. inp>>mapStr;
  39. std::reverse(mapStr.begin(), mapStr.end());
  40. for(int v=0; v<mapStr.size(); ++v)
  41. {
  42. if(mapStr[v]=='0')
  43. {
  44. nobj->blockMap[v/8] &= 255 - (128 >> (v%8));
  45. }
  46. }
  47. inp>>mapStr;
  48. std::reverse(mapStr.begin(), mapStr.end());
  49. for(int v=0; v<mapStr.size(); ++v)
  50. {
  51. if(mapStr[v]=='1')
  52. {
  53. nobj->visitMap[v/8] |= (128 >> (v%8));
  54. }
  55. }
  56. for(int yy=0; yy<2; ++yy)
  57. inp>>dump;
  58. inp>>nobj->id;
  59. inp>>nobj->subid;
  60. inp>>nobj->type;
  61. inp>>nobj->printPriority;
  62. gobjs[nobj->id][nobj->subid] = nobj;
  63. if(nobj->id==98)
  64. castles[nobj->subid]=nobj;
  65. }
  66. }
  67. bool DefObjInfo::isVisitable() const
  68. {
  69. for(int g=0; g<6; ++g)
  70. {
  71. if(visitMap[g]!=0)
  72. return true;
  73. }
  74. return false;
  75. }