Ejemplo n.º 1
0
        public static bool EachFrame()         // ret: ? 処理した。
        {
            if (1 <= PlayInfos.Count)
            {
                PlayInfo info = PlayInfos.Dequeue();

                if (info != null)
                {
                    switch (info.AlterCommand)
                    {
                    case PlayInfo.AlterCommand_e.NORMAL:
                        info.SE.HandleIndex++;
                        info.SE.HandleIndex %= info.SE.Sound.HandleCount;

                        if (DDSoundUtils.IsPlaying(info.SE.Sound.GetHandle(info.SE.HandleIndex)))
                        {
                            for (info.SE.HandleIndex = 0; info.SE.HandleIndex < info.SE.Sound.HandleCount; info.SE.HandleIndex++)
                            {
                                if (!DDSoundUtils.IsPlaying(info.SE.Sound.GetHandle(info.SE.HandleIndex)))
                                {
                                    goto foundNotPlaying;
                                }
                            }

                            //info.SE.HandleIndex = info.SE.Sound.HandleCount;
                            info.SE.Sound.Extend();

                            //ProcMain.WriteLog("音を拡張しました。" + info.SE.Sound.HandleCount);
                        }
foundNotPlaying:
                        DDSoundUtils.Play(info.SE.Sound.GetHandle(info.SE.HandleIndex));
                        break;

                    case PlayInfo.AlterCommand_e.STOP:
                        for (int index = 0; index < info.SE.Sound.HandleCount; index++)
                        {
                            DDSoundUtils.Stop(info.SE.Sound.GetHandle(index));
                        }
                        break;

                    case PlayInfo.AlterCommand_e.LOOP:
                        DDSoundUtils.Play(info.SE.Sound.GetHandle(0), false);
                        break;

                    default:
                        throw new DDError();
                    }
                    return(true);
                }
            }
            return(false);
        }
Ejemplo n.º 2
0
        public bool IsPlaying()
        {
            if (this.Handles != null)
            {
                for (int index = 0; index < this.HandleCount; index++)
                {
                    if (DDSoundUtils.IsPlaying(this.Handles[index]))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }