def create_place(self, x, y, size, roads_to, persons=(), name_forms=None, is_frontier=False): # pylint: disable=R0914 place_power = int(max(place.power for place in places_storage.all()) * float(size) / places_settings.MAX_SIZE) place_power_steps = int(places_settings.POWER_HISTORY_LENGTH / c.MAP_SYNC_TIME) place_power_per_step = (place_power / place_power_steps) + 1 place = PlacePrototype.create( x=x, y=y, utg_name=name_forms.word, is_frontier=is_frontier, size=size) initial_turn = TimePrototype.get_current_turn_number() - places_settings.POWER_HISTORY_LENGTH for i in xrange(place_power_steps): place.push_power(int(initial_turn+i*c.MAP_SYNC_TIME), int(place_power_per_step)) for person_name_forms, power_percent, race, gender, tp in persons: person = PersonPrototype.create(place=place, race=race, gender=gender, tp=tp, name_forms=person_name_forms) person_power = place_power * power_percent person_power_steps = int(persons_conf.settings.POWER_HISTORY_LENGTH / c.MAP_SYNC_TIME) person_power_per_step = (person_power / person_power_steps) + 1 initial_turn = TimePrototype.get_current_turn_number() - persons_conf.settings.POWER_HISTORY_LENGTH for i in xrange(person_power_steps): person.push_power(int(initial_turn+i*c.MAP_SYNC_TIME), int(person_power_per_step)) person.save() place.sync_persons(force_add=True) power_delta = self.INITIAL_PERSON_POWER for person in place.persons: person.fill_power_evenly(power_delta) person.save() power_delta /= 2 place.sync_race() place.save() for destination in roads_to: Road.objects.create(point_1=place._model, point_2=destination._model) persons_storage.update_version() places_storage.update_version() roads_storage.update_version() persons_storage.refresh() places_storage.refresh() roads_storage.refresh() return place
def create_test_map(): linguistics_logic.sync_static_restrictions() map_logic.create_test_my_info() p1 = PlacePrototype.create( x=1, y=1, size=1, utg_name=names.generator.get_test_name(name='1x1')) p2 = PlacePrototype.create( x=3, y=3, size=3, utg_name=names.generator.get_test_name(name='10x10')) p3 = PlacePrototype.create( x=1, y=3, size=3, utg_name=names.generator.get_test_name(name='1x10')) for place in places_storage.all(): place.sync_persons(force_add=True) RoadPrototype.create(point_1=p1, point_2=p2).update() RoadPrototype.create(point_1=p2, point_2=p3).update() update_waymarks() update_nearest_cells() mob_1 = MobRecordPrototype.create_random('mob_1') mob_2 = MobRecordPrototype.create_random('mob_2') mob_3 = MobRecordPrototype.create_random('mob_3') ArtifactRecordPrototype.create_random('loot_1', mob=mob_1) ArtifactRecordPrototype.create_random('loot_2', mob=mob_2) ArtifactRecordPrototype.create_random('loot_3', mob=mob_3) ArtifactRecordPrototype.create_random('helmet_1', type_=ARTIFACT_TYPE.HELMET, mob=mob_1) ArtifactRecordPrototype.create_random('plate_1', type_=ARTIFACT_TYPE.PLATE, mob=mob_2) ArtifactRecordPrototype.create_random('boots_1', type_=ARTIFACT_TYPE.BOOTS, mob=mob_3) ArtifactRecordPrototype.create_random(DEFAULT_HERO_EQUIPMENT.PANTS, type_=ARTIFACT_TYPE.PANTS) ArtifactRecordPrototype.create_random(DEFAULT_HERO_EQUIPMENT.BOOTS, type_=ARTIFACT_TYPE.BOOTS) ArtifactRecordPrototype.create_random(DEFAULT_HERO_EQUIPMENT.PLATE, type_=ARTIFACT_TYPE.PLATE) ArtifactRecordPrototype.create_random(DEFAULT_HERO_EQUIPMENT.GLOVES, type_=ARTIFACT_TYPE.GLOVES) ArtifactRecordPrototype.create_random(DEFAULT_HERO_EQUIPMENT.WEAPON, type_=ARTIFACT_TYPE.MAIN_HAND) companions_logic.create_random_companion_record('companion_1', dedication=companions_relations.DEDICATION.HEROIC, state=companions_relations.STATE.ENABLED) companions_logic.create_random_companion_record('companion_2', dedication=companions_relations.DEDICATION.BOLD, state=companions_relations.STATE.ENABLED) companions_logic.create_random_companion_record('companion_3', dedication=companions_relations.DEDICATION.BOLD, state=companions_relations.STATE.DISABLED) return p1, p2, p3
def create(cls, turn_number, width, height, terrain, world): # pylint: disable=R0914 from the_tale.game.map.generator.descriptors import UICells terrain_percents = {} terrain_squares = collections.defaultdict(int) for y in xrange(0, height): for x in xrange(0, width): cell = world.generator.cell_info(x, y) if cell.height < -0.2: terrain_squares[MAP_STATISTICS.LOWLANDS] += 1 elif cell.height < 0.3: terrain_squares[MAP_STATISTICS.PLAINS] += 1 else: terrain_squares[MAP_STATISTICS.UPLANDS] += 1 if cell.vegetation == VEGETATION_TYPE.DESERT: terrain_squares[MAP_STATISTICS.DESERTS] += 1 elif cell.vegetation == VEGETATION_TYPE.GRASS: terrain_squares[MAP_STATISTICS.GRASS] += 1 else: terrain_squares[MAP_STATISTICS.FORESTS] += 1 total_cells = width * height terrain_percents = dict( (id_.value, float(square) / total_cells) for id_, square in terrain_squares.items()) person_race_percents = get_person_race_percents(persons_storage.filter(state=PERSON_STATE.IN_GAME)) race_percents = get_race_percents(places_storage.all()) #race to cities percents race_cities = dict( (race.value, 0) for race in RACE.records) for place_model in Place.objects.all(): place = PlacePrototype(place_model) race_cities[place.race.value] += 1 statistics = {'terrain_percents': terrain_percents, 'person_race_percents': person_race_percents, 'race_percents': race_percents, 'race_cities': race_cities} model = MapInfo.objects.create(turn_number=turn_number, width=width, height=height, terrain=s11n.to_json([ [cell.value for cell in row] for row in terrain]), cells=s11n.to_json(UICells.create(world.generator).serialize()), world=world._model, statistics=s11n.to_json(statistics)) return cls(model)
def setUp(self): super(PlacePowerTest, self).setUp() linguistics_logic.sync_static_restrictions() map_logic.create_test_my_info() places_storage.clear() persons_storage.clear() self.place = PlacePrototype.create(x=0, y=0, size=5, utg_name=names.generator.get_test_name(name='power_test_place'), race=RACE.HUMAN) self.place.sync_persons(force_add=True) persons_storage.sync(force=True)
def setUp(self): super(PlacePowerTest, self).setUp() linguistics_logic.sync_static_restrictions() map_logic.create_test_my_info() places_storage.clear() persons_storage.clear() self.place = PlacePrototype.create( x=0, y=0, size=5, utg_name=names.generator.get_test_name(name='power_test_place'), race=RACE.HUMAN) self.place.sync_persons(force_add=True) persons_storage.sync(force=True)
def test_habit_change_speed__penaltuy(self): self.assertEqual(PlacePrototype._habit_change_speed(0, 0, 0), 0) self.assertEqual(PlacePrototype._habit_change_speed(500, 0, 0), -5) self.assertEqual(PlacePrototype._habit_change_speed(-500, 0, 0), 5)
def test_habit_change_speed(self): self.assertEqual(PlacePrototype._habit_change_speed(0, 100, 100), 0) self.assertEqual(PlacePrototype._habit_change_speed(0, 100, -100), 0) self.assertEqual(PlacePrototype._habit_change_speed(0, -100, 100), 0) self.assertEqual(PlacePrototype._habit_change_speed(0, 100, 0), c.PLACE_HABITS_CHANGE_SPEED_MAXIMUM) self.assertEqual(PlacePrototype._habit_change_speed(0, 0, 100), -c.PLACE_HABITS_CHANGE_SPEED_MAXIMUM) self.assertEqual(PlacePrototype._habit_change_speed(0, -100, 0), c.PLACE_HABITS_CHANGE_SPEED_MAXIMUM) self.assertEqual(PlacePrototype._habit_change_speed(0, 0, -100), -c.PLACE_HABITS_CHANGE_SPEED_MAXIMUM) self.assertEqual(PlacePrototype._habit_change_speed(0, 100, 1), c.PLACE_HABITS_CHANGE_SPEED_MAXIMUM) self.assertEqual(PlacePrototype._habit_change_speed(0, -100, 1), c.PLACE_HABITS_CHANGE_SPEED_MAXIMUM) self.assertEqual(PlacePrototype._habit_change_speed(0, 1, 100), -c.PLACE_HABITS_CHANGE_SPEED_MAXIMUM) self.assertEqual(PlacePrototype._habit_change_speed(0, -1, 100), -c.PLACE_HABITS_CHANGE_SPEED_MAXIMUM)
def create_test_map(): linguistics_logic.sync_static_restrictions() map_logic.create_test_my_info() p1 = PlacePrototype.create( x=1, y=1, size=1, utg_name=names.generator.get_test_name(name='1x1')) p2 = PlacePrototype.create( x=3, y=3, size=3, utg_name=names.generator.get_test_name(name='10x10')) p3 = PlacePrototype.create( x=1, y=3, size=3, utg_name=names.generator.get_test_name(name='1x10')) for place in places_storage.all(): place.sync_persons(force_add=True) RoadPrototype.create(point_1=p1, point_2=p2).update() RoadPrototype.create(point_1=p2, point_2=p3).update() update_waymarks() update_nearest_cells() mob_1 = MobRecordPrototype.create_random('mob_1') mob_2 = MobRecordPrototype.create_random('mob_2') mob_3 = MobRecordPrototype.create_random('mob_3') ArtifactRecordPrototype.create_random('loot_1', mob=mob_1) ArtifactRecordPrototype.create_random('loot_2', mob=mob_2) ArtifactRecordPrototype.create_random('loot_3', mob=mob_3) ArtifactRecordPrototype.create_random('helmet_1', type_=ARTIFACT_TYPE.HELMET, mob=mob_1) ArtifactRecordPrototype.create_random('plate_1', type_=ARTIFACT_TYPE.PLATE, mob=mob_2) ArtifactRecordPrototype.create_random('boots_1', type_=ARTIFACT_TYPE.BOOTS, mob=mob_3) ArtifactRecordPrototype.create_random(DEFAULT_HERO_EQUIPMENT.PANTS, type_=ARTIFACT_TYPE.PANTS) ArtifactRecordPrototype.create_random(DEFAULT_HERO_EQUIPMENT.BOOTS, type_=ARTIFACT_TYPE.BOOTS) ArtifactRecordPrototype.create_random(DEFAULT_HERO_EQUIPMENT.PLATE, type_=ARTIFACT_TYPE.PLATE) ArtifactRecordPrototype.create_random(DEFAULT_HERO_EQUIPMENT.GLOVES, type_=ARTIFACT_TYPE.GLOVES) ArtifactRecordPrototype.create_random(DEFAULT_HERO_EQUIPMENT.WEAPON, type_=ARTIFACT_TYPE.MAIN_HAND) companions_logic.create_random_companion_record( 'companion_1', dedication=companions_relations.DEDICATION.HEROIC, state=companions_relations.STATE.ENABLED) companions_logic.create_random_companion_record( 'companion_2', dedication=companions_relations.DEDICATION.BOLD, state=companions_relations.STATE.ENABLED) companions_logic.create_random_companion_record( 'companion_3', dedication=companions_relations.DEDICATION.BOLD, state=companions_relations.STATE.DISABLED) return p1, p2, p3
def create_place(self, x, y, size, roads_to, persons=(), name_forms=None, is_frontier=False): # pylint: disable=R0914 place_power = int( max(place.power for place in places_storage.all()) * float(size) / places_settings.MAX_SIZE) place_power_steps = int(places_settings.POWER_HISTORY_LENGTH / c.MAP_SYNC_TIME) place_power_per_step = (place_power / place_power_steps) + 1 place = PlacePrototype.create(x=x, y=y, utg_name=name_forms.word, is_frontier=is_frontier, size=size) initial_turn = TimePrototype.get_current_turn_number( ) - places_settings.POWER_HISTORY_LENGTH for i in xrange(place_power_steps): place.push_power(int(initial_turn + i * c.MAP_SYNC_TIME), int(place_power_per_step)) for person_name_forms, power_percent, race, gender, tp in persons: person = PersonPrototype.create(place=place, race=race, gender=gender, tp=tp, name_forms=person_name_forms) person_power = place_power * power_percent person_power_steps = int( persons_conf.settings.POWER_HISTORY_LENGTH / c.MAP_SYNC_TIME) person_power_per_step = (person_power / person_power_steps) + 1 initial_turn = TimePrototype.get_current_turn_number( ) - persons_conf.settings.POWER_HISTORY_LENGTH for i in xrange(person_power_steps): person.push_power(int(initial_turn + i * c.MAP_SYNC_TIME), int(person_power_per_step)) person.save() place.sync_persons(force_add=True) power_delta = self.INITIAL_PERSON_POWER for person in place.persons: person.fill_power_evenly(power_delta) person.save() power_delta /= 2 place.sync_race() place.save() for destination in roads_to: Road.objects.create(point_1=place._model, point_2=destination._model) persons_storage.update_version() places_storage.update_version() roads_storage.update_version() persons_storage.refresh() places_storage.refresh() roads_storage.refresh() return place