resource asset
This commit is contained in:
14
Cargo.lock
generated
14
Cargo.lock
generated
@@ -4446,6 +4446,20 @@ version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832"
|
||||
|
||||
[[package]]
|
||||
name = "resources"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"asset_loader",
|
||||
"bevy",
|
||||
"bevy_asset_loader",
|
||||
"ron",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"shared",
|
||||
"world_generation",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rgb"
|
||||
version = "0.8.47"
|
||||
|
||||
@@ -5,7 +5,7 @@ members = [
|
||||
"game/buildings",
|
||||
"game/shared",
|
||||
"engine/world_generation",
|
||||
"engine/asset_loader", "game/buildings", "game/shared", "game/units", "engine/data"]
|
||||
"engine/asset_loader", "game/buildings", "game/shared", "game/units", "engine/data", "game/resources"]
|
||||
|
||||
# Enable a small amount of optimization in debug mode
|
||||
[profile.dev]
|
||||
|
||||
20
game/resources/Cargo.toml
Normal file
20
game/resources/Cargo.toml
Normal file
@@ -0,0 +1,20 @@
|
||||
[package]
|
||||
name = "resources"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
bevy = "0.14.2"
|
||||
world_generation = { path = "../../engine/world_generation" }
|
||||
shared = { path = "../shared" }
|
||||
serde = { version = "1.0.204", features = ["derive"] }
|
||||
asset_loader = { path = "../../engine/asset_loader" }
|
||||
serde_json = "1.0.120"
|
||||
ron = "0.8.1"
|
||||
bevy_asset_loader = { version = "0.21.0", features = [
|
||||
"standard_dynamic_assets",
|
||||
"3d",
|
||||
] }
|
||||
|
||||
[features]
|
||||
tracing = []
|
||||
16
game/resources/src/lib.rs
Normal file
16
game/resources/src/lib.rs
Normal file
@@ -0,0 +1,16 @@
|
||||
pub mod resource_asset;
|
||||
|
||||
pub fn add(left: usize, right: usize) -> usize {
|
||||
left + right
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn it_works() {
|
||||
let result = add(2, 2);
|
||||
assert_eq!(result, 4);
|
||||
}
|
||||
}
|
||||
49
game/resources/src/resource_asset.rs
Normal file
49
game/resources/src/resource_asset.rs
Normal file
@@ -0,0 +1,49 @@
|
||||
use asset_loader::create_asset_loader;
|
||||
use bevy::prelude::*;
|
||||
use bevy_asset_loader::asset_collection::AssetCollection;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use shared::Tier;
|
||||
|
||||
#[derive(Asset, TypePath, Debug, Serialize, Deserialize)]
|
||||
pub struct ResourceAsset {
|
||||
pub identifier: String,
|
||||
pub name: String,
|
||||
pub description: String,
|
||||
pub sprite_id: usize,
|
||||
pub tier: Tier,
|
||||
}
|
||||
|
||||
create_asset_loader!(
|
||||
ResourceAssetPlugin,
|
||||
ResourceAssetLoader,
|
||||
ResourceAsset,
|
||||
&["res", "res.ron"],
|
||||
;?
|
||||
);
|
||||
|
||||
#[derive(Resource, AssetCollection)]
|
||||
pub struct ResourceDatabase {
|
||||
#[asset(key = "resources", collection(typed))]
|
||||
pub units: Vec<Handle<ResourceAsset>>,
|
||||
}
|
||||
|
||||
impl ResourceDatabase {
|
||||
pub fn create_lookup(&self, assets: &Assets<ResourceAsset>) -> ResourceLookup {
|
||||
let mut identifiers = Vec::with_capacity(self.units.len());
|
||||
for handle in &self.units {
|
||||
if let Some(asset) = assets.get(handle.id()) {
|
||||
identifiers.push(asset.identifier.clone());
|
||||
}
|
||||
}
|
||||
return ResourceLookup {
|
||||
handles: self.units.clone(),
|
||||
identifiers,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Resource)]
|
||||
pub struct ResourceLookup {
|
||||
pub handles: Vec<Handle<ResourceAsset>>,
|
||||
pub identifiers: Vec<String>,
|
||||
}
|
||||
@@ -1,8 +1,19 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
pub mod building;
|
||||
pub mod despawn;
|
||||
pub mod events;
|
||||
pub mod identifiers;
|
||||
pub mod resources;
|
||||
pub mod sets;
|
||||
pub mod states;
|
||||
pub mod tags;
|
||||
pub mod events;
|
||||
pub mod sets;
|
||||
pub mod resources;
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub enum Tier {
|
||||
Zero,
|
||||
One,
|
||||
Two,
|
||||
Three,
|
||||
Superior,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user