mirror of
https://github.com/Pax1601/DCSOlympus.git
synced 2025-10-29 16:56:34 +00:00
Completed transition to weapons handler
This commit is contained in:
parent
6d434e48a1
commit
80ed675cbc
@ -664,28 +664,28 @@ export class UnitsManager {
|
||||
spawnUnits(category: string, units: any, coalition: string = "blue", immediate: boolean = true, airbase: string = "") {
|
||||
var spawnPoints = 0;
|
||||
if (category === "Aircraft") {
|
||||
if (airbase == "" && getMissionHandler().getRemainingSetupTime() < 0 && getMissionHandler().getCommandModeOptions().commandMode !== GAME_MASTER) {
|
||||
if (airbase == "" && getMissionHandler().getCommandModeOptions().restrictSpawns && getMissionHandler().getRemainingSetupTime() < 0 && getMissionHandler().getCommandModeOptions().commandMode !== GAME_MASTER) {
|
||||
getInfoPopup().setText("Aircrafts can be air spawned during the SETUP phase only");
|
||||
return false;
|
||||
}
|
||||
spawnPoints = units.reduce((points: number, unit: any) => {return points + aircraftDatabase.getSpawnPointsByName(unit.unitType)}, 0);
|
||||
spawnAircrafts(units, coalition, airbase, immediate, spawnPoints);
|
||||
} else if (category === "Helicopter") {
|
||||
if (airbase == "" && getMissionHandler().getRemainingSetupTime() < 0 && getMissionHandler().getCommandModeOptions().commandMode !== GAME_MASTER) {
|
||||
if (airbase == "" && getMissionHandler().getCommandModeOptions().restrictSpawns && getMissionHandler().getRemainingSetupTime() < 0 && getMissionHandler().getCommandModeOptions().commandMode !== GAME_MASTER) {
|
||||
getInfoPopup().setText("Helicopters can be air spawned during the SETUP phase only");
|
||||
return false;
|
||||
}
|
||||
spawnPoints = units.reduce((points: number, unit: any) => {return points + helicopterDatabase.getSpawnPointsByName(unit.unitType)}, 0);
|
||||
spawnHelicopters(units, coalition, airbase, immediate, spawnPoints);
|
||||
} else if (category === "GroundUnit") {
|
||||
if (getMissionHandler().getRemainingSetupTime() < 0 && getMissionHandler().getCommandModeOptions().commandMode !== GAME_MASTER) {
|
||||
if (getMissionHandler().getCommandModeOptions().restrictSpawns && getMissionHandler().getRemainingSetupTime() < 0 && getMissionHandler().getCommandModeOptions().commandMode !== GAME_MASTER) {
|
||||
getInfoPopup().setText("Ground units can be spawned during the SETUP phase only");
|
||||
return false;
|
||||
}
|
||||
spawnPoints = units.reduce((points: number, unit: any) => {return points + groundUnitDatabase.getSpawnPointsByName(unit.unitType)}, 0);
|
||||
spawnGroundUnits(units, coalition, immediate, spawnPoints);
|
||||
} else if (category === "NavyUnit") {
|
||||
if (getMissionHandler().getRemainingSetupTime() < 0 && getMissionHandler().getCommandModeOptions().commandMode !== GAME_MASTER) {
|
||||
if (getMissionHandler().getCommandModeOptions().restrictSpawns && getMissionHandler().getRemainingSetupTime() < 0 && getMissionHandler().getCommandModeOptions().commandMode !== GAME_MASTER) {
|
||||
getInfoPopup().setText("Navy units can be spawned during the SETUP phase only");
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -704,17 +704,18 @@ function Olympus.setUnitsData(arg, time)
|
||||
-- Get the targets detected by the group controller
|
||||
local group = unit:getGroup()
|
||||
local controller = group:getController()
|
||||
local controllerTargets = controller:getDetectedTargets()
|
||||
|
||||
local contacts = {}
|
||||
for i, target in ipairs(controllerTargets) do
|
||||
for det, enum in pairs(Controller.Detection) do
|
||||
if target.object ~= nil then
|
||||
for det, enum in pairs(Controller.Detection) do
|
||||
local controllerTargets = unit:getController():getDetectedTargets(enum)
|
||||
for i, target in ipairs(controllerTargets) do
|
||||
if target.object ~= nil and target.visible then
|
||||
target["detectionMethod"] = det
|
||||
contacts[#contacts + 1] = target
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
table["country"] = unit:getCountry()
|
||||
table["unitName"] = unit:getName()
|
||||
table["groupName"] = group:getName()
|
||||
@ -756,7 +757,7 @@ function Olympus.setWeaponsData(arg, time)
|
||||
local startIndex = Olympus.weaponIndex
|
||||
local endIndex = startIndex + Olympus.weaponStep
|
||||
local index = 0
|
||||
for ID, unit in pairs(Olympus.weapons) do
|
||||
for ID, weapon in pairs(Olympus.weapons) do
|
||||
index = index + 1
|
||||
if index > startIndex then
|
||||
if weapon ~= nil then
|
||||
@ -817,7 +818,7 @@ function Olympus.setWeaponsData(arg, time)
|
||||
Olympus.weaponsData["weapons"] = weapons
|
||||
|
||||
Olympus.OlympusDLL.setWeaponsData()
|
||||
return time + 0.05
|
||||
return time + 0.25
|
||||
end
|
||||
|
||||
function Olympus.setMissionData(arg, time)
|
||||
@ -875,7 +876,7 @@ function Olympus.initializeUnits()
|
||||
Olympus.units[unit["id_"]] = unit
|
||||
end
|
||||
end
|
||||
Olympus.debug("Olympus units table initialized", 2)
|
||||
Olympus.notify("Olympus units table initialized", 2)
|
||||
else
|
||||
Olympus.debug("MIST DBs not ready", 2)
|
||||
timer.scheduleFunction(Olympus.initializeUnits, {}, timer.getTime() + 1)
|
||||
@ -946,7 +947,6 @@ end
|
||||
------------------------------------------------------------------------------------------------------
|
||||
-- Olympus startup script
|
||||
------------------------------------------------------------------------------------------------------
|
||||
|
||||
local OlympusName = 'Olympus ' .. version .. ' C++ module';
|
||||
Olympus.DLLsloaded = Olympus.loadDLLs()
|
||||
if Olympus.DLLsloaded then
|
||||
@ -962,7 +962,6 @@ if handler ~= nil then
|
||||
end
|
||||
handler = {}
|
||||
function handler:onEvent(event)
|
||||
Olympus.debug(Olympus.serializeTable(event), 2)
|
||||
if event.id == 1 then
|
||||
local weapon = event.weapon
|
||||
Olympus.weapons[weapon["id_"]] = weapon
|
||||
@ -977,6 +976,7 @@ world.addEventHandler(handler)
|
||||
|
||||
-- Start the periodic functions
|
||||
timer.scheduleFunction(Olympus.setUnitsData, {}, timer.getTime() + 0.05)
|
||||
timer.scheduleFunction(Olympus.setWeaponsData, {}, timer.getTime() + 0.25)
|
||||
timer.scheduleFunction(Olympus.setMissionData, {}, timer.getTime() + 1)
|
||||
|
||||
-- Initialize the ME units
|
||||
|
||||
@ -115,7 +115,7 @@ extern "C" DllExport int coreUnitsData(lua_State * L)
|
||||
return(0);
|
||||
}
|
||||
|
||||
extern "C" DllExport int coreWeaponssData(lua_State * L)
|
||||
extern "C" DllExport int coreWeaponsData(lua_State * L)
|
||||
{
|
||||
if (!initialized)
|
||||
return (0);
|
||||
|
||||
@ -72,7 +72,7 @@ void Unit::update(json::value json, double dt)
|
||||
if (json.has_boolean_field(L"isAlive"))
|
||||
setAlive(json[L"isAlive"].as_bool());
|
||||
|
||||
if (json.has_object_field(L"isHuman"))
|
||||
if (json.has_boolean_field(L"isHuman"))
|
||||
setHuman(json[L"isHuman"].as_bool());
|
||||
|
||||
if (json.has_number_field(L"fuel")) {
|
||||
@ -109,7 +109,7 @@ void Unit::update(json::value json, double dt)
|
||||
contactItem.ID = contactJson[L"object"][L"id_"].as_number().to_uint32();
|
||||
|
||||
string detectionMethod = to_string(contactJson[L"detectionMethod"]);
|
||||
if (detectionMethod.compare("VISUAL") == 0) contactItem.detectionMethod = 1;
|
||||
if (detectionMethod.compare("VISUAL") == 0) contactItem.detectionMethod = 1;
|
||||
else if (detectionMethod.compare("OPTIC") == 0) contactItem.detectionMethod = 2;
|
||||
else if (detectionMethod.compare("RADAR") == 0) contactItem.detectionMethod = 4;
|
||||
else if (detectionMethod.compare("IRST") == 0) contactItem.detectionMethod = 8;
|
||||
|
||||
@ -110,10 +110,6 @@ void UnitsManager::update(json::value& json, double dt)
|
||||
units[ID] = dynamic_cast<Unit*>(new GroundUnit(p.second, ID));
|
||||
else if (category.compare("NavyUnit") == 0)
|
||||
units[ID] = dynamic_cast<Unit*>(new NavyUnit(p.second, ID));
|
||||
else if (category.compare("Missile") == 0)
|
||||
units[ID] = dynamic_cast<Unit*>(new Missile(p.second, ID));
|
||||
else if (category.compare("Bomb") == 0)
|
||||
units[ID] = dynamic_cast<Unit*>(new Bomb(p.second, ID));
|
||||
|
||||
/* Initialize the unit if creation was successfull */
|
||||
if (units.count(ID) != 0) {
|
||||
|
||||
@ -69,21 +69,21 @@ static int onSimulationStart(lua_State* L)
|
||||
goto error;
|
||||
}
|
||||
|
||||
coreUnitsData = (f_coreFrame)GetProcAddress(hGetProcIDDLL, "coreUnitsData");
|
||||
coreUnitsData = (f_coreUnitsData)GetProcAddress(hGetProcIDDLL, "coreUnitsData");
|
||||
if (!coreUnitsData)
|
||||
{
|
||||
LogError(L, "Error getting coreUnitsData ProcAddress from DLL");
|
||||
goto error;
|
||||
}
|
||||
|
||||
coreWeaponsData = (f_coreFrame)GetProcAddress(hGetProcIDDLL, "coreWeaponsData");
|
||||
coreWeaponsData = (f_coreWeaponsData)GetProcAddress(hGetProcIDDLL, "coreWeaponsData");
|
||||
if (!coreWeaponsData)
|
||||
{
|
||||
LogError(L, "Error getting coreWeaponsData ProcAddress from DLL");
|
||||
goto error;
|
||||
}
|
||||
|
||||
coreMissionData = (f_coreFrame)GetProcAddress(hGetProcIDDLL, "coreMissionData");
|
||||
coreMissionData = (f_coreMissionData)GetProcAddress(hGetProcIDDLL, "coreMissionData");
|
||||
if (!coreMissionData)
|
||||
{
|
||||
LogError(L, "Error getting coreMissionData ProcAddress from DLL");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user