Move builder assets in EntityConfig to meta field

This commit is contained in:
juliancoffee 2021-07-10 23:51:29 +03:00
parent 6403ee0634
commit 1d2ea717ab
67 changed files with 159 additions and 168 deletions

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -16,6 +16,5 @@ EntityConfig (
])),
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,8 @@ EntityConfig (
main_tool: Some(Item("common.items.npc_weapons.biped_small.gnarling.adlet_bow")),
second_tool: None,
loadout_asset: Some("common.loadout.dungeon.tier-0.gnarling"),
skillset_asset: Some("common.skillset.dungeon.tier-0.bow"),
meta: [
LoadoutAsset("common.loadout.dungeon.tier-0.gnarling"),
SkillSetAsset("common.skillset.dungeon.tier-0.bow"),
],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,7 @@ EntityConfig (
main_tool: Some(Item("common.items.npc_weapons.biped_small.gnarling.wooden_spear")),
second_tool: None,
loadout_asset: Some("common.loadout.dungeon.tier-0.gnarling"),
skillset_asset: None,
meta: [
LoadoutAsset("common.loadout.dungeon.tier-0.gnarling"),
],
)

View File

@ -8,6 +8,7 @@ EntityConfig (
main_tool: Some(Item("common.items.npc_weapons.biped_small.gnarling.gnoll_staff")),
second_tool: None,
loadout_asset: Some("common.loadout.dungeon.tier-0.gnarling"),
skillset_asset: None,
meta: [
LoadoutAsset("common.loadout.dungeon.tier-0.gnarling"),
],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,8 @@ EntityConfig (
main_tool: Some(Item("common.items.npc_weapons.biped_small.adlet.adlet_bow")),
second_tool: None,
loadout_asset: Some("common.loadout.dungeon.tier-1.adlet_bow"),
skillset_asset: Some("common.skillset.dungeon.tier-1.bow"),
meta: [
LoadoutAsset("common.loadout.dungeon.tier-1.adlet_bow"),
SkillSetAsset("common.skillset.dungeon.tier-1.bow"),
],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,7 @@ EntityConfig (
main_tool: Some(Item("common.items.npc_weapons.biped_small.adlet.wooden_spear")),
second_tool: None,
loadout_asset: Some("common.loadout.dungeon.tier-1.adlet_spear"),
skillset_asset: None,
meta: [
LoadoutAsset("common.loadout.dungeon.tier-1.adlet_spear"),
],
)

View File

@ -8,6 +8,7 @@ EntityConfig (
main_tool: Some(Item("common.items.npc_weapons.biped_small.adlet.gnoll_staff")),
second_tool: None,
loadout_asset: Some("common.loadout.dungeon.tier-1.adlet_spear"),
skillset_asset: None,
meta: [
LoadoutAsset("common.loadout.dungeon.tier-1.adlet_spear"),
],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,8 @@ EntityConfig (
main_tool: Some(Item("common.items.npc_weapons.biped_small.sahagin.adlet_bow")),
second_tool: None,
loadout_asset: Some("common.loadout.dungeon.tier-2.sahagin"),
skillset_asset: Some("common.skillset.dungeon.tier-2.bow"),
meta: [
LoadoutAsset("common.loadout.dungeon.tier-2.sahagin"),
SkillSetAsset("common.skillset.dungeon.tier-2.bow"),
],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,7 @@ EntityConfig (
main_tool: Some(Item("common.items.npc_weapons.biped_small.sahagin.wooden_spear")),
second_tool: None,
loadout_asset: Some("common.loadout.dungeon.tier-2.sahagin"),
skillset_asset: None,
meta: [
LoadoutAsset("common.loadout.dungeon.tier-2.sahagin"),
],
)

View File

@ -8,6 +8,7 @@ EntityConfig (
main_tool: Some(Item("common.items.npc_weapons.biped_small.sahagin.gnoll_staff")),
second_tool: None,
loadout_asset: Some("common.loadout.dungeon.tier-2.sahagin"),
skillset_asset: None,
meta: [
LoadoutAsset("common.loadout.dungeon.tier-2.sahagin"),
],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,8 @@ EntityConfig (
main_tool: Some(Item("common.items.npc_weapons.biped_small.haniwa.adlet_bow")),
second_tool: None,
loadout_asset: Some("common.loadout.dungeon.tier-3.haniwa"),
skillset_asset: Some("common.skillset.dungeon.tier-3.bow"),
meta: [
LoadoutAsset("common.loadout.dungeon.tier-3.haniwa"),
SkillSetAsset("common.skillset.dungeon.tier-3.bow"),
],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,7 @@ EntityConfig (
main_tool: Some(Item("common.items.npc_weapons.biped_small.haniwa.wooden_spear")),
second_tool: None,
loadout_asset: Some("common.loadout.dungeon.tier-3.haniwa"),
skillset_asset: None,
meta: [
LoadoutAsset("common.loadout.dungeon.tier-3.haniwa"),
],
)

View File

@ -8,6 +8,7 @@ EntityConfig (
main_tool: Some(Item("common.items.npc_weapons.biped_small.haniwa.gnoll_staff")),
second_tool: None,
loadout_asset: Some("common.loadout.dungeon.tier-3.haniwa"),
skillset_asset: None,
meta: [
LoadoutAsset("common.loadout.dungeon.tier-3.haniwa"),
],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,8 @@ EntityConfig (
main_tool: Some(Item("common.items.npc_weapons.biped_small.myrmidon.adlet_bow")),
second_tool: None,
loadout_asset: Some("common.loadout.dungeon.tier-4.myrmidon"),
skillset_asset: Some("common.skillset.dungeon.tier-4.bow"),
meta: [
LoadoutAsset("common.loadout.dungeon.tier-4.myrmidon"),
SkillSetAsset("common.skillset.dungeon.tier-4.bow"),
],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,7 @@ EntityConfig (
main_tool: Some(Item("common.items.npc_weapons.biped_small.myrmidon.wooden_spear")),
second_tool: None,
loadout_asset: Some("common.loadout.dungeon.tier-4.myrmidon"),
skillset_asset: None,
meta: [
LoadoutAsset("common.loadout.dungeon.tier-4.myrmidon"),
],
)

View File

@ -8,6 +8,7 @@ EntityConfig (
main_tool: Some(Item("common.items.npc_weapons.biped_small.myrmidon.gnoll_staff")),
second_tool: None,
loadout_asset: Some("common.loadout.dungeon.tier-4.myrmidon"),
skillset_asset: None,
meta: [
LoadoutAsset("common.loadout.dungeon.tier-4.myrmidon"),
],
)

View File

@ -12,7 +12,9 @@ EntityConfig (
])),
second_tool: None,
loadout_asset: Some("common.loadout.dungeon.tier-5.beastmaster"),
// TODO: make own skillset for him?
skillset_asset: Some("common.skillset.dungeon.tier-5.enemy"),
meta: [
LoadoutAsset("common.loadout.dungeon.tier-5.beastmaster"),
// TODO: make own skillset for him?
SkillSetAsset("common.skillset.dungeon.tier-5.enemy"),
],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -15,6 +15,8 @@ EntityConfig (
])),
second_tool: None,
loadout_asset: Some("common.loadout.dungeon.tier-5.cultist"),
skillset_asset: Some("common.skillset.dungeon.tier-5.enemy"),
meta: [
LoadoutAsset("common.loadout.dungeon.tier-5.cultist"),
SkillSetAsset("common.skillset.dungeon.tier-5.enemy"),
],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,7 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: Some("common.loadout.dungeon.tier-5.husk"),
skillset_asset: None,
meta: [
LoadoutAsset("common.loadout.dungeon.tier-5.husk"),
],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -11,6 +11,5 @@ EntityConfig (
])),
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -11,6 +11,5 @@ EntityConfig (
])),
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -11,6 +11,12 @@ EntityConfig (
/// Alignment, can be Uninit
alignment: Alignment(Enemy),
/// Loot
/// Can be Item (with asset_specifier for item)
/// or LootTable (with asset_specifier for loot table)
/// or Uninit (means it should be specified something in the code)
loot: LootTable("common.loot_tables.humanoids"),
/// Main and second tools
/// Can be Option<Item> (with asset_specifier for item)
/// or Choice
@ -18,18 +24,12 @@ EntityConfig (
main_tool: Some(Item("common.items.weapons.axe_1h.orichalcum-0")),
second_tool: None,
/// Loadout Config (with asset_specifier for loadout)
loadout_asset: Some("common.loadout.village.merchant"),
/// Skillset Config (with asset_specifier for skillset)
skillset_asset: Some("common.skillset.village.merchant"),
/// Loot
/// Can be Item (with asset_specifier for item)
/// or LootTable (with asset_specifier for loot table)
/// or Uninit (means it should be specified something in the code)
loot: LootTable("common.loot_tables.humanoids"),
/// Meta Info (level, alignment, agency, etc)
// meta: {},
/// Meta Info
/// Possible fields:
/// LoadoutAsset(String) with asset_specifier for loadout
/// SkillSetAsset(String) with asset_specifier for skillset
meta: [
LoadoutAsset("common.loadout.village.merchant"),
SkillSetAsset("common.skillset.village.merchant"),
],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,7 @@ EntityConfig (
main_tool: Some(Item("common.items.weapons.sword.iron-4")),
second_tool: None,
loadout_asset: None,
skillset_asset: Some("common.skillset.village.guard"),
meta: [
SkillSetAsset("common.skillset.village.guard"),
],
)

View File

@ -9,6 +9,7 @@ EntityConfig (
main_tool: Some(Item("common.items.weapons.bow.eldwood-0")),
second_tool: None,
loadout_asset: None,
skillset_asset: Some("common.skillset.village.merchant"),
meta: [
SkillSetAsset("common.skillset.village.merchant"),
],
)

View File

@ -16,6 +16,5 @@ EntityConfig (
])),
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -11,6 +11,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -8,6 +8,5 @@ EntityConfig (
main_tool: None,
second_tool: None,
loadout_asset: None,
skillset_asset: None,
meta: [],
)

View File

@ -33,6 +33,12 @@ enum AlignmentMark {
Uninit,
}
#[derive(Debug, Deserialize, Clone)]
enum Meta {
LoadoutAsset(String),
SkillSetAsset(String),
}
#[derive(Debug, Deserialize, Clone)]
struct EntityConfig {
name: Option<String>,
@ -43,8 +49,7 @@ struct EntityConfig {
main_tool: Option<ItemSpec>,
second_tool: Option<ItemSpec>,
// Meta fields
loadout_asset: Option<String>,
skillset_asset: Option<String>,
meta: Vec<Meta>,
}
impl assets::Asset for EntityConfig {
@ -117,8 +122,7 @@ impl EntityInfo {
loot,
main_tool,
second_tool,
loadout_asset,
skillset_asset,
meta,
} = config;
if let Some(name) = name {
@ -168,12 +172,15 @@ impl EntityInfo {
self = self.with_main_tool(second_tool);
}
if let Some(loadout_asset) = loadout_asset {
self = self.with_loadout_asset(loadout_asset);
}
if let Some(skillset_asset) = skillset_asset {
self = self.with_skillset_asset(skillset_asset);
for field in meta {
match field {
Meta::LoadoutAsset(asset) => {
self = self.with_loadout_asset(asset);
},
Meta::SkillSetAsset(asset) => {
self = self.with_skillset_asset(asset);
},
}
}
self
@ -335,10 +342,9 @@ mod tests {
let EntityConfig {
main_tool,
second_tool,
loadout_asset,
skillset_asset,
body,
loot,
body,
meta,
name: _name, // can't fail if serialized, it's a boring String
alignment: _alignment, // can't fail if serialized, it's a boring enum
} = config.clone();
@ -374,16 +380,19 @@ mod tests {
LootKind::Uninit => {},
}
if let Some(loadout_asset) = loadout_asset {
let rng = &mut rand::thread_rng();
let builder = LoadoutBuilder::default();
// we need to just load it check if it exists,
// because all loadouts are tested in LoadoutBuilder module
std::mem::drop(builder.with_asset_expect(&loadout_asset, rng));
}
if let Some(skillset_asset) = skillset_asset {
std::mem::drop(SkillSetBuilder::from_asset_expect(&skillset_asset));
for field in meta {
match field {
Meta::LoadoutAsset(asset) => {
let rng = &mut rand::thread_rng();
let builder = LoadoutBuilder::default();
// we need to just load it check if it exists,
// because all loadouts are tested in LoadoutBuilder module
std::mem::drop(builder.with_asset_expect(&asset, rng));
},
Meta::SkillSetAsset(asset) => {
std::mem::drop(SkillSetBuilder::from_asset_expect(&asset));
},
}
}
}
}