Пример #1
0
def index(battle_id):
    em = EntityManager()

    battle = em.find_one_by_id('Battle', battle_id)

    if bottle.request.session.user_id not in [u._id for u in battle.users]:
        battle.users.append(em.find_one_by_id('User', bottle.request.session.user_id))
        em.save('Battle', battle)

    for u in battle.users:
        u.userdata = em.find_one('UserData', {'user_id':u._id})

    bottle.response.viewdata.update({'battle':battle, 'current_session_user_id':bottle.request.session.user_id})

    return bottle.template('battle.tpl', vd=bottle.response.viewdata)
Пример #2
0
def common_view_data():
    em = EntityManager()

    data = {
        'logged_in_user': em.find_one_by_id('User', bottle.request.session.user_id)
    }

    return data
Пример #3
0
def delete_messages(messageIds, deleted_by_user_id):
    if messageIds:
        em = EntityManager()

        for id in messageIds:
            m = em.find_one_by_id('Message', id)

            if m and str(m.for_user_id) == str(deleted_by_user_id):
                em.remove_one('Message', id)
Пример #4
0
def index(user_id):
    em = EntityManager()

    challenged_user = em.find_one_by_id('User', user_id)

    b = Battle()
    b.users.append(challenged_user)
    b.users.append(em.find_one_by_id('User', bottle.request.session.user_id))
    b.turn_of_user = challenged_user
    b.turn_of_user_index = 0
    b = em.save('Battle', b)

    m = Message()
    m.for_user_id = str(challenged_user._id)
    m.type = 'challenge'
    m.data = {'battle_id':str(b._id)}
    em.save('Message', m)

    return bottle.redirect('/battle/'+ str(b._id))
Пример #5
0
def index(battle_id, user_id):
    em = EntityManager()

    attacking_user = em.find_one_by_id('User', bottle.request.session.user_id)

    battle = em.find_one_by_id('Battle', battle_id)

    if bottle.request.session.user_id == battle.turn_of_user._id and battle.ended is None:
        damage = random.sample(range(5), 1)[0] * 10

        attacked_user = em.find_one_by_id('User', user_id)
        attacked_user_data = em.find_one('UserData', {'user_id':attacked_user._id})

        attacked_user_data.health -= damage

        if attacked_user_data.health <= 0:
            attacked_user_data.health = 0
            battle.ended = datetime.now()
            battle.loser = attacked_user

        em.save('UserData', attacked_user_data)

        battle.latest_action = '%s attacked %s and reduced their health by %s!' % (attacking_user.email, attacked_user.email, damage)

        battle.turn_of_user_index += 1
        if battle.turn_of_user_index >= len(battle.users):
            battle.turn_of_user_index = 0

        battle.turn_of_user = battle.users[battle.turn_of_user_index]

        em.save('Battle', battle)

        for u in battle.users:
            if str(u._id) != str(bottle.request.session.user_id):
                m = Message()
                m.for_user_id = str(u._id)
                m.type = 'reload'
                em.save('Message', m)

    return bottle.redirect('/battle/'+ str(battle_id))