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); } }
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); } }
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); }
public static void RegisterBombs(List <GameObject> bombObjects, GenericBomb bombUpgrade) { foreach (var bombObject in bombObjects) { if (!bombsList.ContainsKey(bombObject)) { bombsList.Add(bombObject, bombUpgrade); } } }
public BombObstacleDistance(GenericBomb bomb, GenericObstacle obstacle) { Bomb = bomb; Obstacle = obstacle; if (!CheckDistanceSimple()) { CheckDistanceAdvanced(); } }
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); }
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); } }
private void CheckAbility(GenericBomb bomb, GameObject bombObject) { if (!IsAbilityUsed && IsBombFriendly(bomb) && IsAtLeastOneEnemyInRange(bomb, bombObject)) { RegisterAbilityTrigger( TriggerTypes.OnBombIsRemoved, AskToUseSabine, new BombDetonationEventArgs() { BombObject = bombObject } ); } }
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 } ); } }
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; }
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); } } }
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; }
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); } }
private bool IsBombFriendly(GenericBomb bomb) { return(bomb.Host.Owner.PlayerNo == HostShip.Owner.PlayerNo); }
public void CallAfterSufferBombEffect(GenericBomb bomb, Action callback) { OnAfterSufferBombEffect?.Invoke(this, bomb); Triggers.ResolveTriggers(TriggerTypes.OnAfterSufferBombEffect, callback); }
public static void Initialize() { minesList = new Dictionary <GameObject, GenericBomb>(); CurrentBomb = null; }
public static void RegisterMine(GameObject mineObject, GenericBomb bombUpgrade) { minesList.Add(mineObject, bombUpgrade); }