Esempio n. 1
0
    def add_master_contender(self, game, user, word):
        if not game.is_master_selecting:
            raise GameError(u'Сейчас не время выбора ведущего')

        if game.is_user_already_master_contender(user):
            raise GameError(u'Вы уже предложили свое слово')

        self.check_word_is_valid(word)

        game.add_master_contender(user, word)
        connection_manager.emit_for_user_in_room(user.id, game.room_id, 'game_word_accepted', word=word)
        connection_manager.emit_for_room(game.room_id, 'master_contender', user_id=user.id)
Esempio n. 2
0
    def break_contact(self, user, game, contact_id, word):
        self.check_callbacks()
        contact = self.find_active_contact(contact_id, game)
        if user != game.master:
            raise GameError(u'Только ведущий может обрывать контакт')
        if not contact.is_active:
            raise GameError(u'Контакт уже не активен')

        if word == game.guessed_word:
            raise GameError(u'Нельзя пытаться разорвать контакт загаданным вами словом')

        if contact.is_right_word(word):
            contact.get_broken()
            self.persist_contact(contact)
            self.remove_contact(contact)
            connection_manager.emit_for_room(game.room_id, 'broken_contact', contact_id=contact_id, user_id=user.id)
        else:
            connection_manager.emit_for_user_in_room(user.id, game.room_id, 'unsuccessful_contact_breaking', { 'contact_id' : contact_id })