コード例 #1
0
        private async void MaidTalk()
        {
            await _maid1Light.Control(true);

            await _maid2Light.Control(true);

            while (true)
            {
                try
                {
                    var hitchecktaskasync = new HitCheckTaskAsync(_hitCheckTask);
                    var results           = await hitchecktaskasync.InvokeAsync();

                    if (null != results)
                    {
                        foreach (var result in results)
                        {
                            if (result.SwitchItem.SwitchStatus == SwitchStatus.NO)
                            {
                                continue;
                            }
                            if (_saying)
                            {
                                continue;
                            }
                            if (((result.SwitchItem.SwitchNumber == _maid1Breast1.MachineButtonItem.Number) || (result.SwitchItem.SwitchNumber == _maid1Breast2.MachineButtonItem.Number)) && !_maid1Mute)
                            {
                                await PlayMusic0(SignKey, "maid1-rude.wav", "wrongclick");

                                CallOnNotification("maid1 down");
                                await _maid1Light.Control(false);

                                _maid1Mute = true;
                                Maid1MuteTimer.Start();
                                continue;
                            }

                            if (((result.SwitchItem.SwitchNumber == _maid2Breast1.MachineButtonItem.Number) || (result.SwitchItem.SwitchNumber == _maid2Breast2.MachineButtonItem.Number)) && !_maid2Mute)
                            {
                                await PlayMusic0(SignKey, "maid2-rude.wav", "wrongclick");

                                CallOnNotification("maid2 down");
                                await _maid2Light.Control(false);

                                _maid2Mute = true;
                                Maid2MuteTimer.Start();
                                continue;
                            }
                            CallOnNotification($"hitting: {result.SwitchItem.SwitchNumber}");
                            Check(result.SwitchItem.SwitchNumber, _currentStep);
                        }
                    }
                }
                catch (Exception ex)
                {
                    OnNotification(new NotificationEventArgs(ex.Message));
                }
            }
        }
