Beispiel #1
0
	def setCurrentMessage(self, message_object):
		"""Sets message text inside message window"""
		message = message_object.CurrentOrder
		text = "Subject: " + message.subject + "\n"
		text += "\n"
		text += self.format(message.body).output
		helpers.setWidgetText("Messages/Message", text)
	def recreate(self, cache):
		"""Update locations of objects

		Assumes stars and planet locations do not change.

		"""
		print "Updating starmap"
		self.objects = cache.objects
		self.starmap.clearTempLines()
		designs = self.getDesigns(cache)

		for object in cache.objects.values():
			pos = self.getScaledPosition(tp_helpers.getAbsPosition(object))
			#print "updating", object.id, object.name, object._subtype, "at", pos

			if object._subtype is FLEET:
				# Get parent system and the number of other fleets
				# FIXME: What if a fleet is destroyed
				parent = self.updateObjectIndex(object, "fleets", FLEET)
				if object.parent != 1 and self.starmap.hasObject(object.parent):
					pos = self.starmap.nodes[object.parent].position

				if self.starmap.hasObject(object.id):
					self.starmap.setFleet(object, pos, parent)
				else:
					fleet_type = (object.Ships[0][0][0][0] - 1) % designs[tp_helpers.getOwner(object)]
					self.starmap.addFleet(object, pos, parent, fleet_type)

		if hasattr(self.objects[0], "turn"):
			helpers.setWidgetText("TopBar/Turn", "Turn %i" % self.objects[0].turn)

		self.starmap.updateMapExtents()
		self.starmap.updateBoundingBox()
    def update(self, evt):
        self.starmap.update()
        for i in range(settings.zoom_speed):
            self.updateCamera()

        if self.mouseover and self.mouseover_timer.getMilliseconds(
        ) > self.mouseover_timeout:
            self.information_overlay.show(self.mouseover, self.getCache())
            self.information_overlay.update(*self.mouse_position)

        if self.remaining_time > 0 and self.remaining_time_timer.getMilliseconds(
        ) >= 1000:
            self.remaining_time -= 1
            minutes = int(self.remaining_time / 60)
            seconds = int(self.remaining_time % 60)
            helpers.setWidgetText("Windows/EOT",
                                  "EOT: %i:%02i" % (minutes, seconds))
            self.remaining_time_timer.reset()
            if self.remaining_time < 10:
                helpers.setWindowProperty("Windows/EOT", "Alpha", 1)
            else:
                helpers.setWindowProperty("Windows/EOT", "Alpha", 0.5)

        #if self.parent.renderWindow.lastFPS < self.low_fps_threshold:
        #self.starmap.setIconView(True)
        return True
	def create(self, cache):
		"""Creates list of objects from cache"""
		print "creating the starmap"
		self.objects = cache.objects

		#self.starmap.createBackground()
		designs = self.getDesigns(cache)
		self.map_scale = self.calculateScale(self.objects.values())

		pan_speed = 100000000 / self.map_scale * settings.distance_units
		if pan_speed < self.pan_speed:
			pan_speed = self.pan_speed
		else:
			self.pan_speed = pan_speed
		self.scroll_speed = pan_speed / 5

		self.distance_units = settings.distance_units

		for object in self.objects.values():
			pos = self.getScaledPosition(tp_helpers.getAbsPosition(object))

			#print "creating", object.id, object.name, "\ttype:", object._subtype, "at", pos

			#if hasattr(object, "parent"):
				#print "parent of %s is %i" % (object.name, object.parent)

			if object._subtype is STAR:
				node = self.starmap.addStar(object, pos)

			if object._subtype is PLANET:
				# Get parent system and the number of other planets
				parent = self.updateObjectIndex(object, "planets", PLANET)
				if object.parent != 1 and self.starmap.hasObject(object.parent):
					pos = self.starmap.nodes[object.parent].position
				node = self.starmap.addPlanet(object, pos, parent)

			if object._subtype is FLEET:
				# Get parent system and the number of other fleets
				parent = self.updateObjectIndex(object, "fleets", FLEET)
				# Assign fleet type according to how many designs player has
				fleet_type = (object.Ships[0][0][0][1] - 1) % designs[tp_helpers.getOwner(object)]
				#print "ship_design: %i designs: %i fleet type: %i" % (object.Ships[0][0][0][0], designs[tp_helpers.getOwner(object), fleet_type)
				if object.parent != 1 and self.starmap.hasObject(object.parent):
					pos = self.starmap.nodes[object.parent].position
				node = self.starmap.addFleet(object, pos, parent, fleet_type, self.SELECTABLE)

			if object._subtype is WORMHOLE:
				end_pos = self.getScaledPosition(object.end)
				self.starmap.addWormHole(object, pos, end_pos)

		self.system_window.create(cache)
		self.message_window.create(cache)
		self.created = True
		if hasattr(self.objects[0], "turn"):
			helpers.setWidgetText("TopBar/Turn", "Turn %i" % self.objects[0].turn)
		self.starmap.updateMapExtents()
		self.starmap.autofit()
		self.starmap.updateBoundingBox()
		self.design_window.populateDesignsWindow(cache.designs)
