def create(cls, person, utg_name): from the_tale.game.map.places.storage import buildings_storage building = buildings_storage.get_by_person_id(person.id) if building: return building # remove any destroyed buildings for person cls._model_class.objects.filter(person_id=person.id).delete() x, y = random.choice(list(cls.get_available_positions(person.place.x, person.place.y))) model = Building.objects.create(x=x, y=y, data=s11n.to_json({'name': utg_name.serialize()}), place=person.place._model, person=person._model, state=BUILDING_STATE.WORKING, created_at_turn=TimePrototype.get_current_turn_number(), type=person.type.building_type) prototype = cls(model=model) buildings_storage.add_item(prototype.id, prototype) buildings_storage.update_version() return prototype
def apply(self, bill=None): building = buildings_storage.get_by_person_id(self.person.id) if building is None or building.state.is_DESTROYED: return building.destroy()
def create(cls, person, utg_name): from the_tale.game.map.places.storage import buildings_storage building = buildings_storage.get_by_person_id(person.id) if building: return building # remove any destroyed buildings for person cls._model_class.objects.filter(person_id=person.id).delete() x, y = random.choice( list(cls.get_available_positions(person.place.x, person.place.y))) model = Building.objects.create( x=x, y=y, data=s11n.to_json({'name': utg_name.serialize()}), place=person.place._model, person=person._model, state=BUILDING_STATE.WORKING, created_at_turn=TimePrototype.get_current_turn_number(), type=person.type.building_type) prototype = cls(model=model) buildings_storage.add_item(prototype.id, prototype) buildings_storage.update_version() return prototype
def initialize_with_user_data(self, user_form): super(BuildingRenaming, self).initialize_with_user_data(user_form) self.new_building_name_forms = user_form.c.name building = buildings_storage.get_by_person_id(self.person_id) if building is not None: self.old_building_name_forms = building.utg_name
def apply(self, bill=None): building = buildings_storage.get_by_person_id(self.person.id) if building is None or building.state.is_DESTROYED: return building.set_utg_name(self.new_building_name_forms) building.save()
def amortization_delta(self, turns_number): from the_tale.game.map.places.storage import buildings_storage buildings_number = sum(buildings_storage.get_by_person_id(person.id) is not None for person in self.place.persons) per_one_building = float(turns_number) / c.TURNS_IN_HOUR * c.BUILDING_AMORTIZATION_SPEED return per_one_building * c.BUILDING_AMORTIZATION_MODIFIER**(buildings_number-1)
def __init__(self, building_name_forms=None, **kwargs): super(BuildingDestroy, self).__init__(**kwargs) self.building_name_forms = building_name_forms if self.building_name_forms is None: building = buildings_storage.get_by_person_id(self.person_id) if building is not None: self.building_name_forms = building.utg_name
def __init__(self, old_building_name_forms=None, new_building_name_forms=None, **kwargs): super(BuildingRenaming, self).__init__(**kwargs) self.old_building_name_forms = old_building_name_forms self.new_building_name_forms = new_building_name_forms if self.old_building_name_forms is None: building = buildings_storage.get_by_person_id(self.person_id) if building is not None: self.old_building_name_forms = building.utg_name
def move_out_game(self): self._model.out_game_at = datetime.datetime.now() self._model.state = PERSON_STATE.OUT_GAME self.place.persons_changed_at_turn = TimePrototype.get_current_turn_number() building = buildings_storage.get_by_person_id(self.id) if building: building.destroy()
def move_out_game(self): self._model.out_game_at = datetime.datetime.now() self._model.state = PERSON_STATE.OUT_GAME self.place.persons_changed_at_turn = TimePrototype.get_current_turn_number( ) building = buildings_storage.get_by_person_id(self.id) if building: building.destroy()
def amortization_delta(self, turns_number): from the_tale.game.map.places.storage import buildings_storage buildings_number = sum( buildings_storage.get_by_person_id(person.id) is not None for person in self.place.persons) per_one_building = float( turns_number) / c.TURNS_IN_HOUR * c.BUILDING_AMORTIZATION_SPEED return per_one_building * c.BUILDING_AMORTIZATION_MODIFIER**( buildings_number - 1)
def initialize_with_user_data(self, user_form): super(BuildingDestroy, self).initialize_with_user_data(user_form) building = buildings_storage.get_by_person_id(self.person_id) if building is not None: self.building_name_forms = building.utg_name
def _person_has_building(cls, place, person): # pylint: disable=W0613 return buildings_storage.get_by_person_id(person.id) is not None
def mastery(self): mastery = PROFESSION_TO_RACE_MASTERY[self.type.value][self.race.value] building = buildings_storage.get_by_person_id(self.id) if building: mastery += c.BUILDING_MASTERY_BONUS * building.integrity return min(mastery, 1)
def has_building(self): return buildings_storage.get_by_person_id(self.id) is not None @property
def has_building(self): return buildings_storage.get_by_person_id(self.id) is not None
def has_meaning(self): return self.person and self.person.in_game and buildings_storage.get_by_person_id( self.person.id) is None
def building(self): return buildings_storage.get_by_person_id(self.person.id)
def has_meaning(self): return self.person and self.person.in_game and buildings_storage.get_by_person_id(self.person.id) is None