Skip to content

Commit

Permalink
[#36] Add UiParser
Browse files Browse the repository at this point in the history
  • Loading branch information
Orchaldir committed Sep 10, 2023
1 parent cbc3b45 commit 6742df7
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 6 deletions.
8 changes: 8 additions & 0 deletions macro_ui/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,14 @@ fn handle_struct(name: &Ident, fields: &FieldsNamed) -> TokenStream2 {
println!("{}Finish Viewer for struct {} with path '{}'!", spaces, stringify!(#name), visitor.get_path());
}
}

#[automatically_derived]
impl #name {
fn parse(parser: &dyn UiParser, path: &str, spaces: &str) -> #name {
println!("{}Parse struct {} with path '{}'", spaces, stringify!(#name), path);
#name::default()
}
}
}
}

Expand Down
2 changes: 1 addition & 1 deletion rpg_tools_core/src/model/character/appearance/body.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use crate::model::character::appearance::skin::Skin;
use crate::model::width::Width;
use crate::ui::{UiVisitor, UI};
use crate::ui::{UiParser, UiVisitor, UI};
use macro_convert::Convert;
use macro_ui::ui;
use serde::{Deserialize, Serialize};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@ use crate::model::character::appearance::hair::ponytail::position::PonytailPosit
use crate::model::character::appearance::hair::ponytail::style::PonytailStyle;
use crate::model::color::Color;
use crate::model::length::Length;
use crate::ui::{UiVisitor, UI};
use crate::ui::{UiParser, UiVisitor, UI};
use macro_ui::ui;
use serde::{Deserialize, Serialize};

pub mod position;
pub mod style;

/// How does the ponytail look like?
#[derive(ui, Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[derive(ui, Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct Ponytail {
pub position: PonytailPosition,
pub style: PonytailStyle,
Expand Down
2 changes: 1 addition & 1 deletion rpg_tools_core/src/model/character/appearance/head.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use crate::model::character::appearance::eye::Eyes;
use crate::model::character::appearance::hair::Hair;
use crate::model::character::appearance::mouth::Mouth;
use crate::model::character::appearance::skin::Skin;
use crate::ui::{UiVisitor, UI};
use crate::ui::{UiParser, UiVisitor, UI};
use macro_convert::Convert;
use macro_ui::ui;
use serde::{Deserialize, Serialize};
Expand Down
4 changes: 2 additions & 2 deletions rpg_tools_core/src/model/length.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
use crate::ui::{UiVisitor, UI};
use crate::ui::{UiParser, UiVisitor, UI};
use macro_ui::ui;
use serde::{Deserialize, Serialize};

const METRE_FACTOR: f32 = 1000.0;
const CENTIMETRE_FACTOR: f32 = 10.0;

/// A length or distance. The internal unit is millimetre.
#[derive(ui, Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[derive(ui, Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct Length {
millimetre: u32,
}
Expand Down
7 changes: 7 additions & 0 deletions rpg_tools_core/src/ui/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,10 @@ pub trait UI {
/// Create a viewer ui.
fn create_viewer(visitor: &mut dyn UiVisitor, spaces: &str, in_tuple: bool);
}

pub trait UiParser {
fn enter(&self, name: &str) -> dyn UiParser;

/// Parse a string from a path.
fn get_str<'a>(&self, name: &str) -> &'a str;
}

0 comments on commit 6742df7

Please sign in to comment.