rust/hedgewars-server/src/server/coretypes.rs
author alfadur
Wed, 10 Apr 2019 18:12:30 +0300
changeset 14783 b3adc030104b
parent 14687 5122c584804e
child 14785 a1077e8d26f4
permissions -rw-r--r--
implement server vars
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13478
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
     1
pub type ClientId = usize;
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
     2
pub type RoomId = usize;
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
     3
13795
e335daaa77a9 Add hogs per team named constant that absolutely no one asked for
alfadur
parents: 13478
diff changeset
     4
pub const MAX_HEDGEHOGS_PER_TEAM: u8 = 8;
e335daaa77a9 Add hogs per team named constant that absolutely no one asked for
alfadur
parents: 13478
diff changeset
     5
13119
1e39b8749072 separated the server logic from all the async io mess.
alfadur
parents: 12131
diff changeset
     6
#[derive(PartialEq, Eq, Clone, Debug)]
12130
6273f89ab13d Start on messages parser
unc0rr
parents:
diff changeset
     7
pub enum ServerVar {
6273f89ab13d Start on messages parser
unc0rr
parents:
diff changeset
     8
    MOTDNew(String),
6273f89ab13d Start on messages parser
unc0rr
parents:
diff changeset
     9
    MOTDOld(String),
14783
b3adc030104b implement server vars
alfadur
parents: 14687
diff changeset
    10
    LatestProto(u16),
12130
6273f89ab13d Start on messages parser
unc0rr
parents:
diff changeset
    11
}
6273f89ab13d Start on messages parser
unc0rr
parents:
diff changeset
    12
13119
1e39b8749072 separated the server logic from all the async io mess.
alfadur
parents: 12131
diff changeset
    13
#[derive(PartialEq, Eq, Clone, Debug)]
12130
6273f89ab13d Start on messages parser
unc0rr
parents:
diff changeset
    14
pub enum GameCfg {
13422
5fb27f94fc3b Implement game config messages
alfadur
parents: 13419
diff changeset
    15
    FeatureSize(u32),
5fb27f94fc3b Implement game config messages
alfadur
parents: 13419
diff changeset
    16
    MapType(String),
5fb27f94fc3b Implement game config messages
alfadur
parents: 13419
diff changeset
    17
    MapGenerator(u32),
5fb27f94fc3b Implement game config messages
alfadur
parents: 13419
diff changeset
    18
    MazeSize(u32),
5fb27f94fc3b Implement game config messages
alfadur
parents: 13419
diff changeset
    19
    Seed(String),
5fb27f94fc3b Implement game config messages
alfadur
parents: 13419
diff changeset
    20
    Template(u32),
12130
6273f89ab13d Start on messages parser
unc0rr
parents:
diff changeset
    21
13422
5fb27f94fc3b Implement game config messages
alfadur
parents: 13419
diff changeset
    22
    Ammo(String, Option<String>),
13801
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13795
diff changeset
    23
    Scheme(String, Vec<String>),
13422
5fb27f94fc3b Implement game config messages
alfadur
parents: 13419
diff changeset
    24
    Script(String),
5fb27f94fc3b Implement game config messages
alfadur
parents: 13419
diff changeset
    25
    Theme(String),
14457
98ef2913ec73 Apply rustfmt to all files
unc0rr
parents: 14415
diff changeset
    26
    DrawnMap(String),
12130
6273f89ab13d Start on messages parser
unc0rr
parents:
diff changeset
    27
}
6273f89ab13d Start on messages parser
unc0rr
parents:
diff changeset
    28
13119
1e39b8749072 separated the server logic from all the async io mess.
alfadur
parents: 12131
diff changeset
    29
#[derive(PartialEq, Eq, Clone, Debug)]
12130
6273f89ab13d Start on messages parser
unc0rr
parents:
diff changeset
    30
