CConsoleHandler.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #include "stdafx.h"
  2. #include "CConsoleHandler.h"
  3. #include "CAdvmapInterface.h"
  4. #include "SDL.h"
  5. #include "SDL_thread.h"
  6. #include "CGameInfo.h"
  7. #include "global.h"
  8. #include "CGameState.h"
  9. #include "CCallback.h"
  10. #include "CPathfinder.h"
  11. #include "mapHandler.h"
  12. #include <sstream>
  13. int internalFunc(void * callback)
  14. {
  15. CCallback * cb = (CCallback*)callback;
  16. char * usersMessage = new char[500];
  17. std::string readed;
  18. while(true)
  19. {
  20. std::cin.getline(usersMessage, 500);
  21. std::istringstream readed;
  22. std::string pom(usersMessage);
  23. readed.str(pom);
  24. std::string cn; //command name
  25. readed >> cn;
  26. int3 src, dst;
  27. int heronum;
  28. int3 dest;
  29. switch (*cn.c_str())
  30. {
  31. case 'P':
  32. std::cout<<"Policzyc sciezke."<<std::endl;
  33. readed>>src>>dst;
  34. LOCPLINT->adventureInt->terrain.currentPath = CGI->pathf->getPath(src,dst,CGI->heroh->heroInstances[0]);
  35. break;
  36. case 'm': //number of heroes
  37. std::cout<<"Number of heroes: "<<CGI->heroh->heroInstances.size()<<std::endl;
  38. break;
  39. case 'H': //position of hero
  40. readed>>heronum;
  41. std::cout<<"Position of hero "<<heronum<<": "<<CGI->heroh->heroInstances[heronum]->getPosition(false)<<std::endl;
  42. break;
  43. case 'M': //move heroa
  44. {
  45. readed>>heronum>>dest;
  46. const CHeroInstance * hero = cb->getHeroInfo(0,heronum,0);
  47. CPath * path = CGI->pathf->getPath(hero->getPosition(false),dest,hero);
  48. cb->moveHero(heronum, path, 0, 0);
  49. delete path;
  50. break;
  51. }
  52. case 'D': //pos description
  53. readed>>src;
  54. CGI->mh->getObjDescriptions(src);
  55. break;
  56. case 'T': //test rect
  57. readed>>src;
  58. for(int g=0; g<8; ++g)
  59. {
  60. for(int v=0; v<8; ++v)
  61. {
  62. int3 csrc = src;
  63. csrc.y+=g;
  64. csrc.x+=v;
  65. if(CGI->mh->getObjDescriptions(csrc).size())
  66. std::cout<<'x';
  67. else
  68. std::cout<<'o';
  69. }
  70. std::cout<<std::endl;
  71. }
  72. break;
  73. }
  74. //SDL_Delay(100);
  75. }
  76. return -1;
  77. }
  78. void CConsoleHandler::runConsole()
  79. {
  80. SDL_Thread * myth = SDL_CreateThread(&internalFunc, cb);
  81. }