def buy_plant(request): ''' Check user logged in Check playerId belongs to account Get max plant limit from island id Check player's plant count ''' if request.session.__contains__('account'): q = request.GET bPlayerId = int(q.__getitem__('playerId')) bIslandId = int(q.__getitem__('islandId')) bRegion = q.__getitem__('region') player = Player.get_by_id(bPlayerId) if player.email == request.session['account'].email: island = Island.get_by_id(bIslandId) if island != None: maxNumPlants = island.maxNumOfPlants plants = Plant.gql("WHERE playerId = :1 and islandId = :2",bPlayerId, bIslandId) if plants.count() < maxNumPlants: bPlant = Plant(playerId=bPlayerId,islandId=bIslandId,region=bRegion,cost=plant[bRegion][0],capacity=plant[bRegion][1],numOfWorkers = 0, workerCost=worker[bRegion][0],workerHealth = worker[bRegion][1],workerSkills=worker[bRegion][2],workerProductivity=worker[bRegion][3], currentCapacity = 0, productionLimit = 0) bPlant.put() player.money = player.money - plant[bRegion][0] player.money_spent = player.money_spent + plant[bRegion][0] player.put() return redirect("/app/main.html#/theworld")
def join_island(request): try: q = request.GET #jEmail = q.__getitem__('email') jEmail = request.session['account'].email jIslandId = int(q.__getitem__('islandId')) query = Player.gql("WHERE email = :1 and islandId = :2",jEmail,jIslandId) if query.count() > 0: return redirect("/play?islandId="+str(jIslandId)) #change to play game else: island = Island.get_by_id(jIslandId) if island != None and island.numOfPlayer < island.maxNumOfPlayers: player = Player(email = jEmail,money_spent=0.0,money=1000000.0,islandId=jIslandId,networth=1000000.0) player.put() island.numOfPlayer = island.numOfPlayer + 1 island.put() return redirect("/play?islandId="+str(island.key().id())) else: return HttpResponse("error","text") #dd = {} #return HttpResponse(simplejson.dumps(dd),mimetype="application/json") except KeyError: return redirect("/") except ValueError: return "/app/error.html?error=ValueError"
def load_player(request): session = request.session dd = {} #check necessary arguments if session.__contains__('islandId') == False: dd['error'] = "missing islandId" return HttpResponse(simplejson.dumps(dd),mimetype="application/json") if session.__contains__('account') == False: dd['error'] = "Error: Not logined." return HttpResponse(simplejson.dumps(dd),mimetype="application/json") email = session['account'].email islandId = session['islandId'] island = Island.get_by_id(islandId) player_q = Player.gql("WHERE email = :1 and islandId = :2",email,islandId) player = player_q.get() player_dict = player.__dict__['_entity'] player_dict['playerId'] = player.key().id() #get number of factories plantQuery = Plant.gql("WHERE playerId = :1 and islandId = :2",player.key().id(), islandId) player_dict['numPlants'] = plantQuery.count() player_dict['numWorkers'] = 0 plants = plantQuery.fetch(1000) plantIds = [] for p in plants: player_dict['numWorkers'] += p.numOfWorkers plantIds.append(p.key().id()) player_dict['numShoes'] = 0 shoeQuery = Shoe.gql("WHERE plantId in :1",plantIds) shoes = shoeQuery.fetch(1000) for shoe in shoes: player_dict['numShoes'] += shoe.qty player_dict['islandName'] = island.name jsonString = simplejson.dumps(player_dict) return HttpResponse(jsonString,mimetype="application/json")
def get_account_players(request): session = request.session try: if session['account']: acc = session['account'] q = Player.gql("WHERE email = :1",acc.email) f = q.fetch(1000) players = [] for i in f: islandId = i.islandId island = Island.get_by_id(islandId) dd = i.__dict__['_entity'] dd['playerId'] = i.key().id() dd['islandName'] = island.name players.append(dd) return HttpResponse(simplejson.dumps(players),mimetype="application/json") else: return HttpResponse("error","text") except KeyError: pass dd = {} dd['error'] = "Error: cannot get session account" return HttpResponse(simplejson.dumps(dd),mimetype="application/json")