Пример #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 index():
    em = EntityManager()

    userdata = em.find_one('UserData', {'user_id':bottle.request.session.user_id})
    users = []
    if userdata:
        users = em.geospatial_near('UserData', 'location.location', [float(userdata.location.lng), float(userdata.location.lat)], 10000)

        #regenerate health
        if userdata.health == 0:
            userdata.health = 100
            em.save('UserData', userdata)
    
    userIds = [u.user_id for u in users if str(u.user_id) != str(bottle.request.session.user_id)]

    users = em.find('User', {'_id':{'$in':userIds}})

    bottle.response.viewdata.update({'users':users})

    return bottle.template('index.tpl', vd=bottle.response.viewdata)
Пример #3
0
def log():
    lat = bottle.request.POST.get('lat')
    lng = bottle.request.POST.get('lng')

    l = Location()
    l.lat = lat
    l.lng = lng 

    em = EntityManager()

    userdata = em.find_one('UserData', {'user_id':bottle.request.session.user_id})
    if not userdata:
        userdata = UserData()
        userdata.user_id = bottle.request.session.user_id
        userdata.health = 100

    userdata.location = l

    em.save('UserData', userdata)

    return ''
Пример #4
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))