Beispiel #5
0
	def selectDesign(self, evt):
		"""Select a design from the design list"""
		wm = cegui.WindowManager.getSingleton()
		designlistbox = wm.getWindow("Designs/DesignList")
		selected = designlistbox.getFirstSelectedItem()
		cache = self.parent.getCache()

		if selected:
			current_design = wm.getWindow("Designs/CurrentDesign")
			current_design.resetList()
			self.current_design_items = []

			design_id = self.design_list_items[selected]
			design = cache.designs[design_id]
			owner = cache.players[design.owner].name
			helpers.setWidgetText("Designs", "Ship Designs - %s's %s" % (owner, design.name))

			components = cache.components
			for component in design.components:
				id = component[0]
				total = component[1]
				component_info = components[id]
				index = current_design.addRow()

				# The number of components
				item = cegui.ListboxTextItem(str(total))
				item.setAutoDeleted(False)
				item.setSelectionBrushImage("SleekSpace", "MultiListSelectionBrush")
				current_design.setItem(item, 0, index)
				self.current_design_items.append(item)

				# The name of the component
				item = cegui.ListboxTextItem(component_info.name)
				item.setAutoDeleted(False)
				item.setSelectionBrushImage("SleekSpace", "MultiListSelectionBrush")
				current_design.setItem(item, 1, index)
				self.current_design_items.append(item)

			information_string = ""
			properties = cache.properties
			for property in design.properties:
				id = property[0]
				value = property[1]
				new_line = properties[id].display_name
				# TODO: Align values to the right-hand side
				#new_line = new_line.ljust(100 - len(new_line))
				new_line += " - "
				new_line += "%s\n" % value
				information_string += new_line
			helpers.setWidgetText("Designs/Information", information_string)
	def onNetworkTimeRemaining(self, evt):
		"""Called whenever a NetworkTimeRemaining packet is received"""
		print "onNetworkTimeRemaining", evt.remaining
		self.remaining_time = evt.remaining
		minutes = int(self.remaining_time / 60)
		seconds = int(self.remaining_time % 60)
		helpers.setWidgetText("Windows/EOT", "EOT: %i:%02i" % (minutes, seconds))
		self.remaining_time_timer.reset()
		if self.remaining_time == 0:
			print "End of turn"
			helpers.setWindowProperty("Windows/EndTurnButton", "Alpha", 1)
			self.timeout = True
			network = self.parent.application.network
			network.Call(network.CacheUpdate)
 def onNetworkTimeRemaining(self, evt):
     """Called whenever a NetworkTimeRemaining packet is received"""
     print "onNetworkTimeRemaining", evt.remaining
     self.remaining_time = evt.remaining
     minutes = int(self.remaining_time / 60)
     seconds = int(self.remaining_time % 60)
     helpers.setWidgetText("Windows/EOT",
                           "EOT: %i:%02i" % (minutes, seconds))
     self.remaining_time_timer.reset()
     if self.remaining_time == 0:
         print "End of turn"
         helpers.setWindowProperty("Windows/EndTurnButton", "Alpha", 1)
         self.timeout = True
         network = self.parent.application.network
         network.Call(network.CacheUpdate)
