Ejemplo n.º 1
0
 //***** GXTK API *****
 //
 public virtual int Suspend()
 {
     if (musicEnabled && musicState == 1)
     {
         if (MediaPlayer.State == MediaState.Playing)
         {
             MediaPlayer.Pause();
             musicState = 3;
         }
         else
         {
             musicState = 0;
         }
     }
     for (int i = 0; i < 33; ++i)
     {
         gxtkChannel chan = channels[i];
         if (chan.state != 1)
         {
             continue;
         }
         if (chan.inst.State != SoundState.Playing)
         {
             chan.state = 0;
             continue;
         }
         chan.inst.Pause();
         chan.state = 3;
     }
     return(0);
 }
Ejemplo n.º 2
0
 public gxtkAudio()
 {
     for (int i = 0; i < 32; ++i)
     {
         _channels[i] = new gxtkChannel();
     }
 }
Ejemplo n.º 3
0
    public gxtkAudio()
    {
        musicEnabled = MediaPlayer.GameHasControl;

        for (int i = 0; i < 33; ++i)
        {
            channels[i] = new gxtkChannel();
        }
    }
Ejemplo n.º 4
0
    public virtual int ChannelState(int channel)
    {
        gxtkChannel chan = _channels[channel];

        if (chan.player != null && chan.player.Status == SoundStatus.Playing)
        {
            return(1);
        }

        return(0);
    }
Ejemplo n.º 5
0
    public virtual int StopChannel(int channel)
    {
        gxtkChannel chan = channels[channel];

        if (chan.state != 0)
        {
            chan.inst.Stop();
            chan.state = 0;
        }
        return(0);
    }
Ejemplo n.º 6
0
    public virtual int PauseChannel(int channel)
    {
        gxtkChannel chan = channels[channel];

        if (chan.state == 1)
        {
            chan.inst.Pause();
            chan.state = 2;
        }
        return(0);
    }
Ejemplo n.º 7
0
    public virtual int ResumeChannel(int channel)
    {
        gxtkChannel chan = channels[channel];

        if (chan.state == 2)
        {
            chan.inst.Resume();
            chan.state = 1;
        }
        return(0);
    }
Ejemplo n.º 8
0
    public virtual int SetRate(int channel, float rate)
    {
        gxtkChannel chan = channels[channel];

        if (chan.state != 0)
        {
            chan.inst.Pitch = (float)(Math.Log(rate) / Math.Log(2));
        }

        chan.rate = rate;
        return(0);
    }
Ejemplo n.º 9
0
    public virtual int SetRate(int channel, float rate)
    {
        gxtkChannel chan = _channels[channel];

        if (chan.player != null)
        {
            chan.player.PlaybackRate = rate;
        }
        chan.rate = rate;

        return(0);
    }
Ejemplo n.º 10
0
    public virtual int SetPan(int channel, float pan)
    {
        gxtkChannel chan = _channels[channel];

        if (chan.player != null)
        {
            chan.player.Pan = pan;
        }
        chan.pan = pan;

        return(0);
    }
Ejemplo n.º 11
0
    public virtual int SetVolume(int channel, float volume)
    {
        gxtkChannel chan = _channels[channel];

        if (chan.player != null)
        {
            chan.player.Volume = volume;
        }
        chan.volume = volume;

        return(0);
    }
Ejemplo n.º 12
0
    public virtual int SetPan(int channel, float pan)
    {
        gxtkChannel chan = channels[channel];

        if (chan.state != 0)
        {
            chan.inst.Pan = pan;
        }

        chan.pan = pan;
        return(0);
    }
Ejemplo n.º 13
0
    public virtual int SetVolume(int channel, float volume)
    {
        gxtkChannel chan = channels[channel];

        if (chan.state != 0)
        {
            chan.inst.Volume = volume;
        }

        chan.volume = volume;
        return(0);
    }
Ejemplo n.º 14
0
    public virtual int StopChannel(int channel)
    {
        gxtkChannel chan = _channels[channel];

        if (chan.player != null)
        {
            chan.player.Stop();
            chan.player.Dispose();
            chan.player = null;
            chan.sound  = null;
        }

        return(0);
    }
Ejemplo n.º 15
0
    public virtual int ChannelState(int channel)
    {
        gxtkChannel chan = channels[channel];

        if (chan.state == 1)
        {
            if (chan.inst.State != SoundState.Playing)
            {
                chan.state = 0;
            }
        }
        else if (chan.state == 3)
        {
            return(1);
        }

        return(chan.state);
    }
Ejemplo n.º 16
0
 public virtual int Resume()
 {
     for (int i = 0; i < 33; ++i)
     {
         gxtkChannel chan = channels[i];
         if (chan.state != 3)
         {
             continue;
         }
         chan.inst.Resume();
         chan.state = 1;
     }
     if (musicEnabled && musicState == 3)
     {
         MediaPlayer.Resume();
         musicState = 1;
     }
     return(0);
 }
Ejemplo n.º 17
0
    public virtual int PlaySample(gxtkSample sample, int channel, int flags)
    {
        gxtkChannel chan = channels[channel];

        if (chan.state != 0)
        {
            chan.inst.Stop();
        }

        SoundEffectInstance inst = sample.AllocInstance((flags & 1) != 0);

        if (inst == null)
        {
            chan.state = 0;
            return(-1);
        }

        for (int i = 0; i < 33; ++i)
        {
            gxtkChannel chan2 = channels[i];
            if (chan2.inst == inst)
            {
                chan2.sample = null;
                chan2.inst   = null;
                chan2.state  = 0;
                break;
            }
        }

        inst.Volume = chan.volume;
        inst.Pan    = chan.pan;
        inst.Pitch  = (float)(Math.Log(chan.rate) / Math.Log(2));
        inst.Play();

        chan.sample = sample;
        chan.inst   = inst;
        chan.state  = 1;

        return(0);
    }
Ejemplo n.º 18
0
    public virtual int PlaySample(gxtkSample sample, int channel, int flags)
    {
        gxtkChannel chan = _channels[channel];

        for (int i = 0; i < 32; ++i)
        {
            gxtkChannel chan2 = _channels[i];
            if (chan2.sound == sample._sound && chan2.player.Status == SoundStatus.Stopped)
            {
                chan2.player.Dispose();
                chan2.player = null;
                chan2.sound  = null;
            }
        }

        SoundPlayer player = sample._sound.CreatePlayer();

        if (player == null)
        {
            return(-1);
        }

        if (chan.player != null)
        {
            chan.player.Stop();
            chan.player.Dispose();
        }

        player.Volume       = chan.volume;
        player.Pan          = chan.pan;
        player.PlaybackRate = chan.rate;
        player.Loop         = (flags & 1) != 0 ? true : false;
        player.Play();

        chan.player = player;
        chan.sound  = sample._sound;

        return(0);
    }
Ejemplo n.º 19
0
    public gxtkAudio()
    {
        musicEnabled=MediaPlayer.GameHasControl;

        for( int i=0;i<33;++i ){
            channels[i]=new gxtkChannel();
        }
    }
Ejemplo n.º 20
0
    public virtual int ResumeChannel(int channel)
    {
        gxtkChannel chan = _channels[channel];

        return(-1);
    }