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"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832"
|
checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "resources"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"asset_loader",
|
||||||
|
"bevy",
|
||||||
|
"bevy_asset_loader",
|
||||||
|
"ron",
|
||||||
|
"serde",
|
||||||
|
"serde_json",
|
||||||
|
"shared",
|
||||||
|
"world_generation",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rgb"
|
name = "rgb"
|
||||||
version = "0.8.47"
|
version = "0.8.47"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ members = [
|
|||||||
"game/buildings",
|
"game/buildings",
|
||||||
"game/shared",
|
"game/shared",
|
||||||
"engine/world_generation",
|
"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
|
# Enable a small amount of optimization in debug mode
|
||||||
[profile.dev]
|
[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 building;
|
||||||
pub mod despawn;
|
pub mod despawn;
|
||||||
|
pub mod events;
|
||||||
pub mod identifiers;
|
pub mod identifiers;
|
||||||
|
pub mod resources;
|
||||||
|
pub mod sets;
|
||||||
pub mod states;
|
pub mod states;
|
||||||
pub mod tags;
|
pub mod tags;
|
||||||
pub mod events;
|
|
||||||
pub mod sets;
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
pub mod resources;
|
pub enum Tier {
|
||||||
|
Zero,
|
||||||
|
One,
|
||||||
|
Two,
|
||||||
|
Three,
|
||||||
|
Superior,
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user