public void Push(IMusicGun gun, IMusicAmmo ammo) { if (m_table.TryGetValue(gun, out var player)) { player.Push(ammo); } }
/// <summary> /// 履歴をクリアして再生 /// </summary> public void Play(IMusicAmmo ammo) { m_history.Clear(); m_history.Push(ammo); PlayCore(ammo); }
private void PlayCore(IMusicAmmo ammo) { var playback = m_gun.Fire(ammo); var shot = m_gun.Shot(this, playback); m_playList.Add(playback); m_shot = shot; }
/// <summary> /// 履歴を戻して再生 /// </summary> /// <param name="ammo"></param> public void Push(IMusicAmmo ammo) { if (m_history.Count > 0) { var current = m_history.Peek(); if (ammo == current) { // 同じBGMだったら無視 return; } } m_history.Push(ammo); PlayCore(ammo); }
public abstract IMusicPlayback Fire(IMusicAmmo ammo);
public IMusicPlayback Fire(IMusicAmmo ammo) { return(m_barrel.Fire(ammo)); }
/// <summary> /// 履歴に積んで再生 /// </summary> internal static void Push(IMusicGun gun, IMusicAmmo ammo) { Shooter?.Push(gun, ammo); }
//================================= // Method //================================= /// <summary> /// 通常再生 /// </summary> /// <param name="ammo"></param> internal static void Fire(IMusicGun gun, IMusicAmmo ammo) { Shooter?.Fire(gun, ammo); }