Compare commits

..

2 commits

Author SHA1 Message Date
c3171a99b4 bugfixes and tweaks. Auto key bindings for RA3 2026-01-08 17:22:47 -05:00
55f85f6794 updated build 2026-01-08 16:46:16 -05:00
15 changed files with 294 additions and 8959 deletions

View file

@ -22,17 +22,17 @@ shutdown_event = threading.Event()
ERROR_ALREADY_EXISTS = 183
# ========================= CONFIG =========================
DEBUG = True # Set True to enable debug overrides
DEBUG = False # Set True to enable debug overrides
# Default paths (used if not in debug mode)
DEFAULT_GAME_EXE = r".\RA3game.dll"
DEFAULT_GAME_EXE = r".\qgame.dll"
DEFAULT_PLAYLIST = r".\arena\music\playlist.txt"
DEFAULT_RA3_MAPS = r".\arena\music\ra3_maps.txt"
# Debug override paths
DEBUG_GAME_EXE = r"D:\GOG Games\Quake III\quake3e_con.exe"
DEBUG_PLAYLIST = r"D:\GOG Games\Rocket Arena 3\arena\music\playlist.txt"
DEBUG_RA3_MAPS = r"D:\GOG Games\Rocket Arena 3\arena\music\ra3_maps.txt"
DEBUG_GAME_EXE = r"D:\GOG Games\Quake III\qgame.dll"
DEBUG_PLAYLIST = r"D:\GOG Games\Quake III\arena\music\playlist.txt"
DEBUG_RA3_MAPS = r"D:\GOG Games\Quake III\arena\music\ra3_maps.txt"
# Initial volume
VOLUME_STEP = 0.1 # step for W/S volume control
@ -149,6 +149,7 @@ def load_playlist(playlist_path):
base_dir = playlist_path.parent
songs = []
try:
with open(playlist_path, "r", encoding="utf-8") as f:
for line in f:
line = line.strip()
@ -182,6 +183,9 @@ def load_playlist(playlist_path):
if not _found_song:
playlist_index = 0
play_current()
except:
print(f"[DEBUG] Failed to open playlist.txt")
pass
return songs
@ -194,13 +198,16 @@ def load_ra3_maps(path):
line = line.strip()
if line:
maps.add(line.lower())
except PermissionError:
# File is locked by another process (e.g., Notepad)
# Decide how your app should behave
except:
print(f"[DEBUG] Failed to open ra3_maps.txt")
return set()
return maps
def next_track():
global playlist
if not playlist:
return
global volumecheck
volumecheck = True
send_command(pty_proc,"s_musicvolume")
@ -212,6 +219,10 @@ def next_track():
play_current()
def previous_track():
global playlist
if not playlist:
return
global volumecheck
volumecheck = True
send_command(pty_proc,"s_musicVolume")
@ -223,7 +234,7 @@ def previous_track():
play_current()
def play_current():
global is_playing, current_song
global is_playing, current_song, playlist
if not playlist:
return
track = playlist[playlist_index]
@ -247,6 +258,10 @@ def stop_playback():
is_playing = False
def toggle_pause():
global playlist
if not playlist:
return
global volumecheck
volumecheck = True
send_command(pty_proc,"s_musicVolume")
@ -324,16 +339,18 @@ def handle_game_line(line, pty_proc):
print(f"[DEBUG] Active mod is Rocket Arena 3 - enabling music playback")
is_ra3 = True
volumecheck = True
threading.Timer(1.0, lambda: send_command(pty_proc,"s_musicVolume")).start()
threading.Timer(.5, lambda: send_command(pty_proc,"s_musicVolume")).start()
if playlist:
if current_mode == "shuffle":
global playlist_index
playlist_index = random.randint(0, len(playlist) - 1)
threading.Timer(2.0, play_current).start()
threading.Timer(1.0, play_current).start()
else:
if not is_playing:
next_track()
threading.Timer(.2, lambda: send_command(pty_proc,"bind [ echo ]\\prevtrack\r\nbind ] echo ]\\nexttrack\r\nbind \\ echo ]\\musicmode\r\nbind ' echo ]\\pausetrack")).start()
else:
print(f"[DEBUG] Active mod is NOT Rocket Arena 3 - disabling music playback")
#print(f"[DEBUG] Active mod is NOT Rocket Arena 3 - disabling music playback")
is_ra3 = False
if is_playing:
stop_playback()
@ -408,7 +425,7 @@ def send_command(pty_proc, cmd):
try:
pty_proc.write(cmd + "\r\n")
pty_proc.flush()
print(f"[DEBUG] Sent command: {cmd}")
#print(f"[DEBUG] Sent command: {cmd}")
except Exception as e:
print(f"[DEBUG] Failed to send command: {e}")
# ==========================================================
@ -448,9 +465,9 @@ def main():
playlist = load_playlist(playlist_path)
ra3_maps = load_ra3_maps(ra3_maps_path)
if not playlist:
print("Playlist is empty!")
return
#if not playlist:
# print("Playlist is empty!")
# return
#if not ra3_maps:
# print("RA3 maps list is empty!")
# return

