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