bool Templateiser::ifCallback ( const std::string &key ) { if (key == "public") return bz_getPublic(); return false; }
virtual void Event ( bz_EventData *eventData ) { { if (!eventData || !bz_getPublic()) return; if (eventData->eventType == bz_eGetWorldEvent) { bz_GetWorldEventData_V1 *data = (bz_GetWorldEventData_V1*)eventData; mapFile = data->worldFile.c_str(); if (!mapFile.size()) mapFile = "Random"; } else { if (eventData->eventType == bz_eListServerUpdateEvent) { bz_ListServerUpdateEvent_V1 *data = (bz_ListServerUpdateEvent_V1*)eventData; const char *c = strrchr(data->address.c_str(),':'); if (!c) port = "5154"; else port = c+1; std::string params = "action=add&"; getPushHeader(params); buildHTMLPlayerList(params); buildStateHash(params); bz_addURLJob(url.c_str(),NULL,params.c_str()); } else if (eventData->eventType == bz_ePlayerPartEvent) { bz_PlayerJoinPartEventData_V1 *data = (bz_PlayerJoinPartEventData_V1*)eventData; std::string params = "action=part"; getPushHeader(params); if (data->playerID) // we use -1 for the parted player, then skip them in the player list. this way we always get all player data on a part buildHTMLPlayer(params,data->playerID,-1); buildHTMLPlayerList(params, data->playerID); bz_addURLJob(url.c_str(),NULL,params.c_str()); } } } }