/* * This file is part of laurelin/server * Copyright (C) 2023 Jonni Liljamo * * Licensed under GPL-3.0-only. * See LICENSE for licensing information. */ use std::collections::HashMap; use bevy_app::{App, ScheduleRunnerPlugin}; use bevy_core::CorePlugin; use bevy_ecs::system::Resource; use bevy_log::{info, LogPlugin}; use naia_bevy_server::{Plugin as ServerPlugin, ServerConfig, UserKey}; use laurelin_shared::server::protocol::protocol; mod systems; #[derive(Resource)] pub struct Config { pub api_address: String, } /// Temporary runtime data #[derive(Resource)] pub struct RuntimeTemp { pub afterauth_details: HashMap, } #[derive(Resource)] pub struct Global {} fn main() { let mut server = App::new(); let api_address = std::env::var("LAURELIN_API_URL").expect("LAURELIN_API_URL"); server // plugins .add_plugin(CorePlugin::default()) .add_plugin(ScheduleRunnerPlugin::default()) .add_plugin(LogPlugin { // NOTE: overridden by RUST_LOG environment variable level: bevy_log::Level::INFO, ..Default::default() }) .add_plugin(ServerPlugin::new(ServerConfig::default(), protocol())) // config .insert_resource(Config { api_address }) // temp runtime data .insert_resource(RuntimeTemp { afterauth_details: HashMap::new(), }) // init system .add_startup_system(systems::init::init) // events .add_system(systems::event::auth_events) .add_system(systems::event::connect_events) .add_system(systems::event::disconnect_events) .add_system(systems::event::error_events) .add_system(systems::event::tick_events); info!("Laurelin server starting"); server.run(); }