Exemple #1
0
def joinGrid(handler, **args):
    try:
        #TODO: Sanity checks
        gid = args['gid']
    except KeyError:
        return {"status": 406, "error": "no gid"}

    pid = None
    if "pid" in args:
        pid = args['pid']

    g = Grid(gid)
    if g.exists() is False:
        return {"status":404, "error":"Grid not found."}

    # Add the user to the grid/UpdateManager
    pid = g.addUser(handler.user, pid)

    if pid is False:
        return { "status":406, "error": "Grid is full" }
    
    handler.user['pid'] = pid
    handler.user['grid'] = gid
    handler.user['active'] = True
    player = handler.user.getPlayer()

    # Looks like it's a new player, go ahead and init them
    if g.playerExists(pid) is False:
        player['cash'] = g['init_cash'] # Starting cash value
        player['inc'] = 0
        player['lastInc'] = int(time())
        player['tused'] = g['init_tused']
        player['tlim'] = g['init_tlim']

        updated = g.loadEvent("join_%s" % pid)
        # Add their new coords 
        for coord in updated:
            UpdateManager.sendCoord(g, coord, handler.user)

    # Announce our color to all other clients
    UpdateManager.sendGrid(g, "addPlayer", handler.user)

    return {
        "status":200,
        "uid": handler.user['id'],
        "pid": pid,
        "cash": player['cash'],
        "inc": player['inc'],
        "tused": player['tused'],
        "tlim": player['tlim'],
        "colors": g.getColors(),
        "color": player['color'],
        "coords": g.dump()
    }