Skip to content

Commit 77ae254

Browse files
committed
Added option to Game Settings to select game client. Version bump to
0.27
1 parent a9c9640 commit 77ae254

9 files changed

Lines changed: 209 additions & 136 deletions

File tree

ChangeLog

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,9 @@ Changes
106106

107107
0.2.6 Updated certificate chain to new SSL certificates after recent update (22.0.1 or possibly 22) update
108108
by SSG broke authentication using the old certs.
109+
110+
0.2.7 Added option in Game Settings to select which game client to use.
111+
The choices are 32-bit, 32-bit Legacy ("Awesomium"), and 64-bit. The 32-bit
112+
Legacy Awesomium client is recommended for Linux users. Game client override
113+
code that checked TurbineLauncher.exe.config has been removed since it is no
114+
longer needed with this option.

PyLotRO.iss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
88
AppId={{EB42F98E-B61B-4EE7-AF06-CAAF8D1825A3}
99
AppName=PyLotRO
10-
AppVerName=PyLotRO 0.2.6
10+
AppVerName=PyLotRO 0.2.7
1111
AppPublisher=AJackson
1212
AppPublisherURL=http://www.lotrolinux.com
1313
AppSupportURL=http://www.lotrolinux.com

PyLotROLauncher/Information.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# coding=utf-8
2-
Version = "0.2.6"
2+
Version = "0.2.7"
33
Description = "LOTRO/DDO Launcher"
44
Author = "Alan Jackson"
55
Email = "ajackson@bcs.org.uk"

PyLotROLauncher/MainWindow.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,11 +224,13 @@ def actionPatchSelected(self):
224224
def actionOptionsSelected(self):
225225
winSettings = SettingsWindow(self.winMain, self.settings.hiResEnabled, self.settings.app,
226226
self.settings.wineProg, self.settings.wineDebug, self.settings.patchClient,
227-
self.settings.winePrefix, self.settings.gameDir, self.valHomeDir, self.osType, self.rootDir)
227+
self.settings.winePrefix, self.settings.gameDir, self.valHomeDir, self.osType, self.rootDir,
228+
self.settings.gameClientIdx)
228229

229230
self.hideWinMain()
230231
if winSettings.Run() == QtGui.QDialog.Accepted:
231232
self.settings.hiResEnabled = winSettings.getHiRes()
233+
self.settings.gameClientIdx = winSettings.getGameClientIdx()
232234
self.settings.app = winSettings.getApp()
233235
self.settings.patchClient = winSettings.getPatchClient()
234236
self.settings.gameDir = winSettings.getGameDir()
@@ -252,6 +254,7 @@ def actionWizardSelected(self):
252254
self.settings.usingDND = winWizard.getUsingDND()
253255
self.settings.usingTest = winWizard.getUsingTest()
254256
self.settings.hiResEnabled = winWizard.getHiRes()
257+
self.settings.gameClientIdx = winSettings.getGameClientIdx()
255258
self.settings.app = winWizard.getApp()
256259
self.settings.wineProg = winWizard.getProg()
257260
self.settings.wineDebug = winWizard.getDebug()
@@ -387,7 +390,16 @@ def AuthAccount(self):
387390
self.AddLog(self.account.messError)
388391

