示例#1
0
def update_map(index):

    generator = WorldInfoPrototype.get_by_id(map_info_storage.item.world_id).generator

    generator.clear_power_points()
    generator.clear_biomes()

    if generator.w != map_settings.WIDTH or generator.h != map_settings.HEIGHT:
        dx, dy = generator.resize(map_settings.WIDTH, map_settings.HEIGHT)
        places_storage.places.shift_all(dx, dy)
        places_storage.buildings.shift_all(dx, dy)

    for point in get_power_points():
        generator.add_power_point(point)

    for terrain in TERRAIN.records:
        generator.add_biom(Biom(id_=terrain))

    generator.do_step()

    biomes_map = generator.get_biomes_map()

    time = TimePrototype.get_current_time()

    draw_info = get_draw_info(biomes_map)

    terrain = []
    for y in range(0, generator.h):
        row = []
        terrain.append(row)
        for x in range(0, generator.w):
            row.append(biomes_map[y][x].id)

    map_info_storage.set_item(MapInfoPrototype.create(turn_number=time.turn_number,
                                                      width=generator.w,
                                                      height=generator.h,
                                                      terrain=terrain,
                                                      world=WorldInfoPrototype.create_from_generator(generator)))

    MapInfoPrototype.remove_old_infos()

    raw_draw_info = []
    for row in draw_info:
        raw_draw_info.append([])
        for cell in row:
            raw_draw_info[-1].append(cell.get_sprites())

    data = {'width': generator.w,
            'height': generator.h,
            'map_version': map_info_storage.version,
            'format_version': '0.1',
            'draw_info': raw_draw_info,
            'places': dict( (place.id, place.map_info() ) for place in places_storage.places.all() ),
            # 'buildings': dict( (building.id, building.map_info() ) for building in buildings_storage.all() ),
            'roads': dict( (road.id, road.map_info() ) for road in roads_storage.all()) }

    models.MapRegion.objects.create(turn_number=time.turn_number, data=data)
示例#2
0
    def test_ui_cell_serialization(self):
        generator = WorldInfoPrototype.get_by_id(map_info_storage.item.world_id).generator

        world_cell = generator.cell_info(random.randint(0, generator.w-1), random.randint(0, generator.h-1))

        ui_cell = UICell(world_cell)

        self.assertEqual(ui_cell.serialize(), UICell.deserialize(ui_cell.serialize()).serialize())
示例#3
0
    def test_ui_cells_serialization(self):
        generator = WorldInfoPrototype.get_by_id(
            map_info_storage.item.world_id).generator

        cells = UICells(generator)

        self.assertEqual(cells.serialize(),
                         UICells.deserialize(cells.serialize()).serialize())
示例#4
0
    def handle(self, *args, **options):  # pylint: disable=R0914

        x = options['x']
        y = options['y']

        generator = WorldInfoPrototype.get_by_id(
            map_info_storage.item.world_id).generator

        cell = generator.cell_info(x, y)
        power_cell = generator.cell_power_info(x, y)

        print('----CELL--x=%d--y=%d--' % (x, y))
        print('height:            %.2f \t\t| %r       ' %
              (cell.height, power_cell.height))
        print('temperature:       %.2f \t\t| %f       ' %
              (cell.temperature, power_cell.temperature))
        print('wind:              (%.2f, %.2f) \t| %r ' %
              (cell.wind[0], cell.wind[1], power_cell.wind))
        print('wetness:           %.2f \t\t| %f       ' %
              (cell.wetness, power_cell.wetness))
        print('vegetation:        %.2f \t\t| %r       ' %
              (cell.vegetation, power_cell.vegetation))
        print('soil:              %.2f \t\t| %f       ' %
              (cell.soil, power_cell.soil))
        print('atmo_wind:         (%.2f, %.2f) \t|    ' % cell.atmo_wind)
        print('atmo_temperature:  %.2f \t\t|          ' %
              (cell.atmo_temperature, ))
        print('atmo_wetness:      %.2f \t\t|          ' %
              (cell.atmo_wetness, ))

        terrain_points = []
        for terrain in TERRAIN.records:
            biom = Biom(id_=terrain)
            terrain_points.append(
                (terrain.text, biom.check(cell), biom.get_points(cell)))
        terrain_points = sorted(terrain_points, key=lambda x: -x[1])

        print()
        print('----TERRAIN----')
        for biom_name, total_power, aspects in terrain_points[:5]:
            print('%.2f\t%s' % (total_power, biom_name))

            for aspect_name, aspect_value in aspects:
                print('\t%.2f\t%s' % (aspect_value, aspect_name))

        print()
        print('----POINTS----')

        points = []
        for point in get_power_points():
            value = point.log_powers_for(generator, x=x, y=y)
            if value:
                points.append((point.name, value))
        points.sort()

        for name, value in points:
            print('%s %r' % (name.ljust(35), value))
