tiger_lib/imperator/
modif.rs1use std::fmt::{Display, Formatter};
2
3use bitflags::bitflags;
4
5use crate::{imperator::tables::modifs::lookup_modif, modif};
6
7bitflags! {
8 #[derive(Debug, Copy, Clone)]
12 #[rustfmt::skip] pub struct ModifKinds: u32 {
14 const Character = 1<<0;
15 const Country = 1<<1;
16 const State = 1<<2;
17 const Province = 1<<3;
18 const Unit = 1<<4;
19 const Legion = 1<<5;
20 const CountryCulture = 1<<6;
21 }
22}
23
24impl modif::ModifKinds for ModifKinds {
25 fn lookup_modif(
26 name: &crate::Token,
27 data: &crate::Everything,
28 warn: Option<crate::Severity>,
29 ) -> Option<Self> {
30 lookup_modif(name, data, warn)
31 }
32}
33
34impl Display for ModifKinds {
35 fn fmt(&self, f: &mut Formatter) -> Result<(), std::fmt::Error> {
36 let mut vec = Vec::new();
37 if self.contains(ModifKinds::Character) {
38 vec.push("character");
39 }
40 if self.contains(ModifKinds::Country) {
41 vec.push("country");
42 }
43 if self.contains(ModifKinds::Province) {
44 vec.push("province");
45 }
46 if self.contains(ModifKinds::State) {
47 vec.push("state");
48 }
49 if self.contains(ModifKinds::Unit) {
50 vec.push("unit");
51 }
52 if self.contains(ModifKinds::Legion) {
53 vec.push("legion");
54 }
55 if self.contains(ModifKinds::CountryCulture) {
56 vec.push("country culture");
57 }
58 write!(f, "{}", vec.join(", "))
59 }
60}