fix drones not moving and add stress level LPD priority

This commit is contained in:
polpol 2024-05-09 20:37:46 -07:00
parent 98aca5e8ed
commit 28eb898cb1
9 changed files with 526 additions and 633 deletions

View File

@ -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}>

View File

@ -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>;
}

View File

@ -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 = {

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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({

View File

@ -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