private void CalculateState()
        {
            var timeOfDay = DateTime.Now.TimeOfDay;

            _logger.LogDebug($"Calculating state at time: {timeOfDay}");
            _logger.LogDebug($"_currentInterval.Start: {_currentInterval.Start}");
            _logger.LogDebug($"_currentInterval.End: {_currentInterval.End}");

            if (_currentInterval.AdditionalConditions != null)
            {
                foreach (var condition in _currentInterval.AdditionalConditions)
                {
                    _logger.LogDebug($"Additional Condition: {condition.State}");
                }
            }

            var newState = timeOfDay >= _currentInterval.Start &&
                           timeOfDay < _currentInterval.End &&
                           (_currentInterval.AdditionalConditions == null ||
                            _currentInterval.AdditionalConditions.All(c => c.State));

            _logger.LogDebug($"newState: {newState}");

            if (newState != State)
            {
                _logger.LogDebug($"State changed, setting new state at RealTime - {DateTime.Now.TimeOfDay}");
                State = newState;
                OnStateChanged?.Invoke(this, new ToggleAutomationConditionStateChangedHandler(this, newState));
            }
        }
        private PBEBattle(BinaryReader r)
        {
            ushort version = r.ReadUInt16();

            Settings = new PBESettings(r);
            Settings.MakeReadOnly();
            BattleFormat = (PBEBattleFormat)r.ReadByte();
            Teams        = new PBETeams(this);

            var packetProcessor = new PBEPacketProcessor(this);
            int numEvents       = r.ReadInt32();

            for (int i = 0; i < numEvents; i++)
            {
                INetPacket packet = packetProcessor.CreatePacket(r.ReadBytes(r.ReadInt16()));
                switch (packet)
                {
                case PBEWinnerPacket wp:
                {
                    Winner = wp.WinningTeam;
                    break;
                }
                }
                Events.Add(packet);
            }

            BattleState = PBEBattleState.Ended;
            OnStateChanged?.Invoke(this);
        }
        protected void setNewState(System.Type stateType)
        {
            if (mainMovementState == null || stateType != mainMovementState.GetType())
            {
                System.Type        prevStateType = null;
                CharacterStateBase prevState     = mainMovementState;

                if (mainMovementState != null)
                {
                    prevStateType = mainMovementState.GetType();
                }

                Component newState = GetComponent(stateType);

                if (newState != null)
                {
                    if (mainMovementState != null)
                    {
                        exitState(mainMovementState);
                    }

                    mainMovementState = (CharacterStateBase)newState;
                    enterState(mainMovementState, prevStateType);

                    //Debug.Log ("new state: " + newState.GetType ().ToString ());
                    OnStateChanged?.Invoke(mainMovementState, prevState);
                }
            }
        }
Beispiel #4
0
        public HeroState()
        {
            connection = new HubConnectionBuilder()
                         .WithUrl("https://localhost:44314/HeroHub")
                         .WithAutomaticReconnect()
                         .Build();

            connection.On <Hero>("ReceiveUpdatedHero", (updatedHero) =>
            {
                HeroList[HeroList.FindIndex(hero => hero.Id == updatedHero.Id)] = updatedHero;

                Hero oldHero = TopHeroes.Find(hero => hero.Id == updatedHero.Id);
                if (oldHero != null)
                {
                    TopHeroes.Remove(oldHero);
                    TopHeroes.Add(updatedHero);
                }
                else
                {
                    TopHeroes.RemoveAt(0);
                    TopHeroes.Add(updatedHero);
                }
                OnStateChanged?.Invoke();
            });

            Task.Run(() => connection.StartAsync());
        }
Beispiel #5
0
        public virtual void StateChanged(ClientState state)
        {
            switch (state)
            {
            case ClientState.ConnectionTimedOut:
            case ClientState.ChallengeResponseTimedOut:
            case ClientState.ConnectionRequestTimedOut:
                CurrentStatus = ConnectionStatus.TimedOut;
                Server        = null;
                break;

            case ClientState.ConnectTokenExpired:
            case ClientState.InvalidConnectToken:
            case ClientState.ConnectionDenied:
            case ClientState.Disconnected:
                CurrentStatus = ConnectionStatus.Disconnected;
                Server        = null;
                break;

            case ClientState.SendingConnectionRequest:
            case ClientState.SendingChallengeResponse:
                CurrentStatus = ConnectionStatus.Connecting;
                break;

            case ClientState.Connected:
                CurrentStatus = ConnectionStatus.Connected;
                ID            = (ushort)Client.ClientIndex;
                break;
            }

            OnStateChanged?.Invoke(CurrentStatus);
        }
        public override async Task InvokeAsync(Action action)
        {
            //await Task.Run(action);
            await Task.Run(() => action());

            OnStateChanged?.Invoke();
        }
