2021-06-21 22:57:55 -04:00
import subprocess , sys , thread , time , os , platform , __builtin__
2021-06-16 17:02:07 -04:00
from os . path import exists , abspath
2021-02-17 06:46:27 -05:00
2020-08-06 22:04:06 -04:00
from PyQt4 import QtGui , QtCore
2019-04-03 10:57:23 -04:00
2021-06-20 01:29:40 -04:00
import audio as AUDIO
2021-06-21 22:57:55 -04:00
import ini
2021-06-20 01:29:40 -04:00
__builtin__ . audio = AUDIO
del AUDIO
app = QtGui . QApplication ( sys . argv )
2021-01-06 20:25:55 -05:00
osname = platform . system ( )
2021-02-17 06:46:27 -05:00
path = sys . argv [ 0 ]
if osname == " Darwin " and " .app " in path : # bundle
path = " / " . join ( path . split ( " / " ) [ : - 1 ] ) # to Resources folder
2021-02-14 21:20:22 -05:00
os . chdir ( path )
2021-01-06 20:25:55 -05:00
2020-08-01 22:15:07 -04:00
debugmode = len ( sys . argv ) > 1 and sys . argv [ 1 ] == " debug "
if not debugmode :
2021-06-20 01:29:40 -04:00
fakebass = len ( sys . argv ) > 1 and sys . argv [ 1 ] == " ignorebass "
missing = audio . checkAvailable ( )
if missing or fakebass :
QtGui . QMessageBox . critical ( None , " Unable to launch game " , " Couldn ' t find the file %s on the client folder. \n AO2XP needs this file in order to play sounds and music. \n The file is included in the client ' s zip file, make sure it ' s in the same folder as the AO2XP exe. \n \n Additional info: \n %s \n %s " % ( missing , sys . argv , os . getcwd ( ) ) )
2020-08-08 18:58:58 -04:00
os . _exit ( - 2 )
2019-04-03 10:57:23 -04:00
class gamewindow ( QtGui . QMainWindow ) :
def __init__ ( self ) :
super ( gamewindow , self ) . __init__ ( )
self . stackwidget = QtGui . QStackedWidget ( self )
self . widget = mainmenu . lobby ( self )
self . gamewidget = gameview . gui ( self )
self . stackwidget . addWidget ( self . widget )
self . stackwidget . addWidget ( self . gamewidget )
self . setCentralWidget ( self . stackwidget )
self . stackwidget . setCurrentWidget ( self . widget )
self . setFixedSize ( self . widget . lobbyimg . size ( ) . width ( ) , self . widget . lobbyimg . size ( ) . height ( ) )
self . center ( )
self . setWindowTitle ( " AO2XP " )
self . setWindowFlags ( QtCore . Qt . WindowMinimizeButtonHint )
self . settingsgui = options . Settings ( )
def center ( self ) :
frameGm = self . frameGeometry ( )
centerPoint = QtGui . QDesktopWidget ( ) . availableGeometry ( ) . center ( )
frameGm . moveCenter ( centerPoint )
self . move ( frameGm . topLeft ( ) )
2021-03-13 12:40:32 -05:00
def showGame ( self , tcp , charlist , musiclist , background , evidence , areas , features = [ ] , oocjoin = [ ] , hplist = [ ] , webAO_bucket = " " ) :
2019-04-03 10:57:23 -04:00
self . gamewidget . disconnectnow = False
2021-03-13 12:40:32 -05:00
self . gamewidget . startGame ( tcp , charlist , musiclist , background , evidence , areas , features , oocjoin , hplist , webAO_bucket )
2019-04-03 10:57:23 -04:00
self . stackwidget . setCurrentWidget ( self . gamewidget )
def returnToMenu ( self ) :
self . gamewidget . disconnectnow = True
self . setFixedSize ( self . widget . lobbyimg . size ( ) . width ( ) , self . widget . lobbyimg . size ( ) . height ( ) )
self . widget . onClicked_cancelconnect ( )
self . stackwidget . setCurrentWidget ( self . widget )
self . setWindowTitle ( " AO2XP " )
def showSettings ( self ) :
self . settingsgui . showSettings ( )
if not debugmode :
2021-06-21 22:57:55 -04:00
# Vanilla downloader
2020-08-06 22:04:06 -04:00
force_downloader = len ( sys . argv ) > 1 and sys . argv [ 1 ] == " download "
if force_downloader or ( not exists ( " base/background " ) and not exists ( " base/characters " ) and not exists ( " base/sounds " ) and not exists ( " base/evidence " ) ) :
jm = QtGui . QMessageBox . information ( None , " Warning " , " You seem to be missing the included Attorney Online content. \n Would you like to download them automatically? " , QtGui . QMessageBox . Yes | QtGui . QMessageBox . No )
if jm == QtGui . QMessageBox . Yes :
import basedownloader
code = basedownloader . downloadVanilla ( )
2020-08-08 18:58:58 -04:00
if code != 0 : os . _exit ( code )
2020-08-06 22:04:06 -04:00
else :
2020-08-08 18:58:58 -04:00
os . _exit ( - 3 )
2020-08-06 22:04:06 -04:00
2021-06-21 22:57:55 -04:00
# AO2XP update checker
can_update = ini . read_ini_bool ( " AO2XP.ini " , " General " , " install updates " , True )
force_update = " forceupdate " in sys . argv [ 1 : ]
if can_update or force_update :
import updater
code = updater . checkForUpdates ( force_update )
if code == 0 :
subprocess . Popen ( [ " ./AO2XPupdat " ] )
os . _exit ( 0 )
2021-06-22 14:48:23 -04:00
elif osname == " Darwin " and " .app " in sys . argv [ 0 ] : # bundle
os . chdir ( path ) # return to Resources folder
2021-06-21 22:57:55 -04:00
import gameview , mainmenu , options
2019-04-03 10:57:23 -04:00
2021-06-20 01:29:40 -04:00
audio . init ( )
2019-04-03 10:57:23 -04:00
shit = gamewindow ( )
shit . show ( )
2021-06-20 01:29:40 -04:00
returnc = app . exec_ ( )
audio . free ( )
sys . exit ( returnc )