Use autoload singletons instead
This commit is contained in:
parent
17086a2ef4
commit
b7f8ac320e
@ -1,3 +1,5 @@
|
||||
use std::net::SocketAddr;
|
||||
|
||||
use godot::prelude::*;
|
||||
|
||||
mod ui;
|
||||
@ -13,9 +15,21 @@ struct NetworkManager {
|
||||
base: Base<Node>,
|
||||
}
|
||||
|
||||
pub const NETWORK_SINGLETON_NAME: &str = "NetworkManagerGlob";
|
||||
|
||||
#[godot_api]
|
||||
impl INode for NetworkManager {
|
||||
fn init(base: Base<Node>) -> Self {
|
||||
NetworkManager { base }
|
||||
}
|
||||
}
|
||||
|
||||
impl NetworkManager {
|
||||
pub fn host(&mut self, port: u32) {
|
||||
godot_print!("Hosting server at {}", port);
|
||||
}
|
||||
|
||||
pub fn join(&mut self, addr: SocketAddr) {
|
||||
godot_print!("Joining server at {:?}", addr);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,15 +3,18 @@ use std::net::SocketAddr;
|
||||
use std::ops::DerefMut;
|
||||
use std::rc::Rc;
|
||||
|
||||
use godot::classes::{RichTextLabel, ScrollContainer};
|
||||
use godot::classes::{Engine, RichTextLabel, ScrollContainer};
|
||||
use godot::prelude::*;
|
||||
|
||||
use godot::tools::get_autoload_by_name;
|
||||
use godot::{
|
||||
classes::{IPanel, Panel, TextEdit},
|
||||
obj::Base,
|
||||
register::{GodotClass, godot_api},
|
||||
};
|
||||
|
||||
use crate::{NETWORK_SINGLETON_NAME, NetworkManager};
|
||||
|
||||
pub enum CliColor {
|
||||
Command,
|
||||
Info,
|
||||
@ -154,7 +157,9 @@ impl Command for HostCommand {
|
||||
if let Some(port_str) = params.first() {
|
||||
if let Ok(port) = u32::from_str_radix(*port_str, 10) {
|
||||
cli.publish_message(format!("Server hosted at {}", port), CliColor::Info);
|
||||
// TODO host server
|
||||
get_autoload_by_name::<NetworkManager>(NETWORK_SINGLETON_NAME)
|
||||
.bind_mut()
|
||||
.host(port);
|
||||
} else {
|
||||
cli.publish_message(format!("Invalid port: {}", port_str), CliColor::Error);
|
||||
}
|
||||
@ -175,7 +180,9 @@ impl Command for JoinCommand {
|
||||
if let Some(address_str) = params.first() {
|
||||
if let Ok(address) = address_str.parse::<SocketAddr>() {
|
||||
cli.publish_message(format!("Joining server at {}", address), CliColor::Info);
|
||||
// TODO join server
|
||||
get_autoload_by_name::<NetworkManager>(NETWORK_SINGLETON_NAME)
|
||||
.bind_mut()
|
||||
.join(address);
|
||||
} else {
|
||||
cli.publish_message(format!("Invalid address: {}", address_str), CliColor::Error);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user