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)
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)
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()
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
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))
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)
def updateTitlebar(self): helpers.setWidgetText("Messages", "Messages (%d/%d)" % (self.message_index + 1, len(self.messages)))
def setTitle(self, text): helpers.setWidgetText(self.name, text)
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()