1use essences::buffs::BuffTemplateId;
2use essences::bundles::BundleId;
3use schema_loader::{
4 asset_unit_spine_skin, bird_variant_link_id_schema, buff_link_id_schema, bundle_id_schema,
5 id_schema,
6};
7use schemars::JsonSchema;
8
9use serde::{Deserialize, Serialize};
10use tsify_next::Tsify;
11
12pub type BirdVariantId = uuid::Uuid;
13
14#[derive(Clone, Debug, Deserialize, Serialize, JsonSchema, Tsify)]
15pub struct BirdVariant {
16 #[schemars(title = "ID варианта птицы", schema_with = "id_schema")]
17 pub id: BirdVariantId,
18
19 #[schemars(title = "Путь к спайну птицы", schema_with = "asset_unit_spine_skin")]
20 pub spine_path: String,
21
22 #[schemars(title = "ID бандла награды", schema_with = "bundle_id_schema")]
23 pub bundle_id: BundleId,
24}
25
26#[derive(Clone, Debug, Deserialize, Serialize, JsonSchema, Tsify)]
27pub struct BirdAdVariantWeight {
28 #[schemars(
29 title = "ID варианта птицы",
30 schema_with = "bird_variant_link_id_schema"
31 )]
32 pub variant_id: BirdVariantId,
33
34 #[schemars(title = "Вес (частота выпадения)")]
35 pub weight: u64,
36}
37
38#[derive(Clone, Debug, Deserialize, Serialize, JsonSchema, Tsify)]
39pub struct BirdAdConfig {
40 #[schemars(title = "Максимальное количество просмотров рекламы птицы в день")]
41 pub daily_limit: u64,
42
43 #[schemars(title = "Кулдаун между появлениями птицы (секунды)")]
44 pub cooldown_sec: u64,
45
46 #[schemars(
47 title = "Короткий кулдаун после запроса показа птицы, пока клиент не подтвердил показ (секунды)"
48 )]
49 pub post_show_cooldown_sec: u64,
50
51 #[schemars(title = "Длительность полёта птицы (секунды), используется Unity")]
52 pub flight_duration_sec: u64,
53
54 #[schemars(title = "Варианты птиц с весами")]
55 pub variants: Vec<BirdAdVariantWeight>,
56}
57
58#[derive(Clone, Debug, Deserialize, Serialize, JsonSchema, Tsify)]
59pub struct AdSpeedupConfig {
60 #[schemars(title = "На сколько реклама ускоряет таймер (секунды)")]
61 pub speedup_seconds: u64,
62
63 #[schemars(title = "Кулдаун между просмотрами рекламы (секунды)")]
64 pub cooldown_sec: u64,
65
66 #[schemars(title = "Максимальное количество просмотров рекламы в день")]
67 pub daily_limit: u64,
68}
69
70#[derive(Clone, Debug, Deserialize, Serialize, JsonSchema, Tsify)]
71pub struct AdsSettings {
72 #[schemars(title = "Конфиг ускорения прокачки сундука за рекламу")]
73 pub chest_upgrade_speedup: AdSpeedupConfig,
74
75 #[schemars(title = "Конфиг ускорения прокачки таланта за рекламу")]
76 pub talent_upgrade_speedup: AdSpeedupConfig,
77
78 #[schemars(title = "Кулдаун на бесплатное открытие кейса способностей за рекламу в секундах")]
79 pub free_ability_case_cooldown_sec: u64,
80
81 #[schemars(title = "Максимальное количество просмотров рекламы для гачи способностей в день")]
82 pub skill_gacha_ad_daily_limit: u64,
83
84 #[schemars(title = "Количество роллов гачи способностей за один просмотр рекламы")]
85 pub skill_gacha_ad_rolls: u64,
86
87 #[schemars(title = "Максимальное количество просмотров рекламы для гачи петов в день")]
88 pub pet_gacha_ad_daily_limit: u64,
89
90 #[schemars(title = "Количество роллов гачи петов за один просмотр рекламы")]
91 pub pet_gacha_ad_rolls: u64,
92
93 #[schemars(title = "Максимальное количество просмотров рекламы для баффа AFK в день")]
94 pub afk_boost_ad_daily_limit: u64,
95
96 #[schemars(title = "Множитель AFK-награды за просмотр рекламы")]
97 pub afk_boost_multiplier: f64,
98
99 #[schemars(
100 title = "Максимальное количество просмотров рекламы для ежедневного бустера в день"
101 )]
102 pub daily_booster_ad_daily_limit: u64,
103
104 #[schemars(
105 title = "ID шаблона баффа ежедневного бустера (опыт и валюта)",
106 schema_with = "buff_link_id_schema"
107 )]
108 pub daily_booster_ad_buff_template_id: BuffTemplateId,
109
110 #[schemars(title = "Длительность баффа ежедневного бустера")]
111 pub daily_booster_ad_buff_duration: i64,
112
113 #[schemars(
114 title = "Максимальное количество просмотров рекламы для обновления оппонента арены в день"
115 )]
116 pub arena_refresh_ad_daily_limit: u64,
117
118 #[schemars(title = "Максимальное количество просмотров рекламы для рейда подземелья в день")]
119 pub dungeon_raid_ad_daily_limit: u64,
120
121 #[schemars(title = "Конфиг рекламной птицы в кампании")]
122 pub bird_ad: BirdAdConfig,
123}