EpochInfo

Struct EpochInfo 

Source
pub struct EpochInfo {
    pub epoch_id: EpochId,
    pub rng_seed: u64,
    pub tags: TagList,
    pub summary: String,
    pub events: Vec<Entity>,
    pub characters: Vec<Entity>,
    pub towns: Vec<Entity>,
    pub calamities: Vec<Entity>,
    pub blockers: Vec<Entity>,
}
Expand description

The metadata file stored inside each epoch directory (epoch/<epoch_id>/.epochinfo).

It contains only the information that is needed for the engine to reconstruct the state of that particular epoch (seed, selected events, parent link, etc.). The full world data will be kept in separate storage (e.g. world.json) but is for stored here.

Fields§

§epoch_id: EpochId

The ID of this epoch - should match the directory name.

§rng_seed: u64

RNG seed that was used to generate randomised data for this epoch. Keeping it in the file guarantees repeatable behaviour when replaying the same epoch.

§tags: TagList

Optional tags that help identify the epoch (e.g. "Winter-B").

§summary: String

Human-readable description or summary, useful for the log command.

§events: Vec<Entity>

The list of events currently in progress

§characters: Vec<Entity>

The list of characters currently present

§towns: Vec<Entity>

The list of towns currently present

§calamities: Vec<Entity>

The list of calamities currently present

§blockers: Vec<Entity>

The list of blockers currently present

Implementations§

Source§

impl EpochInfo

Source

pub fn create_subfolders(&self) -> Result<(), EpochError>

Create all subfolders as needed

This command can be safely used even if the folder already exists

Source§

impl EpochInfo

Source

pub fn find_entity_of_type( &self, entity_to_find: &Option<EntityIdentifier>, e_type: &EntityType, ) -> Result<&Entity, EpochError>

Looks up an entity inside the given epoch_info according to the supplied arguments.

The function returns a reference to the matching entity or an EpochError::EntityNotFound if no entity matches.

§Arguments
  • entity_args - The arguments that identify the entity.
  • e_type - The type of entity to look for.
  • epoch_info - The epoch that contains all entities.
§Returns
  • Ok(&Entity) - The entity that matches the arguments.
  • Err(EpochError::EntityNotFound) - No matching entity was found.

Adds a link between two entities inside the epoch.

The link is added to the entity identified by id_to_add_to. If the target entity is not found, an EntityNotFoundById error is returned.

Removes a link from an entity inside the epoch.

The removal is performed on the target entity (id_to_add_to). If the target entity cannot be found, an EpochError::EntityNotFoundById error is returned. The removal itself is delegated to the entity’s del_from_links method, which silently ignores missing links.

Source

pub fn find_any_entity( &self, id: EntityIdentifier, ) -> Result<&Entity, EpochError>

Find an entity by its UUID.

This function searches the currently loaded epoch for an entity whose id matches the supplied Uuid. It looks in both the events, towns and characters collections of the epoch.

§Arguments
  • id - The Uuid of the entity to locate.
§Returns
  • Ok(&Entity) - Reference to the entity if it is present in the current epoch.
  • Err(EpochError::EntityNotFoundById(id)) - No entity with the supplied UUID exists in the epoch.
Source

pub fn find_entity_strict( &self, id: Uuid, strict: Option<EntityType>, ) -> Result<&Entity, EpochError>

Find an entity from an Uuid

Source

pub fn find_entity_strict_as_mut( &mut self, id: Uuid, strict: Option<EntityType>, ) -> Result<&mut Entity, EpochError>

Find an entity from an Uuid

Source

pub fn vec_entities(&self, e_type: &EntityType) -> &Vec<Entity>

Returns a slice over the entities of the requested type from the given EpochInfo.

The function matches the supplied e_type to the appropriate collection inside epoch_info. For unimplemented entity types the call will panic because of the todo!() placeholder.

Source

pub fn remove_entity( &mut self, entity_identifier: &Option<EntityIdentifier>, e_type: &EntityType, ) -> Result<Entity, EpochError>

Removes an entity from the epoch’s collection and returns it.

The function looks up the entity that matches the supplied entity_identifier in the collection corresponding to e_type. If the entity is found, it is removed using swap_remove and returned. When the entity cannot be located, an EpochError::EntityNotFound is returned.

Source

pub fn vec_entities_mut(&mut self, e_type: &EntityType) -> &mut Vec<Entity>

Returns a mutable slice over the entities of the requested type from the given EpochInfo.

Like vec_entities, this function selects the appropriate collection based on e_type. Unimplemented variants will panic due to the todo!().

Source

pub fn iter_all_entities_mut(&mut self) -> impl Iterator<Item = &mut Entity>

Returns an iterator over mutable references to all entities that are currently stored in the EpochInfo container.

Source

pub fn resolve_position( &self, position: &PositionIdentifier, ) -> Result<Position, EpochError>

Get the position of an entity either directly or cloning one from an epoch

Source

pub fn swap_entity(&mut self, entity: Entity) -> Result<Entity, EpochError>

Swap an entity with an updated one

Trait Implementations§

Source§

impl Clone for EpochInfo

Source§

fn clone(&self) -> EpochInfo

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl ConfigWritable for EpochInfo

Source§

fn save_path(&self) -> String

The full path indicating where to save the config
Source§

fn save_folder(&self) -> String

The folder where to save the file to save the config
Source§

fn as_json(&self, action: String) -> Result<String, EpochError>

Serialises the config into a pretty JSON string. Read more
Source§

fn save_with_context( &self, action_description: &str, do_not_erase: &SaveMode, ) -> Result<(), EpochError>

Saves the config into its nominal path. Read more
Source§

impl Debug for EpochInfo

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for EpochInfo

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for EpochInfo

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for EpochInfo

Source§

fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Prettiable for EpochInfo

Source§

fn as_table(list: Vec<&Self>) -> Result<TableDisplay, EpochError>
where for<'a> Vec<&'a Self>: Table + WithTitle,

Shows many items as a table.
Source§

fn show_as_log(&self)

Displays the struct as a log entry by printing the output of as_log() to stdout.
Source§

fn as_log(&self) -> String

Converts the struct into a pretty log string.
Source§

impl Row for &EpochInfo

Source§

fn row(self) -> RowStruct

Converts raw type to rows of a table
Source§

impl Row for EpochInfo

Source§

fn row(self) -> RowStruct

Converts raw type to rows of a table
Source§

impl Serialize for EpochInfo

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Title for EpochInfo

Source§

fn title() -> RowStruct

Returns title row of a struct

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Cell for T
where T: Display,

Source§

fn cell(self) -> CellStruct

Converts raw type to cell of a table
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<D> OwoColorize for D

Source§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
Source§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
Source§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
Source§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
Source§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
Source§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
Source§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
Source§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
Source§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
Source§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
Source§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
Source§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
Source§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
Source§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
Source§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
Source§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
Source§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
Source§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
Source§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
Source§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
Source§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
Source§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
Source§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
Source§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
Source§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
Source§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
Source§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
Source§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
Source§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
Source§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
Source§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
Source§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
Source§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
Source§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
Source§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
Source§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
Source§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
Source§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
Source§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
Source§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
Source§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
Source§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
Source§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
Source§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
Source§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
Source§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
Source§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
Source§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either OwoColorize::fg or a color-specific method, such as OwoColorize::green, Read more
Source§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either OwoColorize::bg or a color-specific method, such as OwoColorize::on_yellow, Read more
Source§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
Source§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
Source§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
Source§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
Source§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,