use std::net::SocketAddr;
use std::time::Duration;
use bevy::app::{PluginGroup, PluginGroupBuilder, ScheduleRunnerPlugin, TaskPoolPlugin};
use bevy::diagnostic::FrameCountPlugin;
use bevy::log::LogPlugin;
use bevy::time::TimePlugin;
use crate::replication::ReplicationServerPlugin;
use crate::server::server_plugin;
pub struct ServerPluginGroup {
pub bind: SocketAddr,
pub tick_rate: f64
}
impl PluginGroup for ServerPluginGroup {
fn build(self) -> PluginGroupBuilder {
PluginGroupBuilder::start::<Self>()
.add(TaskPoolPlugin::default())
.add(FrameCountPlugin)
.add(TimePlugin)
.add(ScheduleRunnerPlugin::run_loop(
Duration::from_secs_f64(1.0 / self.tick_rate)
))
.add(ReplicationServerPlugin)
.add(server_plugin)
}
}