Example #1
0
 private void OnIdleModeChanged(IdleMode value)
 {
     if (this.IdleModeChanged == null)
     {
         return;
     }
     this.IdleModeChanged((object)this, new IdleModeEventArg(value));
 }
Example #2
0
    void Thraten()                  //handle Thraten state
    {
        print("警戒中!!");
        renderer.material.color = Color.yellow;
        transform.rotation      = Quaternion.LookRotation(CurrentDirection - new Vector3(0, CurrentDirection.y, 0));
        //緩慢向發出聲音的地方移動
        controller.SimpleMove(transform.TransformDirection(Vector3.forward) * Time.deltaTime * ChaseSpeed);

        _IdleMode = IdleMode.back;  //切換為back模式,若離開Attack狀態,將在Idle狀態回到原始位置(OriginPosition)
    }
Example #3
0
    void Idle()                     //handle idle state
    {
        statusMode = Status.idle;
        //-----------debug test---------------
        //print("閒置中!!!");
        //renderer.material.color = Color.blue;
        //------------------------------------

        if (PlayTime - IdleModeTime > TransformActionTime && _IdleMode != IdleMode.back) //一段時間(TransformActionTime)轉換成下一個移動模式
        {
            IdleModeTime = PlayTime;                                                     //記錄目前的遊戲時間(PlayTime),用於判斷是否切換下一模式用
            if (_IdleMode != IdleMode.four)
            {
                _IdleMode++;
            }
            else
            {
                _IdleMode = IdleMode.one;
            }
        }

        switch (_IdleMode)      //(_IdleMode)四種移動模式 + 追逐後回到原點模式
        {
        case IdleMode.one:      //Mode 1:
            transform.rotation = Quaternion.LookRotation(IdleMoveMap[0]);
            rigidbody.velocity = IdleMoveMap[0];
            break;

        case IdleMode.two:      //Mode 2:
            transform.rotation = Quaternion.LookRotation(IdleMoveMap[1]);
            rigidbody.velocity = IdleMoveMap[1];
            break;

        case IdleMode.three:    //Mode 3:
            transform.rotation = Quaternion.LookRotation(IdleMoveMap[2]);
            rigidbody.velocity = IdleMoveMap[2];
            break;

        case IdleMode.four:     //Mode 4:
            transform.rotation = Quaternion.LookRotation(IdleMoveMap[3]);
            rigidbody.velocity = IdleMoveMap[3];
            break;

        case IdleMode.back:
            Vector3 distance = OriginPosition - transform.position;    //計算與起始位置(OriginPosition)之間的距離,並在追逐後開始往回走
            distance.y = 0;
            HandleWallCollision(OriginPosition, ChaseSpeed);
            if (distance.magnitude < 3)    //若回到原點將模式切回四種移動模式
            {
                _IdleMode    = 0;
                IdleModeTime = 0;
            }
            break;
        }
    }
