CArtHandler.cpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #define VCMI_DLL
  2. #include "../stdafx.h"
  3. #include "CArtHandler.h"
  4. #include "CLodHandler.h"
  5. #include <boost/assign/std/vector.hpp>
  6. #include <boost/assign/list_of.hpp>
  7. #include "../lib/VCMI_Lib.h"
  8. void loadToIt(std::string &dest, std::string &src, int &iter, int mode);
  9. extern CLodHandler *bitmaph;
  10. using namespace boost::assign;
  11. CArtHandler::CArtHandler()
  12. {
  13. VLC->arth = this;
  14. }
  15. void CArtHandler::loadArtifacts()
  16. {
  17. std::vector<bool CArtifact::*> slots;
  18. slots += &CArtifact::spellBook, &CArtifact::warMachine4, &CArtifact::warMachine3, &CArtifact::warMachine2,
  19. &CArtifact::warMachine1, &CArtifact::misc5, &CArtifact::misc4, &CArtifact::misc3, &CArtifact::misc2,
  20. &CArtifact::misc1, &CArtifact::feet, &CArtifact::lRing, &CArtifact::rRing, &CArtifact::torso,
  21. &CArtifact::lHand, &CArtifact::rHand, &CArtifact::neck, &CArtifact::shoulders, &CArtifact::head;
  22. std::map<char,EartClass> classes =
  23. map_list_of('S',SartClass)('T',TartClass)('N',NartClass)('J',JartClass)('R',RartClass);
  24. std::string buf = bitmaph->getTextFile("ARTRAITS.TXT"), dump, pom;
  25. int it=0;
  26. for(int i=0; i<2; ++i)
  27. {
  28. loadToIt(dump,buf,it,3);
  29. }
  30. for (int i=0; i<ARTIFACTS_QUANTITY; i++)
  31. {
  32. CArtifact nart;
  33. loadToIt(nart.name,buf,it,4);
  34. loadToIt(pom,buf,it,4);
  35. nart.price=atoi(pom.c_str());
  36. for(int j=0;j<slots.size();j++)
  37. {
  38. loadToIt(pom,buf,it,4);
  39. nart.*slots[j] = (pom[0]=='x');
  40. }
  41. loadToIt(pom,buf,it,4);
  42. nart.aClass = classes[pom[0]];
  43. loadToIt(nart.description,buf,it,3);
  44. nart.id=i;
  45. artifacts.push_back(nart);
  46. }
  47. for(int i=0;i<144;i++) //do 144, bo nie chcemy bzdurek
  48. {
  49. switch (artifacts[i].aClass)
  50. {
  51. case TartClass:
  52. treasures.push_back(&(artifacts[i]));
  53. break;
  54. case NartClass:
  55. minors.push_back(&(artifacts[i]));
  56. break;
  57. case JartClass:
  58. majors.push_back(&(artifacts[i]));
  59. break;
  60. case RartClass:
  61. relics.push_back(&(artifacts[i]));
  62. break;
  63. }
  64. }
  65. }