def ajax_city_workers(request): """ Assign workers in a city """ _stop_if_err_request(request, 'POST', True) try: cid = int(request.POST.get('cid', 'crash')) except ValueError: _miss('ajax_city_workers') city = CityZone.objects.get(id=cid) if not city.owner == _player(request): print 'ajax_city_workers - HAX_ATTEMPT: Does not own the city' return HttpResponse("HAX_ATTEMPT") goldw = _getintval(request.POST, 'gold', city.goldwork) bloodw = _getintval(request.POST, 'blood', city.bloodwork) gemw = _getintval(request.POST, 'gem', city.gemwork) woodw = _getintval(request.POST, 'wood', city.woodwork) orew = _getintval(request.POST, 'ore', city.orework) dif = (goldw - city.goldwork) + (bloodw - city.bloodwork) dif += (gemw - city.gemwork) dif += (woodw - city.woodwork) + (orew - city.orework) player = _player(request) tick.income(player) # Generate income before new worker assignments if player.get_free_workers() - dif >= 0: # Doesn't exceed maximum city.goldwork = goldw city.bloodwork = bloodw city.gemwork = gemw city.woodwork = woodw city.orework = orew city.save() return HttpResponse("OK") else: print "ajax_city_workers: Attempted to assign more workers than possible" return HttpResponse("Error, exceeded max workers")
def ajax_status(request): """ Player status information, needs to be updated regulary """ _stop_if_err_request(request, 'GET', True) player = _player(request) tick.income(player) data = {'pattacks': player.cur_inc_player_attacks().count(), 'hattacks': player.cur_inc_hero_attacks().count(), 'gold': player.gold, 'blood': player.bloodstone, 'gems': player.gems, 'wood': player.wood, 'ore': player.ore} return HttpResponse(simplejson.dumps(data, cls=DjangoJSONEncoder))