Updated the launcher and its utilities.

This commit is contained in:
Quantum 2013-10-30 19:09:04 -04:00
parent 2746338e22
commit b1eebd1769
3 changed files with 23 additions and 19 deletions

View file

@ -3,19 +3,33 @@ import json
import os import os
import sys import sys
import uuid import uuid
import imp
def load_dll(dir, module):
name = 'punyverse.' + module
path = os.path.join(dir, 'punyverse', module + '.pyd')
if not os.path.exists(path):
path = os.path.join(dir, 'punyverse.%s.pyd' % module)
if not os.path.exists(path):
raise ImportError('No module named %s' % module)
return imp.load_dynamic(name, path)
if __name__ == '__main__': if __name__ == '__main__':
try: try:
dir = os.path.dirname(sys.executable) dir = os.path.dirname(sys.executable)
if sys.frozen == 'windows_exe': if sys.frozen == 'windows_exe':
sys.stdout = open(os.path.join(dir, 'punyverse.log'), 'a') sys.stderr = open(os.path.join(dir, 'punyverse.log'), 'a')
except AttributeError: except AttributeError:
sys.exit('This is only meant to be ran frozen.') sys.exit('This is only meant to be ran frozen.')
sys.path.insert(0, dir) sys.path.insert(0, dir)
import punyverse._model # Model indirectly depends on _glgeom to handle textures
import punyverse._glgeom load_dll(dir, '_glgeom')
# Model path needs special handling
_model = load_dll(dir, '_model')
_model.model_base = os.path.join(dir, 'punyverse', 'assets', 'models')
with open('punyverse\__main__.py', 'r') as code: with open('punyverse\__main__.py', 'r') as code:
exec(code) exec(code)

View file

@ -5,29 +5,15 @@ import sys
import os import os
import shutil import shutil
sys.argv.append('py2exe') if len(sys.argv) < 2:
sys.argv.append('py2exe')
data = []
parent = os.path.dirname(__file__) parent = os.path.dirname(__file__)
join = os.path.join join = os.path.join
resources = [(r'punyverse\assets\textures', ['*.*']),
(r'punyverse\assets\textures\moons', ['*.*']),
(r'punyverse\assets\models\asteroids', ['*.obj', '*.mtl']),
(r'punyverse\assets\models\satellites', ['*.jpg', '*.obj', '*.mtl']),
(r'punyverse', ['*.py', '*.json', '*.pyx', '*.pxi', '*.pyd'])]
for res in resources:
dir, patterns = res
for pattern in patterns:
for file in glob(join(dir, pattern)):
data.append((dir, [join(parent, file)]))
setup( setup(
console=[{'dest_base': 'punyverse_debug', 'script': 'bootloader.py'}, 'small_images.py'], console=[{'dest_base': 'punyverse_debug', 'script': 'bootloader.py'}, 'small_images.py'],
windows=[{'dest_base': 'punyverse', 'script': 'bootloader.py'}], windows=[{'dest_base': 'punyverse', 'script': 'bootloader.py'}],
data_files=data,
options={'py2exe': { options={'py2exe': {
'unbuffered': True, 'optimize': 2, 'unbuffered': True, 'optimize': 2,
'excludes': [ 'excludes': [
@ -36,6 +22,7 @@ setup(
'pyglet.media.drivers.alsa', 'pyglet.media.drivers.alsa',
'win32wnet', 'netbios', 'pgmagick' 'win32wnet', 'netbios', 'pgmagick'
], ],
'includes': ['punyverse._model', 'punyverse._glgeom'],
'dll_excludes': ['MPR.dll', 'w9xpopen.exe'], 'dll_excludes': ['MPR.dll', 'w9xpopen.exe'],
} }
} }

View file

@ -48,6 +48,9 @@ except ImportError:
return image.size return image.size
def scale(image, width, height): def scale(image, width, height):
original_width, original_height = image.size
if width * 3 < original_width and height * 3 < original_height:
image = image.resize((width * 2, height * 2))
return image.resize((width, height), Image.ANTIALIAS) return image.resize((width, height), Image.ANTIALIAS)
def save(image, file): def save(image, file):