Example #4
0
    void Idle()                     //handle idle state
    {
        renderer.material.color = Color.blue;

        if (PlayTime - IdleModeTime > TransformActionTime && _IdleMode != IdleMode.back) //一段時間(TransformActionTime)轉換成下一個移動模式
        {
            IdleModeTime = PlayTime;                                                     //紀錄目前的遊戲時間(PlayTime),用於判斷是否切換下一模是用
            if (_IdleMode != IdleMode.four)
            {
                _IdleMode++;
            }
            else
            {
                _IdleMode = IdleMode.one;
            }
        }

        switch (_IdleMode)      //(_IdleMode)四種移動模式 + 追逐後回到原點模式
        {
        case IdleMode.one:      //Mode 1:
            //transform.eulerAngles = Vector3.RotateTowards(new Vector3(0, 0, 0), new Vector3(0,Mathf.Cos(Time.time), 0), 360, 10) * 100;
            transform.rotation = Quaternion.LookRotation(IdleMoveMap[0]);
            controller.SimpleMove(IdleMoveMap[0]);
            break;

        case IdleMode.two:      //Mode 2:
            transform.rotation = Quaternion.LookRotation(IdleMoveMap[1]);
            controller.SimpleMove(IdleMoveMap[1]);
            break;

        case IdleMode.three:    //Mode 3:
            transform.rotation = Quaternion.LookRotation(IdleMoveMap[2]);
            controller.SimpleMove(IdleMoveMap[2]);
            break;

        case IdleMode.four:     //Mode 4:
            transform.rotation = Quaternion.LookRotation(IdleMoveMap[3]);
            controller.SimpleMove(IdleMoveMap[3]);
            break;

        case IdleMode.back:
            Vector3 distance = OriginPosition - transform.position;    //計算與起始位置(OriginPosition)之間的距離,並在追逐後開始往回走
            distance.y         = 0;
            transform.rotation = Quaternion.LookRotation(distance);
            controller.SimpleMove(distance * Time.deltaTime * ChaseSpeed);
            if (distance.magnitude < 3)    //若回到原點將模式切回四種移動模式
            {
                _IdleMode    = 0;
                IdleModeTime = 0;
            }
            break;
        }
    }
Example #5
0
    //handle idle state
    void Idle()
    {
        renderer.material.color = Color.blue;

        if (PlayTime - IdleModeTime > TransformActionTime && _IdleMode != IdleMode.back)    //�@�q�ɶ�(TransformActionTime)�ഫ���U�@�Ӳ��ʼҦ�
        {
            IdleModeTime = PlayTime;            //�O���ثe���C���ɶ�(PlayTime),�Ω�P�_�O�_�����U�@�Ҧ���
            if (_IdleMode != IdleMode.four)
                _IdleMode++;
            else
                _IdleMode = IdleMode.one;
        }

        switch (_IdleMode)      //(_IdleMode)�|�ز��ʼҦ� + �l�v��^����I�Ҧ�
        {
            case IdleMode.one:  //Mode 1:
                //transform.eulerAngles = Vector3.RotateTowards(new Vector3(0, 0, 0), new Vector3(0,Mathf.Cos(Time.time), 0), 45*Mathf.PI/180, 1) * 100;
                transform.rotation = Quaternion.LookRotation(IdleMoveMap[0]);
                controller.SimpleMove(IdleMoveMap[0]);
                break;

            case IdleMode.two:  //Mode 2:
                transform.rotation = Quaternion.LookRotation(IdleMoveMap[1]);
                controller.SimpleMove(IdleMoveMap[1]);
                break;

            case IdleMode.three://Mode 3:
                transform.rotation = Quaternion.LookRotation(IdleMoveMap[2]);
                controller.SimpleMove(IdleMoveMap[2]);
                break;

            case IdleMode.four: //Mode 4:
                transform.rotation = Quaternion.LookRotation(IdleMoveMap[3]);
                controller.SimpleMove(IdleMoveMap[3]);
                break;

            case IdleMode.back:
                Vector3 distance = OriginPosition - transform.position;//�p��P�_�l��m(OriginPosition)�������Z��,�æb�l�v��}�l���^��
                distance.y = 0;
                transform.rotation = Quaternion.LookRotation(distance);
                controller.SimpleMove(distance * Time.deltaTime * ChaseSpeed);
                if (distance.magnitude < 3)//�Y�^����I�N�Ҧ����^�|�ز��ʼҦ�
                {
                    _IdleMode = 0;
                    IdleModeTime = 0;
                }
                break;
        }
    }
        public async void Start()
        {
            if (IsActive)
                return;

            IsActive = true;

            _currentMode = Mode;
            _badgeBuffer = new List<BadgeWrapper>(Math.Max((int)MaxIdleInstanceCount, 1));
            _tmCounter = new DispatcherTimer();
            _tmCounter.Tick += UpdateGameTimeCounter;
            _tmCounter.Interval = new TimeSpan(0, 1, 0);

            await Proceed();
            _tmCounter.Start();
        }
