Example #1
0
 public static void RegisterMines(List <GameObject> mineObjects, GenericBomb bombUpgrade)
 {
     foreach (var mineObject in mineObjects)
     {
         minesList.Add(mineObject, bombUpgrade);
     }
 }
 private void CheckCaptainNymAbility(GenericBomb bomb, GenericShip detonatedShip)
 {
     if (!IsAbilityUsed && bomb.Host.Owner.PlayerNo == HostShip.Owner.PlayerNo)
     {
         RegisterAbilityTrigger(TriggerTypes.OnCheckPermissionToDetonate, AskToUseCaptainNymAbility);
     }
 }
Example #3
0
 private void CheckAbility(GenericShip ship, GenericBomb bomb)
 {
     if (bomb.HostShip.Owner.PlayerNo == HostShip.Owner.PlayerNo && bomb.UpgradeInfo.SubType == UpgradeSubType.Bomb && ReadyTokens.Any())
     {
         BombEffectTargetShip = ship;
         RegisterAbilityTrigger(TriggerTypes.OnAfterSufferBombEffect, AskToUseOwnAbility);
     }
 }
Example #4
0
        private bool IsAtLeastOneEnemyInRange(GenericBomb bomb, GameObject bombObject)
        {
            List <GenericShip> shipsInRange = BombsManager.GetShipsInRange(bombObject);

            // Count only enemies
            shipsInRange = shipsInRange.Where(n => n.Owner.PlayerNo != bomb.Host.Owner.PlayerNo).ToList();

            return(shipsInRange.Count > 0);
        }
Example #5
0
 public static void RegisterBombs(List <GameObject> bombObjects, GenericBomb bombUpgrade)
 {
     foreach (var bombObject in bombObjects)
     {
         if (!bombsList.ContainsKey(bombObject))
         {
             bombsList.Add(bombObject, bombUpgrade);
         }
     }
 }
Example #6
0
        public BombObstacleDistance(GenericBomb bomb, GenericObstacle obstacle)
        {
            Bomb     = bomb;
            Obstacle = obstacle;

            if (!CheckDistanceSimple())
            {
                CheckDistanceAdvanced();
            }
        }
Example #7
0
        public static List <Vector3> GetBombPoints(GenericBomb bomb)
        {
            List <Vector3> globalPoints = new List <Vector3>();

            foreach (Vector3 relativePoint in GetBombPointsRelative())
            {
                Vector3 globalBombPoint = bomb.CurrentBombObjects.First().transform.TransformPoint(relativePoint);
                globalPoints.Add(globalBombPoint);
            }
            return(globalPoints);
        }
Example #8
0
        private void CheckIgnoreMines(GenericBomb bomb, GenericShip ship)
        {
            if (ship == null || ship.ShipId != HostShip.ShipId)
            {
                return;
            }

            if (bomb.GetType().BaseType == typeof(GenericContactMine))
            {
                RegisterAbilityTrigger(TriggerTypes.OnCheckPermissionToDetonate, AskToIgnoreContactMine);
            }
        }
Example #9
0
 private void CheckAbility(GenericBomb bomb, GameObject bombObject)
 {
     if (!IsAbilityUsed && IsBombFriendly(bomb) && IsAtLeastOneEnemyInRange(bomb, bombObject))
     {
         RegisterAbilityTrigger(
             TriggerTypes.OnBombIsRemoved,
             AskToUseSabine,
             new BombDetonationEventArgs()
         {
             BombObject = bombObject
         }
             );
     }
 }
Example #10
0
 private void CheckDamage(GenericBomb bomb, GenericDeviceGameObject model)
 {
     if (BombsManager.GetShipsInRange(model).Contains(Host))
     {
         Triggers.RegisterTrigger(
             new Trigger()
         {
             Name         = "Rattled: Damage",
             TriggerOwner = Host.Owner.PlayerNo,
             TriggerType  = TriggerTypes.OnAbilityDirect,
             EventHandler = RattledDamage
         }
             );
     }
 }
