Newer
Older
use bevy::prelude::{Commands, Plugin};
use iyes_loopless::prelude::{AppLooplessStateExt, ConditionSet};
mod generators;
mod spawning;
mod towns;
mod travel;
mod utils;
mod world_query;
pub use encounters::{EncounterState, WorldZones};
pub use spawning::PendingLoadState;
pub use towns::{CurrentResidence, PathingResult, TownName, TownPaths, TravelPath, TravelTarget};
pub use trading::{
HungerState, ItemName, RosterEntry, TradeGood, TradeManifest, TradeManifestTickState,
TradeRoster, TradingState,
};
pub use travel::DistanceTravelled;
pub use utils::{grid_to_px, px_to_grid, ActiveLevel, WorldLinked};
pub use world_query::{CameraBounds, MapQuery};
use crate::system::flow::AppState;
use crate::world::spawning::PopulateWorldEvent;
pub struct WorldPlugin;
impl Plugin for WorldPlugin {
fn build(&self, app: &mut App) {
app.init_resource::<TownPaths>()
.init_resource::<WorldZones>()
.init_resource::<EncounterState>()
.add_enter_system(AppState::InGame, |mut commands: Commands| {
commands.insert_resource(ActiveLevel {
map: String::from("Grantswaith"),
dirty: true,
});
.add_enter_system(AppState::Menu, spawning::clean_game_state)
.add_system_set(
ConditionSet::new()
.run_in_state(AppState::InGame)
// .with_system(debug::create_tombstones)
.with_system(spawning::spawn_world_data)
.with_system(travel::tick_travelling_merchant)