use crate::interactive_fiction::data::condition::Condition;
use crate::interactive_fiction::data::dialogue::Dialogue;
use crate::interactive_fiction::data::ending::Ending;
use crate::interactive_fiction::data::entity::Entity;
use crate::interactive_fiction::data::ids::{
ConditionId, DialogueId, EndingId, EntityId, ItemId, QuestId, RoomId, RuleId, TextId, TimerId,
};
use crate::interactive_fiction::data::item::Item;
use crate::interactive_fiction::data::quest::Quest;
use crate::interactive_fiction::data::room::Room;
use crate::interactive_fiction::data::rule::Rule;
use crate::interactive_fiction::data::text::Text;
use crate::interactive_fiction::data::timer::Timer;
use crate::interactive_fiction::data::verb_responses::VerbResponses;
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct World {
pub title: String,
pub intro: Text,
pub start_room: RoomId,
pub rooms: BTreeMap<RoomId, Room>,
pub items: BTreeMap<ItemId, Item>,
pub entities: BTreeMap<EntityId, Entity>,
pub dialogues: BTreeMap<DialogueId, Dialogue>,
pub quests: BTreeMap<QuestId, Quest>,
pub endings: BTreeMap<EndingId, Ending>,
pub rules: BTreeMap<RuleId, Rule>,
pub timers: BTreeMap<TimerId, Timer>,
pub texts: BTreeMap<TextId, Text>,
pub conditions: BTreeMap<ConditionId, Condition>,
#[serde(default)]
pub verb_responses: VerbResponses,
}