Skip to main content

nil_payload/response/
military.rs

1// Copyright (C) Call of Nil contributors
2// SPDX-License-Identifier: AGPL-3.0-only
3
4use derive_more::{Deref, DerefMut, Display, From, Into};
5use nil_core::continent::coord::Coord;
6use nil_core::military::army::Army;
7use nil_core::military::maneuver::{Maneuver, ManeuverId};
8use nil_core::ruler::Ruler;
9use serde::{Deserialize, Serialize};
10use std::collections::HashSet;
11
12#[cfg(feature = "axum")]
13use nil_payload_macros::IntoJsonResponse;
14
15#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
16#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
17#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
18#[cfg_attr(feature = "typescript", ts(export))]
19pub struct GetArmiesResponse(pub Vec<GetArmiesResponseItem>);
20
21#[derive(Clone, Debug, Deserialize, Serialize)]
22#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
23#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
24#[cfg_attr(feature = "typescript", ts(export))]
25pub struct GetArmiesResponseItem {
26  pub coord: Coord,
27  pub army: Army,
28}
29
30#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
31#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
32#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
33#[cfg_attr(feature = "typescript", ts(export))]
34pub struct GetArmyResponse(pub Army);
35
36#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
37#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
38#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
39#[cfg_attr(feature = "typescript", ts(export))]
40pub struct GetArmyOwnerResponse(pub Ruler);
41
42#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
43#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
44#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
45#[cfg_attr(feature = "typescript", ts(export))]
46pub struct GetIdleArmiesAtResponse(pub Vec<Army>);
47
48#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
49#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
50#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
51#[cfg_attr(feature = "typescript", ts(export))]
52pub struct GetIdleArmiesCoordsResponse(pub HashSet<Coord>);
53
54#[derive(Clone, Debug, Deref, DerefMut, From, Into, Deserialize, Serialize)]
55#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
56#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
57#[cfg_attr(feature = "typescript", ts(export))]
58pub struct GetManeuverResponse(pub Option<Maneuver>);
59
60#[derive(Clone, Copy, Debug, Deref, DerefMut, Display, From, Into, Deserialize, Serialize)]
61#[cfg_attr(feature = "axum", derive(IntoJsonResponse))]
62#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
63#[cfg_attr(feature = "typescript", ts(export))]
64pub struct RequestManeuverResponse(pub ManeuverId);