def update_account_info(self, a: XNAccountInfo): # a = self.world.get_account_info() self.ui.gb_account.setTitle(self.tr('Player: {0} (id={1})').format(a.login, a.id)) self.set_as_item(0, 1, self.tr('{0} rank {1}').format( number_format(a.scores.buildings), a.scores.buildings_rank)) self.set_as_item(1, 1, self.tr('{0} rank {1}').format( number_format(a.scores.fleet), a.scores.fleet_rank)) self.set_as_item(2, 1, self.tr('{0} rank {1}').format( number_format(a.scores.defense), a.scores.defense_rank)) self.set_as_item(3, 1, self.tr('{0} rank {1}').format( number_format(a.scores.science), a.scores.science_rank)) # total: 15156 rank 195 (+2) rank_delta_str = '+' + str(a.scores.rank_delta) # explicit "+" sign if a.scores.rank_delta < 0: rank_delta_str = str(a.scores.rank_delta) self.set_as_item(4, 1, self.tr('{0} rank {1} ({2})').format( number_format(a.scores.total), a.scores.rank, rank_delta_str)) self.set_as_item(5, 1, self.tr('{0} lv ({1}/{2} exp)').format( a.scores.industry_level, a.scores.industry_exp[0], a.scores.industry_exp[1])) self.set_as_item(6, 1, self.tr('{0} lv ({1}/{2} exp)').format( a.scores.military_level, a.scores.military_exp[0], a.scores.military_exp[1])) self.set_as_item(7, 1, self.tr('{0} W / {1} L').format(a.scores.wins, a.scores.losses)) self.set_as_item(8, 1, a.scores.credits) self.set_as_item(10, 1, a.alliance_name) # fraction fr = fraction_from_name(a.scores.fraction) if fr: icon = QIcon(':/i/{0}'.format(fr.ico_name)) twi = QTableWidgetItem(icon, str(a.scores.fraction)) self.ui.tw_accStats.setItem(9, 1, twi)
def update_account_info(self, a: XNAccountInfo): # a = self.world.get_account_info() self.ui.gb_account.setTitle( self.tr('Player: {0} (id={1})').format(a.login, a.id)) self.set_as_item( 0, 1, self.tr('{0} rank {1}').format(number_format(a.scores.buildings), a.scores.buildings_rank)) self.set_as_item( 1, 1, self.tr('{0} rank {1}').format(number_format(a.scores.fleet), a.scores.fleet_rank)) self.set_as_item( 2, 1, self.tr('{0} rank {1}').format(number_format(a.scores.defense), a.scores.defense_rank)) self.set_as_item( 3, 1, self.tr('{0} rank {1}').format(number_format(a.scores.science), a.scores.science_rank)) # total: 15156 rank 195 (+2) rank_delta_str = '+' + str(a.scores.rank_delta) # explicit "+" sign if a.scores.rank_delta < 0: rank_delta_str = str(a.scores.rank_delta) self.set_as_item( 4, 1, self.tr('{0} rank {1} ({2})').format(number_format(a.scores.total), a.scores.rank, rank_delta_str)) self.set_as_item( 5, 1, self.tr('{0} lv ({1}/{2} exp)').format(a.scores.industry_level, a.scores.industry_exp[0], a.scores.industry_exp[1])) self.set_as_item( 6, 1, self.tr('{0} lv ({1}/{2} exp)').format(a.scores.military_level, a.scores.military_exp[0], a.scores.military_exp[1])) self.set_as_item( 7, 1, self.tr('{0} W / {1} L').format(a.scores.wins, a.scores.losses)) self.set_as_item(8, 1, a.scores.credits) self.set_as_item(10, 1, a.alliance_name) # fraction fr = fraction_from_name(a.scores.fraction) if fr: icon = QIcon(':/i/{0}'.format(fr.ico_name)) twi = QTableWidgetItem(icon, str(a.scores.fraction)) self.ui.tw_accStats.setItem(9, 1, twi)
def update_resources(self): # update planet resources color_enough = '#008800' color_exceed = '#AA0000' # cur metal color = color_enough if self._planet.res_current.met > self._planet.res_max_silos.met: color = color_exceed self._lbl_cur_met.setText('<font color="{0}">{1}</font>'.format( color, number_format(int(self._planet.res_current.met)))) # cur crystal color = color_enough if self._planet.res_current.cry > self._planet.res_max_silos.cry: color = color_exceed self._lbl_cur_cry.setText('<font color="{0}">{1}</font>'.format( color, number_format(int(self._planet.res_current.cry)))) # cur deit color = color_enough if self._planet.res_current.deit > self._planet.res_max_silos.deit: color = color_exceed self._lbl_cur_deit.setText('<font color="{0}">{1}</font>'.format( color, number_format(int(self._planet.res_current.deit)))) # update res max self._lbl_max_met.setText( number_format(int(self._planet.res_max_silos.met))) self._lbl_max_cry.setText( number_format(int(self._planet.res_max_silos.cry))) self._lbl_max_deit.setText( number_format(int(self._planet.res_max_silos.deit))) # energy self._lbl_energy_stats.setText('{0} / {1} ({2}%)'.format( self._planet.energy.energy_left, self._planet.energy.energy_total, self._planet.energy.charge_percent))
def update_resources(self): # update planet resources color_enough = '#008800' color_exceed = '#AA0000' # cur metal color = color_enough if self._planet.res_current.met > self._planet.res_max_silos.met: color = color_exceed self._lbl_cur_met.setText('<font color="{0}">{1}</font>'.format( color, number_format(int(self._planet.res_current.met)))) # cur crystal color = color_enough if self._planet.res_current.cry > self._planet.res_max_silos.cry: color = color_exceed self._lbl_cur_cry.setText('<font color="{0}">{1}</font>'.format( color, number_format(int(self._planet.res_current.cry)))) # cur deit color = color_enough if self._planet.res_current.deit > self._planet.res_max_silos.deit: color = color_exceed self._lbl_cur_deit.setText('<font color="{0}">{1}</font>'.format( color, number_format(int(self._planet.res_current.deit)))) # update res max self._lbl_max_met.setText(number_format( int(self._planet.res_max_silos.met))) self._lbl_max_cry.setText(number_format( int(self._planet.res_max_silos.cry))) self._lbl_max_deit.setText(number_format( int(self._planet.res_max_silos.deit))) # energy self._lbl_energy_stats.setText('{0} / {1} ({2}%)'.format( self._planet.energy.energy_left, self._planet.energy.energy_total, self._planet.energy.charge_percent))
def set_building_item(self, bitem: XNPlanetBuildingItem, res_cur: XNResourceBundle, energy_cur: int): self._bitem = bitem # load pixmap pix_fn = 'ui/i/building_{0}.gif'.format(bitem.gid) if not self._pix.load(pix_fn): logger.warn('Failed to load pixmap from: [{0}]'.format(pix_fn)) else: self._lbl_pix.setPixmap(self._pix.scaled(80, 80)) # self._lbl_pix.setPixmap(self._pix) # name, level self._lbl_name.setText(bitem.name) if self._bitem.is_shipyard_item: # shipyard items use quantity instead of level self._lbl_lvl.setText(str(bitem.quantity)) else: self._lbl_lvl.setText(str(bitem.level)) # time if bitem.seconds_total != -1: self._lbl_timestr.setText(time_seconds_to_str(bitem.seconds_total)) else: self._lbl_timestr.setText('-') # colors color_enough = '#008800' color_notenough = '#AA0000' enough_met = True enough_cry = True enough_deit = True enough_energy = True # price met if bitem.cost_met > 0: setstr = number_format(bitem.cost_met) color = color_enough if res_cur.met < bitem.cost_met: setstr += ' (-{0})'.format( number_format(int(bitem.cost_met - res_cur.met))) color = color_notenough enough_met = False self._lbl_price_met.setText('<font color="{0}">{1}</font>'.format( color, setstr)) self._lbl_price_met_ico.show() self._lbl_price_met.show() else: self._lbl_price_met_ico.hide() self._lbl_price_met.hide() # price cry if bitem.cost_cry > 0: setstr = number_format(bitem.cost_cry) color = color_enough if res_cur.cry < bitem.cost_cry: setstr += ' (-{0})'.format( number_format(int(bitem.cost_cry - res_cur.cry))) color = color_notenough enough_cry = False self._lbl_price_cry.setText('<font color="{0}">{1}</font>'.format( color, setstr)) self._lbl_price_cry_ico.show() self._lbl_price_cry.show() else: self._lbl_price_cry_ico.hide() self._lbl_price_cry.hide() # price deit if bitem.cost_deit > 0: setstr = number_format(bitem.cost_deit) color = color_enough if res_cur.deit < bitem.cost_deit: setstr += ' (-{0})'.format( number_format(int(bitem.cost_deit - res_cur.deit))) color = color_notenough enough_deit = False self._lbl_price_deit.setText('<font color="{0}">{1}</font>'.format( color, setstr)) self._lbl_price_deit_ico.show() self._lbl_price_deit.show() else: self._lbl_price_deit_ico.hide() self._lbl_price_deit.hide() # price energy if bitem.cost_energy > 0: setstr = number_format(bitem.cost_energy) color = color_enough if energy_cur < bitem.cost_energy: setstr += ' (-{0})'.format( number_format(int(bitem.cost_energy - energy_cur))) color = color_notenough enough_energy = False self._lbl_price_energy.setText( '<font color="{0}">{1}</font>'.format(color, setstr)) self._lbl_price_energy_ico.show() self._lbl_price_energy.show() else: self._lbl_price_energy_ico.hide() self._lbl_price_energy.hide() # # enable or disable buttons if enough_met and enough_cry and enough_deit and \ enough_energy and (self._bitem.seconds_total > 0): self._btn_upgrade.setEnabled(True) else: self._btn_upgrade.setEnabled(False) # logger.debug('Disabling build {0}: {1} {2} {3} {4} {5}'.format( # self._bitem.name, enough_met, enough_cry, enough_deit, # enough_energy, self._bitem.seconds_total)) if self._bitem.is_building_item: if self._bitem.level > 0: self._btn_downgrade.setEnabled(True) else: # nothing to downgrade self._btn_downgrade.setEnabled(False) # set button text if self._bitem.is_shipyard_item: self._btn_upgrade.setText(self.tr('Build')) # calculate maximum available to build counts = [0, 0, 0, 0] # check metal cost if self._bitem.cost_met > 0: counts[0] = int(res_cur.met // self._bitem.cost_met) # check crystal cost if self._bitem.cost_cry > 0: counts[1] = int(res_cur.cry // self._bitem.cost_cry) # check deit cost if self._bitem.cost_deit > 0: counts[2] = int(res_cur.deit // self._bitem.cost_deit) # check energy if self._bitem.cost_energy > 0: counts[3] = int(energy_cur // self._bitem.cost_energy) maxb = 0 for cnt in counts: # find first count, which is > 0 if cnt > 0: maxb = cnt break for cnt in counts: # find minimum count, which is > 0 if cnt > 0: if cnt < maxb: maxb = cnt # set tip self._lineedit_quantity.setPlaceholderText(str(maxb)) elif self._bitem.is_research_item or self._bitem.is_researchfleet_item: self._btn_upgrade.setText(self.tr('Research')) # show/hide additional buttons if self._bitem.is_building_item: self._btn_upgrade.show() self._btn_downgrade.show() self._lineedit_quantity.hide() elif self._bitem.is_shipyard_item: self._btn_upgrade.show() self._btn_downgrade.hide() self._lineedit_quantity.show() elif self._bitem.is_research_item or self._bitem.is_researchfleet_item: self._btn_upgrade.show() self._btn_downgrade.hide() self._lineedit_quantity.hide()
def set_building_item(self, bitem: XNPlanetBuildingItem, res_cur: XNResourceBundle, energy_cur: int): self._bitem = bitem # load pixmap pix_fn = 'ui/i/building_{0}.gif'.format(bitem.gid) if not self._pix.load(pix_fn): logger.warn('Failed to load pixmap from: [{0}]'.format(pix_fn)) else: self._lbl_pix.setPixmap(self._pix.scaled(80, 80)) # self._lbl_pix.setPixmap(self._pix) # name, level self._lbl_name.setText(bitem.name) if self._bitem.is_shipyard_item: # shipyard items use quantity instead of level self._lbl_lvl.setText(str(bitem.quantity)) else: self._lbl_lvl.setText(str(bitem.level)) # time if bitem.seconds_total != -1: self._lbl_timestr.setText(time_seconds_to_str(bitem.seconds_total)) else: self._lbl_timestr.setText('-') # colors color_enough = '#008800' color_notenough = '#AA0000' enough_met = True enough_cry = True enough_deit = True enough_energy = True # price met if bitem.cost_met > 0: setstr = number_format(bitem.cost_met) color = color_enough if res_cur.met < bitem.cost_met: setstr += ' (-{0})'.format(number_format( int(bitem.cost_met - res_cur.met))) color = color_notenough enough_met = False self._lbl_price_met.setText('<font color="{0}">{1}</font>'.format( color, setstr)) self._lbl_price_met_ico.show() self._lbl_price_met.show() else: self._lbl_price_met_ico.hide() self._lbl_price_met.hide() # price cry if bitem.cost_cry > 0: setstr = number_format(bitem.cost_cry) color = color_enough if res_cur.cry < bitem.cost_cry: setstr += ' (-{0})'.format(number_format( int(bitem.cost_cry - res_cur.cry))) color = color_notenough enough_cry = False self._lbl_price_cry.setText('<font color="{0}">{1}</font>'.format( color, setstr)) self._lbl_price_cry_ico.show() self._lbl_price_cry.show() else: self._lbl_price_cry_ico.hide() self._lbl_price_cry.hide() # price deit if bitem.cost_deit > 0: setstr = number_format(bitem.cost_deit) color = color_enough if res_cur.deit < bitem.cost_deit: setstr += ' (-{0})'.format(number_format( int(bitem.cost_deit - res_cur.deit))) color = color_notenough enough_deit = False self._lbl_price_deit.setText('<font color="{0}">{1}</font>'.format( color, setstr)) self._lbl_price_deit_ico.show() self._lbl_price_deit.show() else: self._lbl_price_deit_ico.hide() self._lbl_price_deit.hide() # price energy if bitem.cost_energy > 0: setstr = number_format(bitem.cost_energy) color = color_enough if energy_cur < bitem.cost_energy: setstr += ' (-{0})'.format(number_format( int(bitem.cost_energy - energy_cur))) color = color_notenough enough_energy = False self._lbl_price_energy.setText( '<font color="{0}">{1}</font>'.format(color, setstr)) self._lbl_price_energy_ico.show() self._lbl_price_energy.show() else: self._lbl_price_energy_ico.hide() self._lbl_price_energy.hide() # # enable or disable buttons if enough_met and enough_cry and enough_deit and \ enough_energy and (self._bitem.seconds_total > 0): self._btn_upgrade.setEnabled(True) else: self._btn_upgrade.setEnabled(False) # logger.debug('Disabling build {0}: {1} {2} {3} {4} {5}'.format( # self._bitem.name, enough_met, enough_cry, enough_deit, # enough_energy, self._bitem.seconds_total)) if self._bitem.is_building_item: if self._bitem.level > 0: self._btn_downgrade.setEnabled(True) else: # nothing to downgrade self._btn_downgrade.setEnabled(False) # set button text if self._bitem.is_shipyard_item: self._btn_upgrade.setText(self.tr('Build')) # calculate maximum available to build counts = [0, 0, 0, 0] # check metal cost if self._bitem.cost_met > 0: counts[0] = int(res_cur.met // self._bitem.cost_met) # check crystal cost if self._bitem.cost_cry > 0: counts[1] = int(res_cur.cry // self._bitem.cost_cry) # check deit cost if self._bitem.cost_deit > 0: counts[2] = int(res_cur.deit // self._bitem.cost_deit) # check energy if self._bitem.cost_energy > 0: counts[3] = int(energy_cur // self._bitem.cost_energy) maxb = 0 for cnt in counts: # find first count, which is > 0 if cnt > 0: maxb = cnt break for cnt in counts: # find minimum count, which is > 0 if cnt > 0: if cnt < maxb: maxb = cnt # set tip self._lineedit_quantity.setPlaceholderText(str(maxb)) elif self._bitem.is_research_item or self._bitem.is_researchfleet_item: self._btn_upgrade.setText(self.tr('Research')) # show/hide additional buttons if self._bitem.is_building_item: self._btn_upgrade.show() self._btn_downgrade.show() self._lineedit_quantity.hide() elif self._bitem.is_shipyard_item: self._btn_upgrade.show() self._btn_downgrade.hide() self._lineedit_quantity.show() elif self._bitem.is_research_item or self._bitem.is_researchfleet_item: self._btn_upgrade.show() self._btn_downgrade.hide() self._lineedit_quantity.hide()