use std::any::Any;
use crate::base::generated::steam_language::{EChatRoomEnterResponse, EResult};
use crate::steam::steam_client::callback_mgr::callback_msg::{CallbackMsg, CallbackMsgBase};
use crate::types::job_id::JobID;
use crate::types::steam_id::SteamID;
use super::lobby::{Lobby, Member};
#[derive(Clone, Debug)]
pub struct GetLobbyListCallback {
base: CallbackMsgBase,
app_id: u32,
result: EResult,
lobbies: Vec<Lobby>,
}
impl GetLobbyListCallback {
pub(crate) fn new(job_id: JobID, app_id: u32, result: EResult, lobbies: Vec<Lobby>) -> Self {
Self {
base: CallbackMsgBase::with_job_id(job_id),
app_id,
result,
lobbies,
}
}
pub fn app_id(&self) -> u32 {
self.app_id
}
pub fn result(&self) -> EResult {
self.result
}
pub fn lobbies(&self) -> &[Lobby] {
&self.lobbies
}
}
impl CallbackMsg for GetLobbyListCallback {
fn job_id(&self) -> JobID {
self.base.job_id()
}
fn set_job_id(&mut self, id: JobID) {
self.base.set_job_id(id);
}
fn as_any(&self) -> &dyn Any {
self
}
fn as_any_mut(&mut self) -> &mut dyn Any {
self
}
}
#[derive(Clone, Debug)]
pub struct CreateLobbyCallback {
base: CallbackMsgBase,
app_id: u32,
result: EResult,
lobby_steam_id: SteamID,
}
impl CreateLobbyCallback {
pub(crate) fn new(
job_id: JobID,
app_id: u32,
result: EResult,
lobby_steam_id: SteamID,
) -> Self {
Self {
base: CallbackMsgBase::with_job_id(job_id),
app_id,
result,
lobby_steam_id,
}
}
pub fn app_id(&self) -> u32 {
self.app_id
}
pub fn result(&self) -> EResult {
self.result
}
pub fn lobby_steam_id(&self) -> SteamID {
self.lobby_steam_id
}
}
impl CallbackMsg for CreateLobbyCallback {
fn job_id(&self) -> JobID {
self.base.job_id()
}
fn set_job_id(&mut self, id: JobID) {
self.base.set_job_id(id);
}
fn as_any(&self) -> &dyn Any {
self
}
fn as_any_mut(&mut self) -> &mut dyn Any {
self
}
}
#[derive(Clone, Debug)]
pub struct SetLobbyDataCallback {
base: CallbackMsgBase,
app_id: u32,
result: EResult,
lobby_steam_id: SteamID,
}
impl SetLobbyDataCallback {
pub(crate) fn new(
job_id: JobID,
app_id: u32,
result: EResult,
lobby_steam_id: SteamID,
) -> Self {
Self {
base: CallbackMsgBase::with_job_id(job_id),
app_id,
result,
lobby_steam_id,
}
}
pub fn app_id(&self) -> u32 {
self.app_id
}
pub fn result(&self) -> EResult {
self.result
}
pub fn lobby_steam_id(&self) -> SteamID {
self.lobby_steam_id
}
}
impl CallbackMsg for SetLobbyDataCallback {
fn job_id(&self) -> JobID {
self.base.job_id()
}
fn set_job_id(&mut self, id: JobID) {
self.base.set_job_id(id);
}
fn as_any(&self) -> &dyn Any {
self
}
fn as_any_mut(&mut self) -> &mut dyn Any {
self
}
}
#[derive(Clone, Debug)]
pub struct SetLobbyOwnerCallback {
base: CallbackMsgBase,
app_id: u32,
result: EResult,
lobby_steam_id: SteamID,
}
impl SetLobbyOwnerCallback {
pub(crate) fn new(
job_id: JobID,
app_id: u32,
result: EResult,
lobby_steam_id: SteamID,
) -> Self {
Self {
base: CallbackMsgBase::with_job_id(job_id),
app_id,
result,
lobby_steam_id,
}
}
pub fn app_id(&self) -> u32 {
self.app_id
}
pub fn result(&self) -> EResult {
self.result
}
pub fn lobby_steam_id(&self) -> SteamID {
self.lobby_steam_id
}
}
impl CallbackMsg for SetLobbyOwnerCallback {
fn job_id(&self) -> JobID {
self.base.job_id()
}
fn set_job_id(&mut self, id: JobID) {
self.base.set_job_id(id);
}
fn as_any(&self) -> &dyn Any {
self
}
fn as_any_mut(&mut self) -> &mut dyn Any {
self
}
}
#[derive(Clone, Debug)]
pub struct JoinLobbyCallback {
base: CallbackMsgBase,
app_id: u32,
chat_room_enter_response: EChatRoomEnterResponse,
lobby: Option<Lobby>,
}
impl JoinLobbyCallback {
pub(crate) fn new(
job_id: JobID,
app_id: u32,
chat_room_enter_response: EChatRoomEnterResponse,
lobby: Option<Lobby>,
) -> Self {
Self {
base: CallbackMsgBase::with_job_id(job_id),
app_id,
chat_room_enter_response,
lobby,
}
}
pub fn app_id(&self) -> u32 {
self.app_id
}
pub fn chat_room_enter_response(&self) -> EChatRoomEnterResponse {
self.chat_room_enter_response
}
pub fn lobby(&self) -> Option<&Lobby> {
self.lobby.as_ref()
}
}
impl CallbackMsg for JoinLobbyCallback {
fn job_id(&self) -> JobID {
self.base.job_id()
}
fn set_job_id(&mut self, id: JobID) {
self.base.set_job_id(id);
}
fn as_any(&self) -> &dyn Any {
self
}
fn as_any_mut(&mut self) -> &mut dyn Any {
self
}
}
#[derive(Clone, Debug)]
pub struct LeaveLobbyCallback {
base: CallbackMsgBase,
app_id: u32,
result: EResult,
lobby_steam_id: SteamID,
}
impl LeaveLobbyCallback {
pub(crate) fn new(
job_id: JobID,
app_id: u32,
result: EResult,
lobby_steam_id: SteamID,
) -> Self {
Self {
base: CallbackMsgBase::with_job_id(job_id),
app_id,
result,
lobby_steam_id,
}
}
pub fn app_id(&self) -> u32 {
self.app_id
}
pub fn result(&self) -> EResult {
self.result
}
pub fn lobby_steam_id(&self) -> SteamID {
self.lobby_steam_id
}
}
impl CallbackMsg for LeaveLobbyCallback {
fn job_id(&self) -> JobID {
self.base.job_id()
}
fn set_job_id(&mut self, id: JobID) {
self.base.set_job_id(id);
}
fn as_any(&self) -> &dyn Any {
self
}
fn as_any_mut(&mut self) -> &mut dyn Any {
self
}
}
#[derive(Clone, Debug)]
pub struct LobbyDataCallback {
base: CallbackMsgBase,
app_id: u32,
lobby: Lobby,
}
impl LobbyDataCallback {
pub(crate) fn new(job_id: JobID, app_id: u32, lobby: Lobby) -> Self {
Self {
base: CallbackMsgBase::with_job_id(job_id),
app_id,
lobby,
}
}
pub fn app_id(&self) -> u32 {
self.app_id
}
pub fn lobby(&self) -> &Lobby {
&self.lobby
}
}
impl CallbackMsg for LobbyDataCallback {
fn job_id(&self) -> JobID {
self.base.job_id()
}
fn set_job_id(&mut self, id: JobID) {
self.base.set_job_id(id);
}
fn as_any(&self) -> &dyn Any {
self
}
fn as_any_mut(&mut self) -> &mut dyn Any {
self
}
}
#[derive(Clone, Debug)]
pub struct UserJoinedLobbyCallback {
base: CallbackMsgBase,
app_id: u32,
lobby_steam_id: SteamID,
user: Member,
}
impl UserJoinedLobbyCallback {
pub(crate) fn new(app_id: u32, lobby_steam_id: SteamID, user: Member) -> Self {
Self {
base: CallbackMsgBase::new(),
app_id,
lobby_steam_id,
user,
}
}
pub fn app_id(&self) -> u32 {
self.app_id
}
pub fn lobby_steam_id(&self) -> SteamID {
self.lobby_steam_id
}
pub fn user(&self) -> &Member {
&self.user
}
}
impl CallbackMsg for UserJoinedLobbyCallback {
fn job_id(&self) -> JobID {
self.base.job_id()
}
fn set_job_id(&mut self, id: JobID) {
self.base.set_job_id(id);
}
fn as_any(&self) -> &dyn Any {
self
}
fn as_any_mut(&mut self) -> &mut dyn Any {
self
}
}
#[derive(Clone, Debug)]
pub struct UserLeftLobbyCallback {
base: CallbackMsgBase,
app_id: u32,
lobby_steam_id: SteamID,
user: Member,
}
impl UserLeftLobbyCallback {
pub(crate) fn new(app_id: u32, lobby_steam_id: SteamID, user: Member) -> Self {
Self {
base: CallbackMsgBase::new(),
app_id,
lobby_steam_id,
user,
}
}
pub fn app_id(&self) -> u32 {
self.app_id
}
pub fn lobby_steam_id(&self) -> SteamID {
self.lobby_steam_id
}
pub fn user(&self) -> &Member {
&self.user
}
}
impl CallbackMsg for UserLeftLobbyCallback {
fn job_id(&self) -> JobID {
self.base.job_id()
}
fn set_job_id(&mut self, id: JobID) {
self.base.set_job_id(id);
}
fn as_any(&self) -> &dyn Any {
self
}
fn as_any_mut(&mut self) -> &mut dyn Any {
self
}
}