Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
 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))
Exemplo n.º 4
0
 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))
Exemplo n.º 5
0
 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()
Exemplo n.º 6
0
 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()