/* * This file is part of laurelin/shared * Copyright (C) 2023 Jonni Liljamo * * 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, } impl DataRequest { pub fn new(r#type: u8, data: Option) -> Self { Self { r#type, data } } } #[derive(Message)] pub struct DataRequestResponse { pub r#type: u8, pub data: Option>, } impl DataRequestResponse { pub fn new(r#type: u8, data: Option>) -> 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 } } } }