Пример #1
0
        public override List <Signal> Process(List <Signal> e)
        {
            List <Signal> filteredSignal = new List <Signal>();
            //do some parameter process
            //according to the input channels that is selected, call the actual function and process each signal.
            var groupbyPMU = e.GroupBy(x => x.PMUName).ToDictionary(y => y.Key, y => y.ToList());

            foreach (var gr in groupbyPMU)
            {
                if (InputSignals.Contains(gr.Key))
                {
                    for (int i = 0; i < gr.Value.Count(); i++)
                    {
                        if (i == 0)
                        {
                            Filters.PMUflagFilt(gr.Value[i]);
                        }
                        else
                        {
                            gr.Value[i].Flags = new List <bool>(gr.Value[0].Flags);
                        }
                        filteredSignal.Add(gr.Value[i]);
                    }
                }
            }
            return(filteredSignal);
        }
Пример #2
0
        protected override void mapBindings()
        {
            base.mapBindings();


            _uiSignals    = injectionBinder.BindCrossContextSingletonSafely <UISignals>();
            _gameSignals  = injectionBinder.BindCrossContextSingletonSafely <GameSignals>();
            _inputSignals = injectionBinder.BindCrossContextSingletonSafely <InputSignals>();
            _srSignals    = injectionBinder.BindCrossContextSingletonSafely <SRSignals>();


            //Injection Bindings
            injectionBinder.Bind <IPoolModel>().To <PoolModel>().CrossContext().ToSingleton();
            injectionBinder.Bind <IGameModel>().To <GameModel>().CrossContext().ToSingleton();
            injectionBinder.Bind <ILevelModel>().To <LevelModel>().CrossContext().ToSingleton();
            injectionBinder.Bind <IPlayerModel>().To <PlayerModel>().CrossContext().ToSingleton();
            injectionBinder.Bind <IInputModel>().To <InputModel>().CrossContext().ToSingleton();
            injectionBinder.Bind <ProjectSROptions>().ToSingleton().CrossContext();


            //Mediation Bindings
            mediationBinder.BindView <PlayerView>().ToMediator <PlayerMediator>();
            mediationBinder.BindView <EnemyView>().ToMediator <EnemyMediator>();
            mediationBinder.BindView <BulletView>().ToMediator <BulletMediator>();
            mediationBinder.BindView <InputView>().ToMediator <InputMediator>();
            mediationBinder.BindView <CameraView>().ToMediator <CameraMediator>();
            mediationBinder.BindView <LevelManager>().ToMediator <LevelMediator>();

            //Command Bindings

            //In-Game
            commandBinder.Bind(_gameSignals.onDequeuePoolObject).To <OnDequeuePoolObjectCommand>();
            commandBinder.Bind(_gameSignals.onEnqueuePooledObject).To <OnEnqueuePooledObjectCommand>();

            //Level Behaviour
            commandBinder.Bind(_gameSignals.onLevelInitialize).InSequence()
            .To <OnLoadCurrentLevelCommand>()
            .To <OnNavMeshSceneBakeCommand>()
            .To <OnGetInputDataCommand>()
            .To <OnGetPlayerDataCommand>()
            .To <OnGetEnemyDataCommand>()
            .To <OnSetCinemachineTargetCommand>()
            .To <OnStartCountdownCommand>();

            commandBinder.Bind(_gameSignals.onLevelStart).InSequence()
            .To <OnActivateNavMeshAgentsCommand>()
            .To <OnActivatePlayerMovementCommand>()
            .To <OnActivateTouchCommand>();

            commandBinder.Bind(_gameSignals.onBulletHit).To <OnBulletHitCommand>();

            commandBinder.Bind(_gameSignals.onActivateLevelEndPanel).To <OnActivateLevelEndPanelCommand>();

            //Game Initalizer
            commandBinder.Bind(_gameSignals.onGameInitialize).InSequence()
            .To <OnSRDebuggerInitializerFixCommand>()
            .To <OnPoolingInitializer>()
            .To <OnSROptionsInjectionCommand>()
            .To <OnLevelInitializerCommand>();
        }
Пример #3
0
        public override List <Signal> Process(List <Signal> e)
        {
            List <Signal> filteredSignal = new List <Signal>();

            //do some parameter process
            //according to the input channels that is selected, call the actual function and process each signal.
            foreach (var signal in e)
            {
                var name = signal.PMUName + "_" + signal.SignalName;
                if (InputSignals.Contains(name))
                {
                    Filters.DropOutMissingFilt(signal);
                    filteredSignal.Add(signal);
                }
            }
            return(filteredSignal);
        }
Пример #4
0
        private void InitWeightsRandomValues(int inputCountNeuron)
        {
            var rand = new Random();

            for (int i = 0; i < inputCountNeuron; i++)
            {
                if (NeuronType == NeuronType.Input)
                {
                    Weights.Add(1);
                }
                else
                {
                    Weights.Add((float)rand.NextDouble());
                }

                InputSignals.Add(0);
            }
        }
Пример #5
0
        public override List <Signal> Process(List <Signal> e)
        {
            List <Signal> filteredSignal = new List <Signal>();

            //do some parameter process
            //according to the input channels that is selected, call the actual function and process each signal.
            foreach (var signal in e)
            {
                var type = signal.TypeAbbreviation;
                if (type.Length == 1 && type == "F")
                {
                    var name = signal.PMUName + "_" + signal.SignalName;
                    if (InputSignals.Contains(name))
                    {
                        Filters.WrappingFailureDQFilt(signal, AngleThresh);
                        filteredSignal.Add(signal);
                    }
                }
            }
            return(filteredSignal);
        }
Пример #6
0
 //Сравнивает два типа данных без учета ParentParam
 public bool Equals(CalcType type)
 {
     if (ClassType != type.ClassType)
     {
         return(false);
     }
     if (IndexType != type.IndexType)
     {
         return(false);
     }
     if (ClassType == ClassType.Single)
     {
         if (DataType != type.DataType)
         {
             return(false);
         }
         if (Text != null && type.Text == null)
         {
             return(false);
         }
         if (Text == null && type.Text != null)
         {
             return(false);
         }
         bool e = true;
         foreach (var sig in type.InputSignals.Dic)
         {
             e &= InputSignals.Get(sig.Key, DataType.Error) == sig.Value;
         }
         foreach (var sig in InputSignals.Dic)
         {
             e &= type.InputSignals.Get(sig.Key, DataType.Error) == sig.Value;
         }
         return(e);
     }
     return(true);
 }
Пример #7
0
 public virtual void OnPointerEnter(PointerEventData eventData)
 {
     InputSignals.DoUiEnter();
 }
Пример #8
0
 public virtual void OnEndDrag(PointerEventData eventData)
 {
     InputSignals.DoUiDragEnd();
 }
Пример #9
0
 public virtual void OnBeginDrag(PointerEventData eventData)
 {
     InputSignals.DoUiDragBegin();
 }
