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="/">&larr; 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")
216.73.216.58
216.73.216.58
216.73.216.58
 
June 6, 2016