def test_return_from_road__after_resurrect(self): self.action_idl.state = prototypes.ActionIdlenessPrototype.STATE.RESURRECT self.hero.position.set_road(list(roads_storage.all())[0], percents=0.5) self.storage.process_turn() self.assertEqual(self.hero.actions.number, 2) self.assertEqual(self.hero.actions.current_action.TYPE, prototypes.ActionMoveToPrototype.TYPE)
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)
def get_draw_info(biomes_map): width = map_info_storage.item.width height = map_info_storage.item.height map_images = [] for y in range(height): map_images.append([]) for x in range(width): map_images[-1].append(CellDrawer()) roads_map = get_roads_map(width, height, roads_storage.all()) for y in range(height): for x in range(width): biom = biomes_map[y][x] cell_drawer = map_images[y][x] cell_drawer.terrain = getattr(SPRITES, biom.id.name) if roads_map[y][x]: road_sprite = get_road_sprite_info(roads_map, x, y) cell_drawer.road = getattr(SPRITES, road_sprite["name"]) cell_drawer.road_rotate = road_sprite["rotate"] for place in places_storage.places.all(): if place.attrs.size < 3: verbose_size = "small" elif place.attrs.size < 6: verbose_size = "medium" elif place.attrs.size < 9: verbose_size = "large" else: verbose_size = "capital" sprite_name = ("city_%s_%s" % (place.race.name.lower(), verbose_size)).upper() cell_drawer = map_images[place.y][place.x] cell_drawer.object = getattr(SPRITES, sprite_name) for building in places_storage.buildings.all(): sprite_name = "BUILDING_%s" % building.type.name cell_drawer = map_images[building.y][building.x] cell_drawer.object = getattr(SPRITES, sprite_name) return map_images
def get_draw_info(biomes_map): width = map_info_storage.item.width height = map_info_storage.item.height map_images = [] for y in xrange(height): map_images.append([]) for x in xrange(width): map_images[-1].append(CellDrawer()) roads_map = get_roads_map(width, height, roads_storage.all()) for y in xrange(height): for x in xrange(width): biom = biomes_map[y][x] cell_drawer = map_images[y][x] cell_drawer.terrain = SPRITES.index_name[biom.id.name] if roads_map[y][x]: road_sprite = get_road_sprite_info(roads_map, x, y) cell_drawer.road = SPRITES.index_name[road_sprite['name']] cell_drawer.road_rotate = road_sprite['rotate'] for place in places_storage.places.all(): if place.attrs.size < 3: verbose_size = 'small' elif place.attrs.size < 6: verbose_size = 'medium' elif place.attrs.size < 9: verbose_size = 'large' else: verbose_size = 'capital' sprite_name = ('city_%s_%s' % (place.race.name.lower(), verbose_size)).upper() cell_drawer = map_images[place.y][place.x] cell_drawer.object = SPRITES.index_name[sprite_name] for building in places_storage.buildings.all(): sprite_name = 'BUILDING_%s' % building.type.name cell_drawer = map_images[building.y][building.x] cell_drawer.object = SPRITES.index_name[sprite_name] return map_images
def get_draw_info(biomes_map): width = map_info_storage.item.width height = map_info_storage.item.height map_images = [] for y in range(height): map_images.append([]) for x in range(width): map_images[-1].append(CellDrawer()) roads_map = get_roads_map(width, height, roads_storage.all()) for y in range(height): for x in range(width): biom = biomes_map[y][x] cell_drawer = map_images[y][x] cell_drawer.terrain = getattr(SPRITES, biom.id.name) if roads_map[y][x]: road_sprite = get_road_sprite_info(roads_map, x, y) cell_drawer.road = getattr(SPRITES, road_sprite['name']) cell_drawer.road_rotate = road_sprite['rotate'] for place in places_storage.places.all(): if place.attrs.size < 3: verbose_size = 'small' elif place.attrs.size < 6: verbose_size = 'medium' elif place.attrs.size < 9: verbose_size = 'large' else: verbose_size = 'capital' sprite_name = ('city_%s_%s' % (place.race.name.lower(), verbose_size)).upper() cell_drawer = map_images[place.y][place.x] cell_drawer.object = getattr(SPRITES, sprite_name) for building in places_storage.buildings.all(): sprite_name = 'BUILDING_%s' % building.type.name cell_drawer = map_images[building.y][building.x] cell_drawer.object = getattr(SPRITES, sprite_name) return map_images
def test_get_minumum_distance_to__check_map_structure(self): self.assertEqual(len(roads_storage.all()), 2)
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)
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)
def handle(self, *args, **options): for road in roads_storage.all(): road.update() roads_storage.save_all()
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)