DCSOlympus/client/demo.js
2023-03-07 12:59:24 +01:00

93 lines
2.3 KiB
JavaScript

const DEMO_UNIT_DATA = {
AI: true,
name: "F-5E",
unitName: "Olympus 1-1",
groupName: "Group 1",
alive: true,
category: "Aircraft",
flightData: {
latitude: 37.2,
longitude: -115.8,
altitude: 2000,
heading: 0.5,
speed: 300
},
missionData: {
fuel: 0.5,
flags: {human: false},
ammo: [],
targets: [],
hasTask: true,
coalition: "blue"
},
formationData: {
formation: "Echelon",
isLeader: false,
isWingman: false,
leaderID: null,
wingmen: [],
wingmenIDs: []
},
taskData: {
currentTask: "Example task",
activePath: undefined,
targetSpeed: 400,
targetAltitude: 3000
},
optionsData: {
ROE: "None",
reactionToThreat: "None",
}
}
class DemoDataGenerator {
constructor(unitsNumber)
{
this.demoUnits = this.generateRandomUnitsDemoData(unitsNumber);
}
unitsRefresh(req, res) {
var ret = this.demoUnits;
res.send(JSON.stringify(ret));
}
unitsUpdate(req, res){
Object.keys(this.demoUnits.units).forEach((ID) => {
this.demoUnits.units[ID].flightData.heading += 0.05;
this.demoUnits.units[ID].flightData.latitude += 0.001 * Math.cos(this.demoUnits.units[ID].flightData.heading);
this.demoUnits.units[ID].flightData.longitude += 0.001 * Math.sin(this.demoUnits.units[ID].flightData.heading);
});
var ret = this.demoUnits;
res.send(JSON.stringify(ret));
};
logs(req, res){
var ret = {logs: {}};
res.send(JSON.stringify(ret));
};
airbases(req, res){
var ret = {airbases: {}};
res.send(JSON.stringify(ret));
};
bullseyes(req, res){
var ret = {bullseyes: {}};
res.send(JSON.stringify(ret));
};
generateRandomUnitsDemoData(unitsNumber)
{
var units = {};
for (let i = 0; i < unitsNumber; i++)
{
units[String(i)] = JSON.parse(JSON.stringify(DEMO_UNIT_DATA));
units[String(i)].flightData.latitude += (Math.random() - 0.5) * 0.3;
units[String(i)].flightData.longitude += (Math.random() - 0.5) * 0.3;
}
return {"units": units};
}
}
module.exports = DemoDataGenerator;