bool Templateiser::ifCallback ( const std::string &key )
{
  if (key == "public")
    return bz_getPublic();

  return false;
}
Exemple #2
0
	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());
				}
			}
		}

	}