/*
* This file is part of laurelin/shared
* Copyright (C) 2023 Jonni Liljamo <jonni@liljamo.com>
*
* Licensed under GPL-3.0-only.
* See LICENSE for licensing information.
*/
use naia_bevy_shared::Message;
#[derive(Message)]
pub struct DataRequest {
pub r#type: u8,
/// Optional data to give with a request,
/// should be a maximum of 508 bytes.
///
/// Mostly used for handing in an ID for something.
pub data: Option<String>,
}
impl DataRequest {
pub fn new(r#type: u8, data: Option<String>) -> Self {
Self { r#type, data }
}
}
#[derive(Message)]
pub struct DataRequestResponse {
pub r#type: u8,
pub data: Option<Vec<String>>,
}
impl DataRequestResponse {
pub fn new(r#type: u8, data: Option<Vec<String>>) -> Self {
Self { r#type, data }
}
}
#[repr(u8)]
pub enum DataRequestType {
GameAllForming = 100,
GameMyGames = 101,
GameCreate = 102,
GameInfo = 103,
PubUserDetails = 150,
}
impl DataRequestType {
// TODO: should prolly do this, like, not by hand.
pub fn from_u8(value: &u8) -> Self {
match value {
100 => Self::GameAllForming,
101 => Self::GameMyGames,
102 => Self::GameCreate,
103 => Self::GameInfo,
150 => Self::PubUserDetails,
_ => {
// NOTE/TODO/FIXME: bad, veeeery bad.
// just... I'm not sure how to handle this best,
// so right now it just returns something, lol.
Self::GameCreate
}
}
}
}