View file

@ -44,5 +44,5 @@ exe = EXE(
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon=['RA3.ico'],
icon=['quake3modern.ico'],
)

View file

@ -1 +1 @@
pyinstaller --onefile --name RA3WITHMP3 --icon=RA3.ico --collect-all readchar --collect-all winpty RA3MP3Playback.py
pyinstaller --onefile --name RA3WITHMP3 --icon=quake3modern.ico --collect-all readchar --collect-all winpty RA3MP3Playback.py

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -185,9 +185,6 @@
('ctypes._endian',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\ctypes\\_endian.py',
'PYMODULE'),
('ctypes.wintypes',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\ctypes\\wintypes.py',
'PYMODULE'),
('dataclasses',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\dataclasses.py',
'PYMODULE'),
@ -371,9 +368,6 @@
('inspect',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\inspect.py',
'PYMODULE'),
('ipaddress',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\ipaddress.py',
'PYMODULE'),
('logging',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\logging\\__init__.py',
'PYMODULE'),
@ -584,18 +578,6 @@
('pprint',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\pprint.py',
'PYMODULE'),
('psutil',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\psutil\\__init__.py',
'PYMODULE'),
('psutil._common',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\psutil\\_common.py',
'PYMODULE'),
('psutil._ntuples',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\psutil\\_ntuples.py',
'PYMODULE'),
('psutil._pswindows',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\psutil\\_pswindows.py',
'PYMODULE'),
('py_compile',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\py_compile.py',
'PYMODULE'),
@ -768,12 +750,6 @@
('threading',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\threading.py',
'PYMODULE'),
('tkinter',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\tkinter\\__init__.py',
'PYMODULE'),
('tkinter.constants',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\tkinter\\constants.py',
'PYMODULE'),
('token',
'C:\\Users\\Ed\\AppData\\Local\\Programs\\Python\\Python39\\lib\\token.py',
'PYMODULE'),

Binary file not shown.

Binary file not shown.

View file

@ -17,9 +17,9 @@ IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
missing module named pyimod02_importers - imported by C:\Users\Ed\AppData\Local\Programs\Python\Python39\Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgutil.py (delayed), C:\Users\Ed\AppData\Local\Programs\Python\Python39\Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgres.py (delayed)
missing module named _posixsubprocess - imported by subprocess (optional), multiprocessing.util (delayed)
missing module named grp - imported by shutil (optional), tarfile (optional), pathlib (delayed, optional), subprocess (optional)
missing module named pwd - imported by posixpath (delayed, conditional), shutil (optional), tarfile (optional), pathlib (delayed, conditional, optional), subprocess (optional), psutil (optional), distutils.util (delayed, conditional, optional), http.server (delayed, optional), webbrowser (delayed), netrc (delayed, conditional), getpass (delayed)
missing module named org - imported by pickle (optional)
missing module named 'org.python' - imported by copy (optional), xml.sax (delayed, conditional)
missing module named pwd - imported by posixpath (delayed, conditional), shutil (optional), tarfile (optional), pathlib (delayed, conditional, optional), subprocess (optional), distutils.util (delayed, conditional, optional), http.server (delayed, optional), webbrowser (delayed), netrc (delayed, conditional), getpass (delayed)
missing module named 'org.python' - imported by pickle (optional), xml.sax (delayed, conditional)
missing module named org - imported by copy (optional)
missing module named posix - imported by os (conditional, optional), shutil (conditional), importlib._bootstrap_external (conditional)
missing module named resource - imported by posix (top-level)
missing module named _manylinux - imported by pkg_resources._vendor.packaging.tags (delayed, optional), packaging._manylinux (delayed, optional)

View file