Beispiel #7
0
    private void ReloadAmmo()
    {
        if (ammo == 0 || reloadTimer > 0)
        {
            return;
        }
        var delta = magazineCapacity - currentMagazine;

        if (delta == 0)
        {
            return;
        }
        if (ammo >= delta)
        {
            currentMagazine = magazineCapacity;
            ammo           -= delta;
        }
        else
        {
            currentMagazine += ammo;
            ammo             = 0;
        }
        isReloading = true;
        reloadTimer = reloadTime;
        gunReloadSound.Play();
        OnStateChanged?.Invoke(currentMagazine, ammo);
    }
    /// <summary>
    /// Incress the state of pancake that is face down in the pan.
    /// </summary>
    /// <returns> returns true if successful</returns>
    public bool NextState()
    {
        if (pancakeStates[currentSideDown] >= PancakeState.Count - 1)
        {
            return(false);
        }

        // if the state is mixture update both states.
        if (pancakeStates[currentSideDown] == PancakeState.Mixture)
        {
            //update both states.
            pancakeStates[0]++;
            pancakeStates[1]++;

            // when going from mixture to raw state we must update the upside timer as well as the down side.
            SetTimer(GetSideUp(), 0);                   // do down side below, it need to be done for all state changes.
        }
        else
        {
            pancakeStates[currentSideDown]++;
        }

        SetTimer(currentSideDown);

        OnStateChanged?.Invoke(pancakeStates[currentSideDown]);

        return(true);
    }
Beispiel #9
0
        private void Update()
        {
            if (IsRunning != (Runner != null))
            {
                IsRunning = Runner != null;
                OnRunningChanged?.Invoke(IsRunning);
                if (IsRunning)
                {
                    OnInit?.Invoke();
                }
            }
            if (Runner != null)
            {
                updateWatch.Start();
                var now     = Time.time;
                var extraMs = Mathf.Max(0, (int)((next - now) * 1000f) - 1);
                Runner.Idle(extraMs);
                Thread.Sleep(extraMs);

                if (now >= next)
                {
                    OnPreRunFrame();
                    Runner.RunFrame();
                    next = now + 1f / 60f;
                    OnStateChanged?.Invoke();
                }
                updateWatch.Stop();

                string status = Runner.GetStatus(updateWatch);
                OnStatus?.Invoke(status);
                OnChecksum?.Invoke(RenderChecksum(Runner.GameInfo.periodic) + RenderChecksum(Runner.GameInfo.now));
            }
        }
Beispiel #10
0
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.R) && reloadTimer <= 0)
        {
            ReloadAmmo();
        }
        damagePerShot      = gunProperties.Damage;
        timeBetweenBullets = gunProperties.Frequency;
        range      = gunProperties.Range;
        reloadTime = gunProperties.ReloadTime;
        timer     += Time.deltaTime;
        if (reloadTimer > 0)
        {
            reloadTimer -= Time.deltaTime;
        }
        else if (isReloading)
        {
            isReloading = false;
            OnStateChanged?.Invoke(currentMagazine, ammo);
        }
        else if (playerController.AllowShooting && timer >= timeBetweenBullets && Time.timeScale != 0)
        {
            timer = 0f;
            Shoot();
        }

        if (timer >= timeBetweenBullets * effectsDisplayTime)
        {
            DisableEffects();
        }
    }
Beispiel #11
0
        private void SetState(VncState newState)
        {
            var o = VncState;

            vncState = newState;
            OnStateChanged?.Invoke(this, new VncStateChangedEventArgs(o, newState));
        }
Beispiel #12
0
 public void Terminate()
 {
     KillTimer();
     Stop();
     State = DeviceState.Uninitialized;
     OnStateChanged?.Invoke(State);
 }
