underworld_core/handlers/
sell_player_item.rs

1use crate::{
2    actions::SellPlayerItem,
3    components::PlayerCharacter,
4    errors::Error,
5    events::{Event, PlayerItemRemoved},
6    utils::ids::parse_id,
7};
8
9pub fn handle(
10    sell_player_item: &SellPlayerItem,
11    player: &PlayerCharacter,
12) -> Result<Vec<Event>, Error> {
13    let item_id = parse_id(&sell_player_item.item_id)?;
14    let _ = match player.character.find_item(&item_id) {
15        Some(it) => it,
16        None => return Err(Error::ItemNotFoundError(item_id.to_string())),
17    };
18
19    Ok(vec![
20        Event::PlayerItemRemoved(PlayerItemRemoved { item_id }),
21        Event::PlayerGainedGold(1),
22    ])
23}