underworld_core 0.6.3

Small library to either play a game or assist in generating rooms
Documentation
#[cfg(feature = "bevy_components")]
use bevy_ecs::prelude::Component;
#[cfg(feature = "openapi")]
use poem_openapi::Object;
#[cfg(feature = "serialization")]
use serde::{Deserialize, Serialize};

use crate::components::items::ItemView;

use super::{
    Descriptor, Dimensions, ExitView, FixturePositionView, Flavour, NpcPositionView, RoomType,
};

#[derive(Clone, Debug)]
#[cfg_attr(feature = "bevy_components", derive(Component))]
#[cfg_attr(feature = "serialization", derive(Deserialize, Serialize))]
#[cfg_attr(feature = "openapi", derive(Object), oai(rename = "Room"))]
pub struct RoomView {
    pub id: String,
    pub name: Option<String>,
    pub descriptors: Vec<Descriptor>,
    pub room_type: RoomType,
    pub fixture_positions: Vec<FixturePositionView>,
    pub dimensions: Dimensions,
    pub npc_positions: Vec<NpcPositionView>,
    pub flavour: Option<Flavour>,
    pub exits: Vec<ExitView>,
    pub loose_items: Vec<ItemView>,
}

#[derive(Clone, Debug, Default)]
pub struct RoomViewArgs {
    pub can_see_hidden: bool,
    pub can_see_packed: bool,
    pub knows_character_health: bool,
    pub knows_fixture_items: bool,
    pub knows_fixture_hidden: bool,
    pub knows_fixture_can_be_opened: bool,
    pub knows_fixture_has_hidden: bool,
}