def showGood(self, show_good): self.show_good_planets = show_good if self.show_good_planets: self.user_race = store.get_object('race', {'user_id':self.selected_user_id}) self.selected_user_governers_count = len(store.get_governers(self.selected_user_id)) self.update()
def selectUser(self, user_id): hw_pos = store.get_object('hw', {'user_id': user_id}) self.selected_user_governers_count = 0 if not hw_pos: print 'cannot get hw of %s'%user_id return self.selected_user_id = user_id self.centerAt( (int(hw_pos['x']), int(hw_pos['y'])) ) self.selected_user_id = user_id try: self.user_race = store.get_object('race', {'user_id': self.selected_user_id}) self.selected_user_governers_count = len(store.get_governers(self.selected_user_id)) except: pass self.update()
def set_coord(self, coord): self.coord = coord self.sizer.DeleteWindows() dsizer = wx.BoxSizer(wx.HORIZONTAL) self.sizer.Add(dsizer) dups = {} protos = {} up = store.get_object('user_planet', {'x':coord[0], 'y':coord[1]}) if not up: return user_id = up['user_id'] # buildings if ours for building in store.get_garrison_units(coord): bc = building['proto_id'] p = store.get_object('proto', {'proto_id':bc, 'user_id':user_id}) if not p: print 'proto not found for %s'%(building,) continue if int(p['is_building']) != 1: continue if 'max_count' in p and int(p['max_count'])!=1: dups.setdefault(bc, []).append(building) continue img = image.getBcImage(bc, 20) if not img: wnd = wx.StaticText(self, -1, 'Unknown building %s'%(bc,)) else: wnd = wx.StaticBitmap(self, wx.ID_ANY) wnd.SetBitmap(img) dsizer.Add(wnd) for bc, builds in dups.iteritems(): img = image.getBcImage(bc, 20) wsizer = wx.BoxSizer(wx.HORIZONTAL) self.sizer.Add(wsizer) wnd = wx.StaticBitmap(self, wx.ID_ANY) if img: wnd.SetBitmap(img) wsizer.Add(wnd) txt = wx.StaticText(self, -1, 'x %s'%(len(builds),)) build_more = wx.Button(self, label="+", size=(20,20)) build_more.proto_id = bc wsizer.Add(txt) wsizer.Add(build_more) build_more.Bind(wx.EVT_LEFT_DOWN, self.on_build) has_bq = None prev_units = [] for unit in store.get_building_queue(coord): if not has_bq: self.sizer.Add(wx.StaticText(self, label='build queue:')) has_bq = True if unit['done'] > 0: self.draw_build_stack(prev_units) prev_units = [] proto = store.get_object('proto', {'proto_id':unit['proto_id'], 'user_id':user_id}) img = image.getBcImage(unit['proto_id'], 20) if not img: img = image.getCarapaceImage(proto['carapace'], proto['color'], 20) wsizer = wx.BoxSizer(wx.HORIZONTAL) self.sizer.Add(wsizer) wnd = wx.StaticBitmap(self, wx.ID_ANY) if img: wnd.SetBitmap(img) wsizer.Add(wnd) name = proto['name'] if not name: name = get_unit_name(int(proto['carapace'])) race = store.get_object('race', {'user_id':user_id}) build_modifier = 0 #if proto['is_war'] == 1: # build_modifier = race['modifier_build_war'] #else: # build_modifier = race['modifier_build_peace'] total_speed = proto['build_speed'] - proto['build_speed']*build_modifier/100.0 # if we're lucky? if proto['proto_id'] == 13: govs_count = len(store.get_governers(user_id)) total_speed = pow(1.5, govs_count) * proto['build_speed'] percent_done = int(unit['done']*100/total_speed) txt = wx.StaticText(self, -1, ' %d%% %s'%(percent_done, name)) wsizer.Add(txt) if 'max_count' in proto and int(proto['max_count'])!=1: build_more = wx.Button(self, label="+", size=(20,20)) build_more.proto_id = proto['proto_id'] build_more.Bind(wx.EVT_LEFT_DOWN, self.on_build) wsizer.Add(build_more) continue if prev_units == [] or unit['proto_id'] == prev_units[0]['proto_id']: prev_units.append(unit) continue # draw prev_units self.draw_build_stack(prev_units) prev_units = [unit] self.draw_build_stack(prev_units) self.sizer.Layout()