Beispiel #8
0
	def deleteMessage(self, evt):
		"""Deletes the current message permanently and displays the next message, if any."""
		cache = self.parent.getCache()
		network = self.parent.parent.application.network
		current_message = self.messages[self.message_index]
		change_node = cache.messages[0][current_message.id]
		evt = cache.apply("messages", "remove", 0, change_node, None)
		network.Call(network.OnCacheDirty, evt)
		self.messages.remove(current_message)
		if len(self.messages) > 0:
			self.nextMessage(evt)
		else:
			helpers.setWidgetText("Messages/Message", "")
		self.createMessageList()
		self.updateTitlebar()
Beispiel #9
0
	def onSound(self, evt):
		self.sound_items = []
		dev_win = helpers.setWidgetText("Sound/Driver", settings.current_sound_device)
		for i in range(len(settings.sound_devices)):
			item = cegui.ListboxTextItem(settings.sound_devices[i])
			item.setAutoDeleted(False)
			self.sound_items.append(item)
			dev_win.addItem(item)

		wm = cegui.WindowManager.getSingleton()
		wm.getWindow("Sound/Sound").setSelected(settings.sound_effects)
		wm.getWindow("Sound/Music").setSelected(settings.music)
		helpers.toggleWindow("Sound", True).activate()
	def update(self, evt):
		self.starmap.update()
		for i in range(settings.zoom_speed):
			self.updateCamera()

		if self.mouseover and self.mouseover_timer.getMilliseconds() > self.mouseover_timeout:
			self.information_overlay.show(self.mouseover, self.getCache())
			self.information_overlay.update(*self.mouse_position)

		if self.remaining_time > 0 and self.remaining_time_timer.getMilliseconds() >= 1000:
			self.remaining_time -= 1
			minutes = int(self.remaining_time / 60)
			seconds = int(self.remaining_time % 60)
			helpers.setWidgetText("Windows/EOT", "EOT: %i:%02i" % (minutes, seconds))
			self.remaining_time_timer.reset()
			if self.remaining_time < 10:
				helpers.setWindowProperty("Windows/EOT", "Alpha", 1)
			else:
				helpers.setWindowProperty("Windows/EOT", "Alpha", 0.5)

		#if self.parent.renderWindow.lastFPS < self.low_fps_threshold:
			#self.starmap.setIconView(True)
		return True
