示例#1
0
文件: GSheet.cs 项目: Serghii/Rig
        public void SendComand(ComandType type, string msg)
        {
            switch (type)
            {
            case ComandType.WakeUp:
                WaikeUp.Send(msg);
                break;

            case ComandType.Restart:
                Restart.Send(msg);
                break;

            case ComandType.Alarm:
                CPU.Send(msg);
                break;

            case ComandType.Ping:
                Ping.Send(msg);
                break;

            case ComandType.Close:
                Clouse.Send(msg);
                break;

            case ComandType.Message:
            default:
                Message.Send(msg); break;
            }
            LastIdComand++;
        }
示例#2
0
        //private void Agr()
        //{
        //    if (p.Mob && !p.Destroyed)
        //    {
        //        if (NewTargetToAtack != null && !atackAI)
        //        {
        //            if (Vector3.Distance(p.Position, NewTargetToAtack.Position) < p.AgrDistance)
        //            {
        //                SetTarget(NewTargetToAtack);
        //                GoToTarget();
        //                for (int i = 0; i < Weapons.Length; i++)
        //                {
        //                    Atack_target(i);
        //                }
        //            }
        //            else
        //            {
        //                atackAI = false;
        //            }
        //        }
        //    }
        //}



        public async Task Warpdrive()
        {
            if (moveCommand != MoveType.warmwarp)
            {
                return;
            }
            warpStarted = true;
            OnChangeStateCall(ShipEvenentsType.warmwarp);
            await Task.Delay((int)(1000f * p.WarpDriveStartTime));

            if (moveCommand != MoveType.warmwarp)
            {
                return;
            }
            moveCommand = MoveType.warp;
            float warpDistance = Vector3.Distance(p.Position, TargetToMove.Position);
            float warpTime     = warpDistance / p.WarpSpeed;

            OnChangeStateCall(ShipEvenentsType.warp);
            Hide(); //TODO damage=0
            warpActivated = true;

            await Task.Delay((int)(warpTime * 1000f));

            Spawn(TargetToMove.Position - Vector3.forward * 10);//10 metres before target
            OnChangeStateCall(ShipEvenentsType.spawn);
            Reveal();

            warpActivated  = false;
            warpStarted    = false;
            p.Speed        = p.SpeedMax * 0.1f;
            moveCommand    = MoveType.stop;
            complexCommand = ComandType.none;
            OnChangeStateCall(ShipEvenentsType.stop);
        }
示例#3
0
文件: SO_ship.cs 项目: algor1/wingsrv
        public void LandToTarget()
        {
            if (NewTargetToMove != null)
            {
                zBeforeRotation = p.Rotation.eulerAngles.z;

                complexCommand = ComandType.landTo;
                TargetToMove   = NewTargetToMove;
            }
        }
示例#4
0
文件: SO_ship.cs 项目: algor1/wingsrv
        public void OpenTarget()
        {
            if (NewTargetToMove != null)
            {
                zBeforeRotation = p.Rotation.eulerAngles.z;

                complexCommand = ComandType.open;
                TargetToMove   = NewTargetToMove;
                //            oldRotation = p.SO.rotation;
            }
        }
示例#5
0
文件: Ship.cs 项目: algor1/wingsrv
 private void GoToTarget()
 {
     if (NewTargetToMove != null)
     {
         zBeforeRotation = p.Rotation.eulerAngles.z;
         complexCommand  = ComandType.goTo;
         TargetToMove    = NewTargetToMove;
         Console.WriteLine("{0} id {1} moving to {2} id{3}", p.Type, p.Id, NewTargetToMove.Type, NewTargetToMove.Id);
         //			oldRotation = p.SO.rotation;
     }
 }
示例#6
0
        private void CommandManager()
        {
            if (complexCommand == ComandType.goTo)
            {
                if (Vector3.Distance(p.Position, TargetToMove.Position) > 10 * p.Speed / p.AccelerationMax)
                {
                    moveCommand = MoveType.move;
                    Console.WriteLine(p.Position);
                }
                else
                {
                    Console.WriteLine("{0} id {1} pos {2} stopped near {3} id {4} pos {5}", p.Type, p.Id, p.Position, TargetToMove.Type, TargetToMove.Id, TargetToMove.Position);

                    moveCommand    = MoveType.stop;
                    complexCommand = ComandType.none;
                }
            }
            if (complexCommand == ComandType.warpTo)
            {
                moveCommand = MoveType.warmwarp;
                Warpdrive();
            }
            if (complexCommand == ComandType.landTo)
            {
                if (Vector3.Distance(p.Position, TargetToMove.Position) > 10 * p.SpeedMax / p.AccelerationMax)
                {
                    moveCommand = MoveType.move;
                }
                else
                {
                    moveCommand = MoveType.stop;


                    OnLandCall(p.Id);
                    complexCommand = ComandType.none;
                }
            }
            if (complexCommand == ComandType.open)
            {
                if (Vector3.Distance(p.Position, TargetToMove.Position) > 10 * p.SpeedMax / p.AccelerationMax)
                {
                    moveCommand = MoveType.move;
                }
                else
                {
                    moveCommand    = MoveType.stop;
                    complexCommand = ComandType.none;
                }
            }
        }
示例#7
0
文件: SO_ship.cs 项目: algor1/wingsrv
        public void WarpToTarget()
        {
            if (NewTargetToMove != null && Vector3.Distance(p.Position, NewTargetToMove.Position) > 100000)
            {
                zBeforeRotation = p.Rotation.eulerAngles.z;

                moveCommand    = MoveType.warp;
                complexCommand = ComandType.warpTo;
                TargetToMove   = NewTargetToMove;
                //			oldRotation = p.SO.rotation;
                warpActivated = false;
                Console.WriteLine("{0} id {1} warping to {2} id{3}", p.Type, p.Id, NewTargetToMove.Type, NewTargetToMove.Id);
            }
            else
            {
                Console.WriteLine("{0} id {1} TO CLOSE TO WARP to {2} id{3}", p.Type, p.Id, NewTargetToMove.Type, NewTargetToMove.Id);
            }
        }
示例#8
0
文件: SO_ship.cs 项目: algor1/wingsrv
        public async Task Warpdrive()
        {
            warpCoroutineStarted = true;
            await Task.Delay((int)(1000f * p.WarpDriveStartTime));

            float warpDistance = Vector3.Distance(p.Position, TargetToMove.Position);
            float warpTime     = warpDistance / p.WarpSpeed;

            Hide(); //TODO damage=0
            warpActivated = true;


            await Task.Delay((int)warpTime *1000);

            Spawn(TargetToMove.Position - Vector3.forward * 10);

            Reveal();

            warpActivated        = false;
            warpCoroutineStarted = false;
            p.Speed        = p.SpeedMax * 0.1f;
            moveCommand    = MoveType.stop;
            complexCommand = ComandType.none;
        }