irelia_cli/in_game/
types.rs

1//! This module is full of auto generated JSON for in game events
2//!
3//! if anything fails to serialize this module probably needs to
4//! be updated to a newer version of the in-game API.
5
6use serde_derive::Deserialize;
7use serde_derive::Serialize;
8
9#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
10#[serde(rename_all = "camelCase")]
11pub struct AllGameData {
12    active_player: ActivePlayer,
13    all_players: Box<[AllPlayer]>,
14    events: Events,
15    game_data: GameData,
16}
17
18impl AllGameData {
19    #[must_use]
20    pub fn active_player(&self) -> &ActivePlayer {
21        &self.active_player
22    }
23    #[must_use]
24    pub fn all_players(&self) -> &[AllPlayer] {
25        &self.all_players
26    }
27    #[must_use]
28    pub fn events(&self) -> &Events {
29        &self.events
30    }
31    #[must_use]
32    pub fn game_data(&self) -> &GameData {
33        &self.game_data
34    }
35}
36
37#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
38#[serde(rename_all = "camelCase")]
39pub struct ActivePlayer {
40    abilities: Abilities,
41    champion_stats: ChampionStats,
42    current_gold: f64,
43    full_runes: FullRunes,
44    level: i64,
45    summoner_name: String,
46}
47
48impl ActivePlayer {
49    #[must_use]
50    pub fn abilities(&self) -> &Abilities {
51        &self.abilities
52    }
53    #[must_use]
54    pub fn champion_stats(&self) -> &ChampionStats {
55        &self.champion_stats
56    }
57    #[must_use]
58    pub fn current_gold(&self) -> f64 {
59        self.current_gold
60    }
61    #[must_use]
62    pub fn full_runes(&self) -> &FullRunes {
63        &self.full_runes
64    }
65    #[must_use]
66    pub fn level(&self) -> i64 {
67        self.level
68    }
69    #[must_use]
70    pub fn summoner_name(&self) -> &str {
71        &self.summoner_name
72    }
73}
74
75#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
76#[serde(rename_all = "PascalCase")]
77pub struct Abilities {
78    passive: Passive,
79    q: Ability,
80    w: Ability,
81    e: Ability,
82    r: Ability,
83}
84
85impl Abilities {
86    #[must_use]
87    pub fn passive(&self) -> &Passive {
88        &self.passive
89    }
90    #[must_use]
91    pub fn q(&self) -> &Ability {
92        &self.q
93    }
94    #[must_use]
95    pub fn w(&self) -> &Ability {
96        &self.w
97    }
98    #[must_use]
99    pub fn e(&self) -> &Ability {
100        &self.e
101    }
102    #[must_use]
103    pub fn r(&self) -> &Ability {
104        &self.r
105    }
106}
107
108#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
109#[serde(rename_all = "camelCase")]
110pub struct Passive {
111    display_name: String,
112    id: String,
113    raw_description: String,
114    raw_display_name: String,
115}
116
117impl Passive {
118    #[must_use]
119    pub fn display_name(&self) -> &str {
120        &self.display_name
121    }
122    #[must_use]
123    pub fn id(&self) -> &str {
124        &self.id
125    }
126    #[must_use]
127    pub fn raw_description(&self) -> &str {
128        &self.raw_description
129    }
130    #[must_use]
131    pub fn raw_display_name(&self) -> &str {
132        &self.raw_display_name
133    }
134}
135
136#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
137#[serde(rename_all = "camelCase")]
138pub struct Ability {
139    ability_level: i64,
140    display_name: String,
141    id: String,
142    raw_description: String,
143    raw_display_name: String,
144}
145
146impl Ability {
147    #[must_use]
148    pub fn ability_level(&self) -> i64 {
149        self.ability_level
150    }
151    #[must_use]
152    pub fn display_name(&self) -> &str {
153        &self.display_name
154    }
155    #[must_use]
156    pub fn id(&self) -> &str {
157        &self.id
158    }
159    #[must_use]
160    pub fn raw_description(&self) -> &str {
161        &self.raw_description
162    }
163    #[must_use]
164    pub fn raw_display_name(&self) -> &str {
165        &self.raw_display_name
166    }
167}
168
169#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
170#[serde(rename_all = "camelCase")]
171pub struct ChampionStats {
172    ability_power: f64,
173    armor: f64,
174    armor_penetration_flat: f64,
175    armor_penetration_percent: f64,
176    attack_damage: f64,
177    attack_range: f64,
178    attack_speed: f64,
179    bonus_armor_penetration_percent: f64,
180    bonus_magic_penetration_percent: f64,
181    cooldown_reduction: f64,
182    crit_chance: f64,
183    crit_damage: f64,
184    current_health: f64,
185    health_regen_rate: f64,
186    life_steal: f64,
187    magic_lethality: f64,
188    magic_penetration_flat: f64,
189    magic_penetration_percent: f64,
190    magic_resist: f64,
191    max_health: f64,
192    move_speed: f64,
193    physical_lethality: f64,
194    resource_max: f64,
195    resource_regen_rate: f64,
196    resource_type: String,
197    resource_value: f64,
198    spell_vamp: f64,
199    tenacity: f64,
200}
201
202impl ChampionStats {
203    #[must_use]
204    pub fn ability_power(&self) -> f64 {
205        self.ability_power
206    }
207    #[must_use]
208    pub fn armor(&self) -> f64 {
209        self.armor
210    }
211    #[must_use]
212    pub fn armor_penetration_flat(&self) -> f64 {
213        self.armor_penetration_flat
214    }
215    #[must_use]
216    pub fn armor_penetration_percent(&self) -> f64 {
217        self.armor_penetration_percent
218    }
219    #[must_use]
220    pub fn attack_damage(&self) -> f64 {
221        self.attack_damage
222    }
223    #[must_use]
224    pub fn attack_range(&self) -> f64 {
225        self.attack_range
226    }
227    #[must_use]
228    pub fn attack_speed(&self) -> f64 {
229        self.attack_speed
230    }
231    #[must_use]
232    pub fn bonus_armor_penetration_percent(&self) -> f64 {
233        self.bonus_armor_penetration_percent
234    }
235    #[must_use]
236    pub fn bonus_magic_penetration_percent(&self) -> f64 {
237        self.bonus_magic_penetration_percent
238    }
239    #[must_use]
240    pub fn cooldown_reduction(&self) -> f64 {
241        self.cooldown_reduction
242    }
243    #[must_use]
244    pub fn crit_chance(&self) -> f64 {
245        self.crit_chance
246    }
247    #[must_use]
248    pub fn crit_damage(&self) -> f64 {
249        self.crit_damage
250    }
251    #[must_use]
252    pub fn current_health(&self) -> f64 {
253        self.current_health
254    }
255    #[must_use]
256    pub fn health_regen_rate(&self) -> f64 {
257        self.health_regen_rate
258    }
259    #[must_use]
260    pub fn life_steal(&self) -> f64 {
261        self.life_steal
262    }
263    #[must_use]
264    pub fn magic_lethality(&self) -> f64 {
265        self.magic_lethality
266    }
267    #[must_use]
268    pub fn magic_penetration_flat(&self) -> f64 {
269        self.magic_penetration_flat
270    }
271    #[must_use]
272    pub fn magic_penetration_percent(&self) -> f64 {
273        self.magic_penetration_percent
274    }
275    #[must_use]
276    pub fn magic_resist(&self) -> f64 {
277        self.magic_resist
278    }
279    #[must_use]
280    pub fn max_health(&self) -> f64 {
281        self.max_health
282    }
283    #[must_use]
284    pub fn move_speed(&self) -> f64 {
285        self.move_speed
286    }
287    #[must_use]
288    pub fn physical_lethality(&self) -> f64 {
289        self.physical_lethality
290    }
291    #[must_use]
292    pub fn resource_max(&self) -> f64 {
293        self.resource_max
294    }
295    #[must_use]
296    pub fn resource_regen_rate(&self) -> f64 {
297        self.resource_regen_rate
298    }
299    #[must_use]
300    pub fn resource_type(&self) -> &str {
301        &self.resource_type
302    }
303    #[must_use]
304    pub fn resource_value(&self) -> f64 {
305        self.resource_value
306    }
307    #[must_use]
308    pub fn spell_vamp(&self) -> f64 {
309        self.spell_vamp
310    }
311    #[must_use]
312    pub fn tenacity(&self) -> f64 {
313        self.tenacity
314    }
315}
316
317#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
318#[serde(rename_all = "camelCase")]
319pub struct FullRunes {
320    keystone: Rune,
321    primary_rune_tree: Rune,
322    secondary_rune_tree: Rune,
323    general_runes: Box<[Rune]>,
324    stat_runes: Box<[StatRune]>,
325}
326
327impl FullRunes {
328    #[must_use]
329    pub fn keystone(&self) -> &Rune {
330        &self.keystone
331    }
332    #[must_use]
333    pub fn primary_rune_tree(&self) -> &Rune {
334        &self.primary_rune_tree
335    }
336    #[must_use]
337    pub fn secondary_rune_tree(&self) -> &Rune {
338        &self.secondary_rune_tree
339    }
340    #[must_use]
341    pub fn general_runes(&self) -> &[Rune] {
342        &self.general_runes
343    }
344    #[must_use]
345    pub fn stat_runes(&self) -> &[StatRune] {
346        &self.stat_runes
347    }
348}
349
350#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
351#[serde(rename_all = "camelCase")]
352pub struct Rune {
353    display_name: String,
354    id: i64,
355    raw_description: String,
356    raw_display_name: String,
357}
358
359impl Rune {
360    #[must_use]
361    pub fn display_name(&self) -> &str {
362        &self.display_name
363    }
364    #[must_use]
365    pub fn id(&self) -> i64 {
366        self.id
367    }
368    #[must_use]
369    pub fn raw_description(&self) -> &str {
370        &self.raw_description
371    }
372    #[must_use]
373    pub fn raw_display_name(&self) -> &str {
374        &self.raw_display_name
375    }
376}
377
378#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
379#[serde(rename_all = "camelCase")]
380pub struct StatRune {
381    id: i64,
382    raw_description: String,
383}
384
385impl StatRune {
386    #[must_use]
387    pub fn id(&self) -> i64 {
388        self.id
389    }
390    #[must_use]
391    pub fn raw_description(&self) -> &str {
392        &self.raw_description
393    }
394}
395
396#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
397#[serde(rename_all = "camelCase")]
398pub struct AllPlayer {
399    champion_name: String,
400    is_bot: bool,
401    is_dead: bool,
402    items: Box<[Item]>,
403    level: i64,
404    position: String,
405    raw_champion_name: String,
406    respawn_timer: f64,
407    runes: Runes,
408    scores: Scores,
409    #[serde(rename = "skinID")]
410    skin_id: i64,
411    summoner_name: String,
412    summoner_spells: SummonerSpells,
413    team: String,
414}
415
416impl AllPlayer {
417    #[must_use]
418    pub fn champion_name(&self) -> &str {
419        &self.champion_name
420    }
421    #[must_use]
422    pub fn is_bot(&self) -> bool {
423        self.is_bot
424    }
425    #[must_use]
426    pub fn is_dead(&self) -> bool {
427        self.is_dead
428    }
429    #[must_use]
430    pub fn items(&self) -> &[Item] {
431        &self.items
432    }
433    #[must_use]
434    pub fn level(&self) -> i64 {
435        self.level
436    }
437    #[must_use]
438    pub fn position(&self) -> &str {
439        &self.position
440    }
441    #[must_use]
442    pub fn raw_champion_name(&self) -> &str {
443        &self.raw_champion_name
444    }
445    #[must_use]
446    pub fn respawn_timer(&self) -> f64 {
447        self.respawn_timer
448    }
449    #[must_use]
450    pub fn runes(&self) -> &Runes {
451        &self.runes
452    }
453    #[must_use]
454    pub fn scores(&self) -> &Scores {
455        &self.scores
456    }
457    #[must_use]
458    pub fn skin_id(&self) -> i64 {
459        self.skin_id
460    }
461    #[must_use]
462    pub fn summoner_name(&self) -> &str {
463        &self.summoner_name
464    }
465    #[must_use]
466    pub fn summoner_spells(&self) -> &SummonerSpells {
467        &self.summoner_spells
468    }
469    #[must_use]
470    pub fn team(&self) -> &str {
471        &self.team
472    }
473}
474
475#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
476#[serde(rename_all = "camelCase")]
477pub struct Runes {
478    keystone: Rune,
479    primary_rune_tree: Rune,
480    secondary_rune_tree: Rune,
481}
482
483impl Runes {
484    #[must_use]
485    pub fn keystone(&self) -> &Rune {
486        &self.keystone
487    }
488    #[must_use]
489    pub fn primary_rune_tree(&self) -> &Rune {
490        &self.primary_rune_tree
491    }
492    #[must_use]
493    pub fn secondary_rune_tree(&self) -> &Rune {
494        &self.secondary_rune_tree
495    }
496}
497
498#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
499#[serde(rename_all = "camelCase")]
500pub struct Scores {
501    assists: i64,
502    creep_score: i64,
503    deaths: i64,
504    kills: i64,
505    ward_score: f64,
506}
507
508impl Scores {
509    #[must_use]
510    pub fn assists(&self) -> i64 {
511        self.assists
512    }
513    #[must_use]
514    pub fn creep_score(&self) -> i64 {
515        self.creep_score
516    }
517    #[must_use]
518    pub fn deaths(&self) -> i64 {
519        self.deaths
520    }
521    #[must_use]
522    pub fn kills(&self) -> i64 {
523        self.kills
524    }
525    #[must_use]
526    pub fn ward_score(&self) -> f64 {
527        self.ward_score
528    }
529}
530
531#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
532#[serde(rename_all = "camelCase")]
533pub struct SummonerSpells {
534    summoner_spell_one: SummonerSpell,
535    summoner_spell_two: SummonerSpell,
536}
537
538impl SummonerSpells {
539    #[must_use]
540    pub fn summoner_spell_one(&self) -> &SummonerSpell {
541        &self.summoner_spell_one
542    }
543    #[must_use]
544    pub fn summoner_spell_two(&self) -> &SummonerSpell {
545        &self.summoner_spell_two
546    }
547}
548
549impl core::ops::Index<usize> for SummonerSpells {
550    type Output = SummonerSpell;
551
552    fn index(&self, index: usize) -> &Self::Output {
553        match index {
554            0 => self.summoner_spell_one(),
555            1 => self.summoner_spell_two(),
556            e => panic!("Index Out Of Bounds, expected 0 or 1, but found {e}!"),
557        }
558    }
559}
560
561#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
562#[serde(rename_all = "camelCase")]
563pub struct SummonerSpell {
564    pub display_name: String,
565    pub raw_description: String,
566    pub raw_display_name: String,
567}
568
569impl SummonerSpell {
570    #[must_use]
571    pub fn display_name(&self) -> &str {
572        &self.display_name
573    }
574    #[must_use]
575    pub fn raw_description(&self) -> &str {
576        &self.raw_description
577    }
578    #[must_use]
579    pub fn raw_display_name(&self) -> &str {
580        &self.raw_display_name
581    }
582}
583
584#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
585#[serde(rename_all = "camelCase")]
586pub struct Item {
587    can_use: bool,
588    consumable: bool,
589    count: i64,
590    display_name: String,
591    #[serde(rename = "itemID")]
592    item_id: i64,
593    price: i64,
594    raw_description: String,
595    raw_display_name: String,
596    slot: i64,
597}
598
599impl Item {
600    #[must_use]
601    pub fn can_use(&self) -> bool {
602        self.can_use
603    }
604    #[must_use]
605    pub fn consumable(&self) -> bool {
606        self.consumable
607    }
608    #[must_use]
609    pub fn count(&self) -> i64 {
610        self.count
611    }
612    #[must_use]
613    pub fn display_name(&self) -> &str {
614        &self.display_name
615    }
616    #[must_use]
617    pub fn item_id(&self) -> i64 {
618        self.item_id
619    }
620    #[must_use]
621    pub fn price(&self) -> i64 {
622        self.price
623    }
624    #[must_use]
625    pub fn raw_description(&self) -> &str {
626        &self.raw_description
627    }
628    #[must_use]
629    pub fn raw_display_name(&self) -> &str {
630        &self.raw_display_name
631    }
632    #[must_use]
633    pub fn slot(&self) -> i64 {
634        self.slot
635    }
636}
637
638#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
639#[serde(rename_all = "PascalCase")]
640pub struct Events {
641    events: Box<[Event]>,
642}
643
644impl Events {
645    #[must_use]
646    pub fn events(&self) -> &[Event] {
647        &self.events
648    }
649}
650
651impl core::ops::Index<usize> for Events {
652    type Output = Event;
653
654    fn index(&self, index: usize) -> &Self::Output {
655        &self.events[index]
656    }
657}
658
659#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
660#[serde(rename_all = "PascalCase")]
661pub struct Event {
662    #[serde(rename = "EventID")]
663    event_id: i64,
664    event_name: String,
665    event_time: f64,
666}
667
668impl Event {
669    #[must_use]
670    pub fn event_id(&self) -> i64 {
671        self.event_id
672    }
673    #[must_use]
674    pub fn event_name(&self) -> &str {
675        &self.event_name
676    }
677    #[must_use]
678    pub fn event_time(&self) -> f64 {
679        self.event_time
680    }
681}
682
683#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
684#[serde(rename_all = "camelCase")]
685pub struct GameData {
686    pub game_mode: String,
687    pub game_time: f64,
688    pub map_name: String,
689    pub map_number: i64,
690    pub map_terrain: String,
691}
692
693impl GameData {
694    #[must_use]
695    pub fn game_mode(&self) -> &str {
696        &self.game_mode
697    }
698    #[must_use]
699    pub fn game_time(&self) -> f64 {
700        self.game_time
701    }
702    #[must_use]
703    pub fn map_name(&self) -> &str {
704        &self.map_name
705    }
706    #[must_use]
707    pub fn map_number(&self) -> i64 {
708        self.map_number
709    }
710    #[must_use]
711    pub fn map_terrain(&self) -> &str {
712        &self.map_terrain
713    }
714}
715
716/// Enum representation of different team IDs
717pub enum TeamID {
718    ALL,
719    UNKNOWN,
720    ORDER,
721    CHAOS,
722    NEUTRAL,
723}