Beispiel #11
0
	def setText(self, object):
		"""Sets text inside information window"""
		cache = self.parent.getCache()
		text = ""
		text += "Name: %s (%s)\n" % (str(object.name), str(object.id))
		text += "Position: %s\n" % str(tp_helpers.getAbsPosition(object))
		text += "Velocity: %s\n" % str(tp_helpers.getVelocity(object))
		text += "Size: %s\n" % str(object.size)
		if hasattr(object, "Ownership"):
			owner = tp_helpers.getOwner(object)
			if owner != -1:
				owner_name = cache.players[owner].name
				race_name = cache.players[owner].race_name
				text += "Owner: %s(%s)\n" % (owner_name, race_name)
			else:
				text += "Neutral\n"
		if hasattr(object, "Ships"):
			text += "-- Ships --\n"
			ships = []
			total = 0
			for group in object.Ships[0]:
				group = group[0]
				design_name = cache.designs[group[1]].name
				text += "    %s: %i\n" % (design_name, group[2])
		if hasattr(object, "Resources"):
			text += "-- Resources --\n"
			resources = []
			print object.Resources
			for resource in object.Resources:
				if len(resource[0]) > 0:
					resource = resource[0][0]
					info = cache.resources[resource[0]]
					resource_string = "    %s: %s available, %s minable, %s inaccessable" % \
						(info.name_plural, resource[1], resource[2], resource[3])
					text += resource_string
		helpers.setWidgetText("Information/Text", text)
    def recreate(self, cache):
        """Update locations of objects

		Assumes stars and planet locations do not change.

		"""
        print "Updating starmap"
        self.objects = cache.objects
        self.starmap.clearTempLines()
        designs = self.getDesigns(cache)

        for object in cache.objects.values():
            pos = self.getScaledPosition(tp_helpers.getAbsPosition(object))
            #print "updating", object.id, object.name, object._subtype, "at", pos

            if object._subtype is FLEET:
                # Get parent system and the number of other fleets
                # FIXME: What if a fleet is destroyed
                parent = self.updateObjectIndex(object, "fleets", FLEET)
                if object.parent != 1 and self.starmap.hasObject(
                        object.parent):
                    pos = self.starmap.nodes[object.parent].position

                if self.starmap.hasObject(object.id):
                    self.starmap.setFleet(object, pos, parent)
                else:
                    fleet_type = (object.Ships[0][0][0][0] -
                                  1) % designs[tp_helpers.getOwner(object)]
                    self.starmap.addFleet(object, pos, parent, fleet_type)

        if hasattr(self.objects[0], "turn"):
            helpers.setWidgetText("TopBar/Turn",
                                  "Turn %i" % self.objects[0].turn)

        self.starmap.updateMapExtents()
        self.starmap.updateBoundingBox()
    def create(self, cache):
        """Creates list of objects from cache"""
        print "creating the starmap"
        self.objects = cache.objects

        #self.starmap.createBackground()
        designs = self.getDesigns(cache)
        self.map_scale = self.calculateScale(self.objects.values())

        pan_speed = 100000000 / self.map_scale * settings.distance_units
        if pan_speed < self.pan_speed:
            pan_speed = self.pan_speed
        else:
            self.pan_speed = pan_speed
        self.scroll_speed = pan_speed / 5

        self.distance_units = settings.distance_units

        for object in self.objects.values():
            pos = self.getScaledPosition(tp_helpers.getAbsPosition(object))

            #print "creating", object.id, object.name, "\ttype:", object._subtype, "at", pos

            #if hasattr(object, "parent"):
            #print "parent of %s is %i" % (object.name, object.parent)

            if object._subtype is STAR:
                node = self.starmap.addStar(object, pos)

            if object._subtype is PLANET:
                # Get parent system and the number of other planets
                parent = self.updateObjectIndex(object, "planets", PLANET)
                if object.parent != 1 and self.starmap.hasObject(
                        object.parent):
                    pos = self.starmap.nodes[object.parent].position
                node = self.starmap.addPlanet(object, pos, parent)

            if object._subtype is FLEET:
                # Get parent system and the number of other fleets
                parent = self.updateObjectIndex(object, "fleets", FLEET)
                # Assign fleet type according to how many designs player has
                fleet_type = (object.Ships[0][0][0][1] -
                              1) % designs[tp_helpers.getOwner(object)]
                #print "ship_design: %i designs: %i fleet type: %i" % (object.Ships[0][0][0][0], designs[tp_helpers.getOwner(object), fleet_type)
                if object.parent != 1 and self.starmap.hasObject(
                        object.parent):
                    pos = self.starmap.nodes[object.parent].position
                node = self.starmap.addFleet(object, pos, parent, fleet_type,
                                             self.SELECTABLE)

            if object._subtype is WORMHOLE:
                end_pos = self.getScaledPosition(object.end)
                self.starmap.addWormHole(object, pos, end_pos)

        self.system_window.create(cache)
        self.message_window.create(cache)
        self.created = True
        if hasattr(self.objects[0], "turn"):
            helpers.setWidgetText("TopBar/Turn",
                                  "Turn %i" % self.objects[0].turn)
        self.starmap.updateMapExtents()
        self.starmap.autofit()
        self.starmap.updateBoundingBox()
        self.design_window.populateDesignsWindow(cache.designs)
 def showMessage(self, text):
     helpers.toggleWindow("Message", True).activate()
     helpers.setWidgetText("Message/Text", str(text))
