public Switch(string name) { this.name = name; onState = new OnState(); offState = new OffState(); currentState = onState; }
public TV() { OffState = new OffState(this); OnState = new OnState(this); StandbyState = new StandbyState(this); StartState = new StartState(this); currentState = OffState; }
public static void StateButton(String text, int state, int value, OnState onStateChange, params GUILayoutOption[] options) { bool result; if ((result = GUILayout.Toggle(state == value, text, GUI.skin.button, options)) != (state == value)) { onStateChange.Invoke(result ? value : ~value); } }
public static void GroupButton(int wide, String[] text, ref int group, OnState onStateChange, params GUILayoutOption[] options) { int group2; if ((group2 = GUILayout.SelectionGrid(group, text, wide, options)) != group) { group = group2; onStateChange.Invoke(group2); } }
private void Start() { var offState = new OffState(); var onState = new OnState(); AddTransition(offState, onState, () => { return(Input.GetKeyDown(KeyCode.Space)); }); AddTransition(onState, offState, () => { return(Input.GetKeyDown(KeyCode.Space)); }); _initialState = offState; ChangeToInitialState(); OnStateEnter += HandleStateChange; }
private void _checkTrendLines(OnState mystate, ChartTrendLine OneLine = null) { if (OneLine != null) { _manageTrendLine(mystate, OneLine); return; } // --> Prelevo le trendline dal grafico generale ChartTrendLine[] alltrendlines = Chart.FindAllObjects <ChartTrendLine>(); // --> Le passo al setaccio foreach (ChartTrendLine myline in alltrendlines) { _manageTrendLine(mystate, myline); } }
private async void ListenTask() { while (true) { try { var result = await udpServer.ReceiveAsync(); var data = Encoding.ASCII.GetString(result.Buffer); OnStateRaw?.Invoke(data); OnState?.Invoke(TelloState.FromString(data)); } catch (Exception ex) { OnException?.Invoke(ex); } } }
static void Main(string[] args) { #region [Reflection] //var assemblyType = typeof(Mp3PlayerManager).Assembly.GetTypes(); //var mp3Type = typeof(Mp3PlayerManager); //foreach (var t in assemblyType) //{ // Console.WriteLine($"(FullName: {t.Name}, IsAssignable Mp3PlayerManager From { t.Name } : { typeof(Mp3PlayerManager).IsAssignableFrom(t) } , Has CassetteState Attribute : {t.GetCustomAttribute(typeof(CassetteStateAttribute))} "); //} #endregion //var cassette = new Cassette() { Id = 1, Name = "Schiller", State = State.Play }; // cassette.CurrentState.Pause();; //var cassette2 = new Cassette() { Id = 1, Name = "Schiller", State = State.Pause }; //cassette.CurrentState.Play(); #region Turn Lamp On or OFF var currentState = new LampManager(); var on = new OnState(); on.PressPlay(currentState); var off = new OffState(); off.PressPlay(currentState); Console.WriteLine($"latest state is : {currentState.StateName} "); #endregion Console.ReadLine(); }
private void Start() { var offState = new OffState(); var onState = new OnState(); var heatingUpState = new HeatingUpState(); var heatedUpState = new HeatedUpState(); onState.AddChildAsInitialState(heatingUpState); onState.AddChild(heatedUpState); AddTransition(offState, onState, () => { return(Input.GetKeyDown(KeyCode.W)); }); AddTransition(onState, offState, () => { return(Input.GetKeyDown(KeyCode.S)); }); AddTransition(heatingUpState, heatedUpState, () => { return(Input.GetKeyDown(KeyCode.Space)); }); _initialState = offState; ChangeToInitialState(); OnStateExit += HandleStatExit; OnStateEnter += HandleStateEnter; }
private void _manageTrendLine(OnState mystate, ChartTrendLine myline) { // --> Se non è inizializzata non devo fare nulla if (myline.Comment == null) { return; } // --> Potrebbe essere in un protoccollo non in linea con le aspettative string[] directive = myline.Comment.Split(Flag.Separator); // --> Aggiorno il feedback visivo if (!_checkFeedback(myline, directive)) { return; } // --> Se la trendline non è infinita allora devo controllare il tempo, inizio con le scadute if (!myline.ExtendToInfinity && myline.Time1 < Bars.LastBar.OpenTime && myline.Time2 < Bars.LastBar.OpenTime) { myline.ToDelivered(); return; } else if (myline.Time1 > Bars.LastBar.OpenTime && myline.Time2 > Bars.LastBar.OpenTime) { // --> Sono nel futuro, non opero return; } // --> Prelevo il prezzo della trendline double lineprice = Math.Round(myline.CalculateY(Chart.BarsTotal - 1), Symbol.Digits); switch (mystate) { // --> Solo controlli per le bar, case OnState.Bar: // --> Prelevo lo stato attuale del prezzo CurrentStateLine myPricePosition = _checkCurrentState(lineprice); if (myPricePosition == CurrentStateLine.OverBar) { if (directive[0] == Flag.OverBar) { _alert(myline, directive[4]); directive[0] = Flag.DISABLED; } if (directive[1] == Flag.OverBar) { _close(myline); directive[1] = Flag.DISABLED; } if (directive[2] == Flag.OpenBuyStopBar) { _open(myline, TradeType.Buy, directive[3]); directive[2] = Flag.DISABLED; } } else if (myPricePosition == CurrentStateLine.UnderBar) { if (directive[0] == Flag.UnderBar) { _alert(myline, directive[4]); directive[0] = Flag.DISABLED; } if (directive[1] == Flag.UnderBar) { _close(myline); directive[1] = Flag.DISABLED; } if (directive[2] == Flag.OpenSellStopBar) { _open(myline, TradeType.Sell, directive[3]); directive[2] = Flag.DISABLED; } } else if (myPricePosition == CurrentStateLine.OnGAP) { double gapBar = Math.Round(Math.Abs(Bars.ClosePrices.Last(1) - Bars.OpenPrices.Last(0)) / Symbol.PipSize, 2); // --> Procedo se il GAP è nella norma if (gapBar <= MaxGAPBar) { _alert(myline, directive[4]); _close(myline); switch (directive[2]) { case Flag.OpenBuyStopBar: _open(myline, TradeType.Buy, directive[3]); break; case Flag.OpenSellStopBar: _open(myline, TradeType.Sell, directive[3]); break; } _log("GAP (" + gapBar + ") then Triggered (check cBot setup)"); } else { _log("GAP (" + gapBar + ") then Disabled (check cBot setup)"); } // --> Disabilito a prescindere directive[0] = Flag.DISABLED; directive[1] = Flag.DISABLED; directive[2] = Flag.DISABLED; } break; default: // --> Prelevo lo stato attuale del prezzo CurrentStateLine myPricePositionForAsk = _checkCurrentState(lineprice, Ask); CurrentStateLine myPricePositionForBid = _checkCurrentState(lineprice, Bid); if (myPricePositionForAsk == CurrentStateLine.Over) { if (directive[0] == Flag.Over) { _alert(myline, directive[4]); directive[0] = Flag.DISABLED; } /* * if (directive[1] == Flag.Over) * { * * _close(myline); * directive[1] = Flag.DISABLED; * * } */ if (directive[2] == Flag.OpenBuyStop) { _open(myline, TradeType.Buy, directive[3]); directive[2] = Flag.DISABLED; } } else if (myPricePositionForAsk == CurrentStateLine.Under) { if (directive[0] == Flag.Under) { _alert(myline, directive[4]); directive[0] = Flag.DISABLED; } if (directive[1] == Flag.Under) { _close(myline); directive[1] = Flag.DISABLED; } if (directive[2] == Flag.OpenBuyLimit) { _open(myline, TradeType.Buy, directive[3]); directive[2] = Flag.DISABLED; } } if (myPricePositionForBid == CurrentStateLine.Over) { if (directive[0] == Flag.Over) { _alert(myline, directive[4]); directive[0] = Flag.DISABLED; } if (directive[1] == Flag.Over) { _close(myline); directive[1] = Flag.DISABLED; } if (directive[2] == Flag.OpenSellLimit) { _open(myline, TradeType.Sell, directive[3]); directive[2] = Flag.DISABLED; } } else if (myPricePositionForBid == CurrentStateLine.Under) { if (directive[0] == Flag.Under) { _alert(myline, directive[4]); directive[0] = Flag.DISABLED; } /* * if (directive[1] == Flag.Under) * { * * _close(myline); * directive[1] = Flag.DISABLED; * * } */ if (directive[2] == Flag.OpenSellStop) { _open(myline, TradeType.Sell, directive[3]); directive[2] = Flag.DISABLED; } } break; } // --> Ricostruisco le direttive myline.Comment = string.Join("/", directive); }
static Switch() { onState = new OnState(); offState = new OffState(); currentState = offState; }
private void NotifyState() { Debug.Log($"{AdType} has entered state {State} (error={HasError}, loading={IsLoading}, showing={IsShowing})"); OnState?.Invoke(this, State); }