Exemple #1
0
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")
Exemple #2
0
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"
Exemple #3
0
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")
Exemple #4
0
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")