示例#5
0
    def test_ui_cell_serialization(self):
        generator = WorldInfoPrototype.get_by_id(
            map_info_storage.item.world_id).generator

        world_cell = generator.cell_info(random.randint(0, generator.w - 1),
                                         random.randint(0, generator.h - 1))

        ui_cell = UICell(world_cell)

        self.assertEqual(ui_cell.serialize(),
                         UICell.deserialize(ui_cell.serialize()).serialize())
示例#6
0
def create_test_map_info():
    map_info_storage.set_item(
        MapInfoPrototype.create(
            turn_number=0,
            width=map_settings.WIDTH,
            height=map_settings.HEIGHT,
            terrain=[[
                TERRAIN.PLANE_GREENWOOD for j in range(map_settings.WIDTH)
            ] for i in range(map_settings.HEIGHT)],  # pylint: disable=W0612
            world=WorldInfoPrototype.create(w=map_settings.WIDTH,
                                            h=map_settings.HEIGHT)))
示例#7
0
    def handle(self, *args, **options): # pylint: disable=R0914

        x = options['x']
        y = options['y']

        generator = WorldInfoPrototype.get_by_id(map_info_storage.item.world_id).generator

        cell = generator.cell_info(x, y)
        power_cell = generator.cell_power_info(x, y)

        print '----CELL--x=%d--y=%d--' % (x, y)
        print 'height:            %.2f \t\t| %r       ' % (cell.height, power_cell.height)
        print 'temperature:       %.2f \t\t| %f       ' % (cell.temperature, power_cell.temperature)
        print 'wind:              (%.2f, %.2f) \t| %r ' % (cell.wind[0], cell.wind[1], power_cell.wind)
        print 'wetness:           %.2f \t\t| %f       ' % (cell.wetness, power_cell.wetness)
        print 'vegetation:        %.2f \t\t| %r       ' % (cell.vegetation, power_cell.vegetation)
        print 'soil:              %.2f \t\t| %f       ' % (cell.soil, power_cell.soil)
        print 'atmo_wind:         (%.2f, %.2f) \t|    ' % cell.atmo_wind
        print 'atmo_temperature:  %.2f \t\t|          ' % (cell.atmo_temperature,)
        print 'atmo_wetness:      %.2f \t\t|          ' % (cell.atmo_wetness,)

        terrain_points = []
        for terrain in TERRAIN.records:
            biom = Biom(id_=terrain)
            terrain_points.append((terrain.text, biom.check(cell), biom.get_points(cell)))
        terrain_points = sorted(terrain_points, key=lambda x: -x[1])

        print
        print '----TERRAIN----'
        for biom_name, total_power, aspects in terrain_points[:5]:
            print '%.2f\t%s' % (total_power, biom_name)

            for aspect_name, aspect_value in aspects:
                print '\t%.2f\t%s' % (aspect_value, aspect_name)

        print
        print '----POINTS----'

        points = []
        for point in get_power_points():
            value = point.log_powers_for(generator, x=x, y=y)
            if value:
                points.append((point.name, value))
        points.sort()

        for name, value in points:
            print '%s %r' % (name.ljust(35), value)
示例#8
0
文件: logic.py 项目: Alkalit/the-tale
def create_test_my_info():
    map_info_storage.set_item(MapInfoPrototype.create(turn_number=0,
                                                      width=map_settings.WIDTH,
                                                      height=map_settings.HEIGHT,
                                                      terrain=[ [TERRAIN.PLANE_GREENWOOD for j in xrange(map_settings.WIDTH)] for i in xrange(map_settings.HEIGHT)], # pylint: disable=W0612
                                                      world=WorldInfoPrototype.create(w=map_settings.WIDTH, h=map_settings.HEIGHT)))