Example #11
0
        private void ShowBombAndDropTemplate(ManeuverTemplate bombDropTemplate)
        {
            GenericBomb bomb = BombsManager.CurrentDevice as GenericBomb;

            bombDropTemplate.ApplyTemplate(Selection.ThisShip, Selection.ThisShip.GetBack(), Direction.Bottom);

            Vector3    bombPosition = bombDropTemplate.GetFinalPosition();
            Quaternion bombRotation = bombDropTemplate.GetFinalRotation();

            CreateBombObject(bombPosition, bombRotation);

            for (int i = 0; i < BombObjects.Count; i++)
            {
                switch (i)
                {
                case 0:
                    BombObjects[i].transform.position = bombPosition;
                    break;

                case 1:
                    BombObjects[i].transform.position = bombPosition
                                                        + BombObjects.First().transform.TransformVector(new Vector3(
                                                                                                            bomb.bombSideDistanceX,
                                                                                                            0,
                                                                                                            bomb.bombSideDistanceZ
                                                                                                            )
                                                                                                        );
                    break;

                case 2:
                    BombObjects[i].transform.position = bombPosition
                                                        + BombObjects.First().transform.TransformVector(new Vector3(
                                                                                                            -bomb.bombSideDistanceX,
                                                                                                            0,
                                                                                                            bomb.bombSideDistanceZ
                                                                                                            )
                                                                                                        );
                    break;

                default:
                    break;
                }

                BombObjects[i].transform.rotation = bombRotation;
            }

            SelectedBombDropHelper = bombDropTemplate;
        }
Example #12
0
        public static void RegisterBombs(List <GameObject> bombObjects, GenericBomb bombUpgrade)
        {
            foreach (var bombObject in bombObjects)
            {
                if (!bombsList.ContainsKey(bombObject))
                {
                    bombsList.Add(bombObject, bombUpgrade);
                }

                MeshCollider collider = bombObject.transform.Find("Model").GetComponent <MeshCollider>();
                if (collider != null)
                {
                    Board.Objects.Add(collider);
                }
            }
        }
Example #13
0
        public static void RegisterBombs(List <GenericDeviceGameObject> bombObjects, GenericBomb bombUpgrade)
        {
            foreach (var bombObject in bombObjects)
            {
                if (!bombsList.ContainsKey(bombObject))
                {
                    bombsList.Add(bombObject, bombUpgrade);
                }

                MeshCollider collider = bombObject.transform.Find("Model").GetComponent <MeshCollider>();
                if (collider != null)
                {
                    Board.Objects.Add(collider);
                }
            }

            BombsManager.CurrentBombObject = bombObjects.FirstOrDefault();
            BombsManager.CurrentDevice     = bombUpgrade;
        }
Example #14
0
        private void CreateBombObject(Vector3 bombPosition, Quaternion bombRotation)
        {
            GenericBomb bomb = BombsManager.CurrentDevice as GenericBomb;

            GenericDeviceGameObject prefab = Resources.Load <GenericDeviceGameObject>(bomb.bombPrefabPath);
            var device = MonoBehaviour.Instantiate(prefab, bombPosition, bombRotation, Board.GetBoard());

            device.Initialize(bomb);
            BombObjects.Add(device);

            if (!string.IsNullOrEmpty(bomb.bombSidePrefabPath))
            {
                GenericDeviceGameObject prefabSide = Resources.Load <GenericDeviceGameObject>(bomb.bombSidePrefabPath);
                var extraPiece1 = MonoBehaviour.Instantiate(prefabSide, bombPosition, bombRotation, Board.GetBoard());
                var extraPiece2 = MonoBehaviour.Instantiate(prefabSide, bombPosition, bombRotation, Board.GetBoard());
                BombObjects.Add(extraPiece1);
                BombObjects.Add(extraPiece2);
                extraPiece1.Initialize(bomb);
                extraPiece2.Initialize(bomb);
            }
        }
Example #15
0
 private bool IsBombFriendly(GenericBomb bomb)
 {
     return(bomb.Host.Owner.PlayerNo == HostShip.Owner.PlayerNo);
 }
Example #16
0
        public void CallAfterSufferBombEffect(GenericBomb bomb, Action callback)
        {
            OnAfterSufferBombEffect?.Invoke(this, bomb);

            Triggers.ResolveTriggers(TriggerTypes.OnAfterSufferBombEffect, callback);
        }
Example #17
0
 public static void Initialize()
 {
     minesList   = new Dictionary <GameObject, GenericBomb>();
     CurrentBomb = null;
 }
Example #18
0
 public static void RegisterMine(GameObject mineObject, GenericBomb bombUpgrade)
 {
     minesList.Add(mineObject, bombUpgrade);
 }