Beispiel #15
0
	def clear(self):
		helpers.setWidgetText("Information/Text", "")
 def setServer(self, host):
     """Sets the initial value of the host input field"""
     helpers.setWidgetText("Login/Server", host)
	def setServer(self, host):
		"""Sets the initial value of the host input field"""
		helpers.setWidgetText("Login/Server", host)
	def showMessage(self, text):
		helpers.toggleWindow("Message", True).activate()
		helpers.setWidgetText("Message/Text", str(text))
	def setTitle(self, text):
		helpers.setWidgetText(self.name, text)
Beispiel #20
0
	def updateTitlebar(self):
		helpers.setWidgetText("Messages", "Messages (%d/%d)" % (self.message_index + 1, len(self.messages)))
Beispiel #21
0
 def setTitle(self, text):
     helpers.setWidgetText(self.name, text)
Beispiel #22
0
	def onGraphics(self, evt):
		wm = cegui.WindowManager.getSingleton()
		if wm.getWindow("Graphics").isVisible():
			return

		self.graphics_items = []
		config = ogre.ConfigFile()
		config.loadDirect("ogre.cfg")
		self.current_system = settings.render_system.getName()
		config_map = settings.render_system.getConfigOptions()
		for c in config_map:
			if c.key == "Video Mode":
				video_modes = c.value.possibleValues
			elif c.key == "Anti aliasing":
				aa = c.value.possibleValues
			elif c.key == "FSAA":
				fsaa = c.value.possibleValues

		full_screen = config.getSetting("Full Screen", self.current_system)
		if full_screen == "Yes":
			self.full_screen = True
			wm.getWindow("Graphics/Fullscreen").setSelected(True)
		else:
			self.full_screen = False
			wm.getWindow("Graphics/Fullscreen").setSelected(False)

		self.video_mode = config.getSetting("Video Mode", self.current_system)
		res_win = helpers.setWidgetText("Graphics/Resolution", self.video_mode)
		for i in range(len(video_modes)):
			item = cegui.ListboxTextItem(video_modes[i])
			item.setAutoDeleted(False)
			self.graphics_items.append(item)
			res_win.addItem(item)

		driver_win = helpers.setWidgetText("Graphics/Driver", self.current_system)
		for value in settings.renderers:
			item = cegui.ListboxTextItem(value.getName())
			item.setAutoDeleted(False)
			self.graphics_items.append(item)
			driver_win.addItem(item)

		# Anti-aliasing comes under different names for opengl and direct3d
		self.fsaa = config.getSetting("FSAA", self.current_system)
		if len(self.fsaa) > 0:
			fsaa_win = helpers.setWidgetText("Graphics/AA", self.fsaa)
			for i in range(len(fsaa)):
				item = cegui.ListboxTextItem(fsaa[i])
				item.setAutoDeleted(False)
				self.graphics_items.append(item)
				fsaa_win.addItem(item)

		self.anti_aliasing = config.getSetting("Anti aliasing", self.current_system)
		if len(self.anti_aliasing) > 0:
			aa_win = helpers.setWidgetText("Graphics/AA", self.anti_aliasing)
			for i in range(len(aa)):
				item = cegui.ListboxTextItem(aa[i])
				item.setAutoDeleted(False)
				self.graphics_items.append(item)
				aa_win.addItem(item)

		helpers.toggleWindow("Graphics", True).activate()