cleanup
This commit is contained in:
		
							parent
							
								
									11b5898637
								
							
						
					
					
						commit
						5673a46e3f
					
				| @ -77,7 +77,6 @@ where | ||||
| { | ||||
|     pub fn act<O, F, Fut>(self, f: F) -> ItemActionStage<O, ItemStateAction<T, S, E>, F, Fut, S, E> | ||||
|     where | ||||
|         //F: FnOnce(S, ()) -> Pin<Box<dyn Future<Output=Result<(S, O), E>> + Send>> + Send + Sync
 | ||||
|         F: Fn(S, ()) -> Fut + Send + Sync, | ||||
|         Fut: Future<Output=Result<(S, O), E>> + Send | ||||
|     { | ||||
| @ -95,7 +94,6 @@ where | ||||
|     P: ItemAction, | ||||
|     F: Fn(S, P::Output) -> Fut + Send + Sync, | ||||
|     Fut: Future<Output=Result<(S, O) , E>> + Send, | ||||
|     //F: FnOnce(S, P::Output) -> Pin<Box<dyn Future<Output=Result<(S, O) , E>> + Send>> + Send + Sync,
 | ||||
| { | ||||
|     _s: std::marker::PhantomData<S>, | ||||
|     _e: std::marker::PhantomData<E>, | ||||
| @ -107,7 +105,6 @@ where | ||||
| impl<O, P: ItemAction, F, Fut, S, E> ItemAction for ItemActionStage<O, P, F, Fut, S, E> | ||||
| where | ||||
|     P: ItemAction + ItemAction<Start = S, Error = E> + Send + Sync, | ||||
|     //F: FnOnce(S, P::Output) -> Pin<Box<dyn Future<Output=Result<(S, O), E>> + Send>> + Send + Sync,
 | ||||
|     F: Fn(S, P::Output) -> Fut + Send + Sync, | ||||
|     Fut: Future<Output=Result<(S, O), E>> + Send, | ||||
|     S: Send + Sync, | ||||
| @ -145,7 +142,6 @@ where | ||||
|     pub fn act<O2, G, GFut>(self, g: G) -> ItemActionStage<O2, ItemActionStage<O, P, F, Fut, S, E>, G, GFut, S, E> | ||||
|     where | ||||
|         S: Send + Sync, | ||||
|         //G: FnOnce(S, <ItemActionStage<O, P, F, S, E> as ItemAction>::Output) -> Pin<Box<dyn Future<Output=Result<(S, O2), E>> + Send>> + Send + Sync,
 | ||||
|         G: Fn(S, <ItemActionStage<O, P, F, Fut, S, E> as ItemAction>::Output) -> GFut + Send + Sync, | ||||
|         GFut: Future<Output=Result<(S, O2), E>> + Send, | ||||
|         O2: Send + Sync, | ||||
| @ -256,20 +252,6 @@ impl FloorItemDetail { | ||||
|             _ => None, | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /* | ||||
|     fn mag<'a>(&'a self) -> Option<&'a IndividualItemDetail> { | ||||
|         match self { | ||||
|             FloorItemDetail::Individual(individual_item) => { | ||||
|                 match individual_item.item { | ||||
|                     ItemDetail::Mag(mag) => Some(mag), | ||||
|                     _ => None, | ||||
|                 } | ||||
|             }, | ||||
|             _ => None | ||||
|         } | ||||
|     } | ||||
| */ | ||||
| } | ||||
| 
 | ||||
| #[derive(Clone)] | ||||
| @ -320,28 +302,9 @@ impl FloorItem { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| // meseta is a floor item
 | ||||
| /* | ||||
| impl Into<InventoryItem> for FloorItem { | ||||
|     fn into(&self) -> InventoryItem { | ||||
|         InventoryItem { | ||||
|             item_id: self.item_id, | ||||
|             item: | ||||
|         } | ||||
|     } | ||||
| } | ||||
| */ | ||||
| 
 | ||||
| #[derive(Clone, Debug)] | ||||
| pub struct Inventory(Vec<InventoryItem>); | ||||
| /* | ||||
| #[derive(Clone, Debug)] | ||||
| pub struct Inventory { | ||||
|     item_id_counter: u32, | ||||
|     items: Vec<InventoryItem>, | ||||
|     equipped: EquippedEntity, | ||||
| } | ||||
| */ | ||||
| 
 | ||||
| impl Inventory { | ||||
|     pub fn as_inventory_entity(&self, _character_id: &CharacterEntityId) -> InventoryEntity { | ||||
| @ -514,36 +477,6 @@ impl Default for ItemState { | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /* | ||||
| struct ProxiedItemState { | ||||
|     character_inventory: RefCell<HashMap<CharacterEntityId, RefCell<Inventory>>>, | ||||
|     //character_bank: HashMap<CharacterEntityId, RefCell<Bank>>,
 | ||||
|     //character_meseta: HashMap<CharacterEntityId, RefCell<Meseta>>,
 | ||||
|     //bank_meseta: HashMap<CharacterEntityId, RefCell<Meseta>>,
 | ||||
| 
 | ||||
|     character_room: RefCell<HashMap<CharacterEntityId, RefCell<RoomId>>>, | ||||
|     character_floor: RefCell<HashMap<CharacterEntityId, RefCell<RoomFloorItems>>>, | ||||
|     room_floor: RefCell<HashMap<RoomId, RefCell<RoomFloorItems>>>, | ||||
| 
 | ||||
|     //room_item_id_counter: HashMap<RoomId, RefCell<Box<dyn FnMut() -> ClientItemId + Send>>>,
 | ||||
| } | ||||
| 
 | ||||
| impl Default for ProxiedItemState { | ||||
|     fn default() -> Self { | ||||
|         ProxiedItemState { | ||||
|             character_inventory: RefCell::new(HashMap::new()), | ||||
|             //character_bank: HashMap::new(),
 | ||||
|             //character_meseta: HashMap::new(),
 | ||||
|             //bank_meseta: HashMap::new(),
 | ||||
|             character_floor: RefCell::new(HashMap::new()), | ||||
|             character_room: RefCell::new(HashMap::new()), | ||||
|             room_floor: RefCell::new(HashMap::new()), | ||||
|             //room_item_id_counter: HashMap::new(),
 | ||||
|         } | ||||
|     } | ||||
| } | ||||
| */ | ||||
| 
 | ||||
| struct ProxiedItemState { | ||||
|     character_inventory: HashMap<CharacterEntityId, Inventory>, | ||||
|     //character_bank: HashMap<CharacterEntityId, RefCell<Bank>>,
 | ||||
| @ -575,19 +508,9 @@ impl Default for ProxiedItemState { | ||||
| 
 | ||||
| pub struct ItemStateProxy<'a> { | ||||
|     item_state: &'a mut ItemState, | ||||
|     //entity_gateway: &'a mut dyn EntityGateway,
 | ||||
|     //transaction: Box<dyn EntityGatewayTransaction>,
 | ||||
|     //entity_gateway: &'a mut Box<dyn EntityGateway>,
 | ||||
|     //entity_gateway: &'a mut Box<dyn EntityGateway>,
 | ||||
|     proxied_state: ProxiedItemState, | ||||
| 
 | ||||
|     //gateway_actions: Vec<GatewayActions>,
 | ||||
| 
 | ||||
|     //_eg: std::marker::PhantomData<EG>,
 | ||||
| } | ||||
| 
 | ||||
| //impl<'a> Drop for ItemStateProxy<'a> {
 | ||||
| //    fn drop(&mut self) {
 | ||||
| impl<'a> ItemStateProxy<'a> { | ||||
|     pub fn commit(self) { | ||||
|         self.item_state.character_inventory.extend(self.proxied_state.character_inventory.clone()); | ||||
| @ -598,34 +521,6 @@ impl<'a> ItemStateProxy<'a> { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /* | ||||
| fn get_or_clone<'a,  K, V>(master: &HashMap<K, V>, proxy: &'a RefCell<HashMap<K, RefCell<V>>>, key: K, err: fn(K) -> ItemStateError) -> Result<impl Deref<Target = V> + 'a, ItemStateError> | ||||
| where | ||||
|     K: Eq + std::hash::Hash + Copy, | ||||
|     V: Clone | ||||
| { | ||||
|     let existing_element = master.get(&key).ok_or_else(|| err(key))?; | ||||
|     Ok(proxy.borrow_mut().entry(key) | ||||
|         .or_insert(RefCell::new(existing_element.clone())) | ||||
|         .borrow_mut()) | ||||
| 
 | ||||
| } | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| /* | ||||
| fn get_or_clone<'a,  K, V>(master: &HashMap<K, V>, proxy: &'a mut HashMap<K, RefCell<V>>, key: K, err: fn(K) -> ItemStateError) -> Result<impl Deref<Target = V> + 'a, ItemStateError> | ||||
| where | ||||
|     K: Eq + std::hash::Hash + Copy, | ||||
|     V: Clone | ||||
| { | ||||
|     let existing_element = master.get(&key).ok_or_else(|| err(key))?; | ||||
|     Ok(proxy.entry(key) | ||||
|         .or_insert(RefCell::new(existing_element.clone())) | ||||
|         .borrow_mut()) | ||||
| 
 | ||||
| } | ||||
| */ | ||||
| 
 | ||||
| fn get_or_clone<K, V>(master: &HashMap<K, V>, proxy: &mut HashMap<K, V>, key: K, err: fn(K) -> ItemStateError) -> Result<V, ItemStateError> | ||||
| where | ||||
| @ -639,16 +534,10 @@ where | ||||
| } | ||||
| 
 | ||||
| impl<'a> ItemStateProxy<'a> { | ||||
|     //fn new(item_state: &'a mut ItemState, entity_gateway: &'a mut EG) -> Self {
 | ||||
|     //fn new(item_state: &'a mut ItemState, entity_gateway: &'a mut dyn EntityGateway) -> Self {
 | ||||
|     pub fn new(item_state: &'a mut ItemState/*, transaction: Box<dyn EntityGatewayTransaction>*/) -> Self { | ||||
|     pub fn new(item_state: &'a mut ItemState) -> Self { | ||||
|         ItemStateProxy { | ||||
|             item_state, | ||||
|             //entity_gateway,
 | ||||
|             //transaction,
 | ||||
|             proxied_state: Default::default(), | ||||
|             //gateway_actions: Vec::new(),
 | ||||
|             //_eg: std::marker::PhantomData,
 | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| @ -681,89 +570,7 @@ impl<'a> ItemStateProxy<'a> { | ||||
|     } | ||||
| 
 | ||||
|     pub fn new_item_id(&mut self) -> Result<ClientItemId, ItemStateError> { | ||||
|         //let room_id = get_or_clone(&self.item_state.character_room, &mut self.proxied_state.character_room, *character_id, |c| ItemStateError::NoCharacter(c))?;
 | ||||
|         self.item_state.room_item_id_counter += 1; | ||||
|         Ok(ClientItemId(self.item_state.room_item_id_counter)) | ||||
|         /* | ||||
|         self.item_state.room_item_id_counter | ||||
|             .borrow_mut() | ||||
|             .get_mut(&room_id) | ||||
|             .ok_or(ItemStateError::NoRoom(room_id)) | ||||
|             .map(|f| f()) | ||||
|          */ | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /* | ||||
| fn record_item_drop(character_id: CharacterEntityId, item_drop: ItemDrop) -> impl Fn(&mut ItemStateProxy, ()) -> Result<(), ItemStateError> { | ||||
|     move |item_state, _| { | ||||
|         // how do I do this? I need EG to add_item_note but how should I kick that till later?
 | ||||
|         // general purpose vec in item_state `misc_gateway_actions`?
 | ||||
|         // can't quite use actions here as it relies on an ItemEntityId which at this point does not yet exist for the dropped item
 | ||||
|         //item_state.gateway_actions.push(GatewayAction::ItemNote(item_drop.))
 | ||||
|         Ok(()) | ||||
|     } | ||||
| } | ||||
| */ | ||||
| 
 | ||||
| /* | ||||
| fn map_drop_to_floor_item(character_id: CharacterEntityId, item_drop: ItemDrop) -> impl Fn(&mut ItemStateProxy, ()) -> Result<FloorItem, ItemStateError> { | ||||
|     move |item_state, _| { | ||||
|         match item_drop.item { | ||||
|             ItemDropType::Weapon(w) => FloorItem { | ||||
|                 item_id: item_state.new_item_id(&character_id)?, | ||||
|                 item: FloorItemDetail::Individual(item_drop.item) | ||||
|             }, | ||||
|             ItemDropType::Armor(w) => ItemOrMeseta::Individual(ItemDetail::Armor(w)), | ||||
|             ItemDropType::Shield(w) => ItemOrMeseta::Individual(ItemDetail::Shield(w)), | ||||
|             ItemDropType::Unit(w) => ItemOrMeseta::Individual(ItemDetail::Unit(w)), | ||||
|             ItemDropType::TechniqueDisk(w) => ItemOrMeseta::Individual(ItemDetail::TechniqueDisk(w)), | ||||
|             ItemDropType::Mag(w) => ItemOrMeseta::Individual(ItemDetail::Mag(w)), | ||||
|             //ItemDropType::IndividualTool(t) => ItemOrMeseta::Individual(ItemDetail::Tool(t)),
 | ||||
|             //ItemDropType::StackedTool(t, _) => ItemOrMeseta::Stacked(t),
 | ||||
|             ItemDropType::Tool(t) if t.tool.is_stackable() => ItemOrMeseta::Stacked(t), | ||||
|             ItemDropType::Tool(t) if !t.tool.is_stackable() => ItemOrMeseta::Individual(ItemDetail::Tool(t)), | ||||
|             ItemDropType::Meseta(m) => ItemOrMeseta::Meseta(Meseta(m)), | ||||
|             _ => unreachable!() // rust isnt smart enough to see that the conditional on tool catches everything
 | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| fn enemy_drops_item<EG>(item_state: &mut ItemState, | ||||
|                         entity_gateway: &mut EG, | ||||
|                         character: &CharacterEntity, | ||||
|                         item_drop: ItemDrop) | ||||
|                         -> Result<FloorItem, ItemStateError> | ||||
| where | ||||
|     EG: EntityGateway, | ||||
| { | ||||
|     ItemStateAction::default() | ||||
|         .act(record_item_drop(character.id, item_drop.clone())) | ||||
|         .act(map_drop_to_floor_item(character.id, item_drop)) | ||||
|         .act(add_item_drop_to_floor(character.id)) | ||||
|         .commit(&mut ItemStateProxy::new(item_state)) | ||||
| } | ||||
| */ | ||||
| 
 | ||||
| /* | ||||
| fn sell_item<EG: EntityGateway>(item_state: &mut ItemState, | ||||
|                                 entity_gateway: &mut EG, | ||||
|                                 character_id: &CharacterEntityId, | ||||
|                                 item_id: &ClientItemId, | ||||
|                                 amount: usize) | ||||
|                                 -> Result<TriggerCreateItem, ItemStateError> | ||||
| where | ||||
|     EG: EntityGateway, | ||||
| { | ||||
|     ItemStateAction::default() | ||||
|         .act(take_item_from_inventory(*character_id, *item_id)) | ||||
|         .act(sell_inventory_item(*character_id, *item_id)) | ||||
|         .exec_state(&mut ItemStateProxy::new(item_state)) | ||||
|         .exec_gateway(&mut entity_gateway) | ||||
| } | ||||
| */ | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user