Skip to main content

nil_payload/request/
world.rs

1// Copyright (C) Call of Nil contributors
2// SPDX-License-Identifier: AGPL-3.0-only
3
4use bon::Builder;
5use nil_core::world::WorldOptions;
6use nil_core::world::config::WorldId;
7use nil_crypto::password::Password;
8use nil_payload_macros::FromWorld;
9use nil_server_types::round::RoundDuration;
10use serde::{Deserialize, Serialize};
11use std::path::PathBuf;
12
13#[derive(Builder, Clone, Debug, Deserialize, Serialize)]
14#[serde(rename_all = "camelCase")]
15#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
16#[cfg_attr(feature = "typescript", ts(export, optional_fields = nullable))]
17pub struct CreateRemoteWorldRequest {
18  pub options: WorldOptions,
19  #[serde(default)]
20  #[builder(into)]
21  pub description: Option<String>,
22  #[serde(default)]
23  #[builder(into)]
24  pub password: Option<Password>,
25  #[serde(default)]
26  #[builder(into)]
27  pub round_duration: Option<RoundDuration>,
28}
29
30#[derive(Builder, Clone, Debug, Deserialize, Serialize, FromWorld)]
31#[serde(rename_all = "camelCase")]
32#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
33#[cfg_attr(feature = "typescript", ts(export))]
34pub struct DeleteRemoteWorldRequest {
35  #[builder(start_fn, into)]
36  pub world: WorldId,
37}
38
39#[derive(Builder, Clone, Debug, Deserialize, Serialize, FromWorld)]
40#[serde(rename_all = "camelCase")]
41#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
42#[cfg_attr(feature = "typescript", ts(export))]
43pub struct GetRemoteWorldRequest {
44  #[builder(start_fn, into)]
45  pub world: WorldId,
46}
47
48#[derive(Builder, Clone, Debug, Deserialize, Serialize, FromWorld)]
49#[serde(rename_all = "camelCase")]
50#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
51#[cfg_attr(feature = "typescript", ts(export))]
52pub struct GetWorldBotsRequest {
53  #[builder(start_fn, into)]
54  pub world: WorldId,
55}
56
57#[derive(Builder, Clone, Debug, Deserialize, Serialize, FromWorld)]
58#[serde(rename_all = "camelCase")]
59#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
60#[cfg_attr(feature = "typescript", ts(export))]
61pub struct GetWorldConfigRequest {
62  #[builder(start_fn, into)]
63  pub world: WorldId,
64}
65
66#[derive(Builder, Clone, Debug, Deserialize, Serialize, FromWorld)]
67#[serde(rename_all = "camelCase")]
68#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
69#[cfg_attr(feature = "typescript", ts(export))]
70pub struct GetWorldPersonnelRequest {
71  #[builder(start_fn, into)]
72  pub world: WorldId,
73}
74
75#[derive(Builder, Clone, Debug, Deserialize, Serialize, FromWorld)]
76#[serde(rename_all = "camelCase")]
77#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
78#[cfg_attr(feature = "typescript", ts(export))]
79pub struct GetWorldPlayersRequest {
80  #[builder(start_fn, into)]
81  pub world: WorldId,
82}
83
84#[derive(Builder, Clone, Debug, Deserialize, Serialize, FromWorld)]
85#[serde(rename_all = "camelCase")]
86#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
87#[cfg_attr(feature = "typescript", ts(export))]
88pub struct GetWorldPrecursorsRequest {
89  #[builder(start_fn, into)]
90  pub world: WorldId,
91}
92
93#[derive(Builder, Clone, Debug, Deserialize, Serialize, FromWorld)]
94#[serde(rename_all = "camelCase")]
95#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
96#[cfg_attr(feature = "typescript", ts(export))]
97pub struct GetWorldRulersRequest {
98  #[builder(start_fn, into)]
99  pub world: WorldId,
100}
101
102#[derive(Builder, Clone, Debug, Deserialize, Serialize, FromWorld)]
103#[serde(rename_all = "camelCase")]
104#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
105#[cfg_attr(feature = "typescript", ts(export))]
106pub struct GetWorldStatsRequest {
107  #[builder(start_fn, into)]
108  pub world: WorldId,
109}
110
111#[derive(Builder, Clone, Debug, Deserialize, Serialize, FromWorld)]
112#[serde(rename_all = "camelCase")]
113#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
114#[cfg_attr(feature = "typescript", ts(export))]
115pub struct LeaveRequest {
116  #[builder(start_fn, into)]
117  pub world: WorldId,
118}
119
120#[derive(Builder, Clone, Debug, Deserialize, Serialize)]
121#[serde(rename_all = "camelCase")]
122#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
123#[cfg_attr(feature = "typescript", ts(export))]
124pub struct SaveLocalWorldRequest {
125  #[builder(start_fn, into)]
126  pub world: WorldId,
127  #[builder(into)]
128  pub path: PathBuf,
129}