Пример #10
0
        public override List <Signal> Process(List <Signal> e)
        {
            List <Signal> filteredSignal = new List <Signal>();
            //do some parameter process
            //according to the input channels that is selected, call the actual function and process each signal.
            var           groupbyPMU = e.GroupBy(x => x.TypeAbbreviation).ToDictionary(y => y.Key.Length < 3 ? y.Key : y.Key.Substring(0, 2), y => y.ToList());
            List <Signal> vms        = null;

            if (groupbyPMU.ContainsKey("VM"))
            {
                vms = groupbyPMU["VM"];
                foreach (var signal in vms)
                {
                    var name = signal.PMUName + "_" + signal.SignalName;
                    if (InputSignals.Contains(name))
                    {
                        Filters.VoltPhasorFilt(signal, "VM", VoltMax, VoltMin, NomVoltage);
                        filteredSignal.Add(signal);
                    }
                }
            }
            if (groupbyPMU.ContainsKey("VP"))
            {
                var vps = groupbyPMU["VP"];
                foreach (var signal in vps)
                {
                    var name = signal.PMUName + "_" + signal.SignalName;
                    if (InputSignals.Contains(name))
                    {
                        Filters.VoltPhasorFilt(signal, "VP", VoltMax, VoltMin, NomVoltage);
                        filteredSignal.Add(signal);
                    }
                }
            }
            if (groupbyPMU.ContainsKey("VA"))
            {
                if (vms != null)
                {
                    var vas = groupbyPMU["VA"];
                    //var vpsNames = vps.Select(x => x.SignalName.Substring(0, x.SignalName.LastIndexOf('.')));
                    foreach (var signal in vas)
                    {
                        var name = signal.PMUName + "_" + signal.SignalName;
                        if (InputSignals.Contains(name))
                        {
                            var vpFound = false;
                            foreach (var vm in vms)
                            {
                                if (signal.SignalName.Substring(0, signal.SignalName.LastIndexOf('.')) == vm.SignalName.Substring(0, vm.SignalName.LastIndexOf('.')))
                                {
                                    signal.Flags = new List <bool>(vm.Flags);
                                    vpFound      = true;
                                    break;
                                }
                            }
                            //how to find the corresponding magnitude?
                            if (vpFound)
                            {
                                filteredSignal.Add(signal);
                            }
                            else
                            {
                                throw new Exception("Cannot pass voltage angle signal: " + signal.SignalName + " through VoltPhasorFilt as corresponding voltage magnitude signal was not found.");
                            }
                        }
                    }
                }
                else
                {
                    throw new Exception("Cannot pass voltage angle signal through VoltPhasorFilt as corresponding voltage magnitude signal was not found.");
                }
            }
            //foreach (var signal in e)
            //{
            //    var type = signal.TypeAbbreviation;
            //    if (type.Length > 1)
            //    {
            //        var tp = type.Substring(0, 2);
            //        var name = signal.PMUName + "_" + signal.SignalName;
            //        if (InputSignals.Contains(name))
            //        {
            //            if (tp == "VM" || tp == "VP")
            //            {
            //                Filters.VoltPhasorFilt(signal, tp, VoltMax, VoltMin, NomVoltage);
            //                filteredSignal.Add(signal);
            //            }
            //            else if (tp == "VA")
            //            {

            //            }
            //        }
            //    }
            //}
            return(filteredSignal);
        }
Пример #11
0
 public void Calculate()
 {
     OutputSignal.Value = Propagate(InputSignals.Select(x => x.Value.Value).ToArray());
 }
