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++; }
//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); }
public void LandToTarget() { if (NewTargetToMove != null) { zBeforeRotation = p.Rotation.eulerAngles.z; complexCommand = ComandType.landTo; TargetToMove = NewTargetToMove; } }
public void OpenTarget() { if (NewTargetToMove != null) { zBeforeRotation = p.Rotation.eulerAngles.z; complexCommand = ComandType.open; TargetToMove = NewTargetToMove; // oldRotation = p.SO.rotation; } }
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; } }
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; } } }
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); } }
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; }