private void GetResults(ObstaclesStayDetectorForced collisionChecker) { collisionChecker.ReCheckCollisionsFinish(); if (collisionChecker.OverlapsShipNow) { List <GenericShip> shipsHitMine = collisionChecker.OverlappedShipsNow; CheckNumberOfShipsHit(shipsHitMine, collisionChecker.transform.parent.GetComponent <GenericDeviceGameObject>()); } immediateDetonationsCheckedCount++; int minesDropped = string.IsNullOrEmpty(bombSidePrefabPath) ? 1 : 3; if (immediateDetonationsCheckedCount == minesDropped) { GameManagerScript Game = GameObject.Find("GameManager").GetComponent <GameManagerScript>(); for (int i = 0; i < minesDropped; i++) { Game.Movement.FuncsToUpdate.Remove(delegate { return(UpdateColisionDetection(collisionChecker)); }); } immediateDetonationsCheckedCount = 0; Triggers.ResolveTriggers(TriggerTypes.OnBombIsDetonated, CallBack); } }
private void SyncCollisions(ObstaclesStayDetectorForced collider) { TheShip.ObstaclesLanded = new List <GenericObstacle>(collider.OverlappedAsteroidsNow); collider.OverlappedAsteroidsNow .Where((a) => !TheShip.ObstaclesHit.Contains(a)).ToList() .ForEach(TheShip.ObstaclesHit.Add); }
private void GetResults(ObstaclesStayDetectorForced collisionChecker) { collisionChecker.ReCheckCollisionsFinish(); if (collisionChecker.OverlapsShipNow) { //TODO: FIX: Select manually GenericShip detonatedShip = collisionChecker.OverlappedShipsNow[0]; Triggers.RegisterTrigger(new Trigger() { Name = "Damage from mine", TriggerOwner = detonatedShip.Owner.PlayerNo, TriggerType = TriggerTypes.OnPositionFinish, EventHandler = TryDetonate, EventArgs = new BombDetonationEventArgs() { DetonatedShip = detonatedShip, BombObject = collisionChecker.transform.parent.gameObject } }); } immediateDetonationsCheckedCount++; int minesDropped = string.IsNullOrEmpty(bombSidePrefabPath) ? 1 : 3; if (immediateDetonationsCheckedCount == minesDropped) { immediateDetonationsCheckedCount = 0; Triggers.ResolveTriggers(TriggerTypes.OnBombIsDetonated, CallBack); } }
public IEnumerator CheckCollisions() { Collider = TemporaryShipBase.GetComponentInChildren <ObstaclesStayDetectorForced>(); Collider.TheShip = (Phases.CurrentSubPhase as BarrelRollPlanningSubPhase).TheShip; Collider.ReCheckCollisionsStart(); yield return(Tools.WaitForFrames(3)); }
private void CheckImmediateDetonation() { collisionChecker = BombObject.GetComponentInChildren <ObstaclesStayDetectorForced>(); collisionChecker.ReCheckCollisionsStart(); GameManagerScript Game = GameObject.Find("GameManager").GetComponent <GameManagerScript>(); Game.Movement.FuncsToUpdate.Add(UpdateColisionDetection); }
public void TryConfirmDecloakPosition() { obstaclesStayDetectorBase.ReCheckCollisionsStart(); obstaclesStayDetectorMovementTemplate = GetDecloakHelperByName(SelectedDecloakHelper).GetComponentInChildren <ObstaclesStayDetectorForced>(); obstaclesStayDetectorMovementTemplate.ReCheckCollisionsStart(); GameManagerScript Game = GameObject.Find("GameManager").GetComponent <GameManagerScript>(); Game.Movement.FuncsToUpdate.Add(UpdateColisionDetection); }
private void CheckImmediateDetonation() { foreach (var mineObject in CurrentBombObjects) { ObstaclesStayDetectorForced collisionChecker = mineObject.GetComponentInChildren <ObstaclesStayDetectorForced>(); collisionChecker.ReCheckCollisionsStart(); GameManagerScript Game = GameObject.Find("GameManager").GetComponent <GameManagerScript>(); Game.Movement.FuncsToUpdate.Add(delegate { return(UpdateColisionDetection(collisionChecker)); }); } }
private void ShowBarrelRollTemplate() { GameObject template = GetCurrentBarrelRollHelperTemplateGO(); if (Selection.ThisShip.Owner.GetType() != typeof(Players.NetworkOpponentPlayer)) { template.SetActive(true); } HelperDirection = GetDirectionModifier(selectedTemplateVariant); obstaclesStayDetectorMovementTemplate = template.GetComponentInChildren <ObstaclesStayDetectorForced>(); }
private void ShowBoosterHelper() { Selection.ThisShip.GetBoosterHelper().Find(SelectedBoostHelper).gameObject.SetActive(true); Transform newBase = Selection.ThisShip.GetBoosterHelper().Find(SelectedBoostHelper + "/Finisher/BasePosition"); ShipStand.transform.position = new Vector3(newBase.position.x, 0, newBase.position.z); ShipStand.transform.rotation = newBase.rotation; obstaclesStayDetectorMovementTemplate = Selection.ThisShip.GetBoosterHelper().Find(SelectedBoostHelper).GetComponentInChildren <ObstaclesStayDetectorForced>(); }
private IEnumerator CheckCollisions() { foreach (var temporaryShipBase in TemporaryShipBases.Values) { ObstaclesStayDetectorForced detector = temporaryShipBase.transform.Find("ShipBase").Find("ObstaclesStayDetector").gameObject.AddComponent <ObstaclesStayDetectorForced>(); detector.ReCheckCollisionsStart(); yield return(new WaitForFixedUpdate()); detector.ReCheckCollisionsFinish(); } }
private void ShowTemporaryShipBase() { if (TemporaryShipBase == null) { GameObject prefab = (GameObject)Resources.Load(TheShip.ShipBase.TemporaryPrefabPath, typeof(GameObject)); TemporaryShipBase = MonoBehaviour.Instantiate(prefab, this.GetCurrentDecloakHelperTemplateFinisherBasePositionGO().transform.position, this.GetCurrentDecloakHelperTemplateFinisherBasePositionGO().transform.rotation, BoardTools.Board.GetBoard()); TemporaryShipBase.transform.Find("ShipBase").Find("ShipStandInsert").Find("ShipStandInsertImage").Find("default").GetComponent <Renderer>().material = TheShip.Model.transform.Find("RotationHelper").Find("RotationHelper2").Find("ShipAllParts").Find("ShipBase").Find("ShipStandInsert").Find("ShipStandInsertImage").Find("default").GetComponent <Renderer>().material; TemporaryShipBase.transform.Find("ShipBase").Find("ObstaclesStayDetector").gameObject.AddComponent <ObstaclesStayDetectorForced>(); obstaclesStayDetectorBase = TemporaryShipBase.GetComponentInChildren <ObstaclesStayDetectorForced>(); obstaclesStayDetectorBase.TheShip = TheShip; } }
public void StartBarrelRollPlanning() { ShipStand = MonoBehaviour.Instantiate(Game.Position.prefabShipStand, Selection.ThisShip.GetPosition(), Selection.ThisShip.GetRotation(), BoardManager.GetBoard()); ShipStand.transform.Find("ShipStandTemplate").Find("ShipStandInsert").Find("ShipStandInsertImage").Find("default").GetComponent <Renderer>().material = Selection.ThisShip.Model.transform.Find("RotationHelper").Find("RotationHelper2").Find("ShipAllParts").Find("ShipStand").Find("ShipStandInsert").Find("ShipStandInsertImage").Find("default").GetComponent <Renderer>().material; obstaclesStayDetectorBase = ShipStand.GetComponentInChildren <ObstaclesStayDetectorForced>(); MovementTemplates.CurrentTemplate = MovementTemplates.GetMovement1Ruler(); MovementTemplates.CurrentTemplate.position = Selection.ThisShip.TransformPoint(new Vector3(0.5f, 0, -0.25f)); obstaclesStayDetectorMovementTemplate = MovementTemplates.CurrentTemplate.GetComponentInChildren <ObstaclesStayDetectorForced>(); Roster.SetRaycastTargets(false); inReposition = true; }
private bool IsBoostTemplateColliderDataAllowed(ObstaclesStayDetectorForced collider) { if (!TheShip.IsIgnoreObstacles && !TheShip.IsIgnoreObstaclesDuringBarrelRoll && !IsTractorBeamBarrelRoll && collider.OverlapsAsteroidNow) { BarrelRollProblems.Add(ActionFailReason.ObstacleHit); } else if (collider.OffTheBoardNow) { BarrelRollProblems.Add(ActionFailReason.OffTheBoard); } return(BarrelRollProblems.Count == 0); }
public void StartBoostPlanning() { foreach (Transform boostHelper in Selection.ThisShip.GetBoosterHelper()) { AvailableBoostDirections.Add(boostHelper.name, boostHelper.Find("Finisher").position); } ShipStand = MonoBehaviour.Instantiate(Game.Position.prefabShipStand, Selection.ThisShip.GetPosition(), Selection.ThisShip.GetRotation(), BoardManager.GetBoard()); ShipStand.transform.Find("ShipStandTemplate").Find("ShipStandInsert").Find("ShipStandInsertImage").Find("default").GetComponent <Renderer>().material = Selection.ThisShip.Model.transform.Find("RotationHelper").Find("RotationHelper2").Find("ShipAllParts").Find("ShipStand").Find("ShipStandInsert").Find("ShipStandInsertImage").Find("default").GetComponent <Renderer>().material; obstaclesStayDetectorBase = ShipStand.GetComponentInChildren <ObstaclesStayDetectorForced>(); Roster.SetRaycastTargets(false); inReposition = true; }
private IEnumerator CheckPositions() { DisableRenderers(); OldPosition = HostShip.GetPositionInfo(); ObstaclesStayDetectorForced collisionDetector = HostShip.Model.GetComponentInChildren <ObstaclesStayDetectorForced>(); RelocateToFrontGuides(); collisionDetector.ReCheckCollisionsStart(); yield return(new WaitForEndOfFrame()); yield return(new WaitForEndOfFrame()); bool canBePlacedFront = NoCollisionsWithObjects(collisionDetector); collisionDetector.ReCheckCollisionsFinish(); RelocateToRearGuides(); collisionDetector.ReCheckCollisionsStart(); yield return(new WaitForEndOfFrame()); yield return(new WaitForEndOfFrame()); bool canBePlacedRear = NoCollisionsWithObjects(collisionDetector); collisionDetector.ReCheckCollisionsFinish(); HostShip.SetPositionInfo(OldPosition); RestoreRenderers(); if (!canBePlacedFront && !canBePlacedRear) { Messages.ShowInfo("Buzz Droid Swarm cannot be relocated without overlapping"); DealDamageToBothShips(); } else if (canBePlacedFront && canBePlacedRear) { StartDecisionSubphase(); } else if (canBePlacedFront && !canBePlacedRear) { RelocateToFrontGuidesAndFinish(Triggers.FinishTrigger); } else if (!canBePlacedFront && canBePlacedRear) { RelocateToRearGuidesAndFinish(Triggers.FinishTrigger); } }
public void InitializeRendering() { GameObject prefab = (GameObject)Resources.Load(TheShip.ShipBase.TemporaryPrefabPath, typeof(GameObject)); ShipStand = MonoBehaviour.Instantiate(prefab, TheShip.GetPosition(), TheShip.GetRotation(), BoardTools.Board.GetBoard()); ShipStand.transform.position = new Vector3(ShipStand.transform.position.x, 0, ShipStand.transform.position.z); foreach (Renderer render in ShipStand.transform.Find("ShipBase").GetComponentsInChildren <Renderer>()) { render.enabled = false; } ShipStand.transform.Find("ShipBase").Find("ObstaclesStayDetector").gameObject.AddComponent <ObstaclesStayDetectorForced>(); obstaclesStayDetectorBase = ShipStand.GetComponentInChildren <ObstaclesStayDetectorForced>(); obstaclesStayDetectorBase.TheShip = TheShip; Roster.SetRaycastTargets(false); }
private bool UpdateColisionDetection(ObstaclesStayDetectorForced collisionChecker) { bool isFinished = false; if (updatesCount > 1) { GetResults(collisionChecker); isFinished = true; } else { updatesCount++; } return(isFinished); }
private void ShowTemporaryShipBase() { if (TemporaryShipBase == null) { GameObject prefab = (GameObject)Resources.Load(Selection.ThisShip.ShipBase.TemporaryPrefabPath, typeof(GameObject)); TemporaryShipBase = MonoBehaviour.Instantiate(prefab, GetCurrentBarrelRollHelperTemplateFinisherBasePositionGO().transform.position, GetCurrentBarrelRollHelperTemplateFinisherBasePositionGO().transform.rotation, BoardManager.GetBoard()); TemporaryShipBase.transform.Find("ShipBase").Find("ShipStandInsert").Find("ShipStandInsertImage").Find("default").GetComponent <Renderer>().material = Selection.ThisShip.Model.transform.Find("RotationHelper").Find("RotationHelper2").Find("ShipAllParts").Find("ShipBase").Find("ShipStandInsert").Find("ShipStandInsertImage").Find("default").GetComponent <Renderer>().material; TemporaryShipBase.transform.Find("ShipBase").Find("ObstaclesStayDetector").gameObject.AddComponent <ObstaclesStayDetectorForced>(); obstaclesStayDetectorBase = TemporaryShipBase.GetComponentInChildren <ObstaclesStayDetectorForced>(); if (useModileControls) { ProcessTemporaryShipBaseSlider(SliderMenu.GetSliderValue()); } } }
private bool IsColliderDataAllowed(ObstaclesStayDetectorForced collider, bool isBaseFinalPosition = false) { if (collider.OverlapsShipNow && isBaseFinalPosition) { BarrelRollProblems.Add(ActionFailReason.Bumped); } else if (!TheShip.IsIgnoreObstacles && !TheShip.IsIgnoreObstaclesDuringBarrelRoll && !IsTractorBeamBarrelRoll && collider.OverlapsAsteroidNow) { BarrelRollProblems.Add(ActionFailReason.ObstacleHit); } else if (collider.OffTheBoardNow) { BarrelRollProblems.Add(ActionFailReason.OffTheBoard); } return(BarrelRollProblems.Count == 0); }
public void StartBoostPlanning() { foreach (Actions.BoostTemplates boostHelper in Selection.ThisShip.GetAvailableBoostTemplates()) { switch (boostHelper) { case Actions.BoostTemplates.Straight1: AvailableBoostDirections.Add("Straight 1"); break; case Actions.BoostTemplates.RightBank1: AvailableBoostDirections.Add("Bank 1 Right"); break; case Actions.BoostTemplates.LeftBank1: AvailableBoostDirections.Add("Bank 1 Left"); break; case Actions.BoostTemplates.RightTurn1: AvailableBoostDirections.Add("Turn 1 Right"); break; case Actions.BoostTemplates.LeftTurn1: AvailableBoostDirections.Add("Turn 1 Left"); break; default: AvailableBoostDirections.Add("Straight 1"); break; } } GameObject prefab = (GameObject)Resources.Load(Selection.ThisShip.ShipBase.TemporaryPrefabPath, typeof(GameObject)); ShipStand = MonoBehaviour.Instantiate(prefab, Selection.ThisShip.GetPosition(), Selection.ThisShip.GetRotation(), BoardManager.GetBoard()); ShipStand.transform.position = new Vector3(ShipStand.transform.position.x, 0, ShipStand.transform.position.z); foreach (Renderer render in ShipStand.transform.Find("ShipBase").GetComponentsInChildren <Renderer>()) { render.enabled = false; } ShipStand.transform.Find("ShipBase").Find("ObstaclesStayDetector").gameObject.AddComponent <ObstaclesStayDetectorForced>(); obstaclesStayDetectorBase = ShipStand.GetComponentInChildren <ObstaclesStayDetectorForced>(); Roster.SetRaycastTargets(false); AskSelectTemplate(); }
public void StartBoostPlanning() { foreach (Transform boostHelper in Selection.ThisShip.GetBoosterHelper()) { AvailableBoostDirections.Add(boostHelper.name, boostHelper.Find("Finisher").position); } GameObject prefab = (GameObject)Resources.Load(Selection.ThisShip.ShipBase.TemporaryPrefabPath, typeof(GameObject)); ShipStand = MonoBehaviour.Instantiate(prefab, Selection.ThisShip.GetPosition(), Selection.ThisShip.GetRotation(), BoardManager.GetBoard()); ShipStand.transform.position = new Vector3(ShipStand.transform.position.x, 0, ShipStand.transform.position.z); ShipStand.transform.Find("ShipBase").Find("ShipStandInsert").Find("ShipStandInsertImage").Find("default").GetComponent <Renderer>().material = Selection.ThisShip.Model.transform.Find("RotationHelper").Find("RotationHelper2").Find("ShipAllParts").Find("ShipBase").Find("ShipStandInsert").Find("ShipStandInsertImage").Find("default").GetComponent <Renderer>().material; ShipStand.transform.Find("ShipBase").Find("ObstaclesStayDetector").gameObject.AddComponent <ObstaclesStayDetectorForced>(); obstaclesStayDetectorBase = ShipStand.GetComponentInChildren <ObstaclesStayDetectorForced>(); Roster.SetRaycastTargets(false); inReposition = true; }
private IEnumerator CheckBombPlacement() { ObstaclesStayDetectorForced detector = BombGO.GetComponentInChildren <ObstaclesStayDetectorForced>(); detector.ReCheckCollisionsStart(); yield return(WaitForFrames(2)); detector.ReCheckCollisionsFinish(); if (detector.OverlapsCurrentShipNow) { GameCommand command = GeneratePlaceBombCommand(BombGO.transform.position, BombGO.transform.eulerAngles); GameMode.CurrentGameMode.ExecuteCommand(command); } else { Messages.ShowError("The bomb must be touching ship's base"); IsInReposition = true; } }
public void StartDecloakPlanning() { GameObject prefab = (GameObject)Resources.Load(Selection.ThisShip.ShipBase.TemporaryPrefabPath, typeof(GameObject)); ShipStand = MonoBehaviour.Instantiate(prefab, Selection.ThisShip.GetPosition(), Selection.ThisShip.GetRotation(), BoardTools.Board.GetBoard()); ShipStand.transform.Find("ShipBase").Find("ShipStandInsert").Find("ShipStandInsertImage").Find("default").GetComponent <Renderer>().material = Selection.ThisShip.Model.transform.Find("RotationHelper").Find("RotationHelper2").Find("ShipAllParts").Find("ShipBase").Find("ShipStandInsert").Find("ShipStandInsertImage").Find("default").GetComponent <Renderer>().material; ShipStand.transform.Find("ShipBase").Find("ObstaclesStayDetector").gameObject.AddComponent <ObstaclesStayDetectorForced>(); obstaclesStayDetectorBase = ShipStand.GetComponentInChildren <ObstaclesStayDetectorForced>(); MovementTemplates.CurrentTemplate = MovementTemplates.GetMovement2Ruler(); MovementTemplates.CurrentTemplate.position = Selection.ThisShip.TransformPoint(new Vector3(0.5f, 0, -0.25f)); foreach (Transform decloakHelper in Selection.ThisShip.GetDecloakHelper()) { AvailableDecloakDirections.Add(decloakHelper.name, decloakHelper.Find("Finisher").position); } Roster.SetRaycastTargets(false); TurnOnDragging(); }
public void StartBoostPlanning() { foreach (Transform boostHelper in Selection.ThisShip.GetBoosterHelper()) { AvailableBoostDirections.Add(boostHelper.name); } GameObject prefab = (GameObject)Resources.Load(Selection.ThisShip.ShipBase.TemporaryPrefabPath, typeof(GameObject)); ShipStand = MonoBehaviour.Instantiate(prefab, Selection.ThisShip.GetPosition(), Selection.ThisShip.GetRotation(), BoardManager.GetBoard()); ShipStand.transform.position = new Vector3(ShipStand.transform.position.x, 0, ShipStand.transform.position.z); foreach (Renderer render in ShipStand.transform.Find("ShipBase").GetComponentsInChildren <Renderer>()) { render.enabled = false; } ShipStand.transform.Find("ShipBase").Find("ObstaclesStayDetector").gameObject.AddComponent <ObstaclesStayDetectorForced>(); obstaclesStayDetectorBase = ShipStand.GetComponentInChildren <ObstaclesStayDetectorForced>(); Roster.SetRaycastTargets(false); AskSelectTemplate(); }
public void StartBarrelRollPlanning() { GameObject prefab = (GameObject)Resources.Load(Selection.ThisShip.ShipBase.TemporaryPrefabPath, typeof(GameObject)); ShipStand = MonoBehaviour.Instantiate(prefab, Selection.ThisShip.GetPosition(), Selection.ThisShip.GetRotation(), BoardManager.GetBoard()); ShipStand.transform.Find("ShipBase").Find("ShipStandInsert").Find("ShipStandInsertImage").Find("default").GetComponent <Renderer>().material = Selection.ThisShip.Model.transform.Find("RotationHelper").Find("RotationHelper2").Find("ShipAllParts").Find("ShipBase").Find("ShipStandInsert").Find("ShipStandInsertImage").Find("default").GetComponent <Renderer>().material; ShipStand.transform.Find("ShipBase").Find("ObstaclesStayDetector").gameObject.AddComponent <ObstaclesStayDetectorForced>(); obstaclesStayDetectorBase = ShipStand.GetComponentInChildren <ObstaclesStayDetectorForced>(); barrelRollDistance = (Selection.ThisShip.ShipBaseSize == Ship.BaseSize.Small) ? 2f : 2.5f; barrelRollTemplateDistance = (Selection.ThisShip.ShipBaseSize == Ship.BaseSize.Small) ? 0.5f : 1.25f; battelRollTemplateLimitTop = (Selection.ThisShip.ShipBaseSize == Ship.BaseSize.Small) ? 0.25f : 1f; battelRollTemplateLimitBottom = (Selection.ThisShip.ShipBaseSize == Ship.BaseSize.Small) ? 0.75f : 2f; MovementTemplates.CurrentTemplate = MovementTemplates.GetMovement1Ruler(); MovementTemplates.CurrentTemplate.position = Selection.ThisShip.TransformPoint(new Vector3(barrelRollTemplateDistance, 0, -battelRollTemplateLimitTop)); obstaclesStayDetectorMovementTemplate = MovementTemplates.CurrentTemplate.GetComponentInChildren <ObstaclesStayDetectorForced>(); Roster.SetRaycastTargets(false); inReposition = true; }
private void ShowNearestBoosterHelper(string name) { // TODO: hide template if (SelectedBoostHelper != name) { if (!string.IsNullOrEmpty(SelectedBoostHelper)) { Selection.ThisShip.GetBoosterHelper().Find(SelectedBoostHelper).gameObject.SetActive(false); } Selection.ThisShip.GetBoosterHelper().Find(name).gameObject.SetActive(true); Transform newBase = Selection.ThisShip.GetBoosterHelper().Find(name + "/Finisher/BasePosition"); ShipStand.transform.position = new Vector3(newBase.position.x, 0, newBase.position.z); ShipStand.transform.rotation = newBase.rotation; obstaclesStayDetectorMovementTemplate = Selection.ThisShip.GetBoosterHelper().Find(name).GetComponentInChildren <ObstaclesStayDetectorForced>(); SelectedBoostHelper = name; } }
private void ShowNearestDecloakHelper(string name) { if (SelectedDecloakHelper != name) { if (name == "Forward") { MovementTemplates.CurrentTemplate.gameObject.SetActive(false); Selection.ThisShip.GetDecloakHelper().Find(name).gameObject.SetActive(true); Transform newBase = Selection.ThisShip.GetDecloakHelper().Find(name + "/Finisher/BasePosition"); ShipStand.transform.position = newBase.position; ShipStand.transform.rotation = newBase.rotation; obstaclesStayDetectorMovementTemplate = Selection.ThisShip.GetDecloakHelper().Find(name).GetComponentInChildren <ObstaclesStayDetectorForced>(); } else { if (!string.IsNullOrEmpty(SelectedDecloakHelper)) { Selection.ThisShip.GetDecloakHelper().Find(SelectedDecloakHelper).gameObject.SetActive(false); } MovementTemplates.CurrentTemplate.gameObject.SetActive(true); obstaclesStayDetectorMovementTemplate = MovementTemplates.CurrentTemplate.GetComponentInChildren <ObstaclesStayDetectorForced>(); PerfromDrag(); } SelectedDecloakHelper = name; } else { if (name != "Forward") { PerfromDrag(); } } }
private void GetResults(ObstaclesStayDetectorForced collisionChecker) { collisionChecker.ReCheckCollisionsFinish(); if (collisionChecker.OverlapsShipNow) { //TODO: FIX: Select manually GenericShip detonatedShip = collisionChecker.OverlappedShipsNow[0]; Triggers.RegisterTrigger(new Trigger() { Name = "Damage from mine", TriggerOwner = detonatedShip.Owner.PlayerNo, TriggerType = TriggerTypes.OnPositionFinish, EventHandler = TryDetonate, EventArgs = new BombDetonationEventArgs() { DetonatedShip = detonatedShip, BombObject = collisionChecker.transform.parent.gameObject } }); } immediateDetonationsCheckedCount++; int minesDropped = string.IsNullOrEmpty(bombSidePrefabPath) ? 1 : 3; if (immediateDetonationsCheckedCount == minesDropped) { GameManagerScript Game = GameObject.Find("GameManager").GetComponent <GameManagerScript>(); for (int i = 0; i < minesDropped; i++) { Game.Movement.FuncsToUpdate.Remove(delegate { return(UpdateColisionDetection(collisionChecker)); }); } immediateDetonationsCheckedCount = 0; Triggers.ResolveTriggers(TriggerTypes.OnBombIsDetonated, CallBack); } }
protected IEnumerator CheckCollisionsOfTemporaryBoostElements(Action callback) { BarrelRollProblems.Clear(); ObstaclesStayDetectorForced obstaclesStayDetectorMovementTemplate = TheShip.GetBoosterHelper().Find(SelectedBoostHelper).GetComponentInChildren <ObstaclesStayDetectorForced>(); obstaclesStayDetectorMovementTemplate.TheShip = TheShip; TemporaryShipBase.transform.Find("ShipBase").Find("ObstaclesStayDetector").gameObject.AddComponent <ObstaclesStayDetectorForced>(); ObstaclesStayDetectorForced obstaclesStayDetectorNewBase = TemporaryShipBase.GetComponentInChildren <ObstaclesStayDetectorForced>(); yield return(CheckBoostTemplate(obstaclesStayDetectorMovementTemplate)); yield return(CheckBoostTemplate(obstaclesStayDetectorNewBase)); if (!IsBoostTemplateColliderDataAllowed(obstaclesStayDetectorMovementTemplate) || !IsBoostTemplateNewBaseDataAllowed(obstaclesStayDetectorNewBase)) { CancelBoost(); } else { callback(); } }
private static bool NoCollisionsWithObjects(ObstaclesStayDetectorForced collisionDetector) { return(!collisionDetector.OverlapsAsteroidNow && !collisionDetector.OverlapsShipNow && collisionDetector.OverlapedMinesNow.Count == 0); }