Exemplo n.º 1
0
    def __init__(
        self,
        simulation_manager: SimulationStateManager,
        entity_component_manager: EntityComponentManager,
        status_effect_manager: StatusEffectManager,
        being_factory,
        human_behavior_factory,
        ai_behavior_factory,
        being_fsm_factory,
        being_component_factory,
    ):
        super(CharacterCreator, self).__init__()
        # TODO: configuration for different aspects of the character creator.
        #   e.g.
        #   - rules on what skills, advantages, items, etc are allowed.
        #   - contextual rules on what selections can be made together (exclusivity, etc)
        #   - costs for different stats, skills, adv/dis, etc.
        self.simulation_manager = simulation_manager
        self.entity_component_manager = entity_component_manager
        self.status_effect_manager = status_effect_manager
        self.being_factory = being_factory
        self.human_behavior_factory = human_behavior_factory
        self.ai_behavior_factory = ai_behavior_factory
        self.being_fsm_factory = being_fsm_factory
        self.being_component_factory = being_component_factory

        Event.register("generate_random_character", self,
                       self.generate_random_character)
Exemplo n.º 2
0
    def __init__(self, event_types):
        super(InteractionEventManager, self).__init__()

        self.event_instances = dict()

        # Bind to each event type and save an entry in the event dictionary
        for event in event_types:
            self.event_instances[event] = 0
            lmb = partial(self.on_event, event)
            Event.register(event, self, lmb)
Exemplo n.º 3
0
    def __init__(self, parent, data_model: DatabaseBackedGridModel,
                 entity_component_manager):

        PandaNode.__init__(self, "grid_%s" % id(self))
        DirectObject.__init__(self)

        self.parent = parent
        self.path = parent.attachNewNode(self)
        self.data_model = data_model
        self.entity_component_manager = entity_component_manager

        self._hex_model = None
        self.cubic_spiral = cubic_spiral(np.array([0, 0, 0]),
                                         radius=data_model.chunk_radius + 1)
        self._instantiate_grid_()

        # Register for messages about each location.
        Event.register("notify_grid_update", self, self.update_grid)
Exemplo n.º 4
0
    def __init__(self, being_model_manager: BeingModelManager,
                 status_effect_manager: StatusEffectManager, logger):
        super(ConsciousnessHandler, self).__init__()

        self.being_model_manager = being_model_manager
        self.status_effect_manager = status_effect_manager
        self.logger = logger.newCategory(__name__)

        # Register event that watches for damage to occur.
        Event.register("actor_damaged", self, self.assess_damage)
        Event.register("actor_retain_consciousness", self,
                       self.maintain_consciousness)
        Event.register("actor_regain_consciousness", self,
                       self.regain_consciousness)
Exemplo n.º 5
0
 def register(id, source: DirectObject, callback):
     Event.register("refresh_stats_%s" % id, source, callback)