Example #7
0
        public async void Start()
        {
            if (IsActive)
            {
                return;
            }

            IsActive = true;

            _currentMode = Mode;
            _badgeBuffer = new List <BadgeIdlingWrapper>(Math.Max((int)MaxIdleInstanceCount, 1));

            _tmCounter          = new DispatcherTimer();
            _tmCounter.Tick    += UpdateGameTimeCounter;
            _tmCounter.Interval = new TimeSpan(0, 1, 0);

            await Proceed();

            _tmCounter.Start();
        }
Example #8
0
        private IActorTask HandleBypassMode()
        {
            if (_roamingTask == null)
            {
                return(CreateBypassMoveTask());
            }
            else
            {
                if (!_roamingTask.IsComplete)
                {
                    // Если команда на перемещение к целевой точке патруля не закончена, тогда продолжаем её.
                    return(_roamingTask);
                }

                _roamingTask = null;
                _idleTask    = new IdleTask(_actor, _decisionSource);
                _mode        = IdleMode.Idle;
                return(_idleTask);
            }
        }
        private static bool Prefix(ref string q, ref CommandSender sender)
        {
            QueryProcessor queryProcessor = sender is PlayerCommandSender playerCommandSender ? playerCommandSender.Processor : null;

            (string name, string[] arguments) = q.ExtractCommand();
            var ev = new SendingRemoteAdminCommandEventArgs(sender, string.IsNullOrEmpty(sender.SenderId) ? Server.Host : Player.Get(sender.SenderId) ?? Server.Host, name, arguments.ToList());

            IdleMode.PreauthStopwatch.Restart();
            IdleMode.SetIdleMode(false);

            if (q.ToLower().StartsWith("gban-kick"))
            {
                if (queryProcessor == null || !queryProcessor._sender.SR.RaEverywhere)
                {
                    sender.RaReply(
                        $"GBAN-KICK# Permission to run command denied by the server. If this is an unexpected error, contact EXILED developers.",
                        false,
                        true,
                        string.Empty);

                    Log.Error($"A user {sender.Nickname} attempted to run GBAN-KICK and was denied permission. If this is an unexpected error, contact EXILED developers.");

                    ev.IsAllowed = false;
                }
            }

            if (q.Contains("REQUEST_DATA PLAYER_LIST SILENT"))
            {
                return(true);
            }

            Handlers.Server.OnSendingRemoteAdminCommand(ev);

            if (!string.IsNullOrEmpty(ev.ReplyMessage))
            {
                sender.RaReply(ev.ReplyMessage, ev.Success, true, string.Empty);
            }

            return(ev.IsAllowed);
        }
Example #10
0
        public IActorTask GetCurrentTask()
        {
            // На каждом шаге осматриваем окрестности
            // напредмет нарушителей.
            var intruders = CheckForIntruders();

            var nearbyIntruder = intruders.FirstOrDefault();

            if (nearbyIntruder != null)
            {
                _mode           = IdleMode.Pursuit;
                _targetIntruder = nearbyIntruder;
                _idleTask       = null;
            }
            else if (_idleTask?.IsComplete == true)
            {
                _mode           = IdleMode.Bypass;
                _targetIntruder = null;
                _idleTask       = null;
            }

            switch (_mode)
            {
            case IdleMode.Bypass:
                return(HandleBypassMode());

            case IdleMode.Pursuit:
                return(HandlePersiutMode());

            case IdleMode.Idle:
                return(HandleIdleMode());

            default:
                throw new InvalidOperationException($"Неизвестный режим патруллирования {_mode}");
            }
        }
