MCPcopy Create free account
hub / github.com/BZFlag-Dev/bzflag / handle

Method handle

plugins/keepaway/keepaway.cpp:328–402  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

326}
327
328bool KeepAwayMapHandler::handle(bz_ApiString object, bz_CustomMapObjectInfo* data) {
329 if (object != "KEEPAWAY" || !data) {
330 return false;
331 }
332
333 // parse all the chunks
334 for (unsigned int i = 0; i < data->data.size(); i++) {
335 std::string line = data->data.get(i).c_str();
336
337 bz_APIStringList* nubs = bz_newStringList();
338 nubs->tokenize(line.c_str(), " ", 0, true);
339
340 if (nubs->size() > 0) {
341 std::string key = bz_toupper(nubs->get(0).c_str());
342
343 if (key == "TEAMPLAY" && nubs->size() > 0) {
344 keepaway.teamPlay = true;
345
346 }
347 else if (key == "AUTOTIME" && nubs->size() > 0) {
348 keepaway.autoTimeOn = true;
349
350 }
351 else if (key == "AUTOTIME" && nubs->size() > 2) {
352 double temp1 = (double) atof(nubs->get(1).c_str());
353 double temp2 = (double) atof(nubs->get(2).c_str());
354 if (temp1 >= 1 && temp1 <= 99) { // if parameter out of range, keeps default
355 keepaway.timeMult = temp1 / 100;
356 }
357 if (temp2 >= 1 && temp2 <= 99) { // if parameter out of range, keeps default
358 keepaway.timeMultMin = temp2 / 100;
359 }
360 keepaway.autoTimeOn = true;
361 }
362 else if (key == "NOSOUND" && nubs->size() > 0) {
363 keepaway.soundEnabled = false;
364
365 }
366 else if (key == "NOFLAGRESET" && nubs->size() > 0) {
367 keepaway.flagResetEnabled = false;
368
369 }
370 else if (key == "HOLDTIME" && nubs->size() > 1) {
371 double temp = (double) atof(nubs->get(1).c_str());
372 if (temp >= 1 && temp <= 7200) { // if parameter out of range, keeps default
373 keepaway.TTH = temp;
374 }
375 }
376 else if (key == "KEEPAWAYFLAGS" && nubs->size() > 1) {
377 for (unsigned int j = 1; j < nubs->size(); j++) {
378 std::string flag = nubs->get(j).c_str();
379 if (convertFlag(flag) != "") { // must be valid flag type, reject nub otherwise
380 keepaway.flagsList.push_back(flag);
381 }
382 }
383 }
384 else if (key == "FORCEDFLAGS" && nubs->size() > 0) {
385 keepaway.forcedFlags = true;

Callers

nothing calls this directly

Calls 15

bz_toupperFunction · 0.85
convertFlagFunction · 0.85
bz_deleteStringListFunction · 0.85
bz_setMaxWaitTimeFunction · 0.85
bz_sendTextMessageFunction · 0.85
bz_sendTextMessagefFunction · 0.85
bz_freePlayerRecordFunction · 0.85
bz_removePlayerFlagFunction · 0.85
getFlagFunction · 0.85
bz_getCurrentTimeFunction · 0.85
c_strMethod · 0.80
tokenizeMethod · 0.80

Tested by

no test coverage detected