示例#9
0
    def create_map(self): # pylint: disable=R0914, R0915

        Place.objects.all().delete()
        Road.objects.all().delete()

        p1x1   = self.create_place(1,  1,  size=1)
        p14x1  = self.create_place(14, 1,  size=1)
        p27x1  = self.create_place(27, 1,  size=6)
        p5x3   = self.create_place(5,  3,  size=5)
        p1x9   = self.create_place(1,  9,  size=6)
        p5x12  = self.create_place(5,  12, size=1)
        p3x17  = self.create_place(3,  17, size=10)
        p10x18 = self.create_place(10, 18, size=3)
        p11x11 = self.create_place(11, 11, size=4)
        p11x6  = self.create_place(11, 6,  size=4)
        p19x5  = self.create_place(19, 5,  size=3)
        p20x8  = self.create_place(20, 8,  size=9)
        p24x8  = self.create_place(24, 8,  size=10)
        p17x12 = self.create_place(17, 12, size=2)
        p19x17 = self.create_place(19, 17, size=8)
        p24x13 = self.create_place(24, 13, size=1)
        p27x13 = self.create_place(27, 13, size=1)
        p28x19 = self.create_place(28, 19, size=3)

        self.create_road(p1x1,   p5x3)
        self.create_road(p5x3,   p1x9)
        self.create_road(p5x3,   p11x6)
        self.create_road(p1x9,   p5x12)
        self.create_road(p5x12,  p3x17)
        self.create_road(p5x12,  p11x11)
        self.create_road(p3x17,  p10x18)
        self.create_road(p11x11, p10x18)
        self.create_road(p11x11, p11x6)
        self.create_road(p11x11, p19x17)
        self.create_road(p11x11, p17x12)
        self.create_road(p11x11, p20x8)
        self.create_road(p11x6,  p14x1)
        self.create_road(p14x1,  p27x1)
        self.create_road(p27x1,  p24x8)
        self.create_road(p24x8,  p20x8)
        self.create_road(p24x8,  p24x13)
        self.create_road(p24x8,  p27x13)
        self.create_road(p20x8,  p19x5)
        self.create_road(p20x8,  p17x12)
        self.create_road(p19x17, p24x13)
        self.create_road(p28x19, p24x13)
        self.create_road(p28x19, p27x13)

        places_storage.update_version()
        roads_storage.update_version()

        for place in places_storage.all():
            place.sync_persons(force_add=True)

        persons_storage.update_version()

        terrain = []
        for y in xrange(0, map_settings.HEIGHT): # pylint: disable=W0612
            row = []
            terrain.append(row)
            for x in xrange(0, map_settings.WIDTH): # pylint: disable=W0612
                row.append(TERRAIN.PLANE_GREENWOOD)

        map_info_storage.set_item(MapInfoPrototype.create(turn_number=0,
                                                          width=map_settings.WIDTH,
                                                          height=map_settings.HEIGHT,
                                                          terrain=terrain,
                                                          world=WorldInfoPrototype.create(w=map_settings.WIDTH, h=map_settings.HEIGHT)))

        map_info_storage.update_version()
示例#10
0
    def test_ui_cells_serialization(self):
        generator = WorldInfoPrototype.get_by_id(map_info_storage.item.world_id).generator

        cells = UICells(generator)

        self.assertEqual(cells.serialize(), UICells.deserialize(cells.serialize()).serialize())
示例#11
0
def update_map(index):

    generator = WorldInfoPrototype.get_by_id(map_info_storage.item.world_id).generator

    generator.clear_power_points()
    generator.clear_biomes()

    if generator.w != map_settings.WIDTH or generator.h != map_settings.HEIGHT:
        dx, dy = generator.resize(map_settings.WIDTH, map_settings.HEIGHT)
        places_storage.places.shift_all(dx, dy)
        places_storage.buildings.shift_all(dx, dy)

    for point in get_power_points():
        generator.add_power_point(point)

    for terrain in TERRAIN.records:
        generator.add_biom(Biom(id_=terrain))

    generator.do_step()

    biomes_map = generator.get_biomes_map()

    time = TimePrototype.get_current_time()

    draw_info = get_draw_info(biomes_map)

    terrain = []
    for y in xrange(0, generator.h):
        row = []
        terrain.append(row)
        for x in xrange(0, generator.w):
            row.append(biomes_map[y][x].id)

    map_info_storage.set_item(MapInfoPrototype.create(turn_number=time.turn_number,
                                                      width=generator.w,
                                                      height=generator.h,
                                                      terrain=terrain,
                                                      world=WorldInfoPrototype.create_from_generator(generator)))

    MapInfoPrototype.remove_old_infos()

    raw_draw_info = []
    for row in draw_info:
        raw_draw_info.append([])
        for cell in row:
            raw_draw_info[-1].append(cell.get_sprites())

    data = {'width': generator.w,
            'height': generator.h,
            'map_version': map_info_storage.version,
            'format_version': '0.1',
            'draw_info': raw_draw_info,
            'places': dict( (place.id, place.map_info() ) for place in places_storage.places.all() ),
            # 'buildings': dict( (building.id, building.map_info() ) for building in buildings_storage.all() ),
            'roads': dict( (road.id, road.map_info() ) for road in roads_storage.all()) }

    region_js_file = map_settings.GEN_REGION_OUTPUT % map_info_storage.version

    output_dir_name = os.path.dirname(region_js_file)
    if not os.path.exists(output_dir_name):
        os.makedirs(output_dir_name, 0755)

    with open(region_js_file, 'w') as region_json_file:
        region_json_file.write(s11n.to_json(data).encode('utf-8'))

    if project_settings.DEBUG:
        deworld.draw_world(index, generator, catalog=map_settings.GEN_WORLD_PROGRESSION)
