essences/
gift.rs

1use strum_macros::{Display, EnumString};
2
3use crate::prelude::*;
4
5use crate::currency::CurrencyUnit;
6
7#[declare]
8pub type GiftId = Uuid;
9
10#[derive(
11    Clone,
12    Debug,
13    Serialize,
14    Deserialize,
15    PartialEq,
16    Eq,
17    Copy,
18    JsonSchema,
19    EnumString,
20    Display,
21    Tsify,
22)]
23#[tsify(namespace)]
24pub enum GiftType {
25    VassalGift,
26    FollowerGift,
27    GenericGift,
28}
29
30// Config gift
31#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, JsonSchema, Tsify)]
32pub struct GiftTemplate {
33    #[schemars(schema_with = "id_schema")]
34    pub id: Uuid,
35    #[schemars(title = "Тип подарка", description = "Тип подарка")]
36    pub gift_type: GiftType,
37    #[schemars(
38        title = "Цена подарка",
39        description = "Массив валют, которые нужны для отправки подарка"
40    )]
41    pub price: Vec<CurrencyUnit>,
42    #[schemars(
43        title = "Содержимое подарка",
44        description = "Массив валют, которые лежат в подарке"
45    )]
46    pub reward: Vec<CurrencyUnit>,
47    #[schemars(
48        title = "Лояльность за подарок",
49        description = "На сколько подарок увеличивает лояльность у сюзерена и вассала"
50    )]
51    pub loyalty: i64,
52}
53
54// State gift
55#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, CustomType, JsonSchema, Tsify)]
56pub struct Gift {
57    pub id: GiftId,
58    pub config_id: uuid::Uuid,
59    pub sender_id: uuid::Uuid,
60    pub receiver_id: uuid::Uuid,
61    pub claimed: bool,
62    pub reward: Vec<CurrencyUnit>,
63    pub loyalty: i64,
64}