@ -2,7 +2,7 @@
<html>
<head>
<meta charset="UTF-8">
<title>modulegraph cross reference for RA3MP3Playback.py, pyi_rth__tkinter.py, pyi_rth_inspect.py, pyi_rth_multiprocessing.py, pyi_rth_pkgres.py, pyi_rth_pkgutil.py, pyi_rth_pythoncom.py, pyi_rth_pywintypes.py</title>
<title>modulegraph cross reference for RA3MP3Playback.py, pyi_rth_inspect.py, pyi_rth_multiprocessing.py, pyi_rth_pkgres.py, pyi_rth_pkgutil.py, pyi_rth_pythoncom.py, pyi_rth_pywintypes.py</title>
<style>
.node { padding: 0.5em 0 0.5em; border-top: thin grey dotted; }
.moduletype { font: smaller italic }
@ -11,7 +11,7 @@
</style>
</head>
<body>
<h1>modulegraph cross reference for RA3MP3Playback.py, pyi_rth__tkinter.py, pyi_rth_inspect.py, pyi_rth_multiprocessing.py, pyi_rth_pkgres.py, pyi_rth_pkgutil.py, pyi_rth_pythoncom.py, pyi_rth_pywintypes.py</h1>
<h1>modulegraph cross reference for RA3MP3Playback.py, pyi_rth_inspect.py, pyi_rth_multiprocessing.py, pyi_rth_pkgres.py, pyi_rth_pkgutil.py, pyi_rth_pythoncom.py, pyi_rth_pywintypes.py</h1>
<div class="node">
<a name="RA3MP3Playback.py"></a>
@ -27,7 +27,6 @@ imports:
&#8226; <a href="#collections.abc">collections.abc</a>
&#8226; <a href="#copyreg">copyreg</a>
&#8226; <a href="#ctypes">ctypes</a>
&#8226; <a href="#ctypes.wintypes">ctypes.wintypes</a>
&#8226; <a href="#encodings">encodings</a>
&#8226; <a href="#encodings.aliases">encodings.aliases</a>
&#8226; <a href="#encodings.ascii">encodings.ascii</a>
@ -158,15 +157,12 @@ imports:
&#8226; <a href="#keyword">keyword</a>
&#8226; <a href="#linecache">linecache</a>
&#8226; <a href="#locale">locale</a>
&#8226; <a href="#math">math</a>
&#8226; <a href="#ntpath">ntpath</a>
&#8226; <a href="#operator">operator</a>
&#8226; <a href="#os">os</a>
&#8226; <a href="#pathlib">pathlib</a>
&#8226; <a href="#posixpath">posixpath</a>
&#8226; <a href="#psutil">psutil</a>
&#8226; <a href="#pygame">pygame</a>
&#8226; <a href="#pyi_rth__tkinter.py">pyi_rth__tkinter.py</a>
&#8226; <a href="#pyi_rth_inspect.py">pyi_rth_inspect.py</a>
&#8226; <a href="#pyi_rth_multiprocessing.py">pyi_rth_multiprocessing.py</a>
&#8226; <a href="#pyi_rth_pkgres.py">pyi_rth_pkgres.py</a>
@ -192,7 +188,6 @@ imports:
&#8226; <a href="#sys">sys</a>
&#8226; <a href="#threading">threading</a>
&#8226; <a href="#time">time</a>
&#8226; <a href="#tkinter">tkinter</a>
&#8226; <a href="#traceback">traceback</a>
&#8226; <a href="#types">types</a>
&#8226; <a href="#warnings">warnings</a>
@ -209,23 +204,6 @@ imports:
</div>
<div class="node">
<a name="pyi_rth__tkinter.py"></a>
<a target="code" href="///C:/Users/Ed/AppData/Local/Programs/Python/Python39/Lib/site-packages/PyInstaller/hooks/rthooks/pyi_rth__tkinter.py" type="text/plain"><tt>pyi_rth__tkinter.py</tt></a>
<span class="moduletype">Script</span> <div class="import">
imports:
<a href="#os">os</a>
&#8226; <a href="#sys">sys</a>
</div>
<div class="import">
imported by:
<a href="#RA3MP3Playback.py">RA3MP3Playback.py</a>
</div>
</div>
<div class="node">
<a name="pyi_rth_inspect.py"></a>
<a target="code" href="///C:/Users/Ed/AppData/Local/Programs/Python/Python39/Lib/site-packages/PyInstaller/hooks/rthooks/pyi_rth_inspect.py" type="text/plain"><tt>pyi_rth_inspect.py</tt></a>
@ -364,7 +342,7 @@ imported by:
<a target="code" href="" type="text/plain"><tt>'org.python'</tt></a>
<span class="moduletype">MissingModule</span> <div class="import">
imported by:
<a href="#copy">copy</a>
<a href="#pickle">pickle</a>
&#8226; <a href="#xml.sax">xml.sax</a>
</div>
@ -1344,16 +1322,6 @@ imported by:
</div>
<div class="node">
<a name="_tkinter"></a>
<tt>_tkinter</tt> <span class="moduletype"><tt>C:\Users\Ed\AppData\Local\Programs\Python\Python39\DLLs\_tkinter.pyd</tt></span> <div class="import">
imported by:
<a href="#tkinter">tkinter</a>
</div>
</div>
<div class="node">
<a name="_tracemalloc"></a>
<tt>_tracemalloc</tt> <span class="moduletype"><i>(builtin module)</i></span> <div class="import">
@ -2850,9 +2818,6 @@ imported by:
&#8226; <a href="#pkgutil">pkgutil</a>
&#8226; <a href="#platform">platform</a>
&#8226; <a href="#pprint">pprint</a>
&#8226; <a href="#psutil">psutil</a>
&#8226; <a href="#psutil._common">psutil._common</a>
&#8226; <a href="#psutil._ntuples">psutil._ntuples</a>
&#8226; <a href="#pydoc">pydoc</a>
&#8226; <a href="#queue">queue</a>
&#8226; <a href="#selectors">selectors</a>
@ -3107,8 +3072,6 @@ imported by:
&#8226; <a href="#importlib.util">importlib.util</a>
&#8226; <a href="#packaging._manylinux">packaging._manylinux</a>
&#8226; <a href="#packaging._tokenizer">packaging._tokenizer</a>
&#8226; <a href="#psutil">psutil</a>
&#8226; <a href="#psutil._pswindows">psutil._pswindows</a>
&#8226; <a href="#subprocess">subprocess</a>
&#8226; <a href="#typing">typing</a>
&#8226; <a href="#urllib.request">urllib.request</a>
@ -3144,8 +3107,8 @@ imported by:
<a target="code" href="///C:/Users/Ed/AppData/Local/Programs/Python/Python39/lib/copy.py" type="text/plain"><tt>copy</tt></a>
<span class="moduletype">SourceModule</span> <div class="import">
imports:
<a href="#'org.python'">'org.python'</a>
&#8226; <a href="#copyreg">copyreg</a>
<a href="#copyreg">copyreg</a>
&#8226; <a href="#org">org</a>
&#8226; <a href="#types">types</a>
&#8226; <a href="#weakref">weakref</a>
@ -3211,7 +3174,6 @@ imported by:
imports:
<a href="#_ctypes">_ctypes</a>
&#8226; <a href="#ctypes._endian">ctypes._endian</a>
&#8226; <a href="#ctypes.wintypes">ctypes.wintypes</a>
&#8226; <a href="#nt">nt</a>
&#8226; <a href="#os">os</a>
&#8226; <a href="#struct">struct</a>
@ -3223,12 +3185,10 @@ imports:
imported by:
<a href="#RA3MP3Playback.py">RA3MP3Playback.py</a>
&#8226; <a href="#ctypes._endian">ctypes._endian</a>
&#8226; <a href="#ctypes.wintypes">ctypes.wintypes</a>
&#8226; <a href="#multiprocessing.sharedctypes">multiprocessing.sharedctypes</a>
&#8226; <a href="#packaging._manylinux">packaging._manylinux</a>
&#8226; <a href="#pkg_resources._vendor.appdirs">pkg_resources._vendor.appdirs</a>
&#8226; <a href="#pkg_resources._vendor.packaging.tags">pkg_resources._vendor.packaging.tags</a>
&#8226; <a href="#psutil._common">psutil._common</a>
</div>
@ -3251,23 +3211,6 @@ imported by:
</div>
<div class="node">
<a name="ctypes.wintypes"></a>
<a target="code" href="///C:/Users/Ed/AppData/Local/Programs/Python/Python39/lib/ctypes/wintypes.py" type="text/plain"><tt>ctypes.wintypes</tt></a>
<span class="moduletype">SourceModule</span> <div class="import">
imports:
<a href="#ctypes">ctypes</a>
</div>
<div class="import">
imported by:
<a href="#RA3MP3Playback.py">RA3MP3Playback.py</a>
&#8226; <a href="#ctypes">ctypes</a>
</div>
</div>
<div class="node">
<a name="dataclasses"></a>
<a target="code" href="///C:/Users/Ed/AppData/Local/Programs/Python/Python39/lib/dataclasses.py" type="text/plain"><tt>dataclasses</tt></a>
@ -3314,7 +3257,6 @@ imported by:
&#8226; <a href="#http.server">http.server</a>
&#8226; <a href="#pkg_resources._vendor.pyparsing">pkg_resources._vendor.pyparsing</a>
&#8226; <a href="#plistlib">plistlib</a>
&#8226; <a href="#psutil">psutil</a>
&#8226; <a href="#win32com.client.build">win32com.client.build</a>
&#8226; <a href="#xmlrpc.client">xmlrpc.client</a>
@ -6644,14 +6586,11 @@ imported by:
&#8226; <a href="#inspect">inspect</a>
&#8226; <a href="#packaging._elffile">packaging._elffile</a>
&#8226; <a href="#plistlib">plistlib</a>
&#8226; <a href="#psutil._common">psutil._common</a>
&#8226; <a href="#psutil._pswindows">psutil._pswindows</a>
&#8226; <a href="#py_compile">py_compile</a>
&#8226; <a href="#re">re</a>
&#8226; <a href="#signal">signal</a>
&#8226; <a href="#socket">socket</a>
&#8226; <a href="#ssl">ssl</a>
&#8226; <a href="#tkinter">tkinter</a>
&#8226; <a href="#uuid">uuid</a>
</div>
@ -6800,7 +6739,6 @@ imported by:
&#8226; <a href="#importlib.metadata">importlib.metadata</a>
&#8226; <a href="#importlib.util">importlib.util</a>
&#8226; <a href="#inspect">inspect</a>
&#8226; <a href="#ipaddress">ipaddress</a>
&#8226; <a href="#linecache">linecache</a>
&#8226; <a href="#locale">locale</a>
&#8226; <a href="#multiprocessing.reduction">multiprocessing.reduction</a>
@ -6815,9 +6753,6 @@ imported by:
&#8226; <a href="#pkg_resources._vendor.packaging.specifiers">pkg_resources._vendor.packaging.specifiers</a>
&#8226; <a href="#pkgutil">pkgutil</a>
&#8226; <a href="#platform">platform</a>
&#8226; <a href="#psutil">psutil</a>
&#8226; <a href="#psutil._common">psutil._common</a>
&#8226; <a href="#psutil._pswindows">psutil._pswindows</a>
&#8226; <a href="#re">re</a>
&#8226; <a href="#tempfile">tempfile</a>
&#8226; <a href="#threading">threading</a>
@ -7497,7 +7432,6 @@ imported by:
&#8226; <a href="#pdb">pdb</a>
&#8226; <a href="#pkg_resources">pkg_resources</a>
&#8226; <a href="#pkgutil">pkgutil</a>
&#8226; <a href="#psutil._common">psutil._common</a>
&#8226; <a href="#pydoc">pydoc</a>
&#8226; <a href="#pyi_rth_inspect.py">pyi_rth_inspect.py</a>
@ -7574,23 +7508,6 @@ imported by:
</div>
<div class="node">
<a name="ipaddress"></a>
<a target="code" href="///C:/Users/Ed/AppData/Local/Programs/Python/Python39/lib/ipaddress.py" type="text/plain"><tt>ipaddress</tt></a>
<span class="moduletype">SourceModule</span> <div class="import">
imports:
<a href="#functools">functools</a>
&#8226; <a href="#re">re</a>
</div>
<div class="import">
imported by:
<a href="#psutil._common">psutil._common</a>
</div>
</div>
<div class="node">
<a name="itertools"></a>
<tt>itertools</tt> <span class="moduletype"><i>(builtin module)</i></span> <div class="import">
@ -7793,8 +7710,7 @@ imported by:
<a name="math"></a>
<tt>math</tt> <span class="moduletype"><i>(builtin module)</i></span> <div class="import">
imported by:
<a href="#RA3MP3Playback.py">RA3MP3Playback.py</a>
&#8226; <a href="#_pydecimal">_pydecimal</a>
<a href="#_pydecimal">_pydecimal</a>
&#8226; <a href="#asyncio.windows_events">asyncio.windows_events</a>
&#8226; <a href="#datetime">datetime</a>
&#8226; <a href="#fractions">fractions</a>
@ -8839,7 +8755,7 @@ imported by:
<a target="code" href="" type="text/plain"><tt>org</tt></a>
<span class="moduletype">MissingModule</span> <div class="import">
imported by:
<a href="#pickle">pickle</a>
<a href="#copy">copy</a>
</div>
@ -8943,16 +8859,12 @@ imported by:
&#8226; <a href="#platform">platform</a>
&#8226; <a href="#plistlib">plistlib</a>
&#8226; <a href="#posixpath">posixpath</a>
&#8226; <a href="#psutil">psutil</a>
&#8226; <a href="#psutil._common">psutil._common</a>
&#8226; <a href="#psutil._pswindows">psutil._pswindows</a>
&#8226; <a href="#py_compile">py_compile</a>
&#8226; <a href="#pydoc">pydoc</a>
&#8226; <a href="#pygame">pygame</a>
&#8226; <a href="#pygame.macosx">pygame.macosx</a>
&#8226; <a href="#pygame.pkgdata">pygame.pkgdata</a>
&#8226; <a href="#pygame.sysfont">pygame.sysfont</a>
&#8226; <a href="#pyi_rth__tkinter.py">pyi_rth__tkinter.py</a>
&#8226; <a href="#pyi_rth_inspect.py">pyi_rth_inspect.py</a>
&#8226; <a href="#pyi_rth_pkgres.py">pyi_rth_pkgres.py</a>
&#8226; <a href="#pyi_rth_pythoncom.py">pyi_rth_pythoncom.py</a>
@ -8970,7 +8882,6 @@ imported by:
&#8226; <a href="#tarfile">tarfile</a>
&#8226; <a href="#tempfile">tempfile</a>
&#8226; <a href="#threading">threading</a>
&#8226; <a href="#tkinter">tkinter</a>
&#8226; <a href="#urllib.request">urllib.request</a>
&#8226; <a href="#uu">uu</a>
&#8226; <a href="#uuid">uuid</a>
@ -9505,14 +9416,14 @@ imported by:
<a target="code" href="///C:/Users/Ed/AppData/Local/Programs/Python/Python39/lib/pickle.py" type="text/plain"><tt>pickle</tt></a>
<span class="moduletype">SourceModule</span> <div class="import">
imports:
<a href="#_compat_pickle">_compat_pickle</a>
<a href="#'org.python'">'org.python'</a>
&#8226; <a href="#_compat_pickle">_compat_pickle</a>
&#8226; <a href="#_pickle">_pickle</a>
&#8226; <a href="#codecs">codecs</a>
&#8226; <a href="#copyreg">copyreg</a>
&#8226; <a href="#functools">functools</a>
&#8226; <a href="#io">io</a>
&#8226; <a href="#itertools">itertools</a>
&#8226; <a href="#org">org</a>
&#8226; <a href="#pprint">pprint</a>
&#8226; <a href="#re">re</a>
&#8226; <a href="#struct">struct</a>
@ -10178,137 +10089,6 @@ imported by:
</div>
<div class="node">
<a name="psutil"></a>
<a target="code" href="///C:/Users/Ed/AppData/Local/Programs/Python/Python39/lib/site-packages/psutil/__init__.py" type="text/plain"><tt>psutil</tt></a>
<span class="moduletype">Package</span> <div class="import">
imports:
<a href="#collections">collections</a>
&#8226; <a href="#contextlib">contextlib</a>
&#8226; <a href="#datetime">datetime</a>
&#8226; <a href="#functools">functools</a>
&#8226; <a href="#os">os</a>
&#8226; <a href="#psutil">psutil</a>
&#8226; <a href="#psutil._common">psutil._common</a>
&#8226; <a href="#psutil._ntuples">psutil._ntuples</a>
&#8226; <a href="#psutil._psutil_windows">psutil._psutil_windows</a>
&#8226; <a href="#psutil._pswindows">psutil._pswindows</a>
&#8226; <a href="#pwd">pwd</a>
&#8226; <a href="#signal">signal</a>
&#8226; <a href="#socket">socket</a>
&#8226; <a href="#subprocess">subprocess</a>
&#8226; <a href="#sys">sys</a>
&#8226; <a href="#threading">threading</a>
&#8226; <a href="#time">time</a>
</div>
<div class="import">
imported by:
<a href="#RA3MP3Playback.py">RA3MP3Playback.py</a>
&#8226; <a href="#psutil">psutil</a>
&#8226; <a href="#psutil._common">psutil._common</a>
&#8226; <a href="#psutil._ntuples">psutil._ntuples</a>
&#8226; <a href="#psutil._psutil_windows">psutil._psutil_windows</a>
&#8226; <a href="#psutil._pswindows">psutil._pswindows</a>
</div>
</div>
<div class="node">
<a name="psutil._common"></a>
<a target="code" href="///C:/Users/Ed/AppData/Local/Programs/Python/Python39/lib/site-packages/psutil/_common.py" type="text/plain"><tt>psutil._common</tt></a>
<span class="moduletype">SourceModule</span> <div class="import">
imports:
<a href="#collections">collections</a>
&#8226; <a href="#ctypes">ctypes</a>
&#8226; <a href="#enum">enum</a>
&#8226; <a href="#functools">functools</a>
&#8226; <a href="#inspect">inspect</a>
&#8226; <a href="#ipaddress">ipaddress</a>
&#8226; <a href="#os">os</a>
&#8226; <a href="#psutil">psutil</a>
&#8226; <a href="#psutil._ntuples">psutil._ntuples</a>
&#8226; <a href="#socket">socket</a>
&#8226; <a href="#stat">stat</a>
&#8226; <a href="#sys">sys</a>
&#8226; <a href="#threading">threading</a>
&#8226; <a href="#warnings">warnings</a>
</div>
<div class="import">
imported by:
<a href="#psutil">psutil</a>
&#8226; <a href="#psutil._ntuples">psutil._ntuples</a>
&#8226; <a href="#psutil._pswindows">psutil._pswindows</a>
</div>
</div>
<div class="node">
<a name="psutil._ntuples"></a>
<a target="code" href="///C:/Users/Ed/AppData/Local/Programs/Python/Python39/lib/site-packages/psutil/_ntuples.py" type="text/plain"><tt>psutil._ntuples</tt></a>
<span class="moduletype">SourceModule</span> <div class="import">
imports:
<a href="#collections">collections</a>
&#8226; <a href="#psutil">psutil</a>
&#8226; <a href="#psutil._common">psutil._common</a>
</div>
<div class="import">
imported by:
<a href="#psutil">psutil</a>
&#8226; <a href="#psutil._common">psutil._common</a>
&#8226; <a href="#psutil._pswindows">psutil._pswindows</a>
</div>
</div>
<div class="node">
<a name="psutil._psutil_windows"></a>
<tt>psutil._psutil_windows</tt> <span class="moduletype"><tt>C:\Users\Ed\AppData\Local\Programs\Python\Python39\lib\site-packages\psutil\_psutil_windows.pyd</tt></span> <div class="import">
imports:
<a href="#psutil">psutil</a>
</div>
<div class="import">
imported by:
<a href="#psutil">psutil</a>
&#8226; <a href="#psutil._pswindows">psutil._pswindows</a>
</div>
</div>
<div class="node">
<a name="psutil._pswindows"></a>
<a target="code" href="///C:/Users/Ed/AppData/Local/Programs/Python/Python39/lib/site-packages/psutil/_pswindows.py" type="text/plain"><tt>psutil._pswindows</tt></a>
<span class="moduletype">SourceModule</span> <div class="import">
imports:
<a href="#contextlib">contextlib</a>
&#8226; <a href="#enum">enum</a>
&#8226; <a href="#functools">functools</a>
&#8226; <a href="#os">os</a>
&#8226; <a href="#psutil">psutil</a>
&#8226; <a href="#psutil._common">psutil._common</a>
&#8226; <a href="#psutil._ntuples">psutil._ntuples</a>
&#8226; <a href="#psutil._psutil_windows">psutil._psutil_windows</a>
&#8226; <a href="#signal">signal</a>
&#8226; <a href="#sys">sys</a>
&#8226; <a href="#threading">threading</a>
&#8226; <a href="#time">time</a>
</div>
<div class="import">
imported by:
<a href="#psutil">psutil</a>
</div>
</div>
<div class="node">
<a name="pwd"></a>
<a target="code" href="" type="text/plain"><tt>pwd</tt></a>
@ -10320,7 +10100,6 @@ imported by:
&#8226; <a href="#netrc">netrc</a>
&#8226; <a href="#pathlib">pathlib</a>
&#8226; <a href="#posixpath">posixpath</a>
&#8226; <a href="#psutil">psutil</a>
&#8226; <a href="#shutil">shutil</a>
&#8226; <a href="#subprocess">subprocess</a>
&#8226; <a href="#tarfile">tarfile</a>
@ -11709,7 +11488,6 @@ imported by:
&#8226; <a href="#http.cookiejar">http.cookiejar</a>
&#8226; <a href="#importlib.metadata">importlib.metadata</a>
&#8226; <a href="#inspect">inspect</a>
&#8226; <a href="#ipaddress">ipaddress</a>
&#8226; <a href="#locale">locale</a>
&#8226; <a href="#logging">logging</a>
&#8226; <a href="#packaging._manylinux">packaging._manylinux</a>
@ -11741,7 +11519,6 @@ imported by:
&#8226; <a href="#sysconfig">sysconfig</a>
&#8226; <a href="#tarfile">tarfile</a>
&#8226; <a href="#textwrap">textwrap</a>
&#8226; <a href="#tkinter">tkinter</a>
&#8226; <a href="#tokenize">tokenize</a>
&#8226; <a href="#typing">typing</a>
&#8226; <a href="#urllib.parse">urllib.parse</a>
@ -12137,8 +11914,6 @@ imported by:
&#8226; <a href="#multiprocessing.resource_sharer">multiprocessing.resource_sharer</a>
&#8226; <a href="#multiprocessing.resource_tracker">multiprocessing.resource_tracker</a>
&#8226; <a href="#pdb">pdb</a>
&#8226; <a href="#psutil">psutil</a>
&#8226; <a href="#psutil._pswindows">psutil._pswindows</a>
&#8226; <a href="#subprocess">subprocess</a>
&#8226; <a href="#winpty.ptyprocess">winpty.ptyprocess</a>
&#8226; <a href="#winpty.tests.test_ptyprocess">winpty.tests.test_ptyprocess</a>
@ -12182,8 +11957,6 @@ imported by:
&#8226; <a href="#multiprocessing.reduction">multiprocessing.reduction</a>
&#8226; <a href="#multiprocessing.resource_sharer">multiprocessing.resource_sharer</a>
&#8226; <a href="#platform">platform</a>
&#8226; <a href="#psutil">psutil</a>
&#8226; <a href="#psutil._common">psutil._common</a>
&#8226; <a href="#socketserver">socketserver</a>
&#8226; <a href="#ssl">ssl</a>
&#8226; <a href="#urllib.request">urllib.request</a>
@ -12331,7 +12104,6 @@ imported by:
&#8226; <a href="#pathlib">pathlib</a>
&#8226; <a href="#pkg_resources">pkg_resources</a>
&#8226; <a href="#posixpath">posixpath</a>
&#8226; <a href="#psutil._common">psutil._common</a>
&#8226; <a href="#shutil">shutil</a>
&#8226; <a href="#tarfile">tarfile</a>
&#8226; <a href="#zipfile">zipfile</a>
@ -12484,7 +12256,6 @@ imported by:
&#8226; <a href="#packaging._musllinux">packaging._musllinux</a>
&#8226; <a href="#packaging.tags">packaging.tags</a>
&#8226; <a href="#platform">platform</a>
&#8226; <a href="#psutil">psutil</a>
&#8226; <a href="#pydoc">pydoc</a>
&#8226; <a href="#pygame.sysfont">pygame.sysfont</a>
&#8226; <a href="#pyi_rth_multiprocessing.py">pyi_rth_multiprocessing.py</a>
@ -12604,9 +12375,6 @@ imported by:
&#8226; <a href="#platform">platform</a>
&#8226; <a href="#posixpath">posixpath</a>
&#8226; <a href="#pprint">pprint</a>
&#8226; <a href="#psutil">psutil</a>
&#8226; <a href="#psutil._common">psutil._common</a>
&#8226; <a href="#psutil._pswindows">psutil._pswindows</a>
&#8226; <a href="#py_compile">py_compile</a>
&#8226; <a href="#pydoc">pydoc</a>
&#8226; <a href="#pygame">pygame</a>
@ -12616,7 +12384,6 @@ imported by:
&#8226; <a href="#pygame.pkgdata">pygame.pkgdata</a>
&#8226; <a href="#pygame.rect">pygame.rect</a>
&#8226; <a href="#pygame.sysfont">pygame.sysfont</a>
&#8226; <a href="#pyi_rth__tkinter.py">pyi_rth__tkinter.py</a>
&#8226; <a href="#pyi_rth_inspect.py">pyi_rth_inspect.py</a>
&#8226; <a href="#pyi_rth_multiprocessing.py">pyi_rth_multiprocessing.py</a>
&#8226; <a href="#pyi_rth_pkgres.py">pyi_rth_pkgres.py</a>
@ -12640,7 +12407,6 @@ imported by:
&#8226; <a href="#tarfile">tarfile</a>
&#8226; <a href="#tempfile">tempfile</a>
&#8226; <a href="#threading">threading</a>
&#8226; <a href="#tkinter">tkinter</a>
&#8226; <a href="#tokenize">tokenize</a>
&#8226; <a href="#traceback">traceback</a>
&#8226; <a href="#types">types</a>
@ -12849,9 +12615,6 @@ imported by:
&#8226; <a href="#multiprocessing.synchronize">multiprocessing.synchronize</a>
&#8226; <a href="#multiprocessing.util">multiprocessing.util</a>
&#8226; <a href="#pkg_resources._vendor.pyparsing">pkg_resources._vendor.pyparsing</a>
&#8226; <a href="#psutil">psutil</a>
&#8226; <a href="#psutil._common">psutil._common</a>
&#8226; <a href="#psutil._pswindows">psutil._pswindows</a>
&#8226; <a href="#pydoc">pydoc</a>
&#8226; <a href="#pygame.threads">pygame.threads</a>
&#8226; <a href="#pywin.dialogs.status">pywin.dialogs.status</a>
@ -12897,8 +12660,6 @@ imported by:
&#8226; <a href="#multiprocessing.synchronize">multiprocessing.synchronize</a>
&#8226; <a href="#pkg_resources">pkg_resources</a>
&#8226; <a href="#pprint">pprint</a>
&#8226; <a href="#psutil">psutil</a>
&#8226; <a href="#psutil._pswindows">psutil._pswindows</a>
&#8226; <a href="#pydoc">pydoc</a>
&#8226; <a href="#pygame.threads">pygame.threads</a>
&#8226; <a href="#pywin.dialogs.status">pywin.dialogs.status</a>
@ -12923,46 +12684,6 @@ imported by:
</div>
<div class="node">
<a name="tkinter"></a>
<a target="code" href="///C:/Users/Ed/AppData/Local/Programs/Python/Python39/lib/tkinter/__init__.py" type="text/plain"><tt>tkinter</tt></a>
<span class="moduletype">Package</span> <div class="import">
imports:
<a href="#_tkinter">_tkinter</a>
&#8226; <a href="#enum">enum</a>
&#8226; <a href="#os">os</a>
&#8226; <a href="#re">re</a>
&#8226; <a href="#sys">sys</a>
&#8226; <a href="#tkinter.constants">tkinter.constants</a>
&#8226; <a href="#traceback">traceback</a>
&#8226; <a href="#types">types</a>
</div>
<div class="import">
imported by:
<a href="#RA3MP3Playback.py">RA3MP3Playback.py</a>
&#8226; <a href="#tkinter.constants">tkinter.constants</a>
</div>
</div>
<div class="node">
<a name="tkinter.constants"></a>
<a target="code" href="///C:/Users/Ed/AppData/Local/Programs/Python/Python39/lib/tkinter/constants.py" type="text/plain"><tt>tkinter.constants</tt></a>
<span class="moduletype">SourceModule</span> <div class="import">
imports:
<a href="#tkinter">tkinter</a>
</div>
<div class="import">
imported by:
<a href="#tkinter">tkinter</a>
</div>
</div>
<div class="node">
<a name="token"></a>
<a target="code" href="///C:/Users/Ed/AppData/Local/Programs/Python/Python39/lib/token.py" type="text/plain"><tt>token</tt></a>
@ -13037,7 +12758,6 @@ imported by:
&#8226; <a href="#pydoc">pydoc</a>
&#8226; <a href="#socketserver">socketserver</a>
&#8226; <a href="#threading">threading</a>
&#8226; <a href="#tkinter">tkinter</a>
&#8226; <a href="#warnings">warnings</a>
&#8226; <a href="#win32com.client.dynamic">win32com.client.dynamic</a>
&#8226; <a href="#win32com.server.dispatcher">win32com.server.dispatcher</a>
@ -13132,7 +12852,6 @@ imported by:
&#8226; <a href="#subprocess">subprocess</a>
&#8226; <a href="#sysconfig">sysconfig</a>
&#8226; <a href="#tempfile">tempfile</a>
&#8226; <a href="#tkinter">tkinter</a>
&#8226; <a href="#typing">typing</a>
&#8226; <a href="#urllib.parse">urllib.parse</a>
&#8226; <a href="#win32com">win32com</a>
@ -13494,7 +13213,6 @@ imported by:
&#8226; <a href="#pkg_resources._vendor.packaging.tags">pkg_resources._vendor.packaging.tags</a>
&#8226; <a href="#pkg_resources._vendor.pyparsing">pkg_resources._vendor.pyparsing</a>
&#8226; <a href="#pkgutil">pkgutil</a>
&#8226; <a href="#psutil._common">psutil._common</a>
&#8226; <a href="#pydoc">pydoc</a>
&#8226; <a href="#pygame">pygame</a>
&#8226; <a href="#pygame.sndarray">pygame.sndarray</a>

Binary file not shown.

BIN
dist/RA3WITHMP3.exe vendored

Binary file not shown.

BIN
quake3modern.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB