diff --git a/base/ao2xp_themes/default/theme.py b/base/ao2xp_themes/default/theme.py index 6384333..24b6ec8 100644 --- a/base/ao2xp_themes/default/theme.py +++ b/base/ao2xp_themes/default/theme.py @@ -41,10 +41,13 @@ self.iniswaprefresh.move(8, 64) self.iniswaprefresh.resize(self.iniswaprefresh.sizeHint()) self.paircheckbox.setGeometry(16, 16, 128, 24) -self.pairdropdown.setGeometry(112, 64, 192, 18) -self.pairoffset.setGeometry(114, 128, 192, 24) +self.pairdropdown.setGeometry(112, 20, 192, 18) +self.pairoffset.setGeometry(114, 48, 192, 24) self.pairoffset_l.move(self.pairoffset.x() - 88, self.pairoffset.y()+4) self.pairoffsetreset.move(self.pairoffset.x() + self.pairoffset.size().width() + 8, self.pairoffset.y()) +self.pair_order_l.move(self.pairoffset_l.x(), self.pairoffset_l.y()+32) +self.pair_order.setGeometry(self.pairoffset.x(), self.pair_order_l.y()-4, 80, self.pairoffsetreset.sizeHint().height()) + self.spacebartext.move(self.mocktext.x(), self.mocktext.y()+24) self.autocaps.move(self.spacebartext.x(), self.spacebartext.y()+24) diff --git a/base/ao2xp_themes/laptop/theme.py b/base/ao2xp_themes/laptop/theme.py index eabd1fb..89f8d62 100644 --- a/base/ao2xp_themes/laptop/theme.py +++ b/base/ao2xp_themes/laptop/theme.py @@ -47,6 +47,8 @@ self.pairdropdown.setGeometry(self.paircheckbox.x() + self.paircheckbox.size().w self.pairoffset.setGeometry(24, 64, 192, 24) self.pairoffset_l.move(self.pairoffset.x(), self.pairoffset.y()-16) self.pairoffsetreset.move(self.pairoffset.x() + self.pairoffset.size().width() + 8, self.pairoffset.y()) +self.pair_order.setGeometry(self.pairoffsetreset.x() + self.pairoffsetreset.size().width() + 32, self.pairoffsetreset.y(), 80, self.pairoffsetreset.sizeHint().height()) +self.pair_order_l.move(self.pair_order.x(), self.pairoffset_l.y()) self.spacebartext.move(self.mocktext.x(), self.mocktext.y()+24) self.autocaps.move(self.spacebartext.x(), self.spacebartext.y()+24) diff --git a/gameview.py b/gameview.py index 590cc94..08b6a5c 100644 --- a/gameview.py +++ b/gameview.py @@ -737,14 +737,16 @@ class gui(QtGui.QWidget): self.paircheckbox = QtGui.QCheckBox(self.gametab_pair) self.paircheckbox.setChecked(False) self.pairdropdown = QtGui.QComboBox(self.gametab_pair) - self.pairdropdown_l = QtGui.QLabel("Pair with...", self.gametab_pair) - self.pairdropdown_l.move(self.pairdropdown.x() - 64, self.pairdropdown.y()+2) self.pairoffset = QtGui.QSlider(QtCore.Qt.Horizontal, self.gametab_pair) self.pairoffset.setRange(-100, 100) self.pairoffset.setValue(0) self.pairoffset_l = QtGui.QLabel("Position offset", self.gametab_pair) self.pairoffsetreset = QtGui.QPushButton("Reset", self.gametab_pair) self.pairoffsetreset.clicked.connect(partial(self.pairoffset.setValue, 0)) + self.pair_order = QtGui.QComboBox(self.gametab_pair) + self.pair_order.addItem("Front") + self.pair_order.addItem("Behind") + self.pair_order_l = QtGui.QLabel("Pairing order", self.gametab_pair) self.misc_layout = QtGui.QVBoxLayout(self.gametab_misc) self.misc_layout.setAlignment(QtCore.Qt.AlignTop) @@ -1392,6 +1394,8 @@ class gui(QtGui.QWidget): if "cccc_ic_support" in self.features: msg += self.showname+"#" # custom showname msg += (str(self.pairdropdown.currentIndex()) if self.paircheckbox.isChecked() else "-1")+"#" # pair charID + if "effects" in self.features: + msg += "^%d#" % self.pair_order.currentIndex() # pair ordering msg += str(self.pairoffset.value())+"#" # send this anyway; AO 2.8 msg += str(int(self.nointerruptbtn.isChecked()))+"#" # NoInterrupt(TM) @@ -1610,11 +1614,30 @@ class gui(QtGui.QWidget): side = self.m_chatmessage[SIDE] emote_mod = int(self.m_chatmessage[EMOTE_MOD]) - + + # AO 2.8: always offset player + if side == "def": + hor_offset = int(self.m_chatmessage[SELF_OFFSET]) + vert_offset = 0 + if hor_offset > 0: + vert_offset = hor_offset / 10 + self.char.move(256 * hor_offset / 100, 192 * vert_offset / 100) + + elif side == "pro": + hor_offset = int(self.m_chatmessage[SELF_OFFSET]) + vert_offset = 0 + if hor_offset < 0: + vert_offset = -1 * hor_offset / 10 + self.char.move(256 * hor_offset / 100, 192 * vert_offset / 100) + + else: + hor_offset = int(self.m_chatmessage[SELF_OFFSET]) + self.char.move(256 * hor_offset / 100, 0) + + # check if paired if not self.m_chatmessage[OTHER_CHARID]: self.sidechar.hide() self.sidechar.move(0,0) - self.char.move(0,0) else: if "effects" in self.features: got_other_charid = int(self.m_chatmessage[OTHER_CHARID].split("^")[0]) @@ -1623,74 +1646,81 @@ class gui(QtGui.QWidget): if got_other_charid > -1: self.sidechar.show() - + + if "effects" in self.features: + pair_order = int(self.m_chatmessage[OTHER_CHARID].split("^")[1]) + else: + pair_order = -1 + if side == "def": - hor_offset = int(self.m_chatmessage[SELF_OFFSET]) - vert_offset = 0 - if hor_offset > 0: - vert_offset = hor_offset / 10 - self.char.move(256 * hor_offset / 100, 192 * vert_offset / 100) - hor2_offset = int(self.m_chatmessage[OTHER_OFFSET]) vert2_offset = 0 if hor2_offset > 0: vert2_offset = hor2_offset / 10 self.sidechar.move(256 * hor2_offset / 100, 192 * vert2_offset / 100) - - if hor2_offset >= hor_offset: + + if pair_order == -1: # pair ordering not supported + if hor2_offset >= hor_offset: + self.sidechar.raise_() + self.char.raise_() + else: + self.char.raise_() + self.sidechar.raise_() + elif pair_order == 0: # front self.sidechar.raise_() self.char.raise_() - else: - self.char.raise_() + elif pair_order == 1: # behind self.sidechar.raise_() + self.char.raise_() self.bench.raise_() elif side == "pro": - hor_offset = int(self.m_chatmessage[SELF_OFFSET]) - vert_offset = 0 - if hor_offset < 0: - vert_offset = -1 * hor_offset / 10 - self.char.move(256 * hor_offset / 100, 192 * vert_offset / 100) - hor2_offset = int(self.m_chatmessage[OTHER_OFFSET]) vert2_offset = 0 if hor2_offset < 0: vert2_offset = -1 * hor2_offset / 10 self.sidechar.move(256 * hor2_offset / 100, 192 * vert2_offset / 100) - - if hor2_offset <= hor_offset: + + if pair_order == -1: # pair ordering not supported + if hor2_offset <= hor_offset: + self.sidechar.raise_() + self.char.raise_() + else: + self.char.raise_() + self.sidechar.raise_() + elif pair_order == 0: # front self.sidechar.raise_() self.char.raise_() - else: - self.char.raise_() + elif pair_order == 1: # behind self.sidechar.raise_() + self.char.raise_() self.bench.raise_() else: - hor_offset = int(self.m_chatmessage[SELF_OFFSET]) - self.char.move(256 * hor_offset / 100, 0) - hor2_offset = int(self.m_chatmessage[OTHER_OFFSET]) self.sidechar.move(256 * hor2_offset / 100, 0) - - if hor2_offset >= hor_offset: + + if pair_order == -1: # pair ordering not supported + if hor2_offset >= hor_offset: + self.sidechar.raise_() + self.char.raise_() + else: + self.char.raise_() + self.sidechar.raise_() + elif pair_order == 0: # front self.sidechar.raise_() self.char.raise_() - else: - self.char.raise_() + elif pair_order == 1: # behind self.sidechar.raise_() + self.char.raise_() self.bench.raise_() - - if self.m_chatmessage[OTHER_FLIP] == "1": - self.sidechar.set_flipped(True) - else: - self.sidechar.set_flipped(False) + + self.sidechar.set_flipped(self.m_chatmessage[OTHER_FLIP] == "1") self.sidechar.play_idle(self.m_chatmessage[OTHER_NAME], self.m_chatmessage[OTHER_EMOTE]) else: self.sidechar.hide() self.sidechar.move(0, 0) - self.char.move(0, 0) if (emote_mod == 1 or emote_mod == 6 and self.m_chatmessage[PREANIM] != "-") or emote_mod == 2: self.play_preanim(False)