private static IEnumerator GenerateVerticalGridDrones(IDrone drone, int droneCount, float delay, Area area, DroneFactory factory, bool addDrones) { var height = area.TopBoundary - (0.5f + drone.Size / 2); var lenght = area.RightBoundary - (0.5f + drone.Size / 2); const float direction = 180f; droneCount *= (int)(lenght / height); while (true) { for (var i = 0; i < droneCount; i++) { var startPos = new Vector3(-lenght + i * 2 * lenght / droneCount, 0.4f, height); factory.SpawnDrones(new DefaultDrone(drone, startPos, direction)); yield return(new WaitForSeconds(delay * 2 * lenght / droneCount)); } for (var i = 0; i < droneCount; i++) { var startPos = new Vector3(lenght - i * 2 * lenght / droneCount, 0.4f, height); factory.SpawnDrones(new DefaultDrone(drone, startPos, direction)); yield return(new WaitForSeconds(delay * 2 * lenght / droneCount)); } if (addDrones) { droneCount += (int)(lenght / height); } } }
private IEnumerator GenerateDrones(DroneFactory factory, IDrone drone, StartPositionDelegate posDelegate, GameObject parentDrone = null) { var addPattern = parentDrone != null; while (true) { if (parentDrone == null && addPattern) { yield break; } if (parentDrone != null) { factory.SpawnDrones(drone, DroneCount, posDelegate: delegate { return(parentDrone.transform.position); }); } else { factory.SpawnDrones(drone, DroneCount, posDelegate: posDelegate); } yield return(new WaitForSeconds(Delay)); } }
private void Start() { // Spawn Bouncing Drones DroneFactory.SpawnDrones(new RandomDrone(7, 1f, DroneColor.Blue), 15, area: BoundariesSLA.BouncingMainMenu); DroneFactory.SpawnDrones(new RandomDrone(7, 1.5f, DroneColor.Red), 10, area: BoundariesSLA.BouncingMainMenu); // Spawn Green Drones DroneFactory.StartCoroutine(GenerateGreenDrones(2.5f, 24, 7, 1.5f, DroneColor.DarkGreen)); }
public override void CreateDrones() { // Spawn Bouncing Drones DroneFactory.SpawnAndAddDrones(new RandomDrone(7, 1.5f, DroneColor.Red), 15, 5, BoundariesSLA.BouncingSla); DroneFactory.SpawnDrones(new MineDrone(5, 3, DroneColor.Red, new Pat360Drones(56, 4, true, false, 0, 720, changeDirection: true), new DefaultDrone(8, 1.3f, DroneColor.Cyan)), area: BoundariesSLA.FlyingSla); }
public override void CreateDrones() { // Spawn blue drones DroneFactory.SetPattern(new PatContinuousSpawn(0.15f, 2), new RandomDrone(10, 1, DroneColor.Blue, restrictedZone: 0, droneType: DroneType.FlyingOneWayDrone)); // Spawn red drones DroneFactory.SpawnDrones(new RedDrone(15, 1, DroneColor.Red, 3, LaneArea[0]), 100); }
public override void CreateDrones() { // Spawn red drones DroneFactory.SpawnDrones(new RedDrone(17, 2, DroneColor.Red, 3, LaneArea[0]), 60); // Spawn yellow drones DroneFactory.SetPattern(new Pat360Drones(32, 3, true, startRotation: -90), new DefaultDrone(16, 2, DroneColor.Golden, movementType: new SinusoidalMovement(40, 4))); }
public override void CreateDrones() { // Spawn bouncing drones for (var i = 1; i < LaneArea.Length - 2; i++) { DroneFactory.SpawnDrones(new RandomDrone(3f, 1f, DroneColor.Grey), (int)(15 - i * 0.6f), area: LaneArea[i]); } DroneFactory.SpawnDrones(new RedDrone(500, 1, DroneColor.Red, 1000, LaneArea[19], 5, true, DroneType.BouncingDrone), 5); DroneFactory.SpawnDrones(new RedDrone(500, 1, DroneColor.Red, 1000, LaneArea[20], 5, true, DroneType.BouncingDrone), 4); }
public override void CreateDrones() { // Spawn bouncing drones for (var i = 1; i < LaneArea.Length - 2; i++) { DroneFactory.SpawnDrones(new RandomDrone(6, 2, DroneColor.Grey), (int)(11 - i * 0.4f), area: LaneArea[i]); } DroneFactory.SpawnDrones(new RandomDrone(6, 2, DroneColor.Grey), 4, area: LaneArea[19]); DroneFactory.SpawnDrones(new RandomDrone(6, 2, DroneColor.Grey), 3, area: LaneArea[20]); // Spawn red drones DroneFactory.SpawnDrones(new RedDrone(17, 2, DroneColor.Red, 3, LaneArea[0]), 60); }
public override void CreateDrones() { // Spawn bouncing drones for (var i = 1; i < LaneArea.Length - 2; i++) { DroneFactory.SpawnDrones(new RandomDrone(5, 2f, DroneColor.Grey), (int)(12 - i * 0.4f), area: LaneArea[i]); } DroneFactory.SpawnDrones(new RandomDrone(5, 2f, DroneColor.Grey), 4, area: LaneArea[19]); DroneFactory.SpawnDrones(new RandomDrone(5, 2f, DroneColor.Grey), 3, area: LaneArea[20]); // Spawn blue drones DroneFactory.SetPattern(new Pat360Drones(32, 10, true, true, 270), new DefaultDrone(8, 2, DroneColor.Blue)); }
private void Start() { MapGenerator.GenerateMap(15, new float[] { 8, 6, 8, 6, 8 }, 1.2f, 0.3f, 10); var laneArea = MapGenerator.GetDroneSpawnArea(); // Spawn bouncing drones for (var i = 1; i < laneArea.Length - 2; i++) { DroneFactory.SpawnDrones(new RandomDrone(6, 2f, DroneColor.Grey), (int)(11 - i * 0.4f), area: laneArea[i]); } DroneFactory.SpawnDrones(new RandomDrone(6, 2f, DroneColor.Grey), 4, area: laneArea[19]); DroneFactory.SpawnDrones(new RandomDrone(6, 2f, DroneColor.Grey), 3, area: laneArea[20]); // Spawn blue drones DroneFactory.SetPattern(new Pat360Drones(40, 9, true, true, 270), new DefaultDrone(12, 2, DroneColor.Blue)); DroneFactory.SetPattern(new Pat360Drones(40, 9, true, true, 90), new DefaultDrone(12, 2, DroneColor.Blue)); // Spawn yellow drones DroneFactory.SetPattern(new Pat360Drones(32, repeat: true, pulseDelay: 5), new DefaultDrone(12, 2, DroneColor.Golden, movementType: new CurvedMovement(10))); }
public override void CreateDrones() { // Spawn bouncing drones for (var i = 1; i < LaneArea.Length - 2; i++) { DroneFactory.SpawnDrones(new RandomDrone(6, 2f, DroneColor.Grey), (int)(11 - i * 0.4f), area: LaneArea[i]); } DroneFactory.SpawnDrones(new RandomDrone(6, 2f, DroneColor.Grey), 4, area: LaneArea[19]); DroneFactory.SpawnDrones(new RandomDrone(6, 2f, DroneColor.Grey), 3, area: LaneArea[20]); // Spawn yellow drones DroneFactory.SetPattern(new Pat360Drones(32, repeat: true, pulseDelay: 5), new DefaultDrone(12, 2, DroneColor.Golden, movementType: new CurvedMovement(10))); }
public override void CreateDrones() { // Spawn bouncing drones for (var i = 1; i < LaneArea.Length - 2; i++) { DroneFactory.SpawnDrones(new RandomDrone(6, 2, DroneColor.Grey), (int)(11 - i * 0.4f), area: LaneArea[i]); } DroneFactory.SpawnDrones(new RandomDrone(6, 2, DroneColor.Grey), 4, area: LaneArea[19]); DroneFactory.SpawnDrones(new RandomDrone(6, 2, DroneColor.Grey), 3, area: LaneArea[20]); // Spawn yellow drones DroneFactory.SetPattern(new PatContinuousSpawn(0.1f, 1), new RandomDrone(14, 2, DroneColor.Golden, DroneType.FlyingOneWayDrone, 0, movementType: new SinusoidalMovement(40, 5f))); }
public override void CreateDrones() { // Spawn bouncing drones for (var i = 1; i < LaneArea.Length - 2; i++) { DroneFactory.SpawnDrones(new RandomDrone(5, 1, DroneColor.Grey), (int)(11 - i * 0.4f), area: LaneArea[i]); } // Spawn blue drones DroneFactory.SetPattern(new PatContinuousSpawn(0.15f, 2), new RandomDrone(10, 1, DroneColor.Blue, restrictedZone: 0, droneType: DroneType.FlyingOneWayDrone)); // Middle reds DroneFactory.SpawnDrones(new RedDrone(500, 1, DroneColor.Red, 1000, LaneArea[19], 5, true, DroneType.BouncingDrone), 5); DroneFactory.SpawnDrones(new RedDrone(500, 1, DroneColor.Red, 1000, LaneArea[20], 5, true, DroneType.BouncingDrone), 4); }
public override void CreateDrones() { // Spawn red drones DroneFactory.SpawnDrones(new RedDrone(10, 1, DroneColor.Red, 3, LaneArea[0]), 80); }
private IEnumerator Generate360Drones(DroneFactory factory, IDrone drone, Area area, StartPositionDelegate posDelegate, GameObject parentDrone = null) { var clockwise = true; var startRotation = 0f; var position = posDelegate(drone.Size, area); var addPattern = parentDrone != null; // If delay is not null, the drones will go out in a fan motion. If it is null, all rays will go out at the same time if (Delay != null) { // Set Rotation according to position if (posDelegate == DroneStartPosition.GetRandomTopSector) { clockwise = position.x < 0; startRotation = position.x < 0 ? 90f : -90f; } else if (posDelegate == DroneStartPosition.GetRandomBottomSector) { clockwise = position.x >= 0; startRotation = position.x < 0 ? 90f : -90f; } else if (posDelegate == DroneStartPosition.GetRandomLeftSector) { clockwise = position.z < 0; startRotation = (position.z < 0) ? 0f : 180f; } else if (posDelegate == DroneStartPosition.GetRandomRightSector) { clockwise = position.z >= 0; startRotation = position.z < 0 ? 0f : 180f; } clockwise = Clockwise ?? clockwise; startRotation = StartRotation ?? startRotation; } var midRotaion = clockwise ? startRotation + MaxRotation / 2 : startRotation - MaxRotation / 2; if (InitialDelay != null) { yield return(new WaitForSeconds(InitialDelay.Value)); } do { do { for (var i = 0; i < NumRays; i++) { if (parentDrone == null && addPattern) { yield break; } if (parentDrone != null) { position = parentDrone.transform.position; } // spawn new drone in set position, direction and dronespeed var rotation = startRotation + (clockwise ? 1 : -1) * (MaxRotation * i / NumRays); factory.SpawnDrones(new DefaultDrone(drone, position, rotation)); if (Delay != null) { yield return(new WaitForSeconds(Delay.Value / NumRays)); } } if (ChangeDirection) { startRotation = clockwise ? midRotaion + MaxRotation / 2 : midRotaion - MaxRotation / 2; clockwise = !clockwise; } if (PatternRepeats != null) { PatternRepeats -= 1; if (PatternRepeats == 0) { break; } } } while (PatternRepeats != null); if (PulseDelay != null) { yield return(new WaitForSeconds(PulseDelay.Value)); if (ReducePulseDelay != null) { PulseDelay = PulseDelay > MinPulseDelay ? PulseDelay - PulseDelay * ReducePulseDelay : PulseDelay; } } if (NumRays > MaxRays) { NumRays += AddRays; } } while (Repeat && (Delay != null || PulseDelay != null)); }
private void OnDataHandler(object sender, MessageReceivedEventArgs e) { var message = e.Message as TagSubjectMessage; if (message == null || message.Tag != Tags.SyncDrone) { return; } if (message.Subject == SyncDroneSubjects.SpawnDrone) { var reader = message.GetReader(); var droneDatas = new List <SpawnDroneData>(); while (reader.Position < reader.Length) { droneDatas.Add(reader.ReadSerializable <SpawnDroneData>()); } foreach (var data in droneDatas) { var drone = new NetworkedDrone(data.Speed, data.Size, data.Color, data.DroneType, data.State); _droneFactory.SpawnDrones(drone); } } else if (message.Subject == SyncDroneSubjects.UpdateDroneState) { var droneStates = new List <DroneState>(); var reader = message.GetReader(); while (reader.Position < reader.Length) { droneStates.Add(reader.ReadSerializable <DroneState>()); } foreach (var drone in droneStates) { if (_droneFactory.Drones.ContainsKey(drone.Id)) { _droneFactory.Drones[drone.Id].UpdatePosition(drone.PosX, drone.PosZ); } else { Debug.LogError("No drone with ID = " + drone.Id + " found!"); } } } else if (message.Subject == SyncDroneSubjects.DestroyDrone) { var reader = message.GetReader(); var droneId = reader.ReadUInt16(); if (_droneFactory.Drones.ContainsKey(droneId)) { Destroy(_droneFactory.Drones[droneId].gameObject); _droneFactory.Drones.Remove(droneId); } else { Debug.LogError("No drone with ID = " + droneId + " found!"); } } }