reverse inventory definition
This commit is contained in:
parent
d655da0738
commit
a1050c1440
|
@ -24,7 +24,6 @@ pub struct Creature {
|
||||||
pub birth_date: Time,
|
pub birth_date: Time,
|
||||||
pub profession: Profession,
|
pub profession: Profession,
|
||||||
pub agenda: Agenda,
|
pub agenda: Agenda,
|
||||||
pub inventory: Vec<EntityId>,
|
|
||||||
pub weapon: Option<EntityId>,
|
pub weapon: Option<EntityId>,
|
||||||
pub armor: Option<EntityId>,
|
pub armor: Option<EntityId>,
|
||||||
}
|
}
|
||||||
|
@ -50,7 +49,6 @@ impl Creature {
|
||||||
birth_date: birth_date,
|
birth_date: birth_date,
|
||||||
profession: profession,
|
profession: profession,
|
||||||
agenda: Agenda::Idle(0),
|
agenda: Agenda::Idle(0),
|
||||||
inventory: Vec::new(),
|
|
||||||
weapon: None,
|
weapon: None,
|
||||||
armor: None,
|
armor: None,
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,8 @@ pub struct ItemCrafted {
|
||||||
|
|
||||||
impl Action for ItemCrafted {
|
impl Action for ItemCrafted {
|
||||||
fn apply(&self, state: &mut GameState) {
|
fn apply(&self, state: &mut GameState) {
|
||||||
state.add_item(self.item.clone());
|
let item_id = state.add_item(self.item.clone());
|
||||||
|
state.claim_item(self.crafter, item_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn description(&self) -> String {
|
fn description(&self) -> String {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
use crate::entity::{Entity, Location};
|
use crate::entity::{Entity, Location, EntityId};
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub enum ItemType {
|
pub enum ItemType {
|
||||||
|
@ -11,6 +11,7 @@ pub enum ItemType {
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct Item {
|
pub struct Item {
|
||||||
pub entity: Entity,
|
pub entity: Entity,
|
||||||
|
pub owner: Option<EntityId>,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub item_type: ItemType,
|
pub item_type: ItemType,
|
||||||
}
|
}
|
||||||
|
@ -38,6 +39,7 @@ impl ItemGenerator {
|
||||||
damage_dice: 1,
|
damage_dice: 1,
|
||||||
damage_sides: 6,
|
damage_sides: 6,
|
||||||
}),
|
}),
|
||||||
|
owner: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use rand::prelude::*;
|
use rand::prelude::*;
|
||||||
use crate::entity::{Location, EntityId};
|
use crate::entity::{Location, EntityId, Entity};
|
||||||
use crate::creature::{Creature, Profession, CreatureGenerator};
|
use crate::creature::{Creature, Profession, CreatureGenerator};
|
||||||
use crate::item::Item;
|
use crate::item::Item;
|
||||||
use crate::site::{Town, Tavern};
|
use crate::site::{Town, Tavern};
|
||||||
|
@ -168,6 +168,11 @@ impl GameState {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn claim_item(&mut self, new_owner_id: EntityId, item_id: EntityId) {
|
||||||
|
let mut item = self.items.get_mut(&item_id).unwrap();
|
||||||
|
item.owner = Some(new_owner_id.clone());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|
Loading…
Reference in New Issue