glorbs/src/game/prefab.rs

52 lines
1.4 KiB
Rust

use bevy::{prelude::*, sprite::Anchor};
use bevy_rapier2d::prelude::*;
use item::{Inventory, Item, ItemSource, ItemStack, Stockpile};
use work::{WorkDuration, Worker};
use super::*;
use crate::util::SpriteLoader;
#[derive(Clone, Debug, Default, Component, Reflect)]
#[reflect(Component)]
#[require(
Name(|| Name::from("Glorb")),
Sprite(|| Sprite {
anchor: Anchor::BottomCenter,
..default()
}),
SpriteLoader(|| SpriteLoader::from("sprites/glorb.png")),
Worker,
Inventory(|| Inventory::with_capacity(1)),
Velocity,
RigidBody(|| RigidBody::KinematicVelocityBased),
)]
pub struct Glorb;
#[derive(Clone, Debug, Default, Component, Reflect)]
#[reflect(Component)]
#[require(
Name(|| Name::from("Tree")),
Sprite(|| Sprite {
anchor: Anchor::Custom(Vec2 { x: 0.0, y: -0.375 }),
..default()
}),
SpriteLoader(|| SpriteLoader::from("sprites/tree.png")),
ItemSource(|| ItemSource(ItemStack { item: Item::Wood, count: 1 })),
WorkDuration(|| WorkDuration(5.0))
)]
pub struct Tree;
#[derive(Clone, Debug, Default, Component, Reflect)]
#[reflect(Component)]
#[require(
Name(|| Name::from("Chest")),
Sprite(|| Sprite {
anchor: Anchor::Custom(Vec2 { x: 0.0, y: -0.375 }),
..default()
}),
SpriteLoader(|| SpriteLoader::from("sprites/box.png")),
Inventory(|| Inventory::with_capacity(25)),
Stockpile,
)]
pub struct Chest;