示例#12
0
def update_map(index):

    generator = WorldInfoPrototype.get_by_id(
        map_info_storage.item.world_id).generator

    generator.clear_power_points()
    generator.clear_biomes()

    if generator.w != map_settings.WIDTH or generator.h != map_settings.HEIGHT:
        dx, dy = generator.resize(map_settings.WIDTH, map_settings.HEIGHT)
        places_storage.places.shift_all(dx, dy)
        places_storage.buildings.shift_all(dx, dy)

    for point in get_power_points():
        generator.add_power_point(point)

    for terrain in TERRAIN.records:
        generator.add_biom(Biom(id_=terrain))

    generator.do_step()

    biomes_map = generator.get_biomes_map()

    time = TimePrototype.get_current_time()

    draw_info = get_draw_info(biomes_map)

    terrain = []
    for y in xrange(0, generator.h):
        row = []
        terrain.append(row)
        for x in xrange(0, generator.w):
            row.append(biomes_map[y][x].id)

    map_info_storage.set_item(
        MapInfoPrototype.create(
            turn_number=time.turn_number,
            width=generator.w,
            height=generator.h,
            terrain=terrain,
            world=WorldInfoPrototype.create_from_generator(generator)))

    MapInfoPrototype.remove_old_infos()

    raw_draw_info = []
    for row in draw_info:
        raw_draw_info.append([])
        for cell in row:
            raw_draw_info[-1].append(cell.get_sprites())

    data = {
        'width':
        generator.w,
        'height':
        generator.h,
        'map_version':
        map_info_storage.version,
        'format_version':
        '0.1',
        'draw_info':
        raw_draw_info,
        'places':
        dict((place.id, place.map_info())
             for place in places_storage.places.all()),
        # 'buildings': dict( (building.id, building.map_info() ) for building in buildings_storage.all() ),
        'roads':
        dict((road.id, road.map_info()) for road in roads_storage.all())
    }

    region_js_file = map_settings.GEN_REGION_OUTPUT % map_info_storage.version

    output_dir_name = os.path.dirname(region_js_file)
    if not os.path.exists(output_dir_name):
        os.makedirs(output_dir_name, 0755)

    with open(region_js_file, 'w') as region_json_file:
        region_json_file.write(s11n.to_json(data).encode('utf-8'))

    if project_settings.DEBUG:
        deworld.draw_world(index,
                           generator,
                           catalog=map_settings.GEN_WORLD_PROGRESSION)
