def __init__(self, cache_handler): self.source = Source(cache_handler) self._link_tracker = LinkTracker(self) self.__ship = None self.__character = None self.items = HolderContainer(self)
class Fit: def __init__(self, cache_handler): self.source = Source(cache_handler) self._link_tracker = LinkTracker(self) self.__ship = None self.__character = None self.items = HolderContainer(self) @property def ship(self): return self.__ship @ship.setter def ship(self, ship): if self.__ship is not None: self._remove_holder(self.__ship) self.__ship = ship if ship is not None: self._add_holder(self.__ship) @property def character(self): return self.__character @character.setter def character(self, character): if self.__character is not None: self._remove_holder(self.__character) self.__character = character if character is not None: self._add_holder(self.__character) def _add_holder(self, holder): if holder._fit is not None: raise Exception holder._fit = self self._link_tracker.add_holder(holder) enabled_states = set(filter(lambda s: s <= holder.state, State)) self._link_tracker.enable_states(holder, enabled_states) def _remove_holder(self, holder): if holder._fit is not self: raise Exception disabled_states = set(filter(lambda s: s <= holder.state, State)) self._link_tracker.disable_states(holder, disabled_states) self._link_tracker.remove_holder(holder) holder._fit = None def _holder_state_switch(self, holder, new_state): enabled_states = set(filter(lambda s: holder.state < s <= new_state, State)) disabled_states = set(filter(lambda s: new_state < s <= holder.state, State)) self._link_tracker.enable_states(holder, enabled_states) self._link_tracker.disable_states(holder, disabled_states)