{Object.keys(widgets).map((widgetId) => (
))}
diff --git a/src/redux/slices/minimapSlice.ts b/src/redux/slices/minimapSlice.ts
index e374987..4800704 100644
--- a/src/redux/slices/minimapSlice.ts
+++ b/src/redux/slices/minimapSlice.ts
@@ -66,17 +66,22 @@ export const minimapSlice = createSlice({
},
updateShipPosition: {
- prepare(shipId: string, x: number, y: number) {
+ prepare(shipId: string, x: number, y: number, rotation: number) {
return {
- payload: { shipId, x, y },
+ payload: { shipId, x, y, rotation },
};
},
reducer: (
state,
- action: PayloadAction<{ shipId: string; x: number; y: number }>,
+ action: PayloadAction<{
+ shipId: string;
+ x: number;
+ y: number;
+ rotation: number;
+ }>,
) => {
- const { shipId, x, y } = action.payload;
+ const { shipId, x, y, rotation } = action.payload;
const ship = state.widgets[shipId];
// check if ship exists
@@ -95,6 +100,7 @@ export const minimapSlice = createSlice({
...ship,
x,
y,
+ rotation,
};
},
},
diff --git a/src/types/widget.ts b/src/types/widget.ts
index a9cefde..285f519 100644
--- a/src/types/widget.ts
+++ b/src/types/widget.ts
@@ -38,7 +38,8 @@ export type VehicleWidget = BaseWidget & {
type: 'vehicle';
// this corresponds to the id in the schema-types defined by the world-sim team
vehicleId: number;
- // additonal properties...
+ speed: number;
+ rotation: number; // rad
};
export type CustomWidget = BaseWidget & {
diff --git a/src/ui/Gaze.tsx b/src/ui/Gaze.tsx
index d2bb9bb..2ec8e20 100644
--- a/src/ui/Gaze.tsx
+++ b/src/ui/Gaze.tsx
@@ -15,7 +15,7 @@ const Gaze = ({ mousePosition }: GazeProps) => {
return (
({
type: 'icon',
@@ -33,24 +28,29 @@ const createDroneWidget = (
w: number,
h: number,
vehicleId: number,
- id: string,
-): VehicleWidget => ({
- elements: [createDroneElement(id)],
- id,
- sectionType: 'free',
- type: 'vehicle',
- screen: '/minimap',
- vehicleId,
+): VehicleWidget => {
+ const id = uuid();
+ return {
+ elements: [createDroneElement(id)],
+ id,
+ sectionType: 'free',
+ type: 'vehicle',
+ screen: '/minimap',
+ vehicleId,
- x,
- y,
- w,
- h,
+ x,
+ y,
+ w,
+ h,
- canOverlap: false,
- useElementLocation: false,
- maxAmount: 10,
-});
+ speed: Math.random() * 0.5 + 0.25,
+ rotation: Math.random() * Math.PI,
+
+ canOverlap: false,
+ useElementLocation: false,
+ maxAmount: 10,
+ };
+};
const ownshipElement: IconElement = {
type: 'icon',
@@ -59,23 +59,26 @@ const ownshipElement: IconElement = {
src: OWNSHIP_LOGO,
tag: 'ownship',
- widgetId: uuid1,
+ widgetId: ownshipUuid,
- h: 50,
- w: 50,
+ h: 56,
+ w: 56,
xWidget: 0,
yWidget: 0,
};
export const ownship: VehicleWidget = {
- id: uuid1,
+ id: ownshipUuid,
vehicleId: 0,
x: 400,
y: 950,
- w: 50,
- h: 50,
+ w: 56,
+ h: 56,
+
+ speed: 1.5,
+ rotation: 0.2 * Math.PI, // 36deg
screen: '/minimap',
sectionType: 'free',
@@ -87,13 +90,14 @@ export const ownship: VehicleWidget = {
maxAmount: 10,
};
-const drone1 = createDroneWidget(500, 200, 50, 50, 1, uuid2);
-const drone2 = createDroneWidget(1500, 550, 50, 50, 2, uuid3);
-const drone3 = createDroneWidget(1500, 350, 50, 50, 3, uuid4);
-const drone4 = createDroneWidget(200, 900, 50, 50, 4, uuid5);
-const drone5 = createDroneWidget(1150, 750, 50, 50, 5, uuid6);
+const drone1 = createDroneWidget(500, 300, 80, 80, 1);
+const drone2 = createDroneWidget(1500, 550, 80, 80, 2);
+const drone3 = createDroneWidget(1500, 350, 80, 80, 3);
+const drone4 = createDroneWidget(200, 900, 80, 80, 4);
+const drone5 = createDroneWidget(1150, 750, 80, 80, 5);
+const drone6 = createDroneWidget(750, 400, 80, 80, 6);
-export const drones = [drone1, drone2, drone3, drone4, drone5];
+export const drones = [drone1, drone2, drone3, drone4, drone5, drone6];
export const initialShips: WidgetMap = {
[ownship.id]: ownship,
@@ -102,4 +106,5 @@ export const initialShips: WidgetMap = {
[drone3.id]: drone3,
[drone4.id]: drone4,
[drone5.id]: drone5,
+ [drone6.id]: drone6,
};
diff --git a/vite.config.ts b/vite.config.ts
index 6011100..7c649b1 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -14,9 +14,9 @@ export default defineConfig({
overlay: false,
}),
],
- server: {
- open: true,
- },
+ //server: {
+ // open: true,
+ //},
test: {
globals: true,
environment: 'jsdom',