コード例 #2
0
        private async void EyePick()
        {
            while (true)
            {
                try
                {
                    var hitchecktaskasync = new HitCheckTaskAsync(_hitCheckTask, 10 * 60 * 1000);
                    var results           = await hitchecktaskasync.InvokeAsync();

                    if (null != results)
                    {
                        foreach (var result in results)
                        {
                            if (result.SwitchItem.SwitchStatus == SwitchStatus.NO)
                            {
                                continue;
                            }
                            var eye = ButtonItems.FirstOrDefault(r => r.Number == result.SwitchItem.SwitchNumber);
                            if (null == eye)
                            {
                                continue;
                            }
                            //_eyeroller[eye] = result.SwitchItem.SwitchStatus == SwitchStatus.NC ? 1 : 0;
                            var eyebutton = _eyebuttons.FirstOrDefault(e => e.Key.Number == result.SwitchItem.SwitchNumber);
                            if (eyebutton.Value != null)
                            {
                                foreach (var machineRelayItem in _eyebuttons)
                                {
                                    await machineRelayItem.Value.Control(false);
                                }
                                CallOnNotification($"button:{eye.Number} - status:{result.SwitchItem.SwitchStatus} eye:{eyebutton.Value.Number}");
                                await eyebutton.Value.Control(result.SwitchItem.SwitchStatus == SwitchStatus.NC);

                                if (result.SwitchItem.SwitchStatus == SwitchStatus.NC)
                                {
                                    var tick         = DateTime.Now.Ticks;
                                    var randomnumber = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32)).Next(1, 7);
                                    await PlayMusic0(SignKey, $"e{randomnumber}.wav", "eyesound");
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    OnNotification(new NotificationEventArgs(ex.Message));
                }
            }
        }
コード例 #3
0
        private async void RunePick()
        {
            await _light.Control(true);

            while (true)
            {
                try
                {
                    var hitchecktaskasync = new HitCheckTaskAsync(_hitCheckTask, 10 * 60 * 1000);
                    var results           = await hitchecktaskasync.InvokeAsync();

                    if (null != results)
                    {
                        foreach (var result in results)
                        {
                            var rune = ButtonItems.FirstOrDefault(r => r.Number == result.SwitchItem.SwitchNumber);
                            if (null == rune)
                            {
                                continue;
                            }
                            _runes[rune] = result.SwitchItem.SwitchStatus == SwitchStatus.NC ? 1 : 0;

                            CallOnNotification($"rune: {result.SwitchItem.SwitchNumber} status: {result.SwitchItem.SwitchStatus}");
                            await PlayMusic0(SignKey, "touch.wav", "touching");

                            var runeon  = _runes.Where(r => _runeson.Contains(r.Key));
                            var runeoff = _runes.Where(r => !_runeson.Contains(r.Key));

                            if (runeon.All(r => 1 == r.Value) && runeoff.All(r => 0 == r.Value))
                            {
                                await PauseMusic0(SignKey, "touching");
                                await PlayMusic0(SignKey, "touchsuccess.wav", "touchover");

                                await Task.Delay(4000);

                                await _light.Control(false);

                                OnGameOver();
                                return;
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    OnNotification(new NotificationEventArgs(ex.Message));
                }
            }
        }
コード例 #4
0
        private async void KnockingRun()
        {
            var knockingcount = 0;

            while (true)
            {
                var hitchecktaskasync = new HitCheckTaskAsync(_hitCheckTask, WaitingTime);
                var results           = await hitchecktaskasync.InvokeAsync();

                if (null != results)
                {
                    foreach (var switchItemWithDeviceNumber in results)
                    {
                        if (SwitchStatus.NC == switchItemWithDeviceNumber.SwitchItem.SwitchStatus)
                        {
                            if (KnockTimes > knockingcount)
                            {
                                knockingcount++;
                                CallOnNotification($"count: {knockingcount}");
                            }
                            else
                            {
                                OnGameOver();
                                return;
                            }
                        }
                    }
                }
                else
                {
                    knockingcount = 0;
                    CallOnNotification($"timeout, count: {knockingcount}");
                }
                //await Task.Delay(1000);
            }
        }
コード例 #5
0
        private async void Crystalcheck()
        {
            while (true)
            {
                try
                {
                    var hitchecktaskasync = new HitCheckTaskAsync(_hitCheckTask, 60 * 1000);
                    var results           = await hitchecktaskasync.InvokeAsync();

                    if (null != results)
                    {
                        foreach (var result in results)
                        {
                            if ((result.SwitchItem.SwitchNumber == _ball1.Number) && !_light1.IsNo)
                            {
                                //_ballStatus[_ball1] = result.SwitchItem.SwitchStatus == SwitchStatus.NC ? 1 : 0;
                                if (result.SwitchItem.SwitchStatus == SwitchStatus.NC)
                                {
                                    _ballStatus[_ball1] = 1;
                                    await PlayMusic0(SignKey, "fire.wav", "crystal");

                                    await _light1.Control(true);
                                }
                            }

                            if ((result.SwitchItem.SwitchNumber == _ball2.Number) && !_light2.IsNo)
                            {
                                //_ballStatus[_ball2] = result.SwitchItem.SwitchStatus == SwitchStatus.NC ? 1 : 0;
                                if (result.SwitchItem.SwitchStatus == SwitchStatus.NC)
                                {
                                    _ballStatus[_ball2] = 1;
                                    await PlayMusic0(SignKey, "lightning.wav", "crystal");

                                    await _light2.Control(true);
                                }
                            }

                            if ((result.SwitchItem.SwitchNumber == _ball3.Number) && !_light3.IsNo)
                            {
                                //_ballStatus[_ball3] = result.SwitchItem.SwitchStatus == SwitchStatus.NC ? 1 : 0;
                                if (result.SwitchItem.SwitchStatus == SwitchStatus.NC)
                                {
                                    _ballStatus[_ball3] = 1;
                                    await PlayMusic0(SignKey, "water.wav", "crystal");

                                    await _light3.Control(true);
                                }
                            }

                            if ((result.SwitchItem.SwitchNumber == _blow.Number) && !_light4.IsNo)
                            {
                                _ballStatus[_blow] = result.SwitchItem.SwitchStatus == SwitchStatus.NC ? 1 : 0;
                                if (result.SwitchItem.SwitchStatus == SwitchStatus.NC)
                                {
                                    await PlayMusic0(SignKey, "wind.wav", "crystal");

                                    await _light4.Control(true);
                                }
                            }

                            if (_ballStatus.All(r => 1 == r.Value))
                            {
                                OnGameOver();
                                return;
                            }
                        }
                    }
                }

                catch (Exception ex)
                {
                    OnNotification(new NotificationEventArgs(ex.Message));
                }
            }
        }
コード例 #6
0
        private async void BattleOn()
        {
            RestLife();
            Enemies.RestBattle();
            while (true)
            {
                try
                {
                    var hitchecktaskasync = new HitCheckTaskAsync(_hitCheckTasks, 15 * 60 * 1000);
                    var results           = await hitchecktaskasync.InvokeAsync();

                    if (null != results)
                    {
                        foreach (var result in results)
                        {
                            if (null == result)
                            {
                                CallOnNotification("empty button message");
                                continue;
                            }
                            if (result.SwitchItem.SwitchStatus == SwitchStatus.NO)
                            {
                                continue;
                            }
                            var switchnumber = result.SwitchItem.SwitchNumber;
                            if ((switchnumber == _startButton.Number) && (result.DeviceNumber == _startButton.DeviceNumber) && !_alive)
                            {
                                _alive = true;
                                RestLife();
                                Enemies.RestBattle();
                                BattleEnemyTimer.Hurting   -= BattleEnemyTimerHurting;
                                BattleEnemyTimer.Hurting   += BattleEnemyTimerHurting;
                                BattleEnemyTimer.Finishing -= BattleEnemyTimerFinishing;
                                BattleEnemyTimer.Finishing += BattleEnemyTimerFinishing;
                                _currentRound = 0;
                                Battling();
                                //_roundTimer = new Timer(2 * 60 * 1 * 1000) { AutoReset = false };
                                //_roundTimer.Start();
                                continue;
                            }
                            if (Enemies.CheckIfOff(result.DeviceNumber, result.SwitchItem.SwitchNumber))
                            {
                                continue;
                            }
                            if (_allHits.Any(b => (b.Number == result.SwitchItem.SwitchNumber) && (b.DeviceNumber == result.DeviceNumber)))
                            {
                                var tick         = DateTime.Now.Ticks;
                                var randomnumber = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32)).Next(1, 5);
                                var hitsound     = $"hit{randomnumber}.wav";
                                await PlayMusic0(SignKey, hitsound, hitsound);

                                CallOnNotification($"hit : {result.SwitchItem.SwitchNumber} - {result.DeviceNumber}");
                                ButtonHit(BattleEnemyTimer, result.SwitchItem.SwitchNumber, result.DeviceNumber);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    OnNotification(new NotificationEventArgs(ex.Message));
                }
            }
        }
コード例 #7
0
        private async void Guarding()
        {
            await SendWcfCommandPluginsHelper.ChangeFrame(TimeSpan.FromSeconds(15), VideoActionType.Pause, _videoAddress);

            _toguardTimer.Start();
            ResetLight(false);
            while (true)
            {
                try
                {
                    var hitchecktaskasync = new HitCheckTaskAsync(_hitCheckTask, WaitingTime);
                    var results           = await hitchecktaskasync.InvokeAsync();

                    if (null != results)
                    {
                        foreach (var result in results)
                        {
                            var switchnumber = result.SwitchItem.SwitchNumber;
                            if (switchnumber == _aisleCheck.Number)
                            {
                                _aisllight = result.SwitchItem.SwitchStatus == SwitchStatus.NO;
                            }
                            if (switchnumber == _roomCheck.Number)
                            {
                                _roomlight = result.SwitchItem.SwitchStatus == SwitchStatus.NO;
                            }
                            CallOnNotification($"aisle = {_aisllight} --- room = {_roomlight}");
                            if (_aisllight && _roomlight && !_leaved)
                            {
                                //jump to normal loop
                                _stopTimer.Stop();
                                await SendWcfCommandPluginsHelper.ChangeFrame(TimeSpan.FromSeconds(15), VideoActionType.Play, _videoAddress);

                                await SendWcfCommandPluginsHelper.ChangeFrame(TimeSpan.FromSeconds(15), VideoActionType.Pause, _videoAddress);

                                _toguardTimer.Start();
                                await _faillight.Control(false);

                                if (!_personavailable)
                                {
                                    await _listenLight.Control(false);
                                }
                                continue;
                            }

                            if (result.SwitchItem.SwitchStatus == SwitchStatus.NO)
                            {
                                continue;
                            }

                            if (!_leaved)
                            {
                                if ((switchnumber == _aisleCheck.Number) || ((switchnumber == _roomCheck.Number) && !_personavailable))
                                {
                                    //jump to stop, and pause
                                    await Stop();
                                }
                            }
                            else
                            {
                                if (switchnumber == _roomCheck.Number)
                                {
                                    await _listenLight.Control(true);

                                    await _faillight.Control(false);

                                    _personavailable = true;
                                }
                            }

                            if ((switchnumber == _failButton.Number) && _faillight.IsNo)
                            {
                                CallOnNotification("偷听失败");
                                await PlayMusic0(SignKey, "fail.wav", "ear", musicAddress : _musicMinAddress);
                                await Stop(false);
                            }
                            if ((switchnumber == _listenButton.Number) && _listenLight.IsNo)
                            {
                                CallOnNotification("偷听成功");
                                await PlayMusic0(SignKey, "success.wav", "ear", musicAddress : _musicMinAddress);

                                await SendWcfCommandPluginsHelper.ChangeFrame(TimeSpan.FromSeconds(0), VideoActionType.Play, _videoAddress);

                                await SendWcfCommandPluginsHelper.ChangeFrame(TimeSpan.FromSeconds(0), VideoActionType.Pause, _videoAddress);

                                OnGameOver();
                                return;
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    OnNotification(new NotificationEventArgs(ex.Message));
                }
            }
        }
コード例 #8
0
        private async void StabCheck()
        {
            await SendWcfCommandPluginsHelper.InvokerNotificationForStart("ArshEnd1");

            await SendWcfCommandPluginsHelper.InvokerNotificationForStart("ArshEnd2");

            while (true)
            {
                try
                {
                    var hitchecktaskasync = new HitCheckTaskAsync(_hitCheckTask, 60 * 1000);
                    var results           = await hitchecktaskasync.InvokeAsync();

                    if (null != results)
                    {
                        foreach (var result in results)
                        {
                            if (result.SwitchItem.SwitchStatus == SwitchStatus.NO)
                            {
                                continue;
                            }
                            var hit = _hit.FirstOrDefault(h => h.Value.Number == result.SwitchItem.SwitchNumber);
                            if (hit.Value != null)
                            {
                                await PlayMusic0(SignKey, "in.wav", "in");

                                var tick        = DateTime.Now.Ticks;
                                var randomcount = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32)).Next(2, 5);
                                CallOnNotification($"current  count {randomcount} v: {hit.Value}");

                                foreach (var machineRelayItem in RelayItems)
                                {
                                    await machineRelayItem.Control(false);
                                }
                                for (var i = 0; i < randomcount; i++)
                                {
                                    tick = DateTime.Now.Ticks;
                                    var randomnumber = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32)).Next(0, 4);
                                    CallOnNotification($"current number {randomnumber}");
                                    await RelayItems[randomnumber].Control(true);
                                }

                                if (hit.Key == _squence1[_current])
                                {
                                    CallOnNotification($"currentstep: {_current}");
                                    _current++;
                                    if (_current == _squence1.Count)
                                    {
                                        foreach (var machineRelayItem in RelayItems)
                                        {
                                            await machineRelayItem.Control(false);
                                        }
                                        await SendWcfCommandPluginsHelper.InvokerNotificationForStop("ArshEnd1");

                                        OnGameOver();
                                        return;
                                    }
                                    continue;
                                }
                                //if (hit.Key == _squence2[_current])
                                //{
                                //    CallOnNotification($"currentstep: {_current}");
                                //    _current++;
                                //    if (_current == _squence2.Count)
                                //    {
                                //        foreach (var machineRelayItem in RelayItems)
                                //        {
                                //            await machineRelayItem.Control(false);
                                //        }
                                //        await SendWcfCommandPluginsHelper.InvokerNotificationForStop("ArshEnd2");
                                //        OnGameOver();
                                //        return;
                                //    }
                                //    continue;
                                //}
                                if (hit.Key == _squence1[0])
                                {
                                    CallOnNotification($"reset to new step1");
                                    _current = 1;
                                    continue;
                                }
                                CallOnNotification("reset step");
                                _current = 0;
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    OnNotification(new NotificationEventArgs(ex.Message));
                }
            }
        }
コード例 #9
0
ファイル: ArgueProvider.cs プロジェクト: bardway/mingriland
        private async void KnockingRun()
        {
            LifeRest(true);
            await _fotoElf.Control(false);

            await _fotoKing.Control(false);

            await _fotoKnight.Control(false);

            await _fotoMage.Control(false);

            while (true)
            {
                try
                {
                    var hitchecktaskasync = new HitCheckTaskAsync(_hitCheckTask, WaitingTime);
                    var results           = await hitchecktaskasync.InvokeAsync();

                    if (null != results)
                    {
                        foreach (var result in results)
                        {
                            if ((result.SwitchItem.SwitchStatus == SwitchStatus.NO) || !_alive)
                            {
                                continue;
                            }

                            var switchnumber = result.SwitchItem.SwitchNumber;

                            if ((_currentButton != null) && (_currentButton.Number == _listenKnight.Number) && (switchnumber == _hitKnight.Number))
                            {
                                await PauseMusic0(SignKey, "knightsay");

                                var hitcheck = await StopArgue(8, _listenKnight.Number, "argue_knightwrong.wav", 12 * 1000, 15 * 1000);

                                if (hitcheck)
                                {
                                    OnGameOver();
                                    return;
                                }
                            }
                            if ((_currentButton != null) && (_currentButton.Number == _listenKing.Number) && (switchnumber == _hitKing.Number))
                            {
                                await PauseMusic0(SignKey, "kingsay");
                                await StopArgue(6, _listenKing.Number, "argue_kingwrong.wav");
                            }
                            if ((_currentButton != null) && (_currentButton.Number == _listenMage.Number) && (switchnumber == _hitMage.Number))
                            {
                                await PauseMusic0(SignKey, "magesay");
                                await StopArgue(9, _listenMage.Number, "argue_magewrong.wav");
                            }
                            if ((_currentButton != null) && (_currentButton.Number == _listenElf.Number) && (switchnumber == _hitElf.Number))
                            {
                                await PauseMusic0(SignKey, "elfsay");
                                await StopArgue(8, _listenElf.Number, "argue_elfwrong.wav");
                            }

                            if ((switchnumber == _listenKing.Number) && !_saying && !_refuting)
                            {
                                ListenCheck(_listenKing, "kingsay");
                            }
                            if ((switchnumber == _listenMage.Number) && !_saying && !_refuting)
                            {
                                ListenCheck(_listenMage, "magesay");
                            }
                            if ((switchnumber == _listenKnight.Number) && !_saying && !_refuting)
                            {
                                ListenCheck(_listenKnight, "knightsay");
                            }
                            if ((switchnumber == _listenElf.Number) && !_saying && !_refuting)
                            {
                                ListenCheck(_listenElf, "elfsay");
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    OnNotification(new NotificationEventArgs(ex.Message));
                }
            }
        }