diff --git a/src/core/include/datatypes.h b/src/core/include/datatypes.h index 52314c42..26c5a084 100644 --- a/src/core/include/datatypes.h +++ b/src/core/include/datatypes.h @@ -44,6 +44,8 @@ namespace DataIndex { activePath, isLeader, operateAs, + shotsScatter, + shotsIntensity, lastIndex, endOfData = 255 }; diff --git a/src/core/include/unit.h b/src/core/include/unit.h index 60749f69..058990db 100644 --- a/src/core/include/unit.h +++ b/src/core/include/unit.h @@ -101,6 +101,8 @@ public: virtual void setActivePath(list newValue); virtual void setIsLeader(bool newValue) { updateValue(isLeader, newValue, DataIndex::isLeader); } virtual void setOperateAs(unsigned char newValue) { updateValue(operateAs, newValue, DataIndex::operateAs); } + virtual void setShotsScatter(unsigned char newValue) { updateValue(shotsScatter, newValue, DataIndex::shotsScatter); } + virtual void setShotsIntensity(unsigned char newValue) { updateValue(shotsIntensity, newValue, DataIndex::shotsIntensity); } /********** Getters **********/ virtual string getCategory() { return category; }; @@ -142,6 +144,8 @@ public: virtual list getActivePath() { return activePath; } virtual bool getIsLeader() { return isLeader; } virtual unsigned char getOperateAs() { return operateAs; } + virtual unsigned char getShotsScatter() { return shotsScatter; } + virtual unsigned char getShotsIntensity() { return shotsIntensity; } protected: unsigned int ID; @@ -186,6 +190,8 @@ protected: bool isLeader = false; unsigned char operateAs = 2; Coords activeDestination = Coords(NULL); + unsigned char shotsScatter = 2; + unsigned char shotsIntensity = 2; /********** Other **********/ unsigned int taskCheckCounter = 0; diff --git a/src/core/src/scheduler.cpp b/src/core/src/scheduler.cpp index 8fba5691..a915ae6b 100644 --- a/src/core/src/scheduler.cpp +++ b/src/core/src/scheduler.cpp @@ -616,6 +616,24 @@ void Scheduler::handleRequest(string key, json::value value, string username, js log(username + " tasked unit " + unit->getName() + " to land at point", true); } + else if (key.compare("setShotsScatter") == 0) + { + unsigned int ID = value[L"ID"].as_integer(); + unitsManager->acquireControl(ID); + Unit* unit = unitsManager->getGroupLeader(ID); + unsigned char shotsScatter = value[L"shotsScatter"].as_number().to_uint32(); + unit->setShotsScatter(shotsScatter); + log(username + " set unit " + unit->getName() + " shots scatter to " + to_string(shotsScatter), true); + } + else if (key.compare("setShotsIntensity") == 0) + { + unsigned int ID = value[L"ID"].as_integer(); + unitsManager->acquireControl(ID); + Unit* unit = unitsManager->getGroupLeader(ID); + unsigned char shotsIntensity = value[L"shotsIntensity"].as_number().to_uint32(); + unit->setShotsIntensity(shotsIntensity); + log(username + " set unit " + unit->getName() + " shots intensity to " + to_string(shotsIntensity), true); + } else if (key.compare("setCommandModeOptions") == 0) { setCommandModeOptions(value); diff --git a/src/core/src/unit.cpp b/src/core/src/unit.cpp index 2afc51c5..acaaa55f 100644 --- a/src/core/src/unit.cpp +++ b/src/core/src/unit.cpp @@ -192,6 +192,8 @@ void Unit::refreshLeaderData(unsigned long long time) { case DataIndex::generalSettings: updateValue(generalSettings, leader->generalSettings, datumIndex); break; case DataIndex::activePath: updateValue(activePath, leader->activePath, datumIndex); break; case DataIndex::operateAs: updateValue(operateAs, leader->operateAs, datumIndex); break; + case DataIndex::shotsScatter: updateValue(shotsScatter, leader->shotsScatter, datumIndex); break; + case DataIndex::shotsIntensity: updateValue(shotsIntensity, leader->shotsIntensity, datumIndex); break; } } } @@ -272,6 +274,8 @@ void Unit::getData(stringstream& ss, unsigned long long time) case DataIndex::activePath: appendList(ss, datumIndex, activePath); break; case DataIndex::isLeader: appendNumeric(ss, datumIndex, isLeader); break; case DataIndex::operateAs: appendNumeric(ss, datumIndex, operateAs); break; + case DataIndex::shotsScatter: appendNumeric(ss, datumIndex, shotsScatter); break; + case DataIndex::shotsIntensity: appendNumeric(ss, datumIndex, shotsIntensity); break; } } }