From dd88aeb2bda623c02efbb50ae738d65169bc0c13 Mon Sep 17 00:00:00 2001 From: juliancoffee Date: Sat, 5 Jun 2021 02:10:15 +0300 Subject: [PATCH] Add entity template and make 'loadouts' singular --- assets/common/entity/test.ron | 31 +++++++++++++++++++ .../common/{loadouts => loadout}/default.ron | 0 .../dungeon/tier-0/gnarling.ron | 0 .../dungeon/tier-1/adlet_bow.ron | 0 .../dungeon/tier-1/adlet_spear.ron | 0 .../dungeon/tier-2/sahagin.ron | 0 .../dungeon/tier-3/haniwa.ron | 0 .../dungeon/tier-4/myrmidon.ron | 0 .../dungeon/tier-5/beastmaster.ron | 0 .../dungeon/tier-5/husk.ron | 0 .../dungeon/tier-5/warlock.ron | 0 .../dungeon/tier-5/warlord.ron | 0 assets/common/{loadouts => loadout}/test.ron | 0 .../{loadouts => loadout}/village/guard.ron | 0 .../village/merchant.ron | 0 .../village/villager.ron | 0 common/src/comp/inventory/loadout_builder.rs | 30 +++++++++--------- 17 files changed, 46 insertions(+), 15 deletions(-) create mode 100644 assets/common/entity/test.ron rename assets/common/{loadouts => loadout}/default.ron (100%) rename assets/common/{loadouts => loadout}/dungeon/tier-0/gnarling.ron (100%) rename assets/common/{loadouts => loadout}/dungeon/tier-1/adlet_bow.ron (100%) rename assets/common/{loadouts => loadout}/dungeon/tier-1/adlet_spear.ron (100%) rename assets/common/{loadouts => loadout}/dungeon/tier-2/sahagin.ron (100%) rename assets/common/{loadouts => loadout}/dungeon/tier-3/haniwa.ron (100%) rename assets/common/{loadouts => loadout}/dungeon/tier-4/myrmidon.ron (100%) rename assets/common/{loadouts => loadout}/dungeon/tier-5/beastmaster.ron (100%) rename assets/common/{loadouts => loadout}/dungeon/tier-5/husk.ron (100%) rename assets/common/{loadouts => loadout}/dungeon/tier-5/warlock.ron (100%) rename assets/common/{loadouts => loadout}/dungeon/tier-5/warlord.ron (100%) rename assets/common/{loadouts => loadout}/test.ron (100%) rename assets/common/{loadouts => loadout}/village/guard.ron (100%) rename assets/common/{loadouts => loadout}/village/merchant.ron (100%) rename assets/common/{loadouts => loadout}/village/villager.ron (100%) diff --git a/assets/common/entity/test.ron b/assets/common/entity/test.ron new file mode 100644 index 0000000000..64b15c7be2 --- /dev/null +++ b/assets/common/entity/test.ron @@ -0,0 +1,31 @@ +{ + /// Name of Entity + name: Some("Paddy"), + + /// Body + /// Can be Exact (Body with all fields e.g BodyType, Species, Hair color and such) + /// or Random (will use random if available for this Body) + /// or RandomWith (will use random_with if available for this Body) + body: Humanoid(Random), + + /// Loot + /// Can be Item (with asset_specifier for item) + /// or LootTable (with asset_specifier for loot table) + loot: LootTable("common.loot_tables.humanoids"), + + /// Main and second tools + /// Can be Option (with asset_specifier for item) + /// or Choice + /// (array of pairs with weight of choosing some item and Option) + main_tool: Some(Item("common.items.weapons.axe_1h.orichalcum-0")), + second_tool: None, + + /// Loadout Config as Option (with asset_specifier for loadout) + loadout_config: Some(Loadout("common.loadout.village.merchant")), + + /// Skillset Config as Option (with asset_specifier for skillset) + skillset_config: None, + + /// Meta Info (level, alignment, agency, etc) + meta: {}, +} diff --git a/assets/common/loadouts/default.ron b/assets/common/loadout/default.ron similarity index 100% rename from assets/common/loadouts/default.ron rename to assets/common/loadout/default.ron diff --git a/assets/common/loadouts/dungeon/tier-0/gnarling.ron b/assets/common/loadout/dungeon/tier-0/gnarling.ron similarity index 100% rename from assets/common/loadouts/dungeon/tier-0/gnarling.ron rename to assets/common/loadout/dungeon/tier-0/gnarling.ron diff --git a/assets/common/loadouts/dungeon/tier-1/adlet_bow.ron b/assets/common/loadout/dungeon/tier-1/adlet_bow.ron similarity index 100% rename from assets/common/loadouts/dungeon/tier-1/adlet_bow.ron rename to assets/common/loadout/dungeon/tier-1/adlet_bow.ron diff --git a/assets/common/loadouts/dungeon/tier-1/adlet_spear.ron b/assets/common/loadout/dungeon/tier-1/adlet_spear.ron similarity index 100% rename from assets/common/loadouts/dungeon/tier-1/adlet_spear.ron rename to assets/common/loadout/dungeon/tier-1/adlet_spear.ron diff --git a/assets/common/loadouts/dungeon/tier-2/sahagin.ron b/assets/common/loadout/dungeon/tier-2/sahagin.ron similarity index 100% rename from assets/common/loadouts/dungeon/tier-2/sahagin.ron rename to assets/common/loadout/dungeon/tier-2/sahagin.ron diff --git a/assets/common/loadouts/dungeon/tier-3/haniwa.ron b/assets/common/loadout/dungeon/tier-3/haniwa.ron similarity index 100% rename from assets/common/loadouts/dungeon/tier-3/haniwa.ron rename to assets/common/loadout/dungeon/tier-3/haniwa.ron diff --git a/assets/common/loadouts/dungeon/tier-4/myrmidon.ron b/assets/common/loadout/dungeon/tier-4/myrmidon.ron similarity index 100% rename from assets/common/loadouts/dungeon/tier-4/myrmidon.ron rename to assets/common/loadout/dungeon/tier-4/myrmidon.ron diff --git a/assets/common/loadouts/dungeon/tier-5/beastmaster.ron b/assets/common/loadout/dungeon/tier-5/beastmaster.ron similarity index 100% rename from assets/common/loadouts/dungeon/tier-5/beastmaster.ron rename to assets/common/loadout/dungeon/tier-5/beastmaster.ron diff --git a/assets/common/loadouts/dungeon/tier-5/husk.ron b/assets/common/loadout/dungeon/tier-5/husk.ron similarity index 100% rename from assets/common/loadouts/dungeon/tier-5/husk.ron rename to assets/common/loadout/dungeon/tier-5/husk.ron diff --git a/assets/common/loadouts/dungeon/tier-5/warlock.ron b/assets/common/loadout/dungeon/tier-5/warlock.ron similarity index 100% rename from assets/common/loadouts/dungeon/tier-5/warlock.ron rename to assets/common/loadout/dungeon/tier-5/warlock.ron diff --git a/assets/common/loadouts/dungeon/tier-5/warlord.ron b/assets/common/loadout/dungeon/tier-5/warlord.ron similarity index 100% rename from assets/common/loadouts/dungeon/tier-5/warlord.ron rename to assets/common/loadout/dungeon/tier-5/warlord.ron diff --git a/assets/common/loadouts/test.ron b/assets/common/loadout/test.ron similarity index 100% rename from assets/common/loadouts/test.ron rename to assets/common/loadout/test.ron diff --git a/assets/common/loadouts/village/guard.ron b/assets/common/loadout/village/guard.ron similarity index 100% rename from assets/common/loadouts/village/guard.ron rename to assets/common/loadout/village/guard.ron diff --git a/assets/common/loadouts/village/merchant.ron b/assets/common/loadout/village/merchant.ron similarity index 100% rename from assets/common/loadouts/village/merchant.ron rename to assets/common/loadout/village/merchant.ron diff --git a/assets/common/loadouts/village/villager.ron b/assets/common/loadout/village/villager.ron similarity index 100% rename from assets/common/loadouts/village/villager.ron rename to assets/common/loadout/village/villager.ron diff --git a/common/src/comp/inventory/loadout_builder.rs b/common/src/comp/inventory/loadout_builder.rs index f373b4d800..ed508f39e8 100644 --- a/common/src/comp/inventory/loadout_builder.rs +++ b/common/src/comp/inventory/loadout_builder.rs @@ -485,7 +485,7 @@ impl LoadoutBuilder { /// Set default armor items for the loadout. This may vary with game /// updates, but should be safe defaults for a new character. #[must_use] - pub fn defaults(self) -> Self { self.apply_asset_expect("common.loadouts.default") } + pub fn defaults(self) -> Self { self.apply_asset_expect("common.loadout.default") } /// Builds loadout of creature when spawned #[must_use] @@ -529,45 +529,45 @@ impl LoadoutBuilder { match config { LoadoutConfig::Gnarling => match active_tool_kind { Some(ToolKind::Bow | ToolKind::Staff | ToolKind::Spear) => { - builder.apply_asset_expect("common.loadouts.dungeon.tier-0.gnarling") + builder.apply_asset_expect("common.loadout.dungeon.tier-0.gnarling") }, _ => builder, }, LoadoutConfig::Adlet => match active_tool_kind { Some(ToolKind::Bow) => { - builder.apply_asset_expect("common.loadouts.dungeon.tier-1.adlet_bow") + builder.apply_asset_expect("common.loadout.dungeon.tier-1.adlet_bow") }, Some(ToolKind::Spear | ToolKind::Staff) => { - builder.apply_asset_expect("common.loadouts.dungeon.tier-1.adlet_spear") + builder.apply_asset_expect("common.loadout.dungeon.tier-1.adlet_spear") }, _ => builder, }, LoadoutConfig::Sahagin => { - builder.apply_asset_expect("common.loadouts.dungeon.tier-2.sahagin") + builder.apply_asset_expect("common.loadout.dungeon.tier-2.sahagin") }, LoadoutConfig::Haniwa => { - builder.apply_asset_expect("common.loadouts.dungeon.tier-3.haniwa") + builder.apply_asset_expect("common.loadout.dungeon.tier-3.haniwa") }, LoadoutConfig::Myrmidon => { - builder.apply_asset_expect("common.loadouts.dungeon.tier-4.myrmidon") + builder.apply_asset_expect("common.loadout.dungeon.tier-4.myrmidon") }, LoadoutConfig::Husk => { - builder.apply_asset_expect("common.loadouts.dungeon.tier-5.husk") + builder.apply_asset_expect("common.loadout.dungeon.tier-5.husk") }, LoadoutConfig::Beastmaster => { - builder.apply_asset_expect("common.loadouts.dungeon.tier-5.beastmaster") + builder.apply_asset_expect("common.loadout.dungeon.tier-5.beastmaster") }, LoadoutConfig::Warlord => { - builder.apply_asset_expect("common.loadouts.dungeon.tier-5.warlord") + builder.apply_asset_expect("common.loadout.dungeon.tier-5.warlord") }, LoadoutConfig::Warlock => { - builder.apply_asset_expect("common.loadouts.dungeon.tier-5.warlock") + builder.apply_asset_expect("common.loadout.dungeon.tier-5.warlock") }, LoadoutConfig::Villager => builder - .apply_asset_expect("common.loadouts.village.villager") + .apply_asset_expect("common.loadout.village.villager") .bag(ArmorSlot::Bag1, Some(make_potion_bag(10))), LoadoutConfig::Guard => builder - .apply_asset_expect("common.loadouts.village.guard") + .apply_asset_expect("common.loadout.village.guard") .bag(ArmorSlot::Bag1, Some(make_potion_bag(25))), LoadoutConfig::Merchant => { let mut backpack = @@ -685,7 +685,7 @@ impl LoadoutBuilder { } } builder - .apply_asset_expect("common.loadouts.village.merchant") + .apply_asset_expect("common.loadout.village.merchant") .back(Some(backpack)) .bag(ArmorSlot::Bag1, Some(bag1)) .bag(ArmorSlot::Bag2, Some(bag2)) @@ -947,7 +947,7 @@ mod tests { // It just load everything that could // TODO: add some checks, e.g. that Armor(Head) key correspond // to Item with ItemKind Head(_) - let loadouts = LoadoutList::load_expect_cloned("common.loadouts.*").0; + let loadouts = LoadoutList::load_expect_cloned("common.loadout.*").0; for loadout in loadouts { let spec = loadout.0; for (key, entry) in spec {