Browse Source

CharacterEntityId

pbs
jake 5 years ago
parent
commit
0954d85e5a
  1. 8
      src/entity/character.rs
  2. 8
      src/entity/gateway/inmemory.rs
  3. 11
      src/entity/item/mod.rs
  4. 19
      src/ship/items.rs

8
src/entity/character.rs

@ -227,9 +227,13 @@ pub struct CharacterGuildCard {
pub description: String, pub description: String,
} }
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub struct CharacterEntityId(pub u32);
#[derive(Clone)] #[derive(Clone)]
pub struct CharacterEntity { pub struct CharacterEntity {
pub id: u32,
pub id: CharacterEntityId,
pub user_id: u32, pub user_id: u32,
pub slot: u32, pub slot: u32,
@ -249,7 +253,7 @@ pub struct CharacterEntity {
impl std::default::Default for CharacterEntity { impl std::default::Default for CharacterEntity {
fn default() -> CharacterEntity { fn default() -> CharacterEntity {
CharacterEntity { CharacterEntity {
id: 0,
id: CharacterEntityId(0),
user_id: 0, user_id: 0,
slot: 0, slot: 0,
name: "".into(), name: "".into(),

8
src/entity/gateway/inmemory.rs

@ -15,7 +15,7 @@ use std::sync::{Arc, Mutex};
pub struct InMemoryGateway { pub struct InMemoryGateway {
users: Arc<Mutex<HashMap<u32, UserAccount>>>, users: Arc<Mutex<HashMap<u32, UserAccount>>>,
user_settings: Arc<Mutex<HashMap<u32, UserSettings>>>, user_settings: Arc<Mutex<HashMap<u32, UserSettings>>>,
characters: Arc<Mutex<HashMap<u32, CharacterEntity>>>,
characters: Arc<Mutex<HashMap<CharacterEntityId, CharacterEntity>>>,
items: Arc<Mutex<HashMap<ItemEntityId, Item>>>, items: Arc<Mutex<HashMap<ItemEntityId, Item>>>,
} }
@ -86,13 +86,13 @@ impl EntityGateway for InMemoryGateway {
let mut characters = self.characters.lock().unwrap(); let mut characters = self.characters.lock().unwrap();
let id = characters let id = characters
.iter() .iter()
.fold(0, |sum, (i, _)| std::cmp::max(sum, *i))
.fold(0, |sum, (i, _)| std::cmp::max(sum, i.0))
+ 1; + 1;
let mut c = CharacterEntity::default(); let mut c = CharacterEntity::default();
c.id = id;
c.id = CharacterEntityId(id);
c.user_id = user.id; c.user_id = user.id;
characters.insert(id, c.clone());
characters.insert(CharacterEntityId(id), c.clone());
c c
} }

11
src/entity/item/mod.rs

@ -6,22 +6,25 @@ pub mod tech;
pub mod unit; pub mod unit;
pub mod mag; pub mod mag;
use crate::entity::character::CharacterEntityId;
#[derive(PartialEq, Copy, Clone, Debug, Hash, Eq)] #[derive(PartialEq, Copy, Clone, Debug, Hash, Eq)]
pub struct ItemEntityId(pub u32); pub struct ItemEntityId(pub u32);
#[derive(Hash, PartialEq, Eq, Debug, Clone)] #[derive(Hash, PartialEq, Eq, Debug, Clone)]
pub struct ItemId(u32); pub struct ItemId(u32);
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct BankName(String);
#[derive(Clone, Debug, PartialEq)] #[derive(Clone, Debug, PartialEq)]
pub enum ItemLocation { pub enum ItemLocation {
Inventory { Inventory {
character_id: u32,
character_id: CharacterEntityId,
index: usize, index: usize,
equipped: bool, equipped: bool,
}, },
Bank { Bank {
character_id: u32,
slot: usize,
character_id: CharacterEntityId,
slot: BankName,
}, },
Floor { Floor {
// floor: eventually // floor: eventually

19
src/ship/items.rs

@ -172,6 +172,7 @@ impl ActiveItemDatabase {
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use super::*; use super::*;
use crate::entity::character::CharacterEntityId;
use crate::entity::item; use crate::entity::item;
use crate::entity::item::{Item, ItemDetail, ItemEntityId, ItemLocation}; use crate::entity::item::{Item, ItemDetail, ItemEntityId, ItemLocation};
#[test] #[test]
@ -179,7 +180,7 @@ mod test {
let item1 = Item { let item1 = Item {
id: ItemEntityId(1), id: ItemEntityId(1),
location: ItemLocation::Inventory { location: ItemLocation::Inventory {
character_id: 0,
character_id: CharacterEntityId(0),
index: 0, index: 0,
equipped: false, equipped: false,
}, },
@ -194,7 +195,7 @@ mod test {
let item2 = Item { let item2 = Item {
id: ItemEntityId(2), id: ItemEntityId(2),
location: ItemLocation::Inventory { location: ItemLocation::Inventory {
character_id: 0,
character_id: CharacterEntityId(0),
index: 1, index: 1,
equipped: false, equipped: false,
}, },
@ -205,7 +206,7 @@ mod test {
let item3 = Item { let item3 = Item {
id: ItemEntityId(3), id: ItemEntityId(3),
location: ItemLocation::Inventory { location: ItemLocation::Inventory {
character_id: 0,
character_id: CharacterEntityId(0),
index: 2, index: 2,
equipped: false, equipped: false,
}, },
@ -220,7 +221,7 @@ mod test {
let item4 = Item { let item4 = Item {
id: ItemEntityId(4), id: ItemEntityId(4),
location: ItemLocation::Inventory { location: ItemLocation::Inventory {
character_id: 0,
character_id: CharacterEntityId(0),
index: 1, index: 1,
equipped: false, equipped: false,
}, },
@ -231,7 +232,7 @@ mod test {
let item5 = Item { let item5 = Item {
id: ItemEntityId(5), id: ItemEntityId(5),
location: ItemLocation::Inventory { location: ItemLocation::Inventory {
character_id: 0,
character_id: CharacterEntityId(0),
index: 1, index: 1,
equipped: false, equipped: false,
}, },
@ -242,7 +243,7 @@ mod test {
let item6 = Item { let item6 = Item {
id: ItemEntityId(6), id: ItemEntityId(6),
location: ItemLocation::Inventory { location: ItemLocation::Inventory {
character_id: 0,
character_id: CharacterEntityId(0),
index: 3, index: 3,
equipped: false, equipped: false,
}, },
@ -257,7 +258,7 @@ mod test {
let item7 = Item { let item7 = Item {
id: ItemEntityId(7), id: ItemEntityId(7),
location: ItemLocation::Inventory { location: ItemLocation::Inventory {
character_id: 0,
character_id: CharacterEntityId(0),
index: 4, index: 4,
equipped: false, equipped: false,
}, },
@ -268,7 +269,7 @@ mod test {
let item8 = Item { let item8 = Item {
id: ItemEntityId(8), id: ItemEntityId(8),
location: ItemLocation::Inventory { location: ItemLocation::Inventory {
character_id: 0,
character_id: CharacterEntityId(0),
index: 4, index: 4,
equipped: false, equipped: false,
}, },
@ -279,7 +280,7 @@ mod test {
let item9 = Item { let item9 = Item {
id: ItemEntityId(9), id: ItemEntityId(9),
location: ItemLocation::Inventory { location: ItemLocation::Inventory {
character_id: 0,
character_id: CharacterEntityId(0),
index: 4, index: 4,
equipped: false, equipped: false,
}, },

Loading…
Cancel
Save