From 5346559e61a91c3ccb1395b30c0b1fe3b7ef9408 Mon Sep 17 00:00:00 2001 From: hodasemi Date: Fri, 23 Aug 2024 17:17:53 +0200 Subject: [PATCH] Move sharable stuff into extra crate --- Cargo.toml | 1 + gavania-core/Cargo.toml | 1 + .../src/game/content/components/mod.rs | 24 ++++--------------- gavania-core/src/game/content/objects/hero.rs | 1 + rpg_components/Cargo.toml | 12 ++++++++++ .../src}/components/ability_slots.rs | 14 ++++------- .../src}/components/attributes.rs | 2 -- .../src}/components/character_status.rs | 0 .../src}/components/crafting_materials.rs | 3 --- .../src}/components/inventory.rs | 3 --- .../src}/components/item_slots.rs | 11 ++------- .../src}/components/level.rs | 2 -- .../src}/components/macros.rs | 2 +- rpg_components/src/components/mod.rs | 12 ++++++++++ .../src}/components/statistic_types.rs | 3 --- .../src}/components/statistics.rs | 2 -- .../src/config}/abilities.rs | 0 .../src/config}/attributes.rs | 0 .../src/config}/experience.rs | 0 .../src/config}/items.rs | 0 rpg_components/src/config/mod.rs | 5 ++++ .../src/config}/save_game.rs | 0 .../src/items}/ability_addon.rs | 5 ---- .../src/items}/ability_book.rs | 4 ---- .../src}/items/item.rs | 4 ++-- .../src}/items/item_slots.rs | 2 -- .../src}/items/item_system.rs | 5 +--- .../src}/items/jewel.rs | 4 ---- .../src}/items/map_item.rs | 4 +++- .../src}/items/mod.rs | 2 ++ .../src}/items/rarities.rs | 7 +++--- .../src}/items/tooltip.rs | 3 +-- rpg_components/src/lib.rs | 5 ++++ 33 files changed, 61 insertions(+), 82 deletions(-) create mode 100644 rpg_components/Cargo.toml rename {gavania-core/src/game/content => rpg_components/src}/components/ability_slots.rs (97%) rename {gavania-core/src/game/content => rpg_components/src}/components/attributes.rs (99%) rename {gavania-core/src/game/content => rpg_components/src}/components/character_status.rs (100%) rename {gavania-core/src/game/content => rpg_components/src}/components/crafting_materials.rs (97%) rename {gavania-core/src/game/content => rpg_components/src}/components/inventory.rs (98%) rename {gavania-core/src/game/content => rpg_components/src}/components/item_slots.rs (99%) rename {gavania-core/src/game/content => rpg_components/src}/components/level.rs (97%) rename {gavania-core/src/game/content => rpg_components/src}/components/macros.rs (99%) create mode 100644 rpg_components/src/components/mod.rs rename {gavania-core/src/game/content => rpg_components/src}/components/statistic_types.rs (99%) rename {gavania-core/src/game/content => rpg_components/src}/components/statistics.rs (99%) rename {gavania-core/src/game/configloader => rpg_components/src/config}/abilities.rs (100%) rename {gavania-core/src/game/configloader => rpg_components/src/config}/attributes.rs (100%) rename {gavania-core/src/game/configloader => rpg_components/src/config}/experience.rs (100%) rename {gavania-core/src/game/configloader => rpg_components/src/config}/items.rs (100%) create mode 100644 rpg_components/src/config/mod.rs rename {gavania-core/src/game/configloader => rpg_components/src/config}/save_game.rs (100%) rename {gavania-core/src/game/content/abilities => rpg_components/src/items}/ability_addon.rs (99%) rename {gavania-core/src/game/content/abilities => rpg_components/src/items}/ability_book.rs (99%) rename {gavania-core/src/game/content/mechanics => rpg_components/src}/items/item.rs (99%) rename {gavania-core/src/game/content/mechanics => rpg_components/src}/items/item_slots.rs (98%) rename {gavania-core/src/game/content/mechanics => rpg_components/src}/items/item_system.rs (99%) rename {gavania-core/src/game/content/mechanics => rpg_components/src}/items/jewel.rs (98%) rename {gavania-core/src/game/content/mechanics => rpg_components/src}/items/map_item.rs (91%) rename {gavania-core/src/game/content/mechanics => rpg_components/src}/items/mod.rs (85%) rename {gavania-core/src/game/content/mechanics => rpg_components/src}/items/rarities.rs (97%) rename {gavania-core/src/game/content/mechanics => rpg_components/src}/items/tooltip.rs (99%) create mode 100644 rpg_components/src/lib.rs diff --git a/Cargo.toml b/Cargo.toml index 58c7b48..e027e73 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,6 +19,7 @@ members = [ "scene_update_macros", "transaction_derive", "map", + "rpg_components", ] [workspace.dependencies] diff --git a/gavania-core/Cargo.toml b/gavania-core/Cargo.toml index 5f1ede1..f03cec5 100644 --- a/gavania-core/Cargo.toml +++ b/gavania-core/Cargo.toml @@ -22,6 +22,7 @@ promise = { path = "../promise" } lua-wrapper = { path = "../lua-wrapper" } controllable_thread = { path = "../controllable_thread" } map = { path = "../map" } +rpg_components = { path = "../rpg_components" } [features] wayland = [] diff --git a/gavania-core/src/game/content/components/mod.rs b/gavania-core/src/game/content/components/mod.rs index 91a50cd..2297de7 100644 --- a/gavania-core/src/game/content/components/mod.rs +++ b/gavania-core/src/game/content/components/mod.rs @@ -2,33 +2,17 @@ pub mod animation_info; pub mod hitbox; pub mod movement; -#[macro_use] -mod macros; - mod ability_location_info; -mod ability_slots; mod abilityloader; +pub mod ai; mod aoe; -mod attributes; -mod character_status; -mod crafting_materials; +pub mod aoe_arc; +pub mod damage_number; mod entity_faction; mod ghost; -mod item_slots; -mod level; +pub mod health_bar; mod loot_stash; mod npc_name; -mod statistic_types; -mod statistics; - -pub mod ai; - -pub mod aoe_arc; - -mod inventory; - -pub mod damage_number; -pub mod health_bar; mod npc_type; pub use self::{ai::*, aoe_arc::AreaOfEffectArc}; diff --git a/gavania-core/src/game/content/objects/hero.rs b/gavania-core/src/game/content/objects/hero.rs index 07e1fb9..dcf467b 100644 --- a/gavania-core/src/game/content/objects/hero.rs +++ b/gavania-core/src/game/content/objects/hero.rs @@ -2,6 +2,7 @@ use anyhow::Result; use assetpath::AssetPath; use cgmath::{vec2, Vector2}; use engine::prelude::*; +use rpg_components::components::{crafting_materials::CraftingMaterials, statistics::Statistics}; use super::super::prelude::*; diff --git a/rpg_components/Cargo.toml b/rpg_components/Cargo.toml new file mode 100644 index 0000000..52f22b9 --- /dev/null +++ b/rpg_components/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "rpg_components" +version = "0.1.0" +edition = "2021" + +[dependencies] +anyhow = { workspace = true } +paste = { workspace = true } +assetpath = { workspace = true } +serde = { workspace = true } + +engine = { path = "../engine" } diff --git a/gavania-core/src/game/content/components/ability_slots.rs b/rpg_components/src/components/ability_slots.rs similarity index 97% rename from gavania-core/src/game/content/components/ability_slots.rs rename to rpg_components/src/components/ability_slots.rs index b03a3c8..f352905 100644 --- a/gavania-core/src/game/content/components/ability_slots.rs +++ b/rpg_components/src/components/ability_slots.rs @@ -1,18 +1,12 @@ use anyhow::Result; use cgmath::{Vector2, Zero}; - use engine::prelude::*; - -use std::slice::IterMut; - -use crate::game::{configloader::*, content::prelude::*}; - -use crate::game::game::GameHandle; - use paste; -use std::str::FromStr; -use std::slice::Iter; +use std::{ + slice::{Iter, IterMut}, + str::FromStr, +}; macro_rules! load { ($me: ident, $save_game:ident, $($index:literal,)+) => { diff --git a/gavania-core/src/game/content/components/attributes.rs b/rpg_components/src/components/attributes.rs similarity index 99% rename from gavania-core/src/game/content/components/attributes.rs rename to rpg_components/src/components/attributes.rs index f7ad304..64e4890 100644 --- a/gavania-core/src/game/content/components/attributes.rs +++ b/rpg_components/src/components/attributes.rs @@ -1,5 +1,3 @@ -use crate::{game::configloader::*, ItemSystem}; - use anyhow::bail; use engine::prelude::{image::RgbaImage, *}; diff --git a/gavania-core/src/game/content/components/character_status.rs b/rpg_components/src/components/character_status.rs similarity index 100% rename from gavania-core/src/game/content/components/character_status.rs rename to rpg_components/src/components/character_status.rs diff --git a/gavania-core/src/game/content/components/crafting_materials.rs b/rpg_components/src/components/crafting_materials.rs similarity index 97% rename from gavania-core/src/game/content/components/crafting_materials.rs rename to rpg_components/src/components/crafting_materials.rs index 86b82d3..595830d 100644 --- a/gavania-core/src/game/content/components/crafting_materials.rs +++ b/rpg_components/src/components/crafting_materials.rs @@ -2,9 +2,6 @@ use engine::prelude::*; use paste::paste; -use crate::game::configloader::*; -use crate::game::content::prelude::*; - macro_rules! check_consume { ($self: ident, $var: ident, $amount: ident) => { paste! { diff --git a/gavania-core/src/game/content/components/inventory.rs b/rpg_components/src/components/inventory.rs similarity index 98% rename from gavania-core/src/game/content/components/inventory.rs rename to rpg_components/src/components/inventory.rs index 331758f..24f88ee 100644 --- a/gavania-core/src/game/content/components/inventory.rs +++ b/rpg_components/src/components/inventory.rs @@ -1,6 +1,3 @@ -use crate::game::configloader::*; -use crate::game::content::prelude::*; - use anyhow::Result; use engine::prelude::*; use std::slice::Iter; diff --git a/gavania-core/src/game/content/components/item_slots.rs b/rpg_components/src/components/item_slots.rs similarity index 99% rename from gavania-core/src/game/content/components/item_slots.rs rename to rpg_components/src/components/item_slots.rs index b36181a..00dc55f 100644 --- a/gavania-core/src/game/content/components/item_slots.rs +++ b/rpg_components/src/components/item_slots.rs @@ -1,16 +1,9 @@ -use std::sync::Arc; - -use std::collections::HashMap; - -use super::super::prelude::*; -use crate::game::configloader::*; -use crate::GameHandle; use anyhow::Result; - use engine::prelude::*; - use paste; +use std::{collections::HashMap, sync::Arc}; + macro_rules! load_item { ($me:ident, $var_name:ident, $slot:ident, $save_game:ident, $item_system:ident) => { if $save_game.$var_name.used { diff --git a/gavania-core/src/game/content/components/level.rs b/rpg_components/src/components/level.rs similarity index 97% rename from gavania-core/src/game/content/components/level.rs rename to rpg_components/src/components/level.rs index 11b4f56..0e24c0f 100644 --- a/gavania-core/src/game/content/components/level.rs +++ b/rpg_components/src/components/level.rs @@ -1,5 +1,3 @@ -use crate::{game::configloader::experience::ExperienceSettings, *}; - use anyhow::Result; use engine::prelude::*; diff --git a/gavania-core/src/game/content/components/macros.rs b/rpg_components/src/components/macros.rs similarity index 99% rename from gavania-core/src/game/content/components/macros.rs rename to rpg_components/src/components/macros.rs index cc9120c..43897ea 100644 --- a/gavania-core/src/game/content/components/macros.rs +++ b/rpg_components/src/components/macros.rs @@ -101,7 +101,7 @@ macro_rules! generate_stat { }; } -use super::Attributes; +use super::attributes::Attributes; pub trait AttributeAssociation { fn attribute_level(&self, attributes: &Attributes) -> u32; diff --git a/rpg_components/src/components/mod.rs b/rpg_components/src/components/mod.rs new file mode 100644 index 0000000..54528f0 --- /dev/null +++ b/rpg_components/src/components/mod.rs @@ -0,0 +1,12 @@ +pub mod ability_slots; +pub mod attributes; +pub mod character_status; +pub mod crafting_materials; +pub mod inventory; +pub mod item_slots; +pub mod level; +pub mod statistic_types; +pub mod statistics; + +#[macro_use] +pub mod macros; diff --git a/gavania-core/src/game/content/components/statistic_types.rs b/rpg_components/src/components/statistic_types.rs similarity index 99% rename from gavania-core/src/game/content/components/statistic_types.rs rename to rpg_components/src/components/statistic_types.rs index 8f39a74..baebf5a 100644 --- a/gavania-core/src/game/content/components/statistic_types.rs +++ b/rpg_components/src/components/statistic_types.rs @@ -1,6 +1,3 @@ -use crate::game::configloader::*; -use crate::game::content::prelude::*; - use anyhow::Result; use engine::prelude::*; diff --git a/gavania-core/src/game/content/components/statistics.rs b/rpg_components/src/components/statistics.rs similarity index 99% rename from gavania-core/src/game/content/components/statistics.rs rename to rpg_components/src/components/statistics.rs index fb59239..6d44a05 100644 --- a/gavania-core/src/game/content/components/statistics.rs +++ b/rpg_components/src/components/statistics.rs @@ -1,5 +1,3 @@ -use crate::game::{configloader::*, content::prelude::*}; - use engine::prelude::*; use super::macros::AttributeAssociation; diff --git a/gavania-core/src/game/configloader/abilities.rs b/rpg_components/src/config/abilities.rs similarity index 100% rename from gavania-core/src/game/configloader/abilities.rs rename to rpg_components/src/config/abilities.rs diff --git a/gavania-core/src/game/configloader/attributes.rs b/rpg_components/src/config/attributes.rs similarity index 100% rename from gavania-core/src/game/configloader/attributes.rs rename to rpg_components/src/config/attributes.rs diff --git a/gavania-core/src/game/configloader/experience.rs b/rpg_components/src/config/experience.rs similarity index 100% rename from gavania-core/src/game/configloader/experience.rs rename to rpg_components/src/config/experience.rs diff --git a/gavania-core/src/game/configloader/items.rs b/rpg_components/src/config/items.rs similarity index 100% rename from gavania-core/src/game/configloader/items.rs rename to rpg_components/src/config/items.rs diff --git a/rpg_components/src/config/mod.rs b/rpg_components/src/config/mod.rs new file mode 100644 index 0000000..3dc1af0 --- /dev/null +++ b/rpg_components/src/config/mod.rs @@ -0,0 +1,5 @@ +pub mod abilities; +pub mod attributes; +pub mod experience; +pub mod items; +pub mod save_game; diff --git a/gavania-core/src/game/configloader/save_game.rs b/rpg_components/src/config/save_game.rs similarity index 100% rename from gavania-core/src/game/configloader/save_game.rs rename to rpg_components/src/config/save_game.rs diff --git a/gavania-core/src/game/content/abilities/ability_addon.rs b/rpg_components/src/items/ability_addon.rs similarity index 99% rename from gavania-core/src/game/content/abilities/ability_addon.rs rename to rpg_components/src/items/ability_addon.rs index 5c6db4a..6bb51c4 100644 --- a/gavania-core/src/game/content/abilities/ability_addon.rs +++ b/rpg_components/src/items/ability_addon.rs @@ -1,8 +1,3 @@ -use crate::{ - game::{configloader::*, content::prelude::*}, - GameHandle, -}; - use anyhow::Result; use assetpath::AssetPath; use engine::prelude::*; diff --git a/gavania-core/src/game/content/abilities/ability_book.rs b/rpg_components/src/items/ability_book.rs similarity index 99% rename from gavania-core/src/game/content/abilities/ability_book.rs rename to rpg_components/src/items/ability_book.rs index 7952beb..2f09b56 100644 --- a/gavania-core/src/game/content/abilities/ability_book.rs +++ b/rpg_components/src/items/ability_book.rs @@ -1,7 +1,3 @@ -use crate::game::{configloader::*, content::prelude::*}; - -use crate::GameHandle; - use anyhow::Result; use cgmath::{Vector2, Vector3}; use engine::prelude::*; diff --git a/gavania-core/src/game/content/mechanics/items/item.rs b/rpg_components/src/items/item.rs similarity index 99% rename from gavania-core/src/game/content/mechanics/items/item.rs rename to rpg_components/src/items/item.rs index 02201c1..04f86bc 100644 --- a/gavania-core/src/game/content/mechanics/items/item.rs +++ b/rpg_components/src/items/item.rs @@ -3,9 +3,9 @@ use anyhow::Result; use std::str::FromStr; use std::sync::Arc; -use crate::*; +use crate::components::statistic_types::StatisticType; -use self::game::configloader::ItemSettings; +use super::Jewel; #[derive(Debug, PartialEq, Clone)] pub enum ItemAffix { diff --git a/gavania-core/src/game/content/mechanics/items/item_slots.rs b/rpg_components/src/items/item_slots.rs similarity index 98% rename from gavania-core/src/game/content/mechanics/items/item_slots.rs rename to rpg_components/src/items/item_slots.rs index cf013b2..9a07867 100644 --- a/gavania-core/src/game/content/mechanics/items/item_slots.rs +++ b/rpg_components/src/items/item_slots.rs @@ -1,5 +1,3 @@ -use crate::game::configloader::*; - use anyhow::Result; use assetpath::AssetPath; use engine::prelude::*; diff --git a/gavania-core/src/game/content/mechanics/items/item_system.rs b/rpg_components/src/items/item_system.rs similarity index 99% rename from gavania-core/src/game/content/mechanics/items/item_system.rs rename to rpg_components/src/items/item_system.rs index d7df984..9da1cea 100644 --- a/gavania-core/src/game/content/mechanics/items/item_system.rs +++ b/rpg_components/src/items/item_system.rs @@ -2,14 +2,11 @@ use anyhow::Result; use assetpath::AssetPath; use engine::prelude::*; +use std::collections::HashMap; use std::sync::{Arc, Mutex}; -use std::collections::HashMap; - use image::{imageops::FilterType, DynamicImage, ImageBuffer, Pixel, Rgba, RgbaImage}; -use crate::game::{configloader::*, content::prelude::*}; - #[derive(Debug, Clone, PartialEq)] pub enum Loot { Item(Item), diff --git a/gavania-core/src/game/content/mechanics/items/jewel.rs b/rpg_components/src/items/jewel.rs similarity index 98% rename from gavania-core/src/game/content/mechanics/items/jewel.rs rename to rpg_components/src/items/jewel.rs index 9b75b2b..41f28ac 100644 --- a/gavania-core/src/game/content/mechanics/items/jewel.rs +++ b/rpg_components/src/items/jewel.rs @@ -3,10 +3,6 @@ use std::{ sync::Arc, }; -use crate::*; - -use self::game::configloader::ItemSettings; - #[derive(Clone, Debug)] pub struct Jewel { pub rarity: Rarities, diff --git a/gavania-core/src/game/content/mechanics/items/map_item.rs b/rpg_components/src/items/map_item.rs similarity index 91% rename from gavania-core/src/game/content/mechanics/items/map_item.rs rename to rpg_components/src/items/map_item.rs index 774fb7d..e47eb66 100644 --- a/gavania-core/src/game/content/mechanics/items/map_item.rs +++ b/rpg_components/src/items/map_item.rs @@ -1,6 +1,8 @@ use std::sync::Arc; -use crate::*; +use engine::prelude::*; + +use super::{ItemSystem, Rarities}; #[derive(Clone)] pub struct MapItem { diff --git a/gavania-core/src/game/content/mechanics/items/mod.rs b/rpg_components/src/items/mod.rs similarity index 85% rename from gavania-core/src/game/content/mechanics/items/mod.rs rename to rpg_components/src/items/mod.rs index b62bb2e..6eb7010 100644 --- a/gavania-core/src/game/content/mechanics/items/mod.rs +++ b/rpg_components/src/items/mod.rs @@ -1,3 +1,5 @@ +pub mod ability_addon; +pub mod ability_book; mod item; mod item_slots; mod item_system; diff --git a/gavania-core/src/game/content/mechanics/items/rarities.rs b/rpg_components/src/items/rarities.rs similarity index 97% rename from gavania-core/src/game/content/mechanics/items/rarities.rs rename to rpg_components/src/items/rarities.rs index 028d35f..52f28a1 100644 --- a/gavania-core/src/game/content/mechanics/items/rarities.rs +++ b/rpg_components/src/items/rarities.rs @@ -1,13 +1,14 @@ -use crate::game::configloader::*; use anyhow::Result; use engine::prelude::*; -use crate::game::content::prelude::*; - use image::RgbaImage; use std::{fmt, slice::Iter}; +use crate::config::items::{ItemSettings, RarityColorSettings}; + +use super::ItemSystem; + #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)] pub enum Rarities { Common, diff --git a/gavania-core/src/game/content/mechanics/items/tooltip.rs b/rpg_components/src/items/tooltip.rs similarity index 99% rename from gavania-core/src/game/content/mechanics/items/tooltip.rs rename to rpg_components/src/items/tooltip.rs index bd18d21..e7e6ece 100644 --- a/gavania-core/src/game/content/mechanics/items/tooltip.rs +++ b/rpg_components/src/items/tooltip.rs @@ -1,6 +1,5 @@ -use crate::*; - use anyhow::{bail, Result}; +use engine::prelude::*; use std::sync::Arc; pub struct FittingResult { diff --git a/rpg_components/src/lib.rs b/rpg_components/src/lib.rs new file mode 100644 index 0000000..ff7458c --- /dev/null +++ b/rpg_components/src/lib.rs @@ -0,0 +1,5 @@ +#[macro_use] +pub mod components; + +pub mod config; +pub mod items;