configs/
ads_settings.rs

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}