cleanup todos
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing

This commit is contained in:
andy 2021-07-31 02:07:41 +00:00
parent 61e7e8b39f
commit 66d882d336
2 changed files with 6 additions and 25 deletions

View File

@ -222,7 +222,6 @@ impl InventoryItem {
} }
} }
// pub fn get_sell_price(&self) -> Option<u32> {
pub fn get_sell_price(&self) -> Result<u32, ItemManagerError> { pub fn get_sell_price(&self) -> Result<u32, ItemManagerError> {
match self { match self {
InventoryItem::Individual(individual_item) => { InventoryItem::Individual(individual_item) => {
@ -230,66 +229,50 @@ impl InventoryItem {
// TODO: can wrapped items be sold? // TODO: can wrapped items be sold?
ItemDetail::Weapon(w) => { ItemDetail::Weapon(w) => {
if !w.tekked { if !w.tekked {
// return Some(1u32)
return Ok(1u32) return Ok(1u32)
} }
if w.is_rare_item() { if w.is_rare_item() {
// return Some(10u32)
return Ok(10u32) return Ok(10u32)
} }
// other item factors?
// Some((WeaponShopItem::from(w).price() / 8) as u32)
Ok((WeaponShopItem::from(w).price() / 8) as u32) Ok((WeaponShopItem::from(w).price() / 8) as u32)
}, },
ItemDetail::Armor(a) => { ItemDetail::Armor(a) => {
if a.is_rare_item() { if a.is_rare_item() {
// return Some(10u32)
return Ok(10u32) return Ok(10u32)
} }
// Some((ArmorShopItem::from(a).price() / 8) as u32)
return Ok((ArmorShopItem::from(a).price() / 8) as u32) return Ok((ArmorShopItem::from(a).price() / 8) as u32)
}, },
ItemDetail::Shield(s) => { ItemDetail::Shield(s) => {
if s.is_rare_item() { if s.is_rare_item() {
// return Some(10u32)
return Ok(10u32) return Ok(10u32)
} }
// Some((ArmorShopItem::from(s).price() / 8) as u32)
return Ok((ArmorShopItem::from(s).price() / 8) as u32) return Ok((ArmorShopItem::from(s).price() / 8) as u32)
}, },
ItemDetail::Unit(u) => { ItemDetail::Unit(u) => {
if u.is_rare_item() { if u.is_rare_item() {
// return Some(10u32)
return Ok(10u32) return Ok(10u32)
} }
// Some((ArmorShopItem::from(u).price() / 8) as u32)
return Ok((ArmorShopItem::from(u).price() / 8) as u32) return Ok((ArmorShopItem::from(u).price() / 8) as u32)
}, },
ItemDetail::Tool(t) => { ItemDetail::Tool(t) => {
if !matches!(t.tool, ToolType::PhotonDrop | ToolType::PhotonSphere | ToolType::PhotonCrystal) && t.is_rare_item() { if !matches!(t.tool, ToolType::PhotonDrop | ToolType::PhotonSphere | ToolType::PhotonCrystal) && t.is_rare_item() {
// return Some(10u32)
return Ok(10u32) return Ok(10u32)
} }
// Some((ToolShopItem::from(t).price() / 8) as u32)
return Ok((ToolShopItem::from(t).price() / 8) as u32) return Ok((ToolShopItem::from(t).price() / 8) as u32)
}, },
ItemDetail::TechniqueDisk(d) => { // TODO: are all techs the same? ItemDetail::TechniqueDisk(d) => {
// Some((ToolShopItem::from(d).price() / 8) as u32)
return Ok((ToolShopItem::from(d).price() / 8) as u32) return Ok((ToolShopItem::from(d).price() / 8) as u32)
}, },
ItemDetail::Mag(_m) => { //TODO: error. mags are not sellable ItemDetail::Mag(_m) => {
// None
return Err(ItemManagerError::ItemNotSellable(self.clone())) return Err(ItemManagerError::ItemNotSellable(self.clone()))
}, },
ItemDetail::ESWeapon(_e) => { ItemDetail::ESWeapon(_e) => {
// Some(10u32) // TODO: check price
return Ok(10u32) return Ok(10u32)
}, },
} }
}, },
// the number of stacked items sold is handled by the caller. this is just the price of 1 // the number of stacked items sold is handled by the caller. this is just the price of 1
InventoryItem::Stacked(stacked_item) => { InventoryItem::Stacked(stacked_item) => {
// Some((ToolShopItem::from(&stacked_item.tool).price() / 8) as u32)
return Ok((ToolShopItem::from(&stacked_item.tool).price() / 8) as u32) return Ok((ToolShopItem::from(&stacked_item.tool).price() / 8) as u32)
}, },
} }

View File

@ -56,8 +56,9 @@ pub enum ItemManagerError {
NoArmorEquipped, NoArmorEquipped,
GatewayError(#[from] crate::entity::gateway::GatewayError), GatewayError(#[from] crate::entity::gateway::GatewayError),
StackedItemError(Vec<ItemEntity>), StackedItemError(Vec<ItemEntity>),
ItemNotSellable(InventoryItem), // TODO: capture what item was attempted to be sold ItemNotSellable(InventoryItem),
WalletFull, WalletFull,
InvalidSale,
} }
pub struct ItemManager { pub struct ItemManager {
@ -856,8 +857,7 @@ impl ItemManager {
let inventory = self.character_inventory.get_mut(&character.id).ok_or(ItemManagerError::NoCharacter(character.id))?; let inventory = self.character_inventory.get_mut(&character.id).ok_or(ItemManagerError::NoCharacter(character.id))?;
let sold_item_handle = inventory.get_item_handle_by_id(item_id).ok_or(ItemManagerError::NoSuchItemId(item_id))?; let sold_item_handle = inventory.get_item_handle_by_id(item_id).ok_or(ItemManagerError::NoSuchItemId(item_id))?;
if let Some(item_sold) = sold_item_handle.item() { if let Some(item_sold) = sold_item_handle.item() {
// if let Some(unit_price) = item_sold.get_sell_price() { // -> Option<u32> u32 = meseta, or None if error let unit_price = item_sold.get_sell_price()?; {
let unit_price = item_sold.get_sell_price()?; { // -> Result<u32, ItemManagerError> // ItemMangerError::InvalidSale
let total_sale = unit_price * amount as u32; let total_sale = unit_price * amount as u32;
if character.meseta + total_sale <= 999999 { if character.meseta + total_sale <= 999999 {
character.meseta += total_sale; character.meseta += total_sale;
@ -871,8 +871,7 @@ impl ItemManager {
Ordering::Less | Ordering::Equal => { Ordering::Less | Ordering::Equal => {
sold_item_handle.consume(amount)?; sold_item_handle.consume(amount)?;
}, },
// TODO: put a real error here Ordering::Greater => return Err(ItemManagerError::InvalidSale.into()),
Ordering::Greater => {println!("i can't believe you've done this.");},
}; };
}, },
} }
@ -885,7 +884,6 @@ impl ItemManager {
} else { } else {
return Err(ItemManagerError::ItemIdNotInInventory(item_id).into()) return Err(ItemManagerError::ItemIdNotInInventory(item_id).into())
} }
// TODO: why did i put this
Ok(()) Ok(())
} }