Exemple #1
0
 /// <summary>
 /// AirableノーツからAirを取り外します。
 /// 失敗した場合、出力引数はnullになります。
 /// </summary>
 public bool DetachAirFromAirableNote(AirableNote airable, out Air air)
 {
     air = null;
     if (airable == null)
     {
         Logger.Error("引数のAirableNoteがnullのため、操作を行えません。");
         return(false);
     }
     if (!airable.IsAirAttached)
     {
         Logger.Error("Air取り外し対象のAirableNoteにはAirが取り付けられていませんでした。");
         return(false);
     }
     air = airable.Air;
     airable.DetachAir();
     airNotes.Remove(air);
     return(true);
 }
Exemple #2
0
 /// <summary>
 /// AirableノーツからAirHoldおよびAirUpCを取り外します。
 /// AirHoldを取り外せた場合成功(true)となりますが、その場合AirUpCの出力引数がnullである可能性もあります。
 /// </summary>
 public bool DetachAirHoldFromAirableNote(AirableNote airable, out AirHold airHold, out AirUpC air)
 {
     air = null;
     if (!DetachAirHoldFromAirableNote(airable, out airHold))
     {
         return(false);
     }
     if (airable.IsAirAttached)
     {
         // NOTE: 本来AirHoldは単体で配置できず、かならずAirUpCが伴うはずであるが、何らかの原因でそうではない場合のために処理を分岐する。
         air = airable.Air as AirUpC;
         if (air != null)
         {
             airable.DetachAir();
             airNotes.Remove(air);
         }
         else
         {
             // NOTE: 取り付けられていたAirがAirUpCでないときはAirを取り外さず、出力引数airもnullとなる。
             Logger.Warn("取り付けられていたAirはAirUpCではありませんでした。Airを削除しません。");
         }
     }
     return(true);
 }