PLSound.cs 2.65 KB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace GeneralLib
{
    public class PLSound
    {
        class PlayForm
        {
            public string path = "";
            public FrmPLSound frmSound = null;
        }

        private Dictionary<string, PlayForm> KeyPath = null;

        public PLSound()
        {
            KeyPath = new Dictionary<string, PlayForm>();
        }

        public bool InitSound(Control owner)
        {
            return true;
        }

        public void LoadSound(string key, string filePath, int mixCount)
        {
            LoadSound(key, filePath);
        }

        public void LoadSound(string key, string filePath)
        {
            PlayForm playForm = new PlayForm();
            playForm.path = filePath;
            //playForm.frmSound = new FrmPLSound();

            KeyPath.Add(key, playForm);
        }

        public void RemoveSound(string key)
        {
            Stop(key);
            if (KeyPath.ContainsKey(key))
            {
                if (KeyPath[key].frmSound != null)
                    KeyPath[key].frmSound.Close();
                KeyPath.Remove(key);
            }
        }

        public void RemoveSoundAll()
        {
            StopAll();
            foreach (string key in KeyPath.Keys)
            {
                if (KeyPath[key].frmSound != null)
                    KeyPath[key].frmSound.Close();
            }
            KeyPath.Clear();
        }

        private void PlayMusic(string key, bool isLoop)
        {
            try
            {
                string path = "";
                if (KeyPath.ContainsKey(key))
                    path = KeyPath[key].path;
                else
                    return;

                if (KeyPath[key].frmSound == null) KeyPath[key].frmSound = new FrmPLSound();
                KeyPath[key].frmSound.Play(key, path, isLoop);
            }
            catch (Exception ex)
            {
                SystemLog.WriterLog(ex);
            }
        }

        public void Play(string key)
        {
            PlayMusic(key, false);
        }

        public void PlayLoop(string key)
        {
            PlayMusic(key, true);
        }

        public void Stop(string key)
        {
            if (KeyPath.ContainsKey(key))
            {
                if (KeyPath[key].frmSound != null)
                    KeyPath[key].frmSound.Stop(key);
            }
        }

        public void StopAll()
        {
            foreach (string key in KeyPath.Keys)
            {
                Stop(key);
            }
        }

    }
}