Exemple #1
0
        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);
 }
Exemple #3
0
        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);
        }
Exemple #6
0
        public void TryConfirmDecloakPosition()
        {
            obstaclesStayDetectorBase.ReCheckCollisionsStart();

            obstaclesStayDetectorMovementTemplate = GetDecloakHelperByName(SelectedDecloakHelper).GetComponentInChildren <ObstaclesStayDetectorForced>();
            obstaclesStayDetectorMovementTemplate.ReCheckCollisionsStart();

            GameManagerScript Game = GameObject.Find("GameManager").GetComponent <GameManagerScript>();

            Game.Movement.FuncsToUpdate.Add(UpdateColisionDetection);
        }
Exemple #7
0
        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>();
        }
Exemple #10
0
    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);
        }
Exemple #14
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;
        }
Exemple #15
0
        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);
            }
        }
Exemple #16
0
        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);
        }
Exemple #17
0
        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);
        }
Exemple #20
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();
        }
Exemple #21
0
        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;
        }
Exemple #22
0
        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;
            }
        }
Exemple #23
0
        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();
        }
Exemple #24
0
        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();
        }
Exemple #25
0
        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;
        }
Exemple #26
0
        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;
            }
        }
Exemple #27
0
        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();
                }
            }
        }
Exemple #28
0
        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();
            }
        }
Exemple #30
0
 private static bool NoCollisionsWithObjects(ObstaclesStayDetectorForced collisionDetector)
 {
     return(!collisionDetector.OverlapsAsteroidNow &&
            !collisionDetector.OverlapsShipNow &&
            collisionDetector.OverlapedMinesNow.Count == 0);
 }