Example #11
0
    //handle idle state
    void Idle()
    {
        statusMode = Status.idle;
        //-----------debug test---------------
        //print("���m��!!!");
        //renderer.material.color = Color.blue;
        //------------------------------------

        if (PlayTime - IdleModeTime > TransformActionTime && _IdleMode != IdleMode.back)    //�@�q�ɶ�(TransformActionTime)�ഫ���U�@�Ӳ��ʼҦ�
        {
            IdleModeTime = PlayTime;            //�O���ثe���C���ɶ�(PlayTime),�Ω�P�_�O�_�����U�@�Ҧ���
            if (_IdleMode != IdleMode.four)
                _IdleMode++;
            else
                _IdleMode = IdleMode.one;
        }

        switch (_IdleMode)      //(_IdleMode)�|�ز��ʼҦ� + �l�v��^����I�Ҧ�
        {
            case IdleMode.one:  //Mode 1:
                transform.rotation = Quaternion.LookRotation(IdleMoveMap[0]);
                rigidbody.velocity = IdleMoveMap[0];
                break;

            case IdleMode.two:  //Mode 2:
                transform.rotation = Quaternion.LookRotation(IdleMoveMap[1]);
                rigidbody.velocity = IdleMoveMap[1];
                break;

            case IdleMode.three://Mode 3:
                transform.rotation = Quaternion.LookRotation(IdleMoveMap[2]);
                rigidbody.velocity = IdleMoveMap[2];
                break;

            case IdleMode.four: //Mode 4:
                transform.rotation = Quaternion.LookRotation(IdleMoveMap[3]);
                rigidbody.velocity = IdleMoveMap[3];
                break;

            case IdleMode.back:
                Vector3 distance = OriginPosition - transform.position;//�p��P�_�l��m(OriginPosition)�������Z��,�æb�l�v��}�l���^��
                distance.y = 0;
                HandleWallCollision(OriginPosition, ChaseSpeed);
                if (distance.magnitude < 3)//�Y�^����I�N�Ҧ����^�|�ز��ʼҦ�
                {
                    _IdleMode = 0;
                    IdleModeTime = 0;
                }
                break;
        }
    }
Example #12
0
 [DllImport("wx-c"), System.Security.SuppressUnmanagedCodeSecurity] static extern void   wxIdleEvent_SetMode(IdleMode mode);
Example #13
0
 private void OnIdleModeChanged(IdleMode value)
 {
     if (this.IdleModeChanged == null)
         return;
     this.IdleModeChanged((object)this, new IdleModeEventArg(value));
 }
Example #14
0
 public IdleModeEventArg(IdleMode value)
 {
     this.value = value;
 }
Example #15
0
    //handle Thraten state
    void Thraten()
    {
        print("ĵ�٤�!!");
        renderer.material.color = Color.yellow;
        transform.rotation = Quaternion.LookRotation(CurrentDirection - new Vector3(0, CurrentDirection.y, 0));
        //�w�C�V�o�X�n�����a�貾��
        controller.SimpleMove(transform.TransformDirection(Vector3.forward) * Time.deltaTime * ChaseSpeed);

        _IdleMode = IdleMode.back;  //������back�Ҧ�,�Y���}Attack���A,�N�bIdle���A�^���l��m(OriginPosition)
    }
Example #16
0
 public static ErrorCode SetIdleMode(void *handle, IdleMode idlemode)
 {
     return(driver.c_SparkMax_SetIdleMode(handle, idlemode));
 }
Example #17
0
 public IdleModeEventArg(IdleMode value)
 {
     this.value = value;
 }
Example #18
0
 void Attack()                   //handle Attack state
 {
     renderer.material.color = Color.red;
     _IdleMode = IdleMode.back;  //切換為back模式,若離開Attack狀態,將在Idle狀態回到原始位置(OriginPosition)
 }
Example #19
0
 public void SetIdleMode(IdleMode value)
 {
     try
     {
         lock (syncThread)
             registers["RegSeqConfig1"].Value = (uint)(byte)((uint)(byte)((uint)(byte)registers["RegSeqConfig1"].Value & 223U) | (uint)(byte)((uint)(byte)value << 5));
     }
     catch (Exception ex)
     {
         OnError((byte)1, ex.Message);
     }
 }