configs/
fighting.rs

1use essences::{
2    bundles::BundleId,
3    currency::{CurrencyId, CurrencyUnit},
4    entity::Coordinates,
5};
6
7use schema_loader::{bundle_id_schema, currency_link_id_schema, id_schema, script_schema};
8use schemars::JsonSchema;
9
10use serde::{Deserialize, Serialize};
11use tsify_next::Tsify;
12
13#[derive(Clone, Debug, Deserialize, Serialize, JsonSchema, Tsify)]
14pub struct FightSettings {
15    #[schemars(
16        title = "Время ожидания перед стартом следующего боя в тиках",
17        description = "Это момент анимации перебежки персонажа между битвами"
18    )]
19    pub start_fight_delay_ticks_default: u64,
20
21    #[schemars(
22        title = "Время ожидания перед стартом уже начавшегося боя в случае победы",
23        description = "Это момент, когда враги выбегают на экран"
24    )]
25    pub prepare_fight_win_delay_ticks_default: u64,
26
27    #[schemars(
28        title = "Время ожидания перед стартом уже начавшегося боя в случае поражения",
29        description = "Это момент, когда враги выбегают на экран"
30    )]
31    pub prepare_fight_lose_delay_ticks_default: u64,
32
33    #[schemars(title = "Время ожидания перед окончанием боя")]
34    pub end_fight_delay_ticks_default: u64,
35
36    #[schemars(title = "Стартовые координаты игрока")]
37    pub player_start_position: Coordinates,
38
39    #[schemars(title = "Стартовые координаты союзника по пати")]
40    pub party_start_position: Coordinates,
41
42    #[schemars(
43        title = "Скрипт для вычисления скорректированной силы союзника по пати",
44        description = "Принимает PlayerCharacterState и PartyCharacterState, возвращает i64",
45        schema_with = "script_schema"
46    )]
47    pub power_adjust_script: String,
48
49    #[schemars(title = "Стартовые координаты врага в pvp")]
50    pub pvp_enemy_start_position: Coordinates,
51}
52
53#[derive(Clone, Debug, Deserialize, Serialize, JsonSchema, Tsify)]
54pub struct PvpSettings {
55    #[schemars(
56        title = "Максимальное количество оппонентов",
57        description = "Максимальное количество оппонентов для отображения на экране подбора игроков"
58    )]
59    pub max_matchmaking_opponents_count: i64,
60
61    #[schemars(title = "Дельта уровня пользователя для матчмейкинга")]
62    pub matchmaking_character_level_data: i64,
63}
64
65#[derive(Clone, Debug, Serialize, Deserialize, JsonSchema, Tsify)]
66pub struct ArenaLeague {
67    #[schemars(schema_with = "id_schema")]
68    pub id: uuid::Uuid,
69
70    #[schemars(title = "Название лиги")]
71    pub name: i18n::I18nString,
72
73    #[schemars(title = "Минимальный рейтинг")]
74    pub min_rating: i64,
75
76    #[schemars(title = "Максимальный рейтинг")]
77    pub max_rating: i64,
78}
79
80#[derive(Clone, Debug, Serialize, Deserialize, JsonSchema, Tsify)]
81pub struct ArenaSettings {
82    #[schemars(title = "Базовый рейтинг пользователя")]
83    pub base_rating: u64,
84
85    #[schemars(
86        title = "Скрипт для вычисления изменения рейтинга при победе",
87        schema_with = "script_schema"
88    )]
89    pub win_rating_increase_script: String,
90
91    #[schemars(
92        title = "Скрипт для вычисления изменения рейтинга при поражении",
93        schema_with = "script_schema"
94    )]
95    pub lose_rating_increase_script: String,
96
97    #[schemars(title = "Количество последних матчей на экране истории")]
98    pub matches_history_size: u64,
99
100    #[schemars(title = "Размер таблицы лидеров")]
101    pub leaderboard_size: u64,
102
103    #[schemars(
104        title = "Идентификатор валюты pvp токенов",
105        schema_with = "currency_link_id_schema"
106    )]
107    pub arena_tickets_currency_id: CurrencyId,
108
109    #[schemars(title = "Максимальная разница между рейтингами игроков для подбора")]
110    pub matchmaking_character_rating_delta: u64,
111
112    #[schemars(title = "Кулдаун pvp")]
113    pub pvp_cooldown_secs: u64,
114
115    #[schemars(title = "Количество звезд за победу")]
116    pub win_stars_increase: i64,
117
118    #[schemars(title = "Количество звезд за поражение")]
119    pub lose_stars_decrease: i64,
120
121    #[schemars(title = "Количество звезд для получения награды")]
122    pub stars_reward_threshold: i64,
123
124    #[schemars(
125        title = "ID бандла награды за звезды",
126        schema_with = "bundle_id_schema"
127    )]
128    pub stars_reward_bundle_id: BundleId,
129
130    #[schemars(
131        title = "Валюта для покупки аренных билетов",
132        schema_with = "currency_link_id_schema"
133    )]
134    pub arena_ticket_buy_currency_id: CurrencyId,
135
136    #[schemars(title = "Стоимость покупки аренных билетов")]
137    pub arena_ticket_price: CurrencyUnit,
138
139    #[schemars(title = "Количество дней жизни матчей в базе данных")]
140    pub arena_matches_ttl_days: u64,
141
142    #[schemars(title = "Максимальное увеличение рейтинга в рематче")]
143    pub rematch_max_rating_increase: i64,
144
145    #[schemars(title = "Максимальное уменьшение рейтинга в рематче")]
146    pub rematch_max_rating_decrease: i64,
147
148    #[schemars(title = "Максимальное количество выдач наград за звезды в день")]
149    pub daily_stars_claims_limit: i64,
150}