Advertisement
Guest User

Untitled

a guest
Feb 28th, 2020
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.93 KB | None | 0 0
  1. GameState Interpreter:: operator()(GlobalMessage const& gM) const{
  2. GameState newState(state);
  3. DataPacket variable = getVariablesInvolved(gM.message);
  4. DataPacket cleanMessage = getCleanMessage(gM.message);
  5. MiddelWare mop = boost::apply_visitor(Visit_Expression(), newState.variables.get(variable.getData()));
  6. if(mop.integerr){
  7. newState.variables.set("GlobalMessage", Expression{cleanMessage.getData() + " " + std::to_string(mop.integerr)});
  8. }
  9. if(mop.str.length()>0){
  10. newState.variables.set("GlobalMessage", Expression{cleanMessage.getData() + " " + mop.str});
  11. }
  12. return newState;
  13. }
  14.  
  15. GameState Interpreter:: operator()(MessageRule const& m) const{
  16. GameState newState(state);
  17. DataPacket variable = getVariablesInvolved(m.message.getData());
  18. DataPacket cleanMessage = getCleanMessage(m.message.getData());
  19. MiddelWare mop = boost::apply_visitor(Visit_Expression(), newState.variables.get(variable.getData()));
  20. for(Player player: m.recipents.getPlayers()){
  21. std::string name= player.name;
  22. std::vector<GamePlayer>::iterator it = std::find_if(newState.players.begin(), newState.players.end(), [&name](GamePlayer const& gPlayer){
  23. return gPlayer.name==name;
  24. });
  25. if(it != newState.players.end()){
  26. auto playerVarMap = boost::apply_visitor(Visit_Expression(), newState.perPlayer.get(it->name));
  27. playerVarMap.mapp.set("message", Expression{cleanMessage.getData()+ " " + mop.str});
  28. newState.perPlayer.set(it->name, playerVarMap.mapp);
  29. }
  30. std::vector<GameAudience>::iterator itA = std::find_if(newState.audience.begin(), newState.audience.end(), [&name](GameAudience const& gAudience){
  31. return gAudience.name == name;
  32. });
  33. if(itA != newState.audience.end()){
  34. auto audiVarMap = boost::apply_visitor(Visit_Expression(), newState.perAudience.get(itA->name));
  35. audiVarMap.mapp.set("message", Expression{cleanMessage.getData()+ " " + mop.str});
  36. newState.perAudience.set(itA->name, audiVarMap.mapp);
  37. }
  38. }
  39. return newState;
  40. }
  41. struct MiddelWare{
  42. MapWrapper<std::string, Expression> mapp;
  43. std::vector<Expression> listt;
  44. std::string str;
  45. int integerr;
  46. bool booll ;
  47. };
  48. struct Visit_Expression : public boost::static_visitor<MiddelWare> {
  49. MiddelWare operator()(MapWrapper<std::string, Expression> const& mapp)const{MiddelWare md; md.mapp=mapp; return md;};
  50. MiddelWare operator()(std::vector<Expression> const& listt)const {
  51. MiddelWare md;
  52. md.listt=listt;
  53. return md;
  54. };
  55. MiddelWare operator()(std::string const& str)const{
  56. MiddelWare md;
  57. md.str=str;
  58. return md;
  59. };
  60. MiddelWare operator()(int const& integerr)const {MiddelWare md; md.integerr=integerr; return md;};
  61. MiddelWare operator()(bool const& booll)const {MiddelWare md; md.booll=booll; return md;};
  62. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement