/* * This file is part of laurelin/client * Copyright (C) 2023 Jonni Liljamo * * Licensed under GPL-3.0-only. * See LICENSE for licensing information. */ use bevy::prelude::*; use laurelin_shared::server::{channels::AfterAuthChannel, messages::AfterAuth}; use naia_bevy_client::{ events::{ClientTickEvent, ConnectEvent, DisconnectEvent, MessageEvents, RejectEvent}, Client, }; use crate::{ cfg::CfgUser, plugins::menu::{ ui::connect::{ConnectScreenData, ConnectState}, MenuState, }, }; pub fn connect_events(mut ev: EventReader, client: Client) { for _ in ev.iter() { if let Ok(server_address) = client.server_address() { info!("Laurelin client connected to: '{}'", server_address); } } } pub fn reject_events(mut ev: EventReader, mut data: ResMut) { for _ in ev.iter() { warn!("Laurelin client rejected from connecting to server!"); data.error = "rejected from connecting".to_string(); data.state = if data.state == ConnectState::LoggingIn { ConnectState::Login } else { ConnectState::Register } } } pub fn disconnect_events(mut ev: EventReader) { for _ in ev.iter() { info!("Laurelin client disconnected from server."); } } pub fn message_events( mut commands: Commands, mut ev: EventReader, mut cfg_user: ResMut, mut data: ResMut, ) { for events in ev.iter() { for aa_message in events.read::() { // TODO: move handling to a separate function? // save details from AfterAuth cfg_user.username = aa_message.username; cfg_user.cookie = aa_message.cookie; // reset the connection screen to login data.state = ConnectState::Login; // take us to the main menu commands.insert_resource(NextState(Some(MenuState::Menu))); } } } pub fn tick_events(mut ev: EventReader, client: Client) { if !client.is_connected() { return; } for ClientTickEvent(_tick) in ev.iter() {} }