pub struct TeamInfo {
13419
81e0ed105f5d implementation of team related messages
alfadur
parents: 13119
diff changeset
    31
    pub name: String,
81e0ed105f5d implementation of team related messages
alfadur
parents: 13119
diff changeset
    32
    pub color: u8,
81e0ed105f5d implementation of team related messages
alfadur
parents: 13119
diff changeset
    33
    pub grave: String,
81e0ed105f5d implementation of team related messages
alfadur
parents: 13119
diff changeset
    34
    pub fort: String,
81e0ed105f5d implementation of team related messages
alfadur
parents: 13119
diff changeset
    35
    pub voice_pack: String,
81e0ed105f5d implementation of team related messages
alfadur
parents: 13119
diff changeset
    36
    pub flag: String,
81e0ed105f5d implementation of team related messages
alfadur
parents: 13119
diff changeset
    37
    pub difficulty: u8,
81e0ed105f5d implementation of team related messages
alfadur
parents: 13119
diff changeset
    38
    pub hedgehogs_number: u8,
13795
e335daaa77a9 Add hogs per team named constant that absolutely no one asked for
alfadur
parents: 13478
diff changeset
    39
    pub hedgehogs: [HedgehogInfo; MAX_HEDGEHOGS_PER_TEAM as usize],
12130
6273f89ab13d Start on messages parser
unc0rr
parents:
diff changeset
    40
}
6273f89ab13d Start on messages parser
unc0rr
parents:
diff changeset
    41
13119
1e39b8749072 separated the server logic from all the async io mess.
alfadur
parents: 12131
diff changeset
    42
#[derive(PartialEq, Eq, Clone, Debug)]
12130
6273f89ab13d Start on messages parser
unc0rr
parents:
diff changeset
    43
pub struct HedgehogInfo {
13419
81e0ed105f5d implementation of team related messages
alfadur
parents: 13119
diff changeset
    44
    pub name: String,
81e0ed105f5d implementation of team related messages
alfadur
parents: 13119
diff changeset
    45
    pub hat: String,
12130
6273f89ab13d Start on messages parser
unc0rr
parents:
diff changeset
    46
}
13478
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
    47
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
    48
#[derive(PartialEq, Eq, Clone, Debug)]
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
    49
pub enum VoteType {
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
    50
    Kick(String),
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
    51
    Map(Option<String>),
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
    52
    Pause,
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
    53
    NewSeed,
14457
98ef2913ec73 Apply rustfmt to all files
unc0rr
parents: 14415
diff changeset
    54
    HedgehogsPerTeam(u8),
13478
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
    55
}
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
    56
14687
5122c584804e Server action refactoring part A of N
alfadur <mail@none>
parents: 14457
diff changeset
    57
pub struct Vote {
5122c584804e Server action refactoring part A of N
alfadur <mail@none>
parents: 14457
diff changeset
    58
    pub is_pro: bool,
5122c584804e Server action refactoring part A of N
alfadur <mail@none>
parents: 14457
diff changeset
    59
    pub is_forced: bool,
5122c584804e Server action refactoring part A of N
alfadur <mail@none>
parents: 14457
diff changeset
    60
}
5122c584804e Server action refactoring part A of N
alfadur <mail@none>
parents: 14457
diff changeset
    61
13478
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
    62
#[derive(Clone, Debug)]
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
    63
pub struct Voting {
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
    64
    pub ttl: u32,
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
    65
    pub voters: Vec<ClientId>,
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
    66
    pub votes: Vec<(ClientId, bool)>,
14457
98ef2913ec73 Apply rustfmt to all files
unc0rr
parents: 14415
diff changeset
    67
    pub kind: VoteType,
13478
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
    68
}
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
    69
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
    70
impl Voting {
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
    71
    pub fn new(kind: VoteType, voters: Vec<ClientId>) -> Voting {
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
    72
        Voting {
14457
98ef2913ec73 Apply rustfmt to all files
unc0rr
parents: 14415
diff changeset
    73
            kind,
98ef2913ec73 Apply rustfmt to all files
unc0rr
parents: 14415
diff changeset
    74
            voters,
98ef2913ec73 Apply rustfmt to all files
unc0rr
parents: 14415
diff changeset
    75
            ttl: 2,
98ef2913ec73 Apply rustfmt to all files
unc0rr
parents: 14415
diff changeset
    76
            votes: Vec::new(),
13478
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
    77
        }
d79795acaa73 Mostly implement voting
alfadur
parents: 13422
diff changeset
    78
    }
14457
98ef2913ec73 Apply rustfmt to all files
unc0rr
parents: 14415
diff changeset
    79
}