fix icon mapping in campaign ranking
This commit is contained in:
parent
0bfe27e0d3
commit
d766befd31
5 changed files with 113 additions and 58 deletions
|
|
@ -50,13 +50,25 @@ class IconName(str, Enum):
|
|||
NP3RD = "np3rd"
|
||||
TIEBREAK_TOKEN = auto()
|
||||
VP1STDRAW = auto()
|
||||
VP1STTIEBREAK = auto()
|
||||
VP1STBREAK = auto()
|
||||
VP1STTIEDRAW = auto()
|
||||
VP2NDDRAW = auto()
|
||||
VP2NDTIEBREAK = auto()
|
||||
VP2NDBREAK = auto()
|
||||
VP2NDTIEDRAW = auto()
|
||||
VP3RDDRAW = auto()
|
||||
VP3RDTIEBREAK = auto()
|
||||
VP3RDBREAK = auto()
|
||||
VP3RDTIEDRAW = auto()
|
||||
VPNTHDRAW = auto()
|
||||
VPNTHTIEBREAK = auto()
|
||||
VPNTHBREAK = auto()
|
||||
VPNTHTIEDRAW = auto()
|
||||
|
||||
|
||||
RANK_TO_ICON = {
|
||||
1: IconName.VP1ST,
|
||||
2: IconName.VP2ND,
|
||||
3: IconName.VP3RD,
|
||||
4: IconName.VPNTH,
|
||||
}
|
||||
|
||||
|
||||
class Icons:
|
||||
|
|
@ -119,41 +131,65 @@ class Icons:
|
|||
cls.get_pixmap(IconName.VP1ST),
|
||||
cls.get_pixmap(IconName.DRAW),
|
||||
)
|
||||
elif name == IconName.VP1STTIEBREAK:
|
||||
elif name == IconName.VP1STBREAK:
|
||||
pix = cls._compose(
|
||||
cls.get_pixmap(IconName.VP1ST),
|
||||
cls.get_pixmap(IconName.TOKEN),
|
||||
)
|
||||
elif name == IconName.VP1STTIEDRAW:
|
||||
pix = cls._compose(
|
||||
cls.get_pixmap(IconName.VP1ST),
|
||||
cls.get_pixmap(IconName.DRAW),
|
||||
cls.get_pixmap(IconName.TOKEN),
|
||||
)
|
||||
elif name == IconName.VP2NDDRAW:
|
||||
pix = cls._compose(
|
||||
cls.get_pixmap(IconName.VP2ND),
|
||||
cls.get_pixmap(IconName.DRAW),
|
||||
)
|
||||
elif name == IconName.VP2NDTIEBREAK:
|
||||
elif name == IconName.VP2NDBREAK:
|
||||
pix = cls._compose(
|
||||
cls.get_pixmap(IconName.VP2ND),
|
||||
cls.get_pixmap(IconName.TOKEN),
|
||||
)
|
||||
elif name == IconName.VP2NDTIEDRAW:
|
||||
pix = cls._compose(
|
||||
cls.get_pixmap(IconName.VP2ND),
|
||||
cls.get_pixmap(IconName.DRAW),
|
||||
cls.get_pixmap(IconName.TOKEN),
|
||||
)
|
||||
elif name == IconName.VP3RDDRAW:
|
||||
pix = cls._compose(
|
||||
cls.get_pixmap(IconName.VP3RD),
|
||||
cls.get_pixmap(IconName.DRAW),
|
||||
)
|
||||
elif name == IconName.VP3RDTIEBREAK:
|
||||
elif name == IconName.VP3RDBREAK:
|
||||
pix = cls._compose(
|
||||
cls.get_pixmap(IconName.VP3RD),
|
||||
cls.get_pixmap(IconName.TOKEN),
|
||||
)
|
||||
elif name == IconName.VP3RDTIEDRAW:
|
||||
pix = cls._compose(
|
||||
cls.get_pixmap(IconName.VP3RD),
|
||||
cls.get_pixmap(IconName.DRAW),
|
||||
cls.get_pixmap(IconName.TOKEN),
|
||||
)
|
||||
elif name == IconName.VPNTHDRAW:
|
||||
pix = cls._compose(
|
||||
cls.get_pixmap(IconName.VPNTH),
|
||||
cls.get_pixmap(IconName.DRAW),
|
||||
)
|
||||
elif name == IconName.VPNTHTIEBREAK:
|
||||
elif name == IconName.VPNTHBREAK:
|
||||
pix = cls._compose(
|
||||
cls.get_pixmap(IconName.VPNTH),
|
||||
cls.get_pixmap(IconName.TOKEN),
|
||||
)
|
||||
elif name == IconName.VPNTHTIEDRAW:
|
||||
pix = cls._compose(
|
||||
cls.get_pixmap(IconName.VPNTH),
|
||||
cls.get_pixmap(IconName.DRAW),
|
||||
cls.get_pixmap(IconName.TOKEN),
|
||||
)
|
||||
else:
|
||||
path = RESOURCES_DIR / cls._paths[name]
|
||||
pix = QPixmap(path.as_posix())
|
||||
|
|
@ -161,14 +197,20 @@ class Icons:
|
|||
return pix
|
||||
|
||||
@staticmethod
|
||||
def _compose(left: QPixmap, right: QPixmap) -> QPixmap:
|
||||
w = left.width() + right.width()
|
||||
h = max(left.height(), right.height())
|
||||
def _compose(*pixmaps: QPixmap) -> QPixmap:
|
||||
if not pixmaps:
|
||||
return QPixmap()
|
||||
if len(pixmaps) == 1:
|
||||
return pixmaps[0]
|
||||
w = sum(p.width() for p in pixmaps)
|
||||
h = max(p.height() for p in pixmaps)
|
||||
result = QPixmap(w, h)
|
||||
result.fill(Qt.GlobalColor.transparent)
|
||||
painter = QPainter(result)
|
||||
painter.drawPixmap(0, (h - left.height()) // 2, left)
|
||||
painter.drawPixmap(left.width(), (h - right.height()) // 2, right)
|
||||
x = 0
|
||||
for p in pixmaps:
|
||||
painter.drawPixmap(x, (h - p.height()) // 2, p)
|
||||
x += p.width()
|
||||
painter.end()
|
||||
return result
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue