Ejemplo n.º 1
0
 def __init__(self):
     self.messages = []
     self.camera = Camera()
     self.map = Map()
     self.user = User('Name')
     self.monsters = [Monster(f'Ork{i}') for i in range(MAX_MONSTERS)]
     EventManager.getInstance().bind(MessageEvent.name, self, 'new_message')
Ejemplo n.º 2
0
 def __init__(self, name):
     self.name = name
     self.action = ''
     self.position = [-1, -1]
     self.direction = DIRECTION_UP
     self.heal = randint(1, MAX_HEAL)
     self.ap = randint(1, MAX_AP)
     EventManager.getInstance().bind(KickEvent.name, self,
                                     'damage_deal_event')
Ejemplo n.º 3
0
 def do(self, user, action, map):
     messages = []
     if action == HEAL:
         user.cure()
         messages.append(f'{user.name} heal {user.heal}')
     if action == ATTACK:
         EventManager.getInstance().dispatch(
             KickEvent(self.position, user.ap))
         messages.append(f'{user.name} kick {user.ap}')
     EventManager.getInstance().dispatch(MessageEvent(None, messages))
Ejemplo n.º 4
0
 def turn(self, map):
     if self.find_enemy(map):
         messages = []
         self.action = self.get_action()
         if self.action == ATTACK:
             EventManager.getInstance().dispatch(
                 KickEvent(self.enemy_position(map), self.ap))
             messages.append(f'{self.name} kick {self.ap}')
         else:
             self.cure()
             messages.append(f'{self.name} heal {self.heal}')
         EventManager.getInstance().dispatch(MessageEvent(None, messages))
Ejemplo n.º 5
0
    def test_dispatch_events(self, MockUser):
        event_manger = EventManager.getInstance()
        event_manger.subscribers = {}
        position = [randint(0, 100), randint(0, 100)]

        MockUser.position = position
        event_manger.bind(KickEvent.name, MockUser, 'damage_deal')

        damage = randint(1, 100)
        event = KickEvent(position, damage)
        event_manger.dispatch(event)
        MockUser.damage_deal.assert_called_with(event)
Ejemplo n.º 6
0
    def test_bind_subscriber_to_event(self, MockUser):
        event_manger = EventManager.getInstance()
        self.assertEqual(event_manger.subscribers, {})
        callback = 'damage_deal'
        event_manger.bind(KickEvent.name, MockUser, callback)
        self.assertEqual(
            event_manger.subscribers,
            {KickEvent.name: [{
                'object': MockUser,
                'callback': callback
            }]})

        event_manger.bind(KickEvent.name, MockUser, callback)
        self.assertEqual(
            event_manger.subscribers,
            {KickEvent.name: [{
                'object': MockUser,
                'callback': callback
            }]})

        event_manger.bind(Event.name, MockUser, callback)
        self.assertEqual(
            event_manger.subscribers, {
                KickEvent.name: [{
                    'object': MockUser,
                    'callback': callback
                }],
                Event.name: [{
                    'object': MockUser,
                    'callback': callback
                }]
            })

        monster = Monster('Ork')
        event_manger.bind(Event.name, monster, callback)
        self.assertEqual(
            event_manger.subscribers, {
                KickEvent.name: [{
                    'object': MockUser,
                    'callback': callback
                }],
                Event.name: [
                    {
                        'object': MockUser,
                        'callback': callback
                    },
                    {
                        'object': monster,
                        'callback': callback
                    },
                ]
            })
Ejemplo n.º 7
0
    def test_unbind_subscriber_to_event(self, MockUser):
        event_manager = EventManager.getInstance()
        event_manager.subscribers = {}
        callback = 'damage_deal'
        event_manager.bind(KickEvent.name, MockUser, callback)
        self.assertEqual(
            event_manager.subscribers,
            {KickEvent.name: [{
                'object': MockUser,
                'callback': callback
            }]})

        event_manager.unbind(KickEvent.name, MockUser, '')
        self.assertEqual(
            event_manager.subscribers,
            {KickEvent.name: [{
                'object': MockUser,
                'callback': callback
            }]})

        event_manager.unbind(KickEvent.name, MockUser, callback)
        self.assertEqual(event_manager.subscribers, {KickEvent.name: []})
Ejemplo n.º 8
0
    def test_subscriptions_dict(self):
        event_manager = EventManager()
        self.assertIsNone(event_manager.subscribers)

        event_manager = EventManager.getInstance()
        self.assertIsInstance(event_manager.subscribers, dict)
Ejemplo n.º 9
0
 def test_make_event_manager_instance(self):
     event_manager = EventManager.getInstance()
     self.assertIsNotNone(event_manager)
     self.assertEqual(event_manager, EventManager.getInstance())
     self.assertEqual(event_manager._instance, event_manager)
Ejemplo n.º 10
0
 def test_object_is_event(self):
     self.assertTrue(EventManager.getInstance().is_event(KickEvent([], 0)))
     self.assertFalse(EventManager.getInstance().is_event({}))
     self.assertFalse(EventManager.getInstance().is_event(10))
Ejemplo n.º 11
0
 def test_create_event_manager_object(self):
     event_manager = EventManager()
     self.assertNotEqual(event_manager, EventManager.getInstance())
Ejemplo n.º 12
0
 def killed(self, map):
     map.clear(self.position)
     EventManager.getInstance().unbind(KickEvent.name, self,
                                       'damage_deal_event')