xash3d_protocol/
server_info.rs

1// SPDX-License-Identifier: LGPL-3.0-only
2// SPDX-FileCopyrightText: 2023 Denis Drakhnia <numas13@gmail.com>
3
4use super::filter::{FilterFlags, Version};
5use super::server::{Region, ServerAdd};
6use super::wrappers::Str;
7
8/// Game server information.
9#[derive(Clone, Debug)]
10pub struct ServerInfo {
11    /// Server version.
12    pub version: Version,
13    /// Server protocol version.
14    pub protocol: u8,
15    /// Server midification.
16    pub gamedir: Box<[u8]>,
17    /// Server map.
18    pub map: Box<[u8]>,
19    /// Server additional filter flags.
20    pub flags: FilterFlags,
21    /// Server region.
22    pub region: Region,
23}
24
25impl ServerInfo {
26    /// Creates a new `ServerInfo`.
27    pub fn new(info: &ServerAdd<Str<&[u8]>>) -> Self {
28        Self {
29            version: info.version,
30            protocol: info.protocol,
31            gamedir: info.gamedir.to_vec().into_boxed_slice(),
32            map: info.map.to_vec().into_boxed_slice(),
33            flags: FilterFlags::from(info),
34            region: info.region,
35        }
36    }
37}