Beispiel #1
0
 public Switch(string name)
 {
     this.name    = name;
     onState      = new OnState();
     offState     = new OffState();
     currentState = onState;
 }
Beispiel #2
0
 public TV()
 {
     OffState     = new OffState(this);
     OnState      = new OnState(this);
     StandbyState = new StandbyState(this);
     StartState   = new StartState(this);
     currentState = OffState;
 }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
        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);
                }
            }
        }
Beispiel #8
0
        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();
        }
Beispiel #9
0
        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);
        }
Beispiel #11
0
 static Switch()
 {
     onState      = new OnState();
     offState     = new OffState();
     currentState = offState;
 }
Beispiel #12
0
 private void NotifyState()
 {
     Debug.Log($"{AdType} has entered state {State} (error={HasError}, loading={IsLoading}, showing={IsShowing})");
     OnState?.Invoke(this, State);
 }