Beispiel #13
0
        private void MainAnimatorOnFinish()
        {
            switch (_state)
            {
            case ClassSelectorState.BackIdle:
                ChangeState(ClassSelectorState.FrontTransition);
                break;

            case ClassSelectorState.FrontIdle:
                ChangeState(ClassSelectorState.BackTransition);
                break;

            case ClassSelectorState.BackTransition:
                ChangeState(ClassSelectorState.BackIdle);
                OnStateChanged?.Invoke(this);
                break;

            case ClassSelectorState.FrontTransition:
                ChangeState(ClassSelectorState.FrontIdle);
                OnStateChanged?.Invoke(this);
                break;

            case ClassSelectorState.None:
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Beispiel #14
0
        /// <summary>
        /// Swithes state machine to the state
        /// </summary>
        /// <param name="stateEnter"></param>
        public void SwitchToState(StateEnter stateEnter)
        {
            if (stateToId.ContainsKey(stateEnter) == false)
            {
                Debug.LogError("[StateMachine] Error: This state is not mapped, you must map all states");
            }

            if (currentState.stateExit != null)
            {
                currentState.stateExit();
            }

            // internal switch state
            currentStateId = stateToId[stateEnter];
            currentState   = idToState[currentStateId];

            if (OnStateChanged != null)
            {
                OnStateChanged.Invoke(currentStateId);
            }

            currentState.stateEnter();

            //Debug.LogWarning("[State Machine] Enter state: " + currentStateId + ", " + currentState);
        }
        private void PollThread()
        {
            var sleepTime = TimeSpan.FromMilliseconds(0.5);

            while (!cancel)
            {
                if (!Connected)
                {
                    // Do less while waiting for the controller to come back online.
                    Thread.Sleep(250);
                    continue;
                }
                var state = new XInput.StateEx();
                if (0 != XInput.XInputGetStateEx(controllerIndex, ref state))
                {
                    Connected = false;
                    OnDisconnect?.ThreadSafeInvoke();
                    continue;
                }
                var gp = state.Gamepad;
                if (gp.bLeftTrigger != lastState.bLeftTrigger ||
                    gp.bRightTrigger != lastState.bRightTrigger ||
                    gp.sThumbLX != lastState.sThumbLX ||
                    gp.sThumbLY != lastState.sThumbLY ||
                    gp.sThumbRX != lastState.sThumbRX ||
                    gp.sThumbRY != lastState.sThumbRY ||
                    gp.wButtons != lastState.wButtons)
                {
                    lastState = gp;
                    OnStateChanged.ThreadSafeInvoke(lastState);
                }
                Thread.Sleep(sleepTime);
            }
        }
Beispiel #16
0
        private void InitializationButton()
        {
            int index = 0;

            //Initialization for all entity state tags would be to clear the state
            //change event and rig it up to initialize itself with the dispatchers to
            //the object itself and a broadcast component if one exists
            gameObject.GetComponents(typeof(IEntityStateListener))
            .Cast <IEntityStateListener>()
            .ToList()
            .ForEach(listener =>
            {
                if (OnStateChanged.GetPersistentEventCount() <= index)
                {
                    //We must call this internal method to expand the persistent listener collection before
                    //attempting to hack register a new one
                    OnStateChanged.CallMethod("AddPersistentListener", Flags.InstanceAnyVisibility);
                }

                //We can't easily register new persistent methods so this hack allows us to contrary to Unity
                //allows us to do.
                OnStateChanged.CallMethod("RegisterPersistentListener", Flags.InstanceAnyVisibility,
                                          index, listener, typeof(IEntityStateListener).Method(nameof(IEntityStateListener.OnEntityStateChanged)));
                index++;
            });
        }
        /// <summary>
        /// Check and process UniWinCore events
        /// </summary>
        private void UpdateEvents()
        {
            if (uniWinCore == null)
            {
                return;
            }

            if (uniWinCore.ObserveDroppedFiles(out var files))
            {
                OnDropFiles?.Invoke(files);
            }

            if (uniWinCore.ObserveMonitorChanged())
            {
                OnMonitorChanged?.Invoke();
            }

            if (uniWinCore.ObserveWindowStyleChanged())
            {
                // // モニタへのフィット指定がある状態で最大化解除された場合
                // if (shouldFitMonitor && !uniWinCore.GetZoomed())
                // {
                //     //StartCoroutine("ForceZoomed");    // 時間差で最大化を強制
                //     //SetZoomed(true);        // 強制的に最大化 ←必ずしも働かない
                //     //shouldFitMonitor = false;    // フィットを無効化
                // }
                if (_shouldFitMonitor)
                {
                    StartCoroutine("ForceZoomed");                    // 時間差で最大化を強制
                }
                OnStateChanged?.Invoke();
            }
        }
Beispiel #18
0
        private async Task OnChanged(CheckboxState state, SelectedItem val)
        {
            // 子选项点击后,更新其余组件
            if (!IsDisabled)
            {
                // 通知其余兄弟控件
                if (state == CheckboxState.Checked && Items != null)
                {
                    foreach (var item in Items)
                    {
                        item.Active = item == val;
                    }

                    StateHasChanged();
                }

                // 触发外界 OnStateChanged 事件
                if (ValueChanged.HasDelegate)
                {
                    await ValueChanged.InvokeAsync(val);
                }
                if (OnStateChanged != null)
                {
                    await OnStateChanged.Invoke(state, val);
                }
            }
        }
Beispiel #19
0
        private void HandleNewState()
        {
            if (stateHandler_ != null)
            {
                stateHandler_.Cleanup();
                stateHandler_ = null;
            }

            switch (state_)
            {
            case State.CanJoin:
                stateHandler_ = new StateCanJoin(player_, currentStateContainer_, MoveToNextState, MoveToPreviousState);
                break;

            case State.Skin:
                stateHandler_ = new StateSkinCustomization(player_, currentStateContainer_, MoveToNextState, MoveToPreviousState);
                break;

            case State.Nickname:
                stateHandler_ = new StateNicknameCustomization(player_, currentStateContainer_, MoveToNextState, MoveToPreviousState);
                break;

            case State.Ready:
                stateHandler_ = new StateReady(player_, currentStateContainer_, MoveToNextState, MoveToPreviousState);
                break;
            }

            OnStateChanged.Invoke();
        }
Beispiel #20
0
        public override void Update()
        {
            if (!Visible)
            {
                return;
            }

            if (MouseIsIntersecting())
            {
                if (Core.Input.LeftButtonPressed())
                {
                    IsChecked = !IsChecked;

                    if (IsChecked)
                    {
                        OnChecked?.Invoke();
                    }
                    else
                    {
                        OnUnchecked?.Invoke();
                    }

                    OnStateChanged?.Invoke(IsChecked);
                }
            }

            IsHovered = MouseIsIntersecting();
        }
        private static void Load()
        {
            OnStateChanged?.Invoke(new StateChangedEventArgs()
            {
                type = StateChangedEventType.loadingStarted
            });
            if (!Directory.Exists(GetSaveGameDirectory()) || !File.Exists(GetSaveGameStatFile()))
            {
                StatManager.SetFromSaveData(new Dictionary <string, SaveDataStat>());
                OnStateChanged?.Invoke(new StateChangedEventArgs()
                {
                    type = StateChangedEventType.loadingCompleted
                });
                return;
            }
            Dictionary <string, SaveDataStat> saveDataStats =
                JsonConvert.DeserializeObject <Dictionary <string, SaveDataStat> >(
                    File.ReadAllText(GetSaveGameStatFile()));

            StatManager.SetFromSaveData(saveDataStats);
            OnStateChanged?.Invoke(new StateChangedEventArgs()
            {
                type = StateChangedEventType.loadingCompleted
            });
        }
Beispiel #22
0
 public static void InvokeStateChanged(DonationTransaction trans, DonationTransactionState oldState)
 {
     if (OnStateChanged != null)
     {
         OnStateChanged.Invoke(new StateChangedEventArgs(trans, oldState));
     }
 }
Beispiel #23
0
        public void ApplyChanges()
        {
            if (this._dirty)
            {
                _cpuBinder.UpdateObject();
                _ppuControlBinder.UpdateObject();
                _ppuStatusBinder.UpdateObject();

                DebugState state = _lastState;
                state.CPU = (CPUState)_cpuBinder.Entity;

                if (chkExternal.Checked)
                {
                    state.CPU.IRQFlag |= IRQSource.External;
                }
                if (chkFrameCounter.Checked)
                {
                    state.CPU.IRQFlag |= IRQSource.FrameCounter;
                }
                if (chkDMC.Checked)
                {
                    state.CPU.IRQFlag |= IRQSource.DMC;
                }

                state.PPU.ControlFlags = (PPUControlFlags)_ppuControlBinder.Entity;
                state.PPU.StatusFlags  = (PPUStatusFlags)_ppuStatusBinder.Entity;

                state.PPU.State.Mask    = state.PPU.ControlFlags.GetMask();
                state.PPU.State.Control = state.PPU.ControlFlags.GetControl();
                state.PPU.State.Status  = state.PPU.StatusFlags.GetStatus();

                UInt32 cycle = 0;
                UInt32.TryParse(txtCycle.Text, out cycle);
                state.PPU.Cycle = cycle;

                Int32 scanline = 0;
                Int32.TryParse(txtScanline.Text, out scanline);
                state.PPU.Scanline = scanline;

                Int32 xScroll = 0;
                Int32.TryParse(txtXScroll.Text, out xScroll);
                state.PPU.State.XScroll = (byte)Math.Max(0, Math.Min(xScroll, 7));

                UInt16 vramAddr = 0;
                UInt16.TryParse(txtVRAMAddr.Text, System.Globalization.NumberStyles.HexNumber, null, out vramAddr);
                state.PPU.State.VideoRamAddr = vramAddr;

                UInt16 tmpVramAddr = 0;
                UInt16.TryParse(txtTmpAddr.Text, System.Globalization.NumberStyles.HexNumber, null, out tmpVramAddr);
                state.PPU.State.TmpVideoRamAddr = tmpVramAddr;

                state.PPU.State.WriteToggle = chkWriteToggle.Checked;

                InteropEmu.DebugSetState(state);
                _lastState      = state;
                _dirty          = false;
                btnUndo.Enabled = false;
                OnStateChanged?.Invoke(null, null);
            }
        }
        private void UpdateState(NodeLifecycleState newState)
        {
            if (newState == NodeLifecycleState.New)
            {
                //if node is just discovered we send ping to confirm it is active
                SendPing();
            }
            else if (newState == NodeLifecycleState.Active)
            {
                //TODO && !ManagedNode.IsDicoveryNode - should we exclude discovery nodes
                //received pong first time
                if (State == NodeLifecycleState.New)
                {
                    var result = _nodeTable.AddNode(ManagedNode);
                    if (result.ResultType == NodeAddResultType.Full)
                    {
                        var evictionCandidate = _discoveryManager.GetNodeLifecycleManager(result.EvictionCandidate.Node);
                        if (evictionCandidate != null)
                        {
                            _evictionManager.StartEvictionProcess(evictionCandidate, this);
                        }
                    }
                }
            }
            else if (newState == NodeLifecycleState.EvictCandidate)
            {
                SendPing();
            }

            State = newState;
            OnStateChanged?.Invoke(this, State);
        }
Beispiel #25
0
 public void ExecuteCommand(ReversibleCommand command)
 {
     command.ExecuteReversibly();
     redoHistory.Clear();
     undoHistory.Push(command);
     OnStateChanged?.Invoke(this, null);
 }
Beispiel #26
0
 /// <summary>
 /// The dispose.
 /// </summary>
 public void Dispose()
 {
     this.AdminList.Clear();
     this.ModeratorList.Clear();
     this.OwnerList.Clear();
     this.Users.Clear();
     this.VoiceList.Clear();
     this.GroupUser = null;
     if (OnMessageReceived != null)
     {
         foreach (var d in OnMessageReceived.GetInvocationList())
         {
             OnMessageReceived -= (DMessageReceived)d;
         }
     }
     if (OnUserListChange != null)
     {
         foreach (var d in OnUserListChange.GetInvocationList())
         {
             OnUserListChange -= (DUserListChange)d;
         }
     }
     if (OnStateChanged != null)
     {
         foreach (var d in OnStateChanged.GetInvocationList())
         {
             OnStateChanged -= (DRoomStateChange)d;
         }
     }
     stateTimer.Dispose();
 }
 private void SwitchToNewState(Type nextState)
 {
     currState.Exit();
     currState = availableStates[nextState];
     currState.Enter();
     OnStateChanged?.Invoke(currState); //??
 }
Beispiel #28
0
 /// <summary>
 /// 点击选择框方法
 /// </summary>
 protected override void OnToggleClick()
 {
     if (!IsDisabled && State == CheckboxState.UnChecked)
     {
         State = CheckboxState.Checked;
         OnStateChanged?.Invoke(State, Value);
     }
 }
Beispiel #29
0
        public async Task <StageChangeResponse> DeleteStageAsync(AppState.Stage stage)
        {
            var result = await _httpClient.DeleteAsyncEx <StageChangeResponse>($"api/stage/{stage.Id}", $"Delete column '{stage.Title}'");

            OnStateChanged?.Invoke(this, result.AppState);

            return(result);
        }
Beispiel #30
0
        public async Task <StageChangeResponse> EditStageAsync(AppState.Stage stage)
        {
            var result = await _httpClient.PostAsyncEx <StageChangeResponse, AppState.Stage>("api/stage", stage, $"Edit column '{stage.Title}'");

            OnStateChanged?.Invoke(this, result.AppState);

            return(result);
        }