essences/
gatings.rs

1use crate::prelude::*;
2
3// NOTE: when adding a new gated feature here (or to the nested
4// `NavBarNavigation` / `SideBarNavigation` / `AutoChestGatings` /
5// `CastleGating` structs below), also extend the
6// `feature_thresholds` array in
7// `overlord/backend/monolith/src/ws/connection.rs::complete_auth`.
8// That array drives the `feature_unlock_snapshot` analytics event;
9// without an entry there, your new feature won't appear in cohort
10// adoption funnels. There is no compile-time signal — this comment
11// is the only one. A reflective derivation would remove the footgun;
12// see the TODO at the emission site.
13#[derive(Clone, Default, Debug, Serialize, Deserialize, PartialEq, Eq, Tsify, JsonSchema)]
14pub struct Gatings {
15    #[schemars(title = "Гейтинги навбара")]
16    pub navbar_navigation: NavBarNavigation,
17    #[schemars(title = "Гейтинги сайдбара")]
18    pub sidebar_navigation: SideBarNavigation,
19    #[schemars(title = "Гейтинги авточеста")]
20    pub autochest: AutoChestGatings,
21    #[schemars(title = "Чаптер, на котором открывается кнопка афк наград")]
22    pub afk_rewards_button_unlock_chapter: i64,
23    #[schemars(title = "Чаптер, на котором открывается пати")]
24    pub party_unlock_chapter: i64,
25}
26
27#[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq, Eq, Tsify, JsonSchema)]
28pub struct NavBarNavigation {
29    #[schemars(title = "Чаптер, на котором открывается кнопка профиля")]
30    pub hero_button_unlock_chapter: i64,
31
32    #[schemars(title = "Чаптер, на котором открывается кнопка скилов")]
33    pub skills_button_unlock_chapter: i64,
34
35    #[schemars(title = "Чаптер, на котором открывается кнопка данжа")]
36    pub dungeon_button_unlock_chapter: i64,
37
38    #[schemars(title = "Чаптер, на котором открывается кнопка ведьмы")]
39    pub summon_button_unlock_chapter: i64,
40
41    #[schemars(title = "Чаптер, на котором открывается кнопка петов")]
42    pub pets_button_unlock_chapter: i64,
43
44    #[schemars(title = "Гейтинги замка")]
45    pub castle: CastleGating,
46}
47
48#[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq, Eq, Tsify, JsonSchema)]
49pub struct SideBarNavigation {
50    #[schemars(title = "Чаптер, на котором открывается кнопка квестов")]
51    pub quests_button_unlock_chapter: i64,
52
53    #[schemars(title = "Чаптер, на котором открывается кнопка арены")]
54    pub arena_button_unlock_chapter: i64,
55
56    #[schemars(title = "Чаптер, на котором открывается кнопка рейтингов")]
57    pub ratings_button_unlock_chapter: i64,
58
59    #[schemars(title = "Чаптер, на котором открывается кнопка почты")]
60    pub mail_button_unlock_chapter: i64,
61}
62
63#[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq, Eq, Tsify, JsonSchema)]
64pub struct AutoChestGatings {
65    #[schemars(title = "Чаптер, на котором открывается авточест")]
66    pub autochest_button_unlock_chapter: i64,
67
68    #[schemars(title = "Чаптер, на котором открывается фильтр по редкости")]
69    pub rarity_filter_unlock: i64,
70
71    #[schemars(title = "Чаптер, на котором открывается гарантированный стат")]
72    pub guaranteed_stat_unlock: i64,
73
74    #[schemars(title = "Чаптер, на котором открывается первый дополнительный стат")]
75    pub first_additional_stat_unlock: i64,
76
77    #[schemars(title = "Чаптер, на котором открывается второй дополнительный стат")]
78    pub second_additional_stat_unlock: i64,
79
80    #[schemars(title = "Чаптер, на котором открывается третий дополнительный стат")]
81    pub third_additional_stat_unlock: i64,
82}
83
84#[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq, Eq, Tsify, JsonSchema)]
85pub struct CastleGating {
86    #[schemars(title = "Чаптер, на котором открывается кнопка замка")]
87    pub castle_button_unlock_chapter: i64,
88
89    #[schemars(title = "Чаптер, на котором открывается дерево талантов")]
90    pub talent_tree_unlock_chapter: i64,
91
92    #[schemars(title = "Чаптер, на котором открывается статуя")]
93    pub statue_unlock_chapter: i64,
94}