from os import listdir
from os.path import join
from pygame.mixer import Channel, Sound, music, find_channel
from GameChild import *
from Input import *
class Audio(GameChild):
current_channel = None
paused = False
muted = False
def __init__(self, game):
GameChild.__init__(self, game)
self.delegate = self.get_delegate()
self.load_fx()
self.subscribe(self.respond)
def load_fx(self):
fx = {}
if self.get_configuration().has_option("audio", "sfx-path"):
root = self.get_resource("audio", "sfx-path")
if root:
for name in listdir(root):
fx[name.split(".")[0]] = Sound(join(root, name))
self.fx = fx
def respond(self, event):
if self.delegate.compare(event, "mute"):
self.mute()
def mute(self):
self.muted = True
self.set_volume()
def unmute(self):
self.muted = False
self.set_volume()
def set_volume(self):
volume = int(not self.muted)
music.set_volume(volume)
if self.current_channel:
self.current_channel.set_volume(volume)
def play_bgm(self, path, stream=False):
self.stop_current_channel()
if stream:
music.load(path)
music.play(-1)
else:
self.current_channel = Sound(path).play(-1)
self.set_volume()
def stop_current_channel(self):
music.stop()
if self.current_channel:
self.current_channel.stop()
self.current_channel = None
self.paused = False
def play_fx(self, name, panning=.5):
if not self.muted:
channel = find_channel(True)
if panning != .5:
offset = 1 - abs(panning - .5) * 2
if panning < .5:
channel.set_volume(1, offset)
else:
channel.set_volume(offset, 1)
channel.play(self.fx[name])
def pause(self):
channel = self.current_channel
paused = self.paused
if paused:
music.unpause()
if channel:
channel.unpause()
else:
music.pause()
if channel:
channel.pause()
self.paused = not paused
def is_bgm_playing(self):
current = self.current_channel
if current and current.get_sound():
return True
return music.get_busy()
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>E.S.P. Hadouken</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<link rel="shortcut icon" href="resource/img/web/auso.ico" />
<link rel="image_src" href="resource/img/web/dO-Kimu.png" />
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="title" content="E.S.P. Hadouken" />
<meta name="description"
content="Step~ out~ of~ the~ wave~" />
<meta name="viewport"
content="width=device-width; initial-scale=1; maximum-scale=1;
user-scalable=no;"/>
</head>
<body>
<div id="main">
<div id="intro">
<div>
Step~ out~ of~ the~ wave~
</div>
</div>
<img src="resource/img/web/caps/Fri-May-11-12:11:45-2012.png" alt="" />
<img src="resource/img/web/caps/Tue-Apr-17-14:24:40-2012.png" alt="" />
<img src="resource/img/web/caps/Sat-May-26-14:44:13-2012.png" alt="" />
<img src="resource/img/web/caps/Sat-May-26-14:46:59-2012.png" alt="" />
<img src="resource/img/web/caps/Sat-May-26-14:46:25-2012.png" alt="" />
<div id="links">
<a href="dist/E.S.P.-Hadouken-0.2.1-win.zip">Windows</a><br />
<a href="dist/E.S.P.-Hadouken-0.2.1.tar.gz">Linux/Source</a><br />
</div>
<div id="footer">
<a href="/">← BACK</a>
</div>
</div>
</body>
</html>
<?php
function get_file_size($file_name)
{
return sprintf("%.1f MB", filesize("dist/" . $file_name) / 1000000.0);
}
?>
from distutils.core import setup
from distutils.command.install_data import install_data
from os import system, chmod
from os.path import join, exists, basename
from esp_hadouken.Setup import *
config = Setup.config
CLASSIFIERS = ["Topic :: Games/Entertainment",
"Topic :: Games/Entertainment :: Arcade",
"Topic :: Software Development :: Libraries :: pygame",
"Programming Language :: Python :: 2.6",
"Environment :: X11 Applications",
"Development Status :: 4 - Beta",
"License :: Freely Distributable",
"License :: DFSG Compatible",
"Operating System :: OS Independent"]
class hi_scores_install(install_data):
def copy_file(self, infile, outfile):
if self.is_high_scores_file(infile) and exists(join(outfile, infile)):
print "leaving existing hi-scores file"
return "", ""
return install_data.copy_file(self, infile, outfile)
def run(self):
install_data.run(self)
for path in self.outfiles:
if self.is_high_scores_file(path):
print "making hi-scores globally writable"
chmod(path, 0666)
def is_high_scores_file(self, path):
return basename(path) == "hi-scores"
Setup.remove_old_mainfest()
system("mv hi-scores hi-scores.bk")
system("touch hi-scores")
setup(cmdclass={"install_data": hi_scores_install},
name=Setup.translate_title(),
version=config["game-version"],
description=config["game-summary"],
long_description=Setup.build_description(),
license=config["game-license"],
platforms=config["game-platforms"],
author=config["contact-name"],
author_email=config["contact-email"],
url=config["game-url"],
download_url=config["game-url"],
packages=Setup.build_package_list(),
scripts=["esp-hadouken"],
classifiers=CLASSIFIERS,
requires=["pygame"],
data_files=Setup.build_data_map())
system("mv hi-scores.bk hi-scores")