示例#13
0
    def create_map(self):  # pylint: disable=R0914, R0915

        places_models.Place.objects.all().delete()
        roads_models.Road.objects.all().delete()

        map_info_storage.set_item(
            MapInfoPrototype.create(
                turn_number=0,
                width=map_settings.WIDTH,
                height=map_settings.HEIGHT,
                terrain=[[
                    TERRAIN.PLANE_GREENWOOD for j in xrange(map_settings.WIDTH)
                ] for i in xrange(map_settings.HEIGHT)],
                world=WorldInfoPrototype.create(w=map_settings.WIDTH,
                                                h=map_settings.HEIGHT)))

        p1x1 = self.create_place(1, 1, size=1)
        p14x1 = self.create_place(14, 1, size=1)
        p27x1 = self.create_place(27, 1, size=6)
        p5x3 = self.create_place(5, 3, size=5)
        p1x9 = self.create_place(1, 9, size=6)
        p5x12 = self.create_place(5, 12, size=1)
        p3x17 = self.create_place(3, 17, size=10)
        p10x18 = self.create_place(10, 18, size=3)
        p11x11 = self.create_place(11, 11, size=4)
        p11x6 = self.create_place(11, 6, size=4)
        p19x5 = self.create_place(19, 5, size=3)
        p20x8 = self.create_place(20, 8, size=9)
        p24x8 = self.create_place(24, 8, size=10)
        p17x12 = self.create_place(17, 12, size=2)
        p19x17 = self.create_place(19, 17, size=8)
        p24x13 = self.create_place(24, 13, size=1)
        p27x13 = self.create_place(27, 13, size=1)
        p28x19 = self.create_place(28, 19, size=3)

        self.create_road(p1x1, p5x3)
        self.create_road(p5x3, p1x9)
        self.create_road(p5x3, p11x6)
        self.create_road(p1x9, p5x12)
        self.create_road(p5x12, p3x17)
        self.create_road(p5x12, p11x11)
        self.create_road(p3x17, p10x18)
        self.create_road(p11x11, p10x18)
        self.create_road(p11x11, p11x6)
        self.create_road(p11x11, p19x17)
        self.create_road(p11x11, p17x12)
        self.create_road(p11x11, p20x8)
        self.create_road(p11x6, p14x1)
        self.create_road(p14x1, p27x1)
        self.create_road(p27x1, p24x8)
        self.create_road(p24x8, p20x8)
        self.create_road(p24x8, p24x13)
        self.create_road(p24x8, p27x13)
        self.create_road(p20x8, p19x5)
        self.create_road(p20x8, p17x12)
        self.create_road(p19x17, p24x13)
        self.create_road(p28x19, p24x13)
        self.create_road(p28x19, p27x13)

        places_storage.places.update_version()
        roads_storage.update_version()

        for place in places_storage.places.all():
            for i in xrange(random.randint(2, 6)):
                places_logic.add_person_to_place(place)

        persons_storage.persons.update_version()

        terrain = []
        for y in xrange(0, map_settings.HEIGHT):  # pylint: disable=W0612
            row = []
            terrain.append(row)
            for x in xrange(0, map_settings.WIDTH):  # pylint: disable=W0612
                row.append(TERRAIN.PLANE_GREENWOOD)

        map_info_storage.set_item(
            MapInfoPrototype.create(turn_number=0,
                                    width=map_settings.WIDTH,
                                    height=map_settings.HEIGHT,
                                    terrain=terrain,
                                    world=WorldInfoPrototype.create(
                                        w=map_settings.WIDTH,
                                        h=map_settings.HEIGHT)))

        map_info_storage.update_version()
示例#14
0
def update_map(index):

    generator = WorldInfoPrototype.get_by_id(map_info_storage.item.world_id).generator

    generator.clear_power_points()
    generator.clear_biomes()

    if generator.w != map_settings.WIDTH or generator.h != map_settings.HEIGHT:
        dx, dy = generator.resize(map_settings.WIDTH, map_settings.HEIGHT)
        places_storage.places.shift_all(dx, dy)
        places_storage.buildings.shift_all(dx, dy)

    for point in get_power_points():
        generator.add_power_point(point)

    for terrain in TERRAIN.records:
        generator.add_biom(Biom(id_=terrain))

    generator.do_step()

    biomes_map = generator.get_biomes_map()

    time = TimePrototype.get_current_time()

    draw_info = get_draw_info(biomes_map)

    terrain = []
    for y in range(0, generator.h):
        row = []
        terrain.append(row)
        for x in range(0, generator.w):
            row.append(biomes_map[y][x].id)

    map_info_storage.set_item(
        MapInfoPrototype.create(
            turn_number=time.turn_number,
            width=generator.w,
            height=generator.h,
            terrain=terrain,
            world=WorldInfoPrototype.create_from_generator(generator),
        )
    )

    MapInfoPrototype.remove_old_infos()

    raw_draw_info = []
    for row in draw_info:
        raw_draw_info.append([])
        for cell in row:
            raw_draw_info[-1].append(cell.get_sprites())

    data = {
        "width": generator.w,
        "height": generator.h,
        "map_version": map_info_storage.version,
        "format_version": "0.1",
        "draw_info": raw_draw_info,
        "places": dict((place.id, place.map_info()) for place in places_storage.places.all()),
        # 'buildings': dict( (building.id, building.map_info() ) for building in buildings_storage.all() ),
        "roads": dict((road.id, road.map_info()) for road in roads_storage.all()),
    }

    models.MapRegion.objects.create(turn_number=time.turn_number, data=data)