ERMScriptModule.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #define VCMI_DLL
  2. #include "ERMScriptModule.h"
  3. #include "ERMInterpreter.h"
  4. #include <boost/assign/std/vector.hpp>
  5. #include <boost/assign/list_of.hpp>
  6. #include "CObjectHandler.h"
  7. using namespace boost::assign;
  8. CScriptingModule::~CScriptingModule()
  9. {
  10. }
  11. CERMScriptModule::CERMScriptModule(void)
  12. {
  13. }
  14. CERMScriptModule::~CERMScriptModule(void)
  15. {
  16. }
  17. void CERMScriptModule::init()
  18. {
  19. interpreter = new ERMInterpreter();
  20. interpreter->init();
  21. interpreter->scanForScripts();
  22. interpreter->scanScripts();
  23. interpreter->executeInstructions();
  24. interpreter->executeTriggerType("PI");
  25. }
  26. void CERMScriptModule::heroVisit(const CGHeroInstance *visitor, const CGObjectInstance *visitedObj, bool start)
  27. {
  28. if(!visitedObj)
  29. return;
  30. ERMInterpreter::TIDPattern tip;
  31. tip[1] = list_of(visitedObj->ID);
  32. tip[2] = list_of(visitedObj->ID)(visitedObj->subID);
  33. tip[3] = list_of(visitedObj->pos.x)(visitedObj->pos.y)(visitedObj->pos.z);
  34. interpreter->executeTriggerType(VERMInterpreter::TriggerType("OB"), start, tip);
  35. }
  36. void CERMScriptModule::battleStart(const CCreatureSet *army1, const CCreatureSet *army2, int3 tile, const CGHeroInstance *hero1, const CGHeroInstance *hero2, bool side)
  37. {
  38. interpreter->executeTriggerType("BA", 0);
  39. interpreter->executeTriggerType("BR", -1);
  40. interpreter->executeTriggerType("BF", 0);
  41. //TODO tactics or not
  42. }