Пример #12
0
        public void Run()
        {
            long pointer = 0;

            while (pointer <= ProgramCode.Length)
            {
                var  opCodestring = ProgramCode[pointer].ToString("D5");
                var  instruction  = opCodestring.Substring(opCodestring.Length - 2);
                long value1;
                long value2;
                long value3;
                long parameter1;
                long parameter2;

                //Console.WriteLine(string.Join(",", ProgramCode));
                switch (instruction)
                {
                case "01":
                    value1 = ProgramCode[pointer + 1];
                    value2 = ProgramCode[pointer + 2];
                    value3 = ProgramCode[pointer + 3];

                    parameter1 = opCodestring.Substring(opCodestring.Length - 3, 1) == Convert.ToInt32(IntCodeMode.Position).ToString() ? ProgramCode[value1] : value1;
                    parameter2 = opCodestring.Substring(opCodestring.Length - 4, 1) == Convert.ToInt32(IntCodeMode.Position).ToString() ? ProgramCode[value2] : value2;

                    ProgramCode[value3] =
                        parameter1 + parameter2;

                    pointer += 4;
                    break;

                case "02":
                    value1 = ProgramCode[pointer + 1];
                    value2 = ProgramCode[pointer + 2];
                    value3 = ProgramCode[pointer + 3];

                    parameter1 = opCodestring.Substring(opCodestring.Length - 3, 1) == Convert.ToInt32(IntCodeMode.Position).ToString() ? ProgramCode[value1] : value1;
                    parameter2 = opCodestring.Substring(opCodestring.Length - 4, 1) == Convert.ToInt32(IntCodeMode.Position).ToString() ? ProgramCode[value2] : value2;

                    ProgramCode[value3] =
                        parameter1 * parameter2;;

                    pointer += 4;
                    break;

                case "03":
                    if (InputSignals.Any())
                    {
                        value1 = ProgramCode[pointer + 1];
                        ProgramCode[value1] = InputSignals.Dequeue();
                        pointer            += 2;
                    }
                    else
                    {
                        return;
                    }

                    break;

                case "04":
                    value1 = ProgramCode[pointer + 1];
                    Outputs.Add(ProgramCode[value1]);
                    pointer += 2;

                    break;

                case "05":     //jump-if-true: if the first parameter is non-zero, it sets the instruction pointer to the value from the second parameter. Otherwise, it does nothing.
                    value1 = ProgramCode[pointer + 1];
                    value2 = ProgramCode[pointer + 2];

                    parameter1 = opCodestring.Substring(opCodestring.Length - 3, 1) == Convert.ToInt32(IntCodeMode.Position).ToString() ? ProgramCode[value1] : value1;
                    parameter2 = opCodestring.Substring(opCodestring.Length - 4, 1) == Convert.ToInt32(IntCodeMode.Position).ToString() ? ProgramCode[value2] : value2;

                    if (parameter1 != 0)
                    {
                        pointer = parameter2;
                    }
                    else
                    {
                        pointer += 3;
                    }

                    break;

                case "06":     //jump-if-false: if the first parameter is zero, it sets the instruction pointer to the value from the second parameter. Otherwise, it does nothing.
                    value1 = ProgramCode[pointer + 1];
                    value2 = ProgramCode[pointer + 2];

                    parameter1 = opCodestring.Substring(opCodestring.Length - 3, 1) == Convert.ToInt32(IntCodeMode.Position).ToString() ? ProgramCode[value1] : value1;
                    parameter2 = opCodestring.Substring(opCodestring.Length - 4, 1) == Convert.ToInt32(IntCodeMode.Position).ToString() ? ProgramCode[value2] : value2;

                    if (parameter1 == 0)
                    {
                        pointer = parameter2;
                    }
                    else
                    {
                        pointer += 3;
                    }

                    break;

                case "07":     //less than: if the first parameter is less than the second parameter, it stores 1 in the position given by the third parameter. Otherwise, it stores 0.
                    value1 = ProgramCode[pointer + 1];
                    value2 = ProgramCode[pointer + 2];
                    value3 = ProgramCode[pointer + 3];

                    parameter1 = opCodestring.Substring(opCodestring.Length - 3, 1) == Convert.ToInt32(IntCodeMode.Position).ToString() ? ProgramCode[value1] : value1;
                    parameter2 = opCodestring.Substring(opCodestring.Length - 4, 1) == Convert.ToInt32(IntCodeMode.Position).ToString() ? ProgramCode[value2] : value2;

                    if (parameter1 < parameter2)
                    {
                        ProgramCode[value3] = 1;
                    }
                    else
                    {
                        ProgramCode[value3] = 0;
                    }

                    pointer += 4;

                    break;

                case "08":     //equals: if the first parameter is equal to the second parameter, it stores 1 in the position given by the third parameter. Otherwise, it stores 0.
                    value1 = ProgramCode[pointer + 1];
                    value2 = ProgramCode[pointer + 2];
                    value3 = ProgramCode[pointer + 3];

                    parameter1 = opCodestring.Substring(opCodestring.Length - 3, 1) == Convert.ToInt32(IntCodeMode.Position).ToString() ? ProgramCode[value1] : value1;
                    parameter2 = opCodestring.Substring(opCodestring.Length - 4, 1) == Convert.ToInt32(IntCodeMode.Position).ToString() ? ProgramCode[value2] : value2;

                    if (parameter1 == parameter2)
                    {
                        ProgramCode[value3] = 1;
                    }
                    else
                    {
                        ProgramCode[value3] = 0;
                    }

                    pointer += 4;

                    break;

                case "99":
                    State = ProgramState.Stopped;
                    return;
                }
            }
        }