Пример #1
0
 public void OnSourceStateChange()
 {
     if (FlowModule.ConfirmSources(this.resourceSources, Ref.mainVessel == this.part.vessel))
     {
         return;
     }
     this.on.boolValue = false;
 }
Пример #2
0
 public void OnSourceStateChange()
 {
     if (this.throttle.floatValue == 0f)
     {
         return;
     }
     if (FlowModule.ConfirmSources(this.resourceSources, Ref.mainVessel == this.part.vessel))
     {
         return;
     }
     if (this.engineOn.boolValue)
     {
         this.ToggleEngine(false);
     }
 }
Пример #3
0
 /// <summary>
 /// フロー インターフェイスを呼び出します。
 /// </summary>
 /// <param name="module">呼び出しに用いるモジュール オブジェクト。</param>
 /// <param name="input">フィルタ処理の入力として与えるストレージ オブジェクトのシーケンス。</param>
 /// <param name="storage">ストレージ オブジェクトの入出力先として使用するストレージ。</param>
 /// <param name="parameter">処理のパラメータ。</param>
 /// <param name="arguments">処理の引数のリスト。</param>
 /// <param name="additionalData">処理の結果に付随して返される追加のデータ。このパラメータは初期化せずに渡されます。</param>
 /// <returns>処理の結果。</returns>
 public Object Invoke(
     FlowModule module,
     Object input,
     StorageModule storage,
     String parameter,
     IDictionary<String, String> arguments,
     out IDictionary<String, Object> additionalData
 )
 {
     IDictionary<String, Object> data = null;
     Object result = ((IEnumerable<Object>) Make.Array<Object>(storage, parameter, arguments))
         .If(
             a => this.RequiresInput,
             a => Make.Sequence(input).Concat(a)
         )
         .If(
             a => this.ReturnsAdditionalData,
             a => a.Concat(Make.Sequence<Object>(new Dictionary<String, Object>()))
         )
         .Do(a => this._method.Invoke(module, a.ToArray())
             .Let(_ => data = this.ReturnsAdditionalData
                 ? (IDictionary<String, Object>) a.Last()
                 : null
             )
         );
     storage.TryUpdate();
     additionalData = data;
     return result;
 }
Пример #4
0
 /// <summary>
 /// フロー インターフェイスを呼び出します。
 /// </summary>
 /// <param name="module">呼び出しに用いるモジュール オブジェクト。</param>
 /// <param name="input">フィルタ処理の入力として与えるストレージ オブジェクトのシーケンス。</param>
 /// <param name="session">ストレージ オブジェクトの入出力先として使用するストレージ セッション。</param>
 /// <param name="parameter">処理のパラメータ。</param>
 /// <param name="arguments">処理の引数のディクショナリ。</param>
 /// <param name="variables">リクエスト間で受け渡される変数のディクショナリ。</param>
 /// <returns>処理の結果。</returns>
 public Object Invoke(
     FlowModule module,
     Object input = null,
     StorageSession session = null,
     String parameter = null,
     IDictionary<String, String> arguments = null,
     IDictionary<String, Object> variables = null
 )
 {
     LinkedList<Object> args = new LinkedList<Object>();
     if(this.RequiresInput)
     {
         args.AddLast(input);
     }
     if(this.RequiresSession)
     {
         args.AddLast(session);
     }
     if(this.RequiresParameter)
     {
         args.AddLast(parameter ?? "");
     }
     if(this.RequiresArguments)
     {
         args.AddLast(arguments ?? new Dictionary<String, String>());
     }
     if(this.HandlesVariables)
     {
         args.AddLast(variables ?? new Dictionary<String, Object>());
     }
     Object output = this._method.Invoke(module, args.ToArray());
     if (session != null)
     {
         session.Update();
     }
     return output;
 }