389392
def LaunchGame(self):
390-
game = StartGame(self.winMain, self.worldQueueConfig.gameClientFilename,
393+
gameClientIdx = int(self.settings.gameClientIdx)
394+
395+
if gameClientIdx == 0:
396+
gameClientFilename = self.worldQueueConfig.gameClientFilename32
397+
elif gameClientIdx == 1:
398+
gameClientFilename = self.worldQueueConfig.gameClientFilenameLegacy
399+
elif gameClientIdx == 2:
400+
gameClientFilename = "x64/" + self.worldQueueConfig.gameClientFilename64
401+
402+
game = StartGame(self.winMain, gameClientFilename,
391403
self.worldQueueConfig.gameClientArgTemplate, self.accNumber, self.urlLoginServer,
392404
self.account.ticket, self.urlChatServer,
393405
self.langConfig.langList[self.uiMain.cboLanguage.currentIndex()].code,

PyLotROLauncher/PyLotROUtils.py

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,9 @@ def CheckRealm(self, useDND, baseDir, osType):
477477
class WorldQueueConfig:
478478
def __init__(self, urlConfigServer, usingDND, baseDir, osType, gameDir):
479479
self.gameClientFilename = ""
480+
self.gameClientFilename32 = ""
481+
self.gameClientFilename64 = ""
482+
self.gameClientFilenameLegacy = ""
480483
self.gameClientArgTemplate = ""
481484
self.crashreceiver = ""
482485
self.DefaultUploadThrottleMbps = ""
@@ -515,7 +518,11 @@ def __init__(self, urlConfigServer, usingDND, baseDir, osType, gameDir):
515518
for node in nodes:
516519
if node.nodeType == node.ELEMENT_NODE:
517520
if node.getAttribute("key") == "GameClient.WIN32.Filename":
518-
self.gameClientFilename = node.getAttribute("value")
521+
self.gameClientFilename32 = node.getAttribute("value")
522+
if node.getAttribute("key") == "GameClient.WIN64.Filename":
523+
self.gameClientFilename64 = node.getAttribute("value")
524+
if node.getAttribute("key") == "GameClient.WIN32Legacy.Filename":
525+
self.gameClientFilenameLegacy = node.getAttribute("value")
519526
elif node.getAttribute("key") == "GameClient.WIN32.ArgTemplate":
520527
self.gameClientArgTemplate = node.getAttribute("value")
521528
elif node.getAttribute("key") == "GameClient.Arg.crashreceiver":
@@ -546,21 +553,6 @@ def __init__(self, urlConfigServer, usingDND, baseDir, osType, gameDir):
546553
self.worldQueueParam = node.getAttribute("value")
547554

548555
self.loadSuccess = True
549-
550-
# check TurbineLauncher.exe.config in gameDir for local game client override
551-
tempxml = ""
552-
filename = gameDir + '/TurbineLauncher.exe.config'
553-
if os.path.exists(filename):
554-
infile = uopen(filename, "r", "utf-8")
555-
tempxml = infile.read()
556-
infile.close()
557-
doc = xml.dom.minidom.parseString(tempxml)
558-
nodes = doc.getElementsByTagName("appSettings")[0].childNodes
559-
for node in nodes:
560-
if node.nodeType == node.ELEMENT_NODE:
561-
if node.getAttribute("key") == "GameClient.WIN32.Filename":
562-
self.gameClientFilename = node.getAttribute("value")
563-
564556
except:
565557
self.loadSuccess = False
566558
raise

PyLotROLauncher/Settings.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ def LoadSettings(self, useGame=None):
5252
self.focusAccount = True
5353
self.winePrefix = os.environ.get('WINEPREFIX')
5454
self.gameDir = ""
55+
self.gameClientIdx = 0
5556
self.hideWinMain = False
5657
success = False
5758

@@ -95,6 +96,8 @@ def LoadSettings(self, useGame=None):
9596
self.hiResEnabled = True
9697
else:
9798
self.hiResEnabled = False
99+
elif node.nodeName == "Game.Client.Index":
100+
self.gameClientIdx = GetText(node.childNodes)
98101
elif node.nodeName == "Game.Directory":
99102
self.gameDir = GetText(node.childNodes)
100103
elif node.nodeName == "Realm":
@@ -191,6 +194,10 @@ def SaveSettings(self, saveAccountDetails):
191194
tempNode.appendChild(doc.createTextNode("%s" % (self.gameDir)))
192195
gameConfigNode.appendChild(tempNode)
193196

197+
tempNode = doc.createElementNS(EMPTY_NAMESPACE, "Game.Client.Index")
198+
tempNode.appendChild(doc.createTextNode("%s" % (self.gameClientIdx)))
199+
gameConfigNode.appendChild(tempNode)
200+
194201
tempNode = doc.createElementNS(EMPTY_NAMESPACE, "PatchClient")
195202
tempNode.appendChild(doc.createTextNode("%s" % (self.patchClient)))
196203
gameConfigNode.appendChild(tempNode)

PyLotROLauncher/SettingsWindow.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434

3535
class SettingsWindow:
3636
def __init__(self, parent, hiRes, app, wineProg, wineDebug, patchClient, winePrefix,
37-
gameDir, homeDir, osType, rootDir):
37+
gameDir, homeDir, osType, rootDir, gameClientIdx):
3838

3939
self.homeDir = homeDir
4040
self.osType = osType
@@ -77,6 +77,9 @@ def __init__(self, parent, hiRes, app, wineProg, wineDebug, patchClient, winePre
7777
self.uiSettings.txtGameDir.setText(gameDir)
7878
self.uiSettings.cboGraphics.addItem("Enabled")
7979
self.uiSettings.cboGraphics.addItem("Disabled")
80+
self.uiSettings.cboGameClient.addItem("32-bit")
81+
self.uiSettings.cboGameClient.addItem("32-bit Legacy (\"Awesomium\")")
82+
self.uiSettings.cboGameClient.addItem("64-bit")
8083
self.uiSettings.chkAdvanced.setChecked(False)
8184
self.uiSettings.txtPatchClient.setText(patchClient)
8285
self.uiSettings.txtPatchClient.setEnabled(False)
@@ -102,6 +105,8 @@ def __init__(self, parent, hiRes, app, wineProg, wineDebug, patchClient, winePre
102105
else:
103106
self.uiSettings.cboGraphics.setCurrentIndex(1)
104107

108+
self.uiSettings.cboGameClient.setCurrentIndex(int(gameClientIdx))
109+
105110
QtCore.QObject.connect(self.uiSettings.btnGameDir, QtCore.SIGNAL("clicked()"), self.btnGameDirClicked)
106111
QtCore.QObject.connect(self.uiSettings.chkAdvanced, QtCore.SIGNAL("clicked()"), self.chkAdvancedClicked)
107112

@@ -203,6 +208,9 @@ def getHiRes(self):
203208
else:
204209
return False
205210

211+
def getGameClientIdx(self):
212+
return self.uiSettings.cboGameClient.currentIndex()
213+
206214
def Run(self):
207215
return self.winSettings.exec_()
208216

0 commit comments

Comments
 (0)