fixed favorite servers. added setting to auto connect to favorite server on login

This commit is contained in:
cidoku 2025-02-14 16:16:51 -03:00
parent cbb548869a
commit ed6a6cc3b2
3 changed files with 287 additions and 252 deletions

View File

@ -1546,9 +1546,9 @@ class gui(QtGui.QWidget):
def onMusicClick(self, item):
if "cccc_ic_support" in self.features and self.showname:
self.tcp.send('MC#' + item.text().toUtf8() + '#' + str(self.mychar) + '#' + self.showname + '#%')
self.tcp.send('MC#' + item.text() + '#' + str(self.mychar) + '#' + self.showname + '#%')
else:
self.tcp.send('MC#' + item.text().toUtf8() + '#' + str(self.mychar) + '#%')
self.tcp.send('MC#' + item.text() + '#' + str(self.mychar) + '#%')
def icLogChanged(self):
if self.icLog.verticalScrollBar().value() == self.icLog.verticalScrollBar().maximum(): self.icLog.verticalScrollBar().setValue(self.icLog.verticalScrollBar().maximum())

View File

@ -6,6 +6,7 @@ from PyQt4 import QtGui, QtCore
import hardware
import AOsocket
import ini
from game_version import *
AOpath = "base/"
@ -49,11 +50,21 @@ class lobby(QtGui.QWidget):
self.pix_btn_connect = QtGui.QPixmap(AO2XPpath+'themes/default/connect.png')
self.pix_connecting = QtGui.QPixmap(AO2XPpath+'themes/default/loadingbackground.png')
self.autoconnect = None
if exists(AOpath+'serverlist.txt'):
with open(AOpath+'serverlist.txt') as file:
self.favoriteslist = [line.rstrip().split(':') for line in file]
autoconnect_id = ini.read_ini_int("AO2XP.ini", "General", "auto connect")
if autoconnect_id >= 0:
try:
self.autoconnect = self.favoriteslist[autoconnect_id]
except:
print "[debug] Can't autoconnect to server."
else:
self.favoriteslist = ['127.0.0.1:27017:your server (port 27017)'.split(':'), '127.0.0.1:27016:your server (port 27016)'.split(':'),]
self.favoriteslist = []
#self.favoriteslist = ['127.0.0.1:27017:your server (port 27017)'.split(':'), '127.0.0.1:27016:your server (port 27016)'.split(':'),]
self.lobbyimg = QtGui.QLabel(self)
self.lobbyimg.setPixmap(self.pix_lobby)
@ -187,8 +198,17 @@ class lobby(QtGui.QWidget):
self.masterserver.msgbox_signal.connect(self.showMessageBox)
self.masterserver.start()
if self.autoconnect:
self.aoserverinfo.setIP(self.autoconnect[-1], self.autoconnect[0], self.autoconnect[1], self.autoconnect[2])
print '[debug]', 'Connecting automatically to ip: ' + self.autoconnect[0] + ', port: ' + str(self.autoconnect[1]) + ", websocket port: " + str(self.autoconnect[2])
self.aoserverinfo.stop()
self.aoserverinfo.start()
def canConnect(self):
self.can_connect = True
if self.autoconnect:
self.autoconnect = None # We only want to autoconnect on first login after all
self.onClicked_connect()
def onGetServers(self, servers):
if self.tab == 0: self.serverlist.clear()
@ -234,7 +254,7 @@ class lobby(QtGui.QWidget):
self.serverlist.clear()
self.serverinfo.setText("")
for sv in self.favoriteslist:
self.serverlist.addItem(QtGui.QListWidgetItem(sv[2]))
self.serverlist.addItem(QtGui.QListWidgetItem(sv[-1]))
def onClicked_refresh(self):
self.serverlist.clear()
@ -262,14 +282,15 @@ class lobby(QtGui.QWidget):
ip = self.actual_serverlist[i][0]
port = str(self.actual_serverlist[i][1])
name = self.actual_serverlist[i][2]
ws = self.actual_serverlist[i][-1]
for sv in self.favoriteslist:
if sv[0] == ip and sv[1] == port:
return QtGui.QMessageBox.information(self, "Error", "This server already exists in your favorites list, named '%s'" % sv[2])
self.favoriteslist.append([ip, port, name])
self.favoriteslist.append([ip, port, ws, name])
with open(AOpath+'serverlist.txt', "a") as file:
file.write("%s:%s:%s\n" % (ip, port, name))
file.write("%s:%s:%s:%s\n" % (ip, port, ws, name))
file.close()
def onClicked_connect(self):
@ -320,8 +341,8 @@ class lobby(QtGui.QWidget):
self.aoserverinfo.setIP(text, self.actual_serverlist[i][0], self.actual_serverlist[i][1], self.actual_serverlist[i][-1])
print '[debug]', 'ind: ' + str(i) + ', ip: ' + self.actual_serverlist[i][0] + ', port: ' + str(self.actual_serverlist[i][1]) + ", websocket port: " + str(self.actual_serverlist[i][-1])
elif self.tab == 1:
self.aoserverinfo.setIP(text, *self.favoriteslist[i][:2])
print '[debug]', 'ind: ' + str(i) + ', ip: ' + self.favoriteslist[i][0] + ', port: ' + str(self.favoriteslist[i][1])
self.aoserverinfo.setIP(text, self.favoriteslist[i][0], self.favoriteslist[i][1], self.favoriteslist[i][2])
print '[debug]', 'ind: ' + str(i) + ', ip: ' + self.favoriteslist[i][0] + ', port: ' + str(self.favoriteslist[i][1]) + ", websocket port: " + str(self.favoriteslist[i][2])
self.aoserverinfo.stop()
self.aoserverinfo.start()

View File

@ -97,6 +97,17 @@ class Settings(QtGui.QDialog):
currtheme_layout.addWidget(currtheme_label)
currtheme_layout.addWidget(self.currtheme)
autoconnect_layout = QtGui.QHBoxLayout()
autoconnect_label = QtGui.QLabel("Connect automatically to this server")
self.autoconnect = QtGui.QComboBox()
self.autoconnect.addItem("Always show server list")
if exists(AOpath+'serverlist.txt'):
with open(AOpath+'serverlist.txt') as file:
for server in [line.rstrip().split(':') for line in file]:
self.autoconnect.addItem(server[-1])
autoconnect_layout.addWidget(autoconnect_label)
autoconnect_layout.addWidget(self.autoconnect)
update_layout = QtGui.QHBoxLayout()
self.check_updates = QtGui.QCheckBox("Check for AO2XP updates on startup")
self.check_updates_btn = QtGui.QPushButton()
@ -119,6 +130,7 @@ class Settings(QtGui.QDialog):
general_layout.addWidget(separators[2])
general_layout.addLayout(currtheme_layout)
general_layout.addWidget(separators[3])
general_layout.addLayout(autoconnect_layout)
general_layout.addLayout(update_layout)
general_layout.addWidget(savechangeswarn, 50, QtCore.Qt.AlignBottom)
@ -194,6 +206,7 @@ class Settings(QtGui.QDialog):
self.allowdownload_music.setChecked(ini.read_ini_bool(self.inifile, "General", "download music"))
self.allowdownload_evidence.setChecked(ini.read_ini_bool(self.inifile, "General", "download evidence"))
self.currtheme.setCurrentIndex(self.themes.index(ini.read_ini(self.inifile, "General", "theme", "default")))
self.autoconnect.setCurrentIndex(ini.read_ini_int(self.inifile, "General", "auto connect", -1) + 1)
self.check_updates.setChecked(ini.read_ini_bool(self.inifile, "General", "install updates", True))
self.device_list.setCurrentIndex(ini.read_ini_int(self.inifile, "Audio", "device", audio.getcurrdevice()))
@ -243,6 +256,7 @@ class Settings(QtGui.QDialog):
self.inifile.set("General", "download music", self.allowdownload_music.isChecked())
self.inifile.set("General", "download evidence", self.allowdownload_evidence.isChecked())
self.inifile.set("General", "theme", self.currtheme.currentText())
self.inifile.set("General", "auto connect", self.autoconnect.currentIndex() - 1)
self.inifile.set("General", "install updates", self.check_updates.isChecked())
self.inifile.set("Audio", "device", self.device_list.currentIndex())