fix drones not moving and add stress level LPD priority
This commit is contained in:
parent
98aca5e8ed
commit
28eb898cb1
@ -34,7 +34,7 @@ const ListWidget = ({ widget }: ListWidgetProps) => {
|
||||
<div
|
||||
id={element.id}
|
||||
key={element.id}
|
||||
className="w-full min-h-[75px] border-2 border-black
|
||||
className="w-full min-h-[100px] border-2 border-black
|
||||
flex items-center justify-center"
|
||||
>
|
||||
<Element element={element}>
|
||||
|
@ -13,87 +13,8 @@ const Widget = ({ widget }: WidgetProps) => {
|
||||
return <VehicleWidget widget={widget} />;
|
||||
case 'list':
|
||||
return <ListWidget widget={widget} />;
|
||||
// case 'custom':
|
||||
// return (
|
||||
// <div
|
||||
// className="absolute"
|
||||
// style={{
|
||||
// height: widget.h,
|
||||
// width: widget.w,
|
||||
// top: widget.y,
|
||||
// left: widget.x,
|
||||
// ...widget.style,
|
||||
// }}
|
||||
// >
|
||||
// <img className="animate-ping" src={'src' in widget.elements[0] ? widget.elements[0].src : undefined} alt={"missileToOwnship"} style={{
|
||||
// height: widget.elements[0].h,
|
||||
// width: widget.elements[0].w,
|
||||
// top: widget.elements[0].yWidget,
|
||||
// left: widget.elements[0].xWidget,
|
||||
// ...widget.elements[0].style,
|
||||
// }}/>
|
||||
// <p
|
||||
// style={{
|
||||
// height: widget.elements[1].h,
|
||||
// width: widget.elements[1].w,
|
||||
// top: widget.elements[1].yWidget,
|
||||
// left: widget.elements[1].xWidget,
|
||||
// ...widget.elements[1].style,
|
||||
// }}
|
||||
// >
|
||||
// {'text' in widget.elements[1] && widget.elements[1].text}
|
||||
// </p>
|
||||
// </div>
|
||||
// );
|
||||
case 'custom':
|
||||
return (
|
||||
<div
|
||||
className="absolute"
|
||||
style={{
|
||||
height: widget.h,
|
||||
width: widget.w,
|
||||
top: widget.y,
|
||||
left: widget.x,
|
||||
...widget.style,
|
||||
}}
|
||||
>
|
||||
<p
|
||||
style={{
|
||||
height: widget.elements[0].h,
|
||||
width: widget.elements[0].w,
|
||||
top: widget.elements[0].yWidget,
|
||||
left: widget.elements[0].xWidget,
|
||||
...widget.elements[0].style,
|
||||
}}
|
||||
>
|
||||
{'text' in widget.elements[0] && widget.elements[0].text}
|
||||
</p>
|
||||
{widget.elements[1] ? <button
|
||||
style={{
|
||||
height: widget.elements[1].h,
|
||||
width: widget.elements[1].w,
|
||||
top: widget.elements[1].yWidget,
|
||||
left: widget.elements[1].xWidget,
|
||||
...widget.elements[1].style,
|
||||
}}
|
||||
>
|
||||
{'text' in widget.elements[1] && widget.elements[1].text}
|
||||
</button>
|
||||
: undefined }
|
||||
{widget.elements[2] ? <button
|
||||
style={{
|
||||
height: widget.elements[2].h,
|
||||
width: widget.elements[2].w,
|
||||
top: widget.elements[2].yWidget,
|
||||
left: widget.elements[2].xWidget,
|
||||
...widget.elements[2].style,
|
||||
}}
|
||||
>
|
||||
{'text' in widget.elements[2] && widget.elements[2].text}
|
||||
</button>
|
||||
: undefined }
|
||||
</div>
|
||||
);
|
||||
return <div>Custom Widget</div>;
|
||||
default:
|
||||
return <div>Unknown Widget</div>;
|
||||
}
|
||||
|
@ -154,10 +154,11 @@ export const drones: Widget[] = [
|
||||
|
||||
const initialShips: WidgetMap = {
|
||||
[ownship.id]: ownship,
|
||||
...drones.reduce((acc, drone) => {
|
||||
acc[drone.id] = drone;
|
||||
return acc;
|
||||
}, {} as WidgetMap),
|
||||
[drones[0].id]: drones[0],
|
||||
[drones[1].id]: drones[1],
|
||||
[drones[2].id]: drones[2],
|
||||
[drones[3].id]: drones[3],
|
||||
[drones[4].id]: drones[4],
|
||||
};
|
||||
|
||||
const initialLPD = {
|
||||
|
@ -1,34 +1,34 @@
|
||||
import type { Message } from "src/types/schema-types";
|
||||
import type { Message, MissileToOwnshipDetected, RequestApprovalToAttack } from "src/types/schema-types";
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import lpdHelper from "src/utils/lpdHelper";
|
||||
import DANGER_ICON from 'src/icons/danger.svg';
|
||||
import DRONE_ICON from 'src/icons/drone.svg';
|
||||
import type { Element } from "src/types/element";
|
||||
import { elements } from "./lowLPD";
|
||||
|
||||
export const MissileToOwnshipDetected_ID = uuid();
|
||||
export const acaFuelLow_ID = uuid();
|
||||
|
||||
// Functions to create widgets, elements, and sections for each message type
|
||||
const requestApprovalToAttackMessageHigh = () => {
|
||||
elements.push(
|
||||
const requestApprovalToAttackMessageHigh = (message: RequestApprovalToAttack) => {
|
||||
elements.push(
|
||||
lpdHelper.generateRequestApprovalElement(
|
||||
lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
30,
|
||||
30,
|
||||
0,
|
||||
0,
|
||||
message.priority,
|
||||
),
|
||||
message,
|
||||
lpdHelper.generateIconElement(
|
||||
lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
30,
|
||||
30,
|
||||
80,
|
||||
80,
|
||||
0,
|
||||
0,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
),
|
||||
DRONE_ICON,
|
||||
DANGER_ICON,
|
||||
),
|
||||
lpdHelper.generateButtonElement(
|
||||
lpdHelper.generateBaseElement(uuid(), 'visual', 30, 80, 0, 0),
|
||||
@ -38,199 +38,179 @@ const requestApprovalToAttackMessageHigh = () => {
|
||||
lpdHelper.generateBaseElement(uuid(), 'visual', 30, 80, 0, 0),
|
||||
'Approve',
|
||||
),
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [lpdHelper.generateListWidget(lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'request',
|
||||
100,
|
||||
100,
|
||||
200,
|
||||
200,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
false,
|
||||
1,
|
||||
elements,
|
||||
))],
|
||||
};
|
||||
}
|
||||
|
||||
const acaFuelLowMessageHigh = () => {
|
||||
elements.push(
|
||||
lpdHelper.generateTableElement(lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
50,
|
||||
200,
|
||||
0,
|
||||
0,
|
||||
),
|
||||
2,
|
||||
2,
|
||||
[['Fuel', 'Low'],['Altitude', 'Low']],
|
||||
)
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [lpdHelper.generateListWidget(lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'message',
|
||||
500,
|
||||
500,
|
||||
150,
|
||||
150,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
false,
|
||||
1,
|
||||
elements,
|
||||
))],
|
||||
};
|
||||
}
|
||||
|
||||
const missileToOwnshipDetectedMessageHigh = () => {
|
||||
elements.push(
|
||||
lpdHelper.generateIconElement(
|
||||
lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
80,
|
||||
80,
|
||||
0,
|
||||
0,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
false,
|
||||
false,
|
||||
{
|
||||
display: 'block',
|
||||
margin: 'auto',
|
||||
width: '50%',
|
||||
},
|
||||
),
|
||||
'DANGER_ICON',
|
||||
),
|
||||
lpdHelper.generateTextElement(
|
||||
lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
70,
|
||||
200,
|
||||
75,
|
||||
0,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
false,
|
||||
false,
|
||||
{
|
||||
background: 'black',
|
||||
color: '#02d118',
|
||||
fontWeight: 'bold',
|
||||
fontSize: '16px',
|
||||
},
|
||||
),
|
||||
'Low Stress: Missile to ownship detected! T-30 till impact',
|
||||
),
|
||||
);
|
||||
),
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [
|
||||
lpdHelper.generateListWidget(lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'highWarning',
|
||||
100,
|
||||
100,
|
||||
200,
|
||||
200,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
true,
|
||||
1,
|
||||
elements,
|
||||
lpdHelper.generateListWidget(
|
||||
lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'tinder',
|
||||
100,
|
||||
100,
|
||||
300,
|
||||
800,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
false,
|
||||
1,
|
||||
[...elements],
|
||||
),
|
||||
),
|
||||
)],
|
||||
],
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
const acaDefectMessageHigh = () => {
|
||||
const acaFuelLowMessageHigh = (message: Message) => {
|
||||
elements.push(
|
||||
lpdHelper.generateTableElement(lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
50,
|
||||
200,
|
||||
0,
|
||||
0,
|
||||
lpdHelper.generateTableElement(
|
||||
lpdHelper.generateBaseElement(uuid(), 'visual', 50, 200, 0, 0, message.priority),
|
||||
2,
|
||||
2,
|
||||
[
|
||||
['Fuel', 'Low'],
|
||||
['Altitude', 'Low'],
|
||||
],
|
||||
),
|
||||
2,
|
||||
2,
|
||||
[['Defect', 'Engine'], ['Altitude', 'Low']]),
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [lpdHelper.generateListWidget(lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'highWarning',
|
||||
500,
|
||||
500,
|
||||
20,
|
||||
200,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
true,
|
||||
1,
|
||||
elements,
|
||||
))],
|
||||
possibleWidgets: [
|
||||
lpdHelper.generateListWidget(
|
||||
lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'tinder',
|
||||
500,
|
||||
500,
|
||||
300,
|
||||
800,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
false,
|
||||
1,
|
||||
[...elements],
|
||||
),
|
||||
),
|
||||
],
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
const acaHeadingToBaseMessageHigh = () => {
|
||||
const missileToOwnshipDetectedMessageHigh = (message: MissileToOwnshipDetected) => {
|
||||
elements.push(
|
||||
lpdHelper.generateTextElement(lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
30,
|
||||
200,
|
||||
0,
|
||||
0,
|
||||
lpdHelper.generateMissileIncomingElement(
|
||||
lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
50,
|
||||
200,
|
||||
0,
|
||||
0,
|
||||
message.priority,
|
||||
),
|
||||
message,
|
||||
lpdHelper.generateIconElement(
|
||||
lpdHelper.generateBaseElement(uuid(), 'visual', 80, 80, 0, 0),
|
||||
DANGER_ICON,
|
||||
),
|
||||
),
|
||||
'Aircraft heading to base'),
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [lpdHelper.generateListWidget(lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'message',
|
||||
500,
|
||||
500,
|
||||
20,
|
||||
200,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
true,
|
||||
1,
|
||||
elements,
|
||||
))],
|
||||
possibleWidgets: [
|
||||
lpdHelper.generateListWidget(
|
||||
lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'tinder',
|
||||
100,
|
||||
100,
|
||||
300,
|
||||
800,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
true,
|
||||
1,
|
||||
[...elements],
|
||||
),
|
||||
),
|
||||
],
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
const acaDefectMessageHigh = (message: Message) => {
|
||||
elements.push(
|
||||
lpdHelper.generateTableElement(
|
||||
lpdHelper.generateBaseElement(uuid(), 'visual', 50, 200, 0, 0, message.priority),
|
||||
2,
|
||||
2,
|
||||
[
|
||||
['Defect', 'Engine'],
|
||||
['Altitude', 'Low'],
|
||||
],
|
||||
),
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [
|
||||
lpdHelper.generateListWidget(
|
||||
lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'highWarning',
|
||||
500,
|
||||
500,
|
||||
300,
|
||||
800,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
true,
|
||||
1,
|
||||
[...elements],
|
||||
),
|
||||
),
|
||||
],
|
||||
};
|
||||
};
|
||||
|
||||
const acaHeadingToBaseMessageHigh = (message: Message) => {
|
||||
elements.push(
|
||||
lpdHelper.generateTextElement(
|
||||
lpdHelper.generateBaseElement(uuid(), 'visual', 30, 200, 0, 0, message.priority),
|
||||
'Aircraft heading to base',
|
||||
),
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [
|
||||
lpdHelper.generateListWidget(
|
||||
lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'tinder',
|
||||
500,
|
||||
500,
|
||||
300,
|
||||
800,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
true,
|
||||
1,
|
||||
[...elements],
|
||||
),
|
||||
),
|
||||
],
|
||||
};
|
||||
};
|
||||
|
||||
// Map each message type to its corresponding LPD function
|
||||
const highLPDMessageFunctions = {
|
||||
'RequestApprovalToAttack': requestApprovalToAttackMessageHigh,
|
||||
'AcaFuelLow': acaFuelLowMessageHigh,
|
||||
'MissileToOwnshipDetected': missileToOwnshipDetectedMessageHigh,
|
||||
'AcaDefect': acaDefectMessageHigh,
|
||||
'AcaHeadingToBase': acaHeadingToBaseMessageHigh,
|
||||
const highLPDMessageFunctions: any = {
|
||||
RequestApprovalToAttack: requestApprovalToAttackMessageHigh,
|
||||
AcaFuelLow: acaFuelLowMessageHigh,
|
||||
MissileToOwnshipDetected: missileToOwnshipDetectedMessageHigh,
|
||||
AcaDefect: acaDefectMessageHigh,
|
||||
AcaHeadingToBase: acaHeadingToBaseMessageHigh,
|
||||
};
|
||||
|
||||
const highLPD = (message: Message) => {
|
||||
return highLPDMessageFunctions[message.kind]();
|
||||
}
|
||||
return highLPDMessageFunctions[message.kind](message);
|
||||
};
|
||||
|
||||
export default highLPD;
|
@ -1,35 +1,36 @@
|
||||
import type { Message } from "src/types/schema-types";
|
||||
import lpdHelper from "src/utils/lpdHelper";
|
||||
import type { Message, MissileToOwnshipDetected, RequestApprovalToAttack } from 'src/types/schema-types';
|
||||
import lpdHelper from 'src/utils/lpdHelper';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import { l } from "node_modules/vite/dist/node/types.d-aGj9QkWt";
|
||||
import type { Element } from "src/types/element";
|
||||
import type { Element } from 'src/types/element';
|
||||
import DANGER_ICON from 'src/icons/danger.svg';
|
||||
import DRONE_ICON from 'src/icons/drone.svg';
|
||||
|
||||
export const MissileToOwnshipDetected_ID = uuid();
|
||||
export const acaFuelLow_ID = uuid();
|
||||
export const elements: Element[] = [];
|
||||
|
||||
// Functions to create widgets, elements, and sections for each message type
|
||||
const requestApprovalToAttackMessageLow = () => {
|
||||
elements.push(
|
||||
const requestApprovalToAttackMessageLow = (message: RequestApprovalToAttack) => {
|
||||
elements.push(
|
||||
lpdHelper.generateRequestApprovalElement(
|
||||
lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
30,
|
||||
30,
|
||||
0,
|
||||
0,
|
||||
message.priority,
|
||||
),
|
||||
message,
|
||||
lpdHelper.generateIconElement(
|
||||
lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
30,
|
||||
30,
|
||||
80,
|
||||
80,
|
||||
0,
|
||||
0,
|
||||
true,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
),
|
||||
DRONE_ICON,
|
||||
DANGER_ICON,
|
||||
),
|
||||
lpdHelper.generateButtonElement(
|
||||
lpdHelper.generateBaseElement(uuid(), 'visual', 30, 80, 0, 0),
|
||||
@ -39,201 +40,179 @@ const requestApprovalToAttackMessageLow = () => {
|
||||
lpdHelper.generateBaseElement(uuid(), 'visual', 30, 80, 0, 0),
|
||||
'Approve',
|
||||
),
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [lpdHelper.generateListWidget(lpdHelper.generateBaseWidget(
|
||||
uuid(),
|
||||
'request',
|
||||
100,
|
||||
100,
|
||||
200,
|
||||
200,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
false,
|
||||
1,
|
||||
elements,
|
||||
))],
|
||||
};
|
||||
}
|
||||
|
||||
const acaFuelLowMessageLow = () => {
|
||||
elements.push(
|
||||
lpdHelper.generateTableElement(lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
50,
|
||||
200,
|
||||
0,
|
||||
0,
|
||||
),
|
||||
2,
|
||||
2,
|
||||
[['Fuel', 'Low'],['Altitude', 'Low']],
|
||||
)
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [lpdHelper.generateListWidget(lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'message',
|
||||
500,
|
||||
500,
|
||||
150,
|
||||
150,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
false,
|
||||
1,
|
||||
elements,
|
||||
))],
|
||||
};
|
||||
}
|
||||
|
||||
const missileToOwnshipDetectedMessageLow = () => {
|
||||
elements.push(
|
||||
lpdHelper.generateIconElement(
|
||||
lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
80,
|
||||
80,
|
||||
0,
|
||||
0,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
false,
|
||||
false,
|
||||
{
|
||||
display: 'block',
|
||||
margin: 'auto',
|
||||
width: '50%',
|
||||
},
|
||||
),
|
||||
'DANGER_ICON',
|
||||
),
|
||||
lpdHelper.generateTextElement(
|
||||
lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
70,
|
||||
200,
|
||||
75,
|
||||
0,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
false,
|
||||
false,
|
||||
{
|
||||
background: 'black',
|
||||
color: '#02d118',
|
||||
fontWeight: 'bold',
|
||||
fontSize: '16px',
|
||||
},
|
||||
),
|
||||
'Low Stress: Missile to ownship detected! T-30 till impact',
|
||||
),
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [
|
||||
lpdHelper.generateListWidget(lpdHelper.generateBaseWidget(
|
||||
),
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [
|
||||
lpdHelper.generateListWidget(
|
||||
lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'highWarning',
|
||||
'tinder',
|
||||
100,
|
||||
100,
|
||||
200,
|
||||
200,
|
||||
300,
|
||||
800,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
false,
|
||||
1,
|
||||
[...elements],
|
||||
),
|
||||
),
|
||||
],
|
||||
};
|
||||
};
|
||||
|
||||
const acaFuelLowMessageLow = (message: Message) => {
|
||||
elements.push(
|
||||
lpdHelper.generateTableElement(
|
||||
lpdHelper.generateBaseElement(uuid(), 'visual', 50, 200, 0, 0, message.priority),
|
||||
2,
|
||||
2,
|
||||
[
|
||||
['Fuel', 'Low'],
|
||||
['Altitude', 'Low'],
|
||||
],
|
||||
),
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [
|
||||
lpdHelper.generateListWidget(
|
||||
lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'tinder',
|
||||
500,
|
||||
500,
|
||||
300,
|
||||
800,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
false,
|
||||
1,
|
||||
[...elements],
|
||||
),
|
||||
),
|
||||
],
|
||||
};
|
||||
};
|
||||
|
||||
const missileToOwnshipDetectedMessageLow = (message: MissileToOwnshipDetected) => {
|
||||
elements.push(
|
||||
lpdHelper.generateMissileIncomingElement(
|
||||
lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
50,
|
||||
200,
|
||||
0,
|
||||
0,
|
||||
message.priority,
|
||||
),
|
||||
message,
|
||||
lpdHelper.generateIconElement(
|
||||
lpdHelper.generateBaseElement(uuid(), 'visual', 80, 80, 0, 0),
|
||||
DANGER_ICON,
|
||||
),
|
||||
),
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [
|
||||
lpdHelper.generateListWidget(
|
||||
lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'tinder',
|
||||
100,
|
||||
100,
|
||||
300,
|
||||
800,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
true,
|
||||
1,
|
||||
elements,
|
||||
[...elements],
|
||||
),
|
||||
)
|
||||
]
|
||||
};
|
||||
),
|
||||
],
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
const acaDefectMessageLow = () => {
|
||||
elements.push(
|
||||
lpdHelper.generateTableElement(lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
50,
|
||||
200,
|
||||
0,
|
||||
0,
|
||||
),
|
||||
2,
|
||||
2,
|
||||
[['Defect', 'Engine'], ['Altitude', 'Low']]),
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [lpdHelper.generateListWidget(lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'highWarning',
|
||||
500,
|
||||
500,
|
||||
20,
|
||||
200,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
true,
|
||||
1,
|
||||
elements,
|
||||
))],
|
||||
};
|
||||
}
|
||||
|
||||
const acaHeadingToBaseMessageLow = () => {
|
||||
elements.push(
|
||||
lpdHelper.generateTextElement(lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
30,
|
||||
200,
|
||||
0,
|
||||
0,
|
||||
const acaDefectMessageLow = (message: Message) => {
|
||||
elements.push(
|
||||
lpdHelper.generateTableElement(
|
||||
lpdHelper.generateBaseElement(uuid(), 'visual', 50, 200, 0, 0, message.priority),
|
||||
2,
|
||||
2,
|
||||
[
|
||||
['Defect', 'Engine'],
|
||||
['Altitude', 'Low'],
|
||||
],
|
||||
),
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [
|
||||
lpdHelper.generateListWidget(
|
||||
lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'tinder',
|
||||
500,
|
||||
500,
|
||||
300,
|
||||
800,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
true,
|
||||
1,
|
||||
[...elements],
|
||||
),
|
||||
'Aircraft heading to base'),
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [lpdHelper.generateListWidget(lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'message',
|
||||
500,
|
||||
500,
|
||||
20,
|
||||
200,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
true,
|
||||
1,
|
||||
elements,
|
||||
))],
|
||||
};
|
||||
}
|
||||
),
|
||||
],
|
||||
};
|
||||
};
|
||||
|
||||
const acaHeadingToBaseMessageLow = (message: Message) => {
|
||||
elements.push(
|
||||
lpdHelper.generateTextElement(
|
||||
lpdHelper.generateBaseElement(uuid(), 'visual', 30, 200, 0, 0, message.priority),
|
||||
'Aircraft heading to base',
|
||||
),
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [
|
||||
lpdHelper.generateListWidget(
|
||||
lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'tinder',
|
||||
500,
|
||||
500,
|
||||
300,
|
||||
800,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
true,
|
||||
1,
|
||||
[...elements],
|
||||
),
|
||||
),
|
||||
],
|
||||
};
|
||||
};
|
||||
|
||||
// Map each message type to its corresponding LPD function
|
||||
const lowLPDMessageFunctions: any = {
|
||||
'RequestApprovalToAttack': requestApprovalToAttackMessageLow,
|
||||
'AcaFuelLow': acaFuelLowMessageLow,
|
||||
'AcaDefect': acaDefectMessageLow,
|
||||
'AcaHeadingToBase': acaHeadingToBaseMessageLow,
|
||||
'MissileToOwnshipDetected': missileToOwnshipDetectedMessageLow,
|
||||
}
|
||||
RequestApprovalToAttack: requestApprovalToAttackMessageLow,
|
||||
AcaFuelLow: acaFuelLowMessageLow,
|
||||
AcaDefect: acaDefectMessageLow,
|
||||
AcaHeadingToBase: acaHeadingToBaseMessageLow,
|
||||
MissileToOwnshipDetected: missileToOwnshipDetectedMessageLow,
|
||||
};
|
||||
|
||||
const lowLPD = (message: Message) => {
|
||||
return lowLPDMessageFunctions[message.kind]();
|
||||
return lowLPDMessageFunctions[message.kind](message);
|
||||
};
|
||||
|
||||
export default lowLPD;
|
@ -1,35 +1,34 @@
|
||||
import type { Message } from "src/types/schema-types";
|
||||
import type { Message, MissileToOwnshipDetected, RequestApprovalToAttack } from "src/types/schema-types";
|
||||
import lpdHelper from "src/utils/lpdHelper";
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import DANGER_ICON from 'src/icons/danger.svg';
|
||||
import DRONE_ICON from 'src/icons/drone.svg';
|
||||
import { elements } from "./lowLPD";
|
||||
|
||||
import type { Element } from "src/types/element";
|
||||
|
||||
export const MissileToOwnshipDetected_ID = uuid();
|
||||
export const acaFuelLow_ID = uuid();
|
||||
import { elements } from './lowLPD';
|
||||
|
||||
// Functions to create widgets, elements, and sections for each message type
|
||||
const requestApprovalToAttackMessageMedium = () => {
|
||||
elements.push(
|
||||
const requestApprovalToAttackMessageMedium = (message: RequestApprovalToAttack) => {
|
||||
elements.push(
|
||||
lpdHelper.generateRequestApprovalElement(
|
||||
lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
30,
|
||||
30,
|
||||
0,
|
||||
0,
|
||||
message.priority,
|
||||
),
|
||||
message,
|
||||
lpdHelper.generateIconElement(
|
||||
lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
30,
|
||||
30,
|
||||
80,
|
||||
80,
|
||||
0,
|
||||
0,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
),
|
||||
DRONE_ICON,
|
||||
DANGER_ICON,
|
||||
),
|
||||
lpdHelper.generateButtonElement(
|
||||
lpdHelper.generateBaseElement(uuid(), 'visual', 30, 80, 0, 0),
|
||||
@ -39,198 +38,179 @@ const requestApprovalToAttackMessageMedium = () => {
|
||||
lpdHelper.generateBaseElement(uuid(), 'visual', 30, 80, 0, 0),
|
||||
'Approve',
|
||||
),
|
||||
);
|
||||
),
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [lpdHelper.generateListWidget(lpdHelper.generateBaseWidget(
|
||||
sections: [],
|
||||
possibleWidgets: [
|
||||
lpdHelper.generateListWidget(
|
||||
lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'request',
|
||||
'tinder',
|
||||
100,
|
||||
100,
|
||||
200,
|
||||
200,
|
||||
300,
|
||||
800,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
false,
|
||||
1,
|
||||
elements,
|
||||
))],
|
||||
[...elements],
|
||||
),
|
||||
),
|
||||
],
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
const acaFuelLowMessageMedium = () => {
|
||||
const acaFuelLowMessageMedium = (message: Message) => {
|
||||
elements.push(
|
||||
lpdHelper.generateTableElement(lpdHelper.generateBaseElement(
|
||||
lpdHelper.generateTableElement(
|
||||
lpdHelper.generateBaseElement(uuid(), 'visual', 50, 200, 0, 0, message.priority),
|
||||
2,
|
||||
2,
|
||||
[
|
||||
['Fuel', 'Low'],
|
||||
['Altitude', 'Low'],
|
||||
],
|
||||
),
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [
|
||||
lpdHelper.generateListWidget(
|
||||
lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'tinder',
|
||||
500,
|
||||
500,
|
||||
300,
|
||||
800,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
false,
|
||||
1,
|
||||
[...elements],
|
||||
),
|
||||
),
|
||||
],
|
||||
};
|
||||
};
|
||||
|
||||
const missileToOwnshipDetectedMessageMedium = (message: MissileToOwnshipDetected) => {
|
||||
elements.push(
|
||||
lpdHelper.generateMissileIncomingElement(
|
||||
lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
50,
|
||||
200,
|
||||
0,
|
||||
0,
|
||||
),
|
||||
2,
|
||||
2,
|
||||
[['Fuel', 'Low'],['Altitude', 'Low']],
|
||||
));
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [lpdHelper.generateListWidget(lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'message',
|
||||
500,
|
||||
500,
|
||||
150,
|
||||
150,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
false,
|
||||
1,
|
||||
elements,
|
||||
))],
|
||||
};
|
||||
}
|
||||
|
||||
const missileToOwnshipDetectedMessageMedium = () => {
|
||||
elements.push(
|
||||
lpdHelper.generateIconElement(
|
||||
lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
80,
|
||||
80,
|
||||
0,
|
||||
0,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
false,
|
||||
false,
|
||||
{
|
||||
display: 'block',
|
||||
margin: 'auto',
|
||||
width: '50%',
|
||||
},
|
||||
message.priority,
|
||||
),
|
||||
'DANGER_ICON',
|
||||
),
|
||||
lpdHelper.generateTextElement(
|
||||
lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
70,
|
||||
200,
|
||||
75,
|
||||
0,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
false,
|
||||
false,
|
||||
{
|
||||
background: 'black',
|
||||
color: '#02d118',
|
||||
fontWeight: 'bold',
|
||||
fontSize: '16px',
|
||||
},
|
||||
message,
|
||||
lpdHelper.generateIconElement(
|
||||
lpdHelper.generateBaseElement(uuid(), 'visual', 80, 80, 0, 0),
|
||||
DANGER_ICON,
|
||||
),
|
||||
'Low Stress: Missile to ownship detected! T-30 till impact',
|
||||
),
|
||||
);
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [
|
||||
lpdHelper.generateListWidget(lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'highWarning',
|
||||
100,
|
||||
100,
|
||||
200,
|
||||
200,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
true,
|
||||
1,
|
||||
elements,
|
||||
)),
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
const acaDefectMessageMedium = () => {
|
||||
elements.push(
|
||||
|
||||
lpdHelper.generateTableElement(lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
50,
|
||||
200,
|
||||
0,
|
||||
0,
|
||||
lpdHelper.generateListWidget(
|
||||
lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'tinder',
|
||||
100,
|
||||
100,
|
||||
300,
|
||||
800,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
true,
|
||||
1,
|
||||
[...elements],
|
||||
),
|
||||
),
|
||||
],
|
||||
};
|
||||
};
|
||||
|
||||
const acaDefectMessageMedium = (message: Message) => {
|
||||
elements.push(
|
||||
lpdHelper.generateTableElement(
|
||||
lpdHelper.generateBaseElement(uuid(), 'visual', 50, 200, 0, 0, message.priority),
|
||||
2,
|
||||
2,
|
||||
[['Defect', 'Engine'], ['Altitude', 'Low']]),
|
||||
[
|
||||
['Defect', 'Engine'],
|
||||
['Altitude', 'Low'],
|
||||
],
|
||||
),
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [lpdHelper.generateListWidget(lpdHelper.generateBaseWidget(
|
||||
sections: [],
|
||||
possibleWidgets: [
|
||||
lpdHelper.generateListWidget(
|
||||
lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'highWarning',
|
||||
'tinder',
|
||||
500,
|
||||
500,
|
||||
20,
|
||||
200,
|
||||
300,
|
||||
800,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
true,
|
||||
1,
|
||||
elements,
|
||||
))],
|
||||
[...elements],
|
||||
),
|
||||
),
|
||||
],
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
const acaHeadingToBaseMessageMedium = () => {
|
||||
const acaHeadingToBaseMessageMedium = (message: Message) => {
|
||||
elements.push(
|
||||
lpdHelper.generateTextElement(lpdHelper.generateBaseElement(
|
||||
uuid(),
|
||||
'visual',
|
||||
30,
|
||||
200,
|
||||
0,
|
||||
0,
|
||||
lpdHelper.generateTextElement(
|
||||
lpdHelper.generateBaseElement(uuid(), 'visual', 30, 200, 0, 0, message.priority),
|
||||
'Aircraft heading to base',
|
||||
),
|
||||
'Aircraft heading to base'),);
|
||||
);
|
||||
return {
|
||||
sections: [],
|
||||
possibleWidgets: [lpdHelper.generateListWidget(lpdHelper.generateBaseWidget(
|
||||
sections: [],
|
||||
possibleWidgets: [
|
||||
lpdHelper.generateListWidget(
|
||||
lpdHelper.generateBaseWidget(
|
||||
'list',
|
||||
'message',
|
||||
'tinder',
|
||||
500,
|
||||
500,
|
||||
20,
|
||||
200,
|
||||
300,
|
||||
800,
|
||||
'/pearce-screen',
|
||||
false,
|
||||
true,
|
||||
1,
|
||||
elements,
|
||||
))],
|
||||
[...elements],
|
||||
),
|
||||
),
|
||||
],
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
// Map each message type to its corresponding LPD function
|
||||
const mediumLPDMessageFunctions: any = {
|
||||
'RequestApprovalToAttack': requestApprovalToAttackMessageMedium,
|
||||
'AcaFuelLow': acaFuelLowMessageMedium,
|
||||
'AcaDefect': acaDefectMessageMedium,
|
||||
'AcaHeadingToBase': acaHeadingToBaseMessageMedium,
|
||||
'MissileToOwnshipDetected': missileToOwnshipDetectedMessageMedium,
|
||||
}
|
||||
RequestApprovalToAttack: requestApprovalToAttackMessageMedium,
|
||||
AcaFuelLow: acaFuelLowMessageMedium,
|
||||
AcaDefect: acaDefectMessageMedium,
|
||||
AcaHeadingToBase: acaHeadingToBaseMessageMedium,
|
||||
MissileToOwnshipDetected: missileToOwnshipDetectedMessageMedium,
|
||||
};
|
||||
|
||||
const mediumLPD = (message: Message) => {
|
||||
return mediumLPDMessageFunctions[message.kind]();
|
||||
return mediumLPDMessageFunctions[message.kind](message);
|
||||
};
|
||||
|
||||
export default mediumLPD;
|
@ -28,11 +28,11 @@ export type InitialMinimapState = {
|
||||
const initialState: InitialMinimapState = {
|
||||
visualComplexity: 0,
|
||||
audioComplexity: 0,
|
||||
ownship,
|
||||
drones,
|
||||
ownship: null,
|
||||
drones: [],
|
||||
messages: [],
|
||||
// Initial sections, widgets, and elements
|
||||
...selector(),
|
||||
widgets: {},
|
||||
sections: [],
|
||||
};
|
||||
|
||||
export const minimapSlice = createSlice({
|
||||
|
@ -5,6 +5,7 @@ import type * as Widget from "src/types/widget";
|
||||
import type { Properties } from "csstype";
|
||||
import type { Modality } from "src/types/modality";
|
||||
import type { Screen, Section, SectionType } from "src/types/support-types";
|
||||
import type { MissileToOwnshipDetected, RequestApprovalToAttack } from "src/types/schema-types";
|
||||
|
||||
// Functions to create sections, widgets, and elements
|
||||
const generateSection = (
|
||||
@ -108,6 +109,8 @@ const generateBaseElement = (
|
||||
w: number,
|
||||
xWidget: number,
|
||||
yWidget: number,
|
||||
priority?: number,
|
||||
widgetId?: string,
|
||||
collapsed?: boolean,
|
||||
expirationInterval?: number,
|
||||
expiration?: string,
|
||||
@ -122,6 +125,8 @@ const generateBaseElement = (
|
||||
w,
|
||||
xWidget,
|
||||
yWidget,
|
||||
widgetId,
|
||||
priority,
|
||||
collapsed,
|
||||
expirationInterval,
|
||||
expiration,
|
||||
@ -197,6 +202,31 @@ const generateAudioElement = (
|
||||
});
|
||||
|
||||
// Generate complex elements
|
||||
const generateMissileIncomingElement = (
|
||||
baseElement: Element.BaseElement,
|
||||
message: MissileToOwnshipDetected,
|
||||
icon: Element.IconElement,
|
||||
): Element.MissileIncomingElement => ({
|
||||
...baseElement,
|
||||
type: 'missile-incoming',
|
||||
message,
|
||||
icon,
|
||||
});
|
||||
|
||||
const generateRequestApprovalElement = (
|
||||
baseElement: Element.BaseElement,
|
||||
message: RequestApprovalToAttack,
|
||||
icon: Element.IconElement,
|
||||
leftButton: Element.ButtonElement,
|
||||
rightButton: Element.ButtonElement,
|
||||
): Element.RequestApprovalElement => ({
|
||||
...baseElement,
|
||||
type: 'request-approval',
|
||||
message,
|
||||
icon,
|
||||
leftButton,
|
||||
rightButton,
|
||||
});
|
||||
|
||||
const lpdHelper = {
|
||||
generateBaseWidget,
|
||||
@ -212,6 +242,8 @@ const lpdHelper = {
|
||||
generateTextElement,
|
||||
generateImageElement,
|
||||
generateAudioElement,
|
||||
generateMissileIncomingElement,
|
||||
generateRequestApprovalElement,
|
||||
};
|
||||
|
||||
export default lpdHelper;
|
@ -1 +1 @@
|
||||
Subproject commit e92d57ab4226c46e97bdd5164f8121db67caf808
|
||||
Subproject commit ce12c3c5617c1dd30124481e795b6791daa7f3b0
|
Loading…
Reference in New Issue
Block a user