コード例 #1
0
    def __init__(self, session, building, ship=None, build_related=None):
        super(BuildingTool, self).__init__(session)
        assert not (ship and build_related)
        self.renderer = self.session.view.renderer['InstanceRenderer']
        self.ship = ship
        self._class = building
        self.__init_selectable_component()
        self.buildings = []  # list of PossibleBuild objs
        self.buildings_action_set_ids = []  # list action set ids of list above
        self.buildings_fife_instances = {}  # fife instances of possible builds
        self.buildings_missing_resources = {
        }  # missing resources for possible builds
        self.rotation = 45 + random.randint(0, 3) * 90
        self.start_point, self.end_point = None, None
        self.last_change_listener = None
        self._transparencified_instances = set(
        )  # fife instances modified for transparency
        self._buildable_tiles = set()  # tiles marked as buildable
        self._related_buildings = set()  # buildings highlighted as related
        self._highlighted_buildings = set(
        )  # related buildings highlighted when preview is near it
        self._build_logic = None
        self._related_buildings_selected_tiles = frozenset(
        )  # highlights w.r.t. related buildings
        if self.ship is not None:
            self._build_logic = ShipBuildingToolLogic(ship)
        elif build_related is not None:
            self._build_logic = BuildRelatedBuildingToolLogic(
                self, weakref.ref(build_related))
        else:
            self._build_logic = SettlementBuildingToolLogic(self)

        self.load_gui()
        self.__class__.gui.show()
        self.session.ingame_gui.minimap_to_front()

        self.session.gui.on_escape = self.on_escape

        self.highlight_buildable()
        WorldObjectDeleted.subscribe(self._on_worldobject_deleted)

        SettlementInventoryUpdated.subscribe(self.update_preview)
        PlayerInventoryUpdated.subscribe(self.update_preview)
コード例 #2
0
 def remove(self):
     self.session.ingame_gui.resource_overview.close_construction_mode()
     WorldObjectDeleted.unsubscribe(self._on_worldobject_deleted)
     self._remove_listeners()
     self._remove_building_instances()
     self._remove_coloring()
     self._build_logic.remove(self.session)
     self._buildable_tiles = None
     self._transparencified_instances = None
     self._related_buildings_selected_tiles = None
     self._related_buildings = None
     self._highlighted_buildings = None
     self._build_logic = None
     self.buildings = None
     if self.__class__.gui is not None:
         self.__class__.gui.hide()
     ExtScheduler().rem_all_classinst_calls(self)
     SettlementInventoryUpdated.discard(self.update_preview)
     PlayerInventoryUpdated.discard(self.update_preview)
     super(BuildingTool, self).remove()
コード例 #3
0
	def remove(self):
		self.session.ingame_gui.resource_overview.close_construction_mode()
		WorldObjectDeleted.unsubscribe(self._on_worldobject_deleted)
		self._remove_listeners()
		self._remove_building_instances()
		self._remove_coloring()
		self._build_logic.remove(self.session)
		self._buildable_tiles = None
		self._transparencified_instances = None
		self._related_buildings_selected_tiles = None
		self._related_buildings = None
		self._highlighted_buildings = None
		self._build_logic = None
		self.buildings = None
		if self.__class__.gui is not None:
			self.__class__.gui.hide()
		ExtScheduler().rem_all_classinst_calls(self)
		SettlementInventoryUpdated.discard(self.update_preview)
		PlayerInventoryUpdated.discard(self.update_preview)
		super(BuildingTool, self).remove()
コード例 #4
0
	def __init__(self, session, building, ship=None, build_related=None):
		super(BuildingTool, self).__init__(session)
		assert not (ship and build_related)
		self.renderer = self.session.view.renderer['InstanceRenderer']
		self.ship = ship
		self._class = building
		self.__init_selectable_component()
		self.buildings = [] # list of PossibleBuild objs
		self.buildings_action_set_ids = [] # list action set ids of list above
		self.buildings_fife_instances = {} # fife instances of possible builds
		self.buildings_missing_resources = {} # missing resources for possible builds
		self.rotation = 45 + random.randint(0, 3)*90
		self.start_point, self.end_point = None, None
		self.last_change_listener = None
		self._transparencified_instances = set() # fife instances modified for transparency
		self._buildable_tiles = set() # tiles marked as buildable
		self._related_buildings = set() # buildings highlighted as related
		self._highlighted_buildings = set() # related buildings highlighted when preview is near it
		self._build_logic = None
		self._related_buildings_selected_tiles = frozenset() # highlights w.r.t. related buildings
		if self.ship is not None:
			self._build_logic = ShipBuildingToolLogic(ship)
		elif build_related is not None:
			self._build_logic = BuildRelatedBuildingToolLogic(self, weakref.ref(build_related) )
		else:
			self._build_logic = SettlementBuildingToolLogic(self)

		self.load_gui()
		self.__class__.gui.show()
		self.session.ingame_gui.minimap_to_front()

		self.session.gui.on_escape = self.on_escape

		self.highlight_buildable()
		WorldObjectDeleted.subscribe(self._on_worldobject_deleted)

		SettlementInventoryUpdated.subscribe(self.update_preview)
		PlayerInventoryUpdated.subscribe(self.update_preview)