Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- GameState Interpreter:: operator()(GlobalMessage const& gM) const{
- GameState newState(state);
- DataPacket variable = getVariablesInvolved(gM.message);
- DataPacket cleanMessage = getCleanMessage(gM.message);
- MiddelWare mop = boost::apply_visitor(Visit_Expression(), newState.variables.get(variable.getData()));
- if(mop.integerr){
- newState.variables.set("GlobalMessage", Expression{cleanMessage.getData() + " " + std::to_string(mop.integerr)});
- }
- if(mop.str.length()>0){
- newState.variables.set("GlobalMessage", Expression{cleanMessage.getData() + " " + mop.str});
- }
- return newState;
- }
- GameState Interpreter:: operator()(MessageRule const& m) const{
- GameState newState(state);
- DataPacket variable = getVariablesInvolved(m.message.getData());
- DataPacket cleanMessage = getCleanMessage(m.message.getData());
- MiddelWare mop = boost::apply_visitor(Visit_Expression(), newState.variables.get(variable.getData()));
- for(Player player: m.recipents.getPlayers()){
- std::string name= player.name;
- std::vector<GamePlayer>::iterator it = std::find_if(newState.players.begin(), newState.players.end(), [&name](GamePlayer const& gPlayer){
- return gPlayer.name==name;
- });
- if(it != newState.players.end()){
- auto playerVarMap = boost::apply_visitor(Visit_Expression(), newState.perPlayer.get(it->name));
- playerVarMap.mapp.set("message", Expression{cleanMessage.getData()+ " " + mop.str});
- newState.perPlayer.set(it->name, playerVarMap.mapp);
- }
- std::vector<GameAudience>::iterator itA = std::find_if(newState.audience.begin(), newState.audience.end(), [&name](GameAudience const& gAudience){
- return gAudience.name == name;
- });
- if(itA != newState.audience.end()){
- auto audiVarMap = boost::apply_visitor(Visit_Expression(), newState.perAudience.get(itA->name));
- audiVarMap.mapp.set("message", Expression{cleanMessage.getData()+ " " + mop.str});
- newState.perAudience.set(itA->name, audiVarMap.mapp);
- }
- }
- return newState;
- }
- struct MiddelWare{
- MapWrapper<std::string, Expression> mapp;
- std::vector<Expression> listt;
- std::string str;
- int integerr;
- bool booll ;
- };
- struct Visit_Expression : public boost::static_visitor<MiddelWare> {
- MiddelWare operator()(MapWrapper<std::string, Expression> const& mapp)const{MiddelWare md; md.mapp=mapp; return md;};
- MiddelWare operator()(std::vector<Expression> const& listt)const {
- MiddelWare md;
- md.listt=listt;
- return md;
- };
- MiddelWare operator()(std::string const& str)const{
- MiddelWare md;
- md.str=str;
- return md;
- };
- MiddelWare operator()(int const& integerr)const {MiddelWare md; md.integerr=integerr; return md;};
- MiddelWare operator()(bool const& booll)const {MiddelWare md; md.booll=booll; return md;};
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement