Esempio n. 1
0
def getTown(numDudes=10):
    # handle request data
    req_data = loads(request.data)
    culture_filters = {}

    print "~~~~~~~~~~~~~~~~~~~~~\n%s\n###############" % req_data

    if 'cultureFilter' in req_data: culture_filters = req_data['cultureFilter']
    if 'size' in req_data: size = int(req_data['size']) * 10

    # get the population of the town
    blank_npcs = assemble_npc_list(numDudes, culture_filters)
    npcs = jobs_for_npcs(blank_npcs)

    # stuff all professions in a dict, to assign to NPCs when the building is created
    professions = {}
    profession_distribution = []
    for profession in db.get_all_professions():
        professions[profession[4]] = {'occupation':profession[0], 'description':profession[1], 'category':profession[2], 'id':profession[4]}

    # load all possible buildings to get started actualizing our new Town
    buildings_raw = []
    for bld in db.get_all_businesses():
        buildings_raw.append( Building(bld[2], bld[4], bld[5]) )

    # pull out the buildings actually in our town, based on size
    buildings = []
    for i, bld in enumerate(buildings_raw):
        #print '\nbld: {}\nsize: {}\nreqPop: {}\nnumThere: {}'.format(bld.name, size, bld.reqPopulation, size / bld.reqPopulation)
        for x in range( size / bld.reqPopulation ):
            # need to reinstantiate so each instance has its own worker
            this_building = Building(bld.name, bld.reqPopulation, bld.requiredProfession)

            # get an employee for the business
            worker = npcs.pop()
            worker.profession = professions[bld.requiredProfession]
            this_building.worker = worker.__dict__
            buildings.append(this_building)

    # build the final town product
    retTown = {} # the thing to jsonify and return
    bld = {} # buildings dict
    retTown["name"] = choice(db.get_all_places())[0]
    # put buildings in dict for easy jsonify
    for x,y in enumerate(buildings):
        bld[x] = y.__dict__
    retTown['buildings'] = bld
    # populate town with NPCs
    retTown['npcs'] = [n.__dict__ for n in npcs]
    return dumps(retTown)