feat(alarm state): alarm state command is now working in DCS

This commit is contained in:
MarcoJayUsai
2025-03-21 16:21:35 +01:00
parent 2a00bab149
commit f1fcabe7f7
11 changed files with 119 additions and 45 deletions

View File

@@ -114,6 +114,19 @@ json::value Scheduler::getCommandModeOptions() {
return json;
}
/* Convert from string to alarm state enum value */
ALARM_STATE::ALARM_STATEs stringToAlarmState(const std::wstring& state) {
if (state == L"red") {
return ALARM_STATE::RED;
} else if (state == L"green") {
return ALARM_STATE::GREEN;
} else if (state == L"auto") {
return ALARM_STATE::AUTO;
} else {
throw invalid_argument("Stato non valido: " + std::string(state.begin(), state.end()));
}
}
bool Scheduler::checkSpawnPoints(int spawnPoints, string coalition)
{
if (!getRestrictSpawns()) return true;
@@ -402,6 +415,20 @@ void Scheduler::handleRequest(string key, json::value value, string username, js
log(username + " set unit " + unit->getUnitName() + "(" + unit->getName() + ") ROE to " + to_string(ROE), true);
}
}
else if (key.compare("commandAlarmState") == 0)
{
unsigned int ID = value[L"ID"].as_integer();
unitsManager->acquireControl(ID);
Unit* unit = unitsManager->getGroupLeader(ID);
if (unit != nullptr) {
unsigned char alarmState = value[L"alarmState"].as_integer();
log(username + " is trying to set unit " + unit->getUnitName() + "(" + unit->getName() + ") alarm state to " + to_string(alarmState), true);
unit->commandAlarmState(alarmState);
log(username + " set unit " + unit->getUnitName() + "(" + unit->getName() + ") alarm state to " + to_string(alarmState), true);
} else {
log("Error while setting commandAlarmState. Unit does not exist.");
}
}
/************************/
else if (key.compare("setReactionToThreat") == 0)
{