void OnTriggerStay(Collider collisionInfo) { if (checkCollisionsNow) { if (collisionInfo.tag == "Asteroid") { GenericObstacle obstacle = ObstaclesManager.GetObstacleByTransform(collisionInfo.transform); if (!OverlappedAsteroidsNow.Contains(obstacle)) { OverlappedAsteroidsNow.Add(obstacle); } } else if (collisionInfo.tag == "Mine") { if (!OverlapedMinesNow.Contains(collisionInfo)) { OverlapedMinesNow.Add(collisionInfo); } } else if (collisionInfo.name == "OffTheBoard") { OffTheBoardNow = true; } else if (collisionInfo.name == "ObstaclesStayDetector") { if (collisionInfo.tag != "Untagged" && collisionInfo.tag != TheShip.GetTag()) { OverlappedShipsNow.Add(Roster.GetShipById(collisionInfo.tag)); } } } }
public static void PlaceObstacle(string obstacleName, Vector3 position, Vector3 angles) { Phases.CurrentSubPhase.IsReadyForCommands = false; ChosenObstacle = ObstaclesManager.GetChosenObstacle(obstacleName); ChosenObstacle.ObstacleGO.transform.position = position; ChosenObstacle.ObstacleGO.transform.eulerAngles = angles; Board.ToggleOffTheBoardHolder(false); ChosenObstacle.ObstacleGO.transform.parent = Board.BoardTransform; ChosenObstacle.IsPlaced = true; ChosenObstacle = null; IsEnteredPlacementZone = false; IsEnteredPlaymat = false; MovementTemplates.ReturnRangeRulerR1(); MovementTemplates.ReturnRangeRulerR2(); if (ObstaclesManager.GetPlacedObstaclesCount() < 6) { Phases.CurrentSubPhase.Next(); } else { FinishSubPhase(); } }
private void CheckObstructionRecursive(Vector3 point1, Vector3 point2, GenericShip targetShip) { RaycastHit hitInfo = new RaycastHit(); if (Physics.Raycast(point1 + new Vector3(0, 0.003f, 0), point2 - point1 + new Vector3(0, 0.003f, 0), out hitInfo)) { if (hitInfo.collider.tag == "Obstacle") { GenericObstacle obstructedObstacle = ObstaclesManager.GetChosenObstacle(hitInfo.collider.name); if (!ObstructedByObstacles.Contains(obstructedObstacle)) { ObstructedByObstacles.Add(obstructedObstacle); } IgnoreCollider(hitInfo); CheckObstructionRecursive(point1, point2, targetShip); } else if (hitInfo.collider.tag.StartsWith("ShipId:")) { if (hitInfo.collider.tag != "ShipId:" + targetShip.ShipId) { GenericShip obstructedShip = Roster.GetShipById(hitInfo.collider.tag); if (!ObstructedByShips.Contains(obstructedShip)) { ObstructedByShips.Add(obstructedShip); } IgnoreCollider(hitInfo); CheckObstructionRecursive(point1, point2, targetShip); } } else if (hitInfo.collider.tag == "Mine" || hitInfo.collider.tag == "TimedBomb") { IsObstructedByBombToken = true; } } }
private void DropCargoToken() { Action Callback = Phases.CurrentSubPhase.CallBack; DecisionSubPhase.ConfirmDecisionNoCallback(); HostUpgrade.State.SpendCharge(); ManeuverTemplate dropTemplate = new ManeuverTemplate(ManeuverBearing.Straight, ManeuverDirection.Forward, ManeuverSpeed.Speed1, isBombTemplate: true); dropTemplate.ApplyTemplate(HostShip, HostShip.GetBack(), Direction.Bottom); Debris looseCargo = new Debris("Loose Cargo", "loosecargo"); looseCargo.Spawn("Loose Cargo " + HostShip.ShipId, Board.GetBoard()); ObstaclesManager.AddObstacle(looseCargo); looseCargo.ObstacleGO.transform.position = dropTemplate.GetFinalPosition(); looseCargo.ObstacleGO.transform.eulerAngles = dropTemplate.GetFinalAngles(); looseCargo.IsPlaced = true; GameManagerScript.Wait( 1, delegate { dropTemplate.DestroyTemplate(); Callback(); } ); }
private void DropSparePartsToken() { Action Callback = Phases.CurrentSubPhase.CallBack; DecisionSubPhase.ConfirmDecisionNoCallback(); HostUpgrade.State.SpendCharge(); ManeuverTemplate dropTemplate = new ManeuverTemplate(ManeuverBearing.Straight, ManeuverDirection.Forward, ManeuverSpeed.Speed1, isBombTemplate: true); dropTemplate.ApplyTemplate(HostShip, HostShip.GetBack(), Direction.Bottom); Debris spareParts = new Debris("Spare Parts", "spareparts"); spareParts.Spawn("Spare Parts " + HostShip.ShipId, Board.GetBoard()); ObstaclesManager.AddObstacle(spareParts); spareParts.ObstacleGO.transform.position = dropTemplate.GetFinalPosition(); spareParts.ObstacleGO.transform.eulerAngles = dropTemplate.GetFinalAngles(); spareParts.IsPlaced = true; GameManagerScript.Wait( 1, delegate { Messages.ShowInfo("Spare Parts are dropped"); dropTemplate.DestroyTemplate(); BreakAllLocksRecursive(Callback); } ); }
private void DropSparePartsToken() { Action Callback = Phases.CurrentSubPhase.CallBack; DecisionSubPhase.ConfirmDecisionNoCallback(); HostUpgrade.State.SpendCharge(); Debris spareParts = new Debris("Spare Parts", "spareparts"); spareParts.Spawn("Spare Parts " + HostShip.ShipId, Board.GetBoard()); ObstaclesManager.AddObstacle(spareParts); spareParts.ObstacleGO.transform.position = HostShip.GetBack(); spareParts.ObstacleGO.transform.eulerAngles = HostShip.GetAngles() + new Vector3(0, 180, 0); spareParts.IsPlaced = true; GameManagerScript.Wait( 1, delegate { Messages.ShowInfo("Spare Parts are dropped"); BreakAllLocksRecursive(Callback); } ); }
// Start is called before the first frame update void Start() { currentTime = 0.0f; currentMin = 0; currentSetting = Dificulty.VeryEasy; obstacleManager = GetComponentInChildren <ObstaclesManager>(); pickUpManager = GetComponentInChildren <PickablesManager>(); enemySpawner = GetComponentInChildren <EnemySpawner>(); }
private void DetonateObstacle() { //TODO: Animation if (ChosenObstacle != null) { ObstaclesManager.DestroyObstacle(ChosenObstacle); } BombsManager.ResolveDetonationTriggers(); }
void Start() { gameplayManager = GameObject.FindGameObjectWithTag("GameManagers").GetComponent <GameplayManager>(); generalSounds = GameObject.FindGameObjectWithTag("GameManagers").GetComponent <GeneralSoundsManager>(); obstacleManager = GameObject.FindGameObjectWithTag("GameManagers").GetComponent <ObstaclesManager>(); if (hasChild) { for (int i = 0; i < transform.GetChildCount(); i++) { Transform obs = transform.GetChild(i); if (isAnimated) { Transform root = obs.GetChild(0); Transform child = root.GetChild(0); ObstacleChild comp = child.gameObject.AddComponent <ObstacleChild>(); comp.name = name; child.gameObject.AddComponent <FootprintComponent>(); if (isAnimated) { obstacleAnimation.Add(root.GetComponent <Animation>()); } } else { ObstacleChild comp = obs.gameObject.AddComponent <ObstacleChild>(); comp.name = name; obs.gameObject.AddComponent <FootprintComponent>(); } } } else { if (isAnimated) { Transform root = transform.GetChild(0); obstacleAnimation.Add(root.GetComponent <Animation>()); Transform animatedChild = root.GetChild(0); ObstacleChild comp = animatedChild.gameObject.AddComponent <ObstacleChild>(); comp.name = name; animatedChild.gameObject.AddComponent <FootprintComponent>(); animChild = animatedChild.gameObject; Transform childTr = animChild.transform; initialPos = new Vector3(childTr.position.x, childTr.position.y, childTr.position.z); initialRot = new Quaternion(childTr.rotation.x, childTr.rotation.y, childTr.rotation.z, childTr.rotation.w); } else { gameObject.AddComponent <FootprintComponent>(); } } SetActivationDistance(); }
void Awake() { if (instance == null) { instance = this; } else if (instance != this) { Destroy(gameObject); } }
void OnTriggerEnter(Collider collisionInfo) { if (collisionInfo.tag == "Obstacle") { ObstaclesObstructed.Add(ObstaclesManager.GetChosenObstacle(collisionInfo.transform.name)); } else if (collisionInfo.tag == "Mine" || collisionInfo.tag == "TimedBomb") { IsObstructedByBombToken = true; } }
protected void InitializeDataContainer() { GameObject gameManagers = GameObject.FindGameObjectWithTag("GameManagers"); environmentManager = gameManagers.GetComponent <EnvironmentManager>(); tokenManager = gameManagers.GetComponent <TokensManager>(); obstacleManager = gameManagers.GetComponent <ObstaclesManager>(); gameplayManager = gameManagers.GetComponent <GameplayManager>(); interfaces = GameObject.FindGameObjectWithTag("Interface").GetComponent <CQ_Interface>(); tokenByName = new Dictionary <string, Token>(); }
private void Awake() { if (_instance != null && _instance != this) { Destroy(this.gameObject); } else { _instance = this; } }
private void ApplyObstacleLimits() { MovementTemplates.ReturnRangeRulerR1(); Vector3 fromObstacle = Vector3.zero; Vector3 toObstacle = Vector3.zero; float minDistance = float.MaxValue; bool isBlockedByAnotherObstacle = false; foreach (MeshCollider collider in ObstaclesManager.GetPlacedObstacles().Select(n => n.ObstacleGO.GetComponentInChildren <MeshCollider>())) { Vector3 closestPoint = collider.ClosestPoint(ChosenObstacle.ObstacleGO.transform.position); RaycastHit hitInfo = new RaycastHit(); if (Physics.Raycast(closestPoint + new Vector3(0, 0.003f, 0), ChosenObstacle.ObstacleGO.transform.position - closestPoint, out hitInfo)) { float distanceBetween = Vector3.Distance(closestPoint, hitInfo.point); if (distanceBetween < MinObstaclesDistance) { IsPlacementBlocked = true; isBlockedByAnotherObstacle = true; if (distanceBetween < minDistance) { fromObstacle = closestPoint + new Vector3(0, 0.003f, 0); toObstacle = hitInfo.point; minDistance = distanceBetween; } } } // In case if one asteroid is inside of another float distanceToCenter = Vector3.Distance(closestPoint, ChosenObstacle.ObstacleGO.transform.position); if (distanceToCenter < MinObstaclesDistance) { IsPlacementBlocked = true; isBlockedByAnotherObstacle = true; if (distanceToCenter < minDistance) { fromObstacle = closestPoint; toObstacle = ChosenObstacle.ObstacleGO.transform.position; minDistance = distanceToCenter; } } } if (IsPlacementBlocked && isBlockedByAnotherObstacle) { MovementTemplates.ShowRangeRulerR1(fromObstacle, toObstacle); } }
private void Start() { if (instance == null) { instance = this; } else { Destroy(this); } }
public void SetDefaultObstacles() { ChosenObstacles.AddRange ( new List <GenericObstacle>() { ObstaclesManager.GetPossibleObstacle("coreasteroid5"), ObstaclesManager.GetPossibleObstacle("core2asteroid5"), ObstaclesManager.GetPossibleObstacle("core2asteroid4") } ); }
private static void FinishSubPhase() { HideSubphaseDescription(); Board.ToggleObstaclesHolder(false); ObstaclesManager.SetObstaclesCollisionDetectionQuality(CollisionDetectionQuality.High); GenericSubPhase subphase = Phases.StartTemporarySubPhaseNew("Notification", typeof(NotificationSubPhase), StartSetupPhase); (subphase as NotificationSubPhase).TextToShow = "Setup"; subphase.Start(); }
private static void FinishSubPhase() { HideSubphaseDescription(); Board.ToggleObstaclesHolder(false); Roster.SetRaycastTargets(true); ObstaclesManager.SetObstaclesCollisionDetectionQuality(CollisionDetectionQuality.High); Action callback = Phases.CurrentSubPhase.CallBack; Phases.CurrentSubPhase = Phases.CurrentSubPhase.PreviousSubPhase; //Phases.CurrentSubPhase.Resume(); callback(); }
private void Awake() { instance = this; allTreasuresMerged = false; obstaclesList = new List <Obstacle>(obstaclesParentGO.GetComponentsInChildren <Obstacle>()); //Check if total obstacles in scene are equal to the variable totalObstaclesWithTreasure if (obstaclesList.Count != totalNumberOfObstacles) { Debug.LogError("Obstacles gameobjects in scene does not equal the required obstacles mentioned in the gamemanager script."); } }
public ShipObstacleDistance(GenericShip ship, GenericObstacle obstacle) { CollisionDetectionQuality currentQuality = ObstaclesManager.CollisionDetectionQuality; ObstaclesManager.SetObstaclesCollisionDetectionQuality(CollisionDetectionQuality.Low); Ship = ship; Obstacle = obstacle; if (!CheckDistanceSimple()) { CheckDistanceAdvanced(); } ObstaclesManager.SetObstaclesCollisionDetectionQuality(currentQuality); }
void StartGame() { SoundsManager.getInstance().PlayIngameMusic(); PhysicalGameManager.getInstance().gameObject.transform.GetChild(0).gameObject.SetActive(false); if (NetworkManager.getInstance().IsServer()) { ObstaclesManager.getInstance().StartObstaclesManager(); PowerUpsManager.getInstance().StartPowerUpsManager(); } for (int i = 0; i < 4; i++) { if (i == SelectedPlayer) { transform.GetChild(3).GetChild(i).GetComponent <BaseController>().SelectPlayer(true); } else { if (!InPractice) { transform.GetChild(3).GetChild(i).GetComponent <NPCController>().enabled = true; transform.GetChild(3).GetChild(i).GetComponent <NPCController>().StartSynchronize(); } transform.GetChild(3).GetChild(i).GetComponent <CapsuleCollider>().enabled = false; Destroy(transform.GetChild(3).GetChild(i).GetComponent <Rigidbody>()); } } var Platforms = gameObject.GetComponentsInChildren <FixedPlatform>(); // Enable rigidbodies: foreach (var component in Platforms) { component.Initiate(); } UIPlayerFollow.getInstance().SetPlayer(SelectedPlayer); Timer.getInstance().StartTimer(); GameCanvas.getInstance().gameObject.transform.GetChild(0).GetChild(0).GetChild(0).GetChild(SelectedPlayer).gameObject.SetActive(true); GameCanvas.getInstance().gameObject.transform.GetChild(0).GetChild(1).GetChild(SelectedPlayer).gameObject.SetActive(true); GameCanvas.getInstance().gameObject.transform.GetChild(0).GetChild(0).GetChild(1).gameObject.SetActive(true); InGame = true; }
void OnTriggerEnter(Collider collisionInfo) { if (checkCollisions) { GameManagerScript Game = GameObject.Find("GameManager").GetComponent <GameManagerScript>(); if (collisionInfo.tag == "Obstacle") { GenericObstacle obstacle = ObstaclesManager.GetChosenObstacle(collisionInfo.transform.name); if (!OverlapedAsteroids.Contains(obstacle)) { OverlapedAsteroids.Add(obstacle); } } else if (collisionInfo.tag == "Mine") { if (!OverlapedMines.Contains(collisionInfo)) { OverlapedMines.Add(collisionInfo); } } else if (collisionInfo.name == "OffTheBoard") { OffTheBoard = true; } else if (collisionInfo.name == "ObstaclesStayDetector") { if (collisionInfo.tag != this.tag) { Game.Movement.CollidedWith = collisionInfo; OverlapsShip = true; if (!OverlapedShips.Contains(Roster.GetShipById(collisionInfo.tag))) { OverlapedShips.Add(Roster.GetShipById(collisionInfo.tag)); } } } else if (collisionInfo.name == "RemoteCollider") { if (collisionInfo.tag != this.tag) { if (!OverlapedRemotes.Contains(Roster.GetShipById(collisionInfo.tag) as GenericRemote)) { OverlapedRemotes.Add(Roster.GetShipById(collisionInfo.tag) as GenericRemote); } } } } }
private void Start() { // Afectation des positions en X posXPlayer1 = player1.transform.position.x; posXPlayer2 = player2.transform.position.x; // Affectation des scripts des joueurs p1Script = player1.GetComponent <Player>(); p2Script = player2.GetComponent <Player>(); // Affection des manager tileMScript1 = tileManager1.GetComponent <TileManager>(); tileMScript2 = tileManager2.GetComponent <TileManager>(); obMScript1 = obManager1.GetComponent <ObstaclesManager>(); obMScript2 = obManager2.GetComponent <ObstaclesManager>(); }
public override void Initialize() { RequiredPlayer = Selection.ThisShip.Owner.PlayerNo; MinBoardEdgeDistance = Board.BoardIntoWorld(2 * Board.RANGE_1); MinObstaclesDistance = Board.BoardIntoWorld(Board.RANGE_1); ChosenObstacle.IsPlaced = false; Board.ToggleObstaclesHolder(true); Roster.SetRaycastTargets(false); ObstaclesManager.SetObstaclesCollisionDetectionQuality(CollisionDetectionQuality.Low); IsReadyForCommands = true; Roster.GetPlayer(RequiredPlayer).MoveObstacleMidgame(); }
private bool IsNearObstacle() { if (HostShip.IsLandedOnObstacle) { Messages.ShowInfo(HostUpgrade.Name + ": Action is treated as white"); return(true); } foreach (GenericObstacle obstacle in ObstaclesManager.GetPlacedObstacles()) { ShipObstacleDistance shipObstacleDist = new ShipObstacleDistance(HostShip, obstacle); if (shipObstacleDist.Range < 2) { Messages.ShowInfo(HostUpgrade.Name + ": Action is treated as white"); return(true); } } return(false); }
void OnTriggerEnter(Collider collisionInfo) { if (checkCollisions) { if (collisionInfo.tag == "Obstacle") { GenericObstacle obstacle = ObstaclesManager.GetChosenObstacle(collisionInfo.transform.name); if (!OverlapedAsteroids.Contains(obstacle)) { OverlapedAsteroids.Add(obstacle); } } else if (collisionInfo.tag == "Mine") { if (!OverlapedMines.Contains(collisionInfo)) { OverlapedMines.Add(collisionInfo); } } else if (collisionInfo.name == "RemoteCollider") { if (collisionInfo.tag != this.tag) { if (!RemotesMovedThrough.Contains(Roster.GetShipById(collisionInfo.tag) as GenericRemote)) { RemotesMovedThrough.Add(Roster.GetShipById(collisionInfo.tag) as GenericRemote); } } } else if (collisionInfo.name == "ObstaclesStayDetector") { if (collisionInfo.tag != this.tag) { if (!ShipsMovedThrough.Contains(Roster.GetShipById(collisionInfo.tag))) { ShipsMovedThrough.Add(Roster.GetShipById(collisionInfo.tag)); } } } } }
//SHIP CREATION private static void SpawnAllShips() { ObstaclesManager.Instance.ChosenObstacles = new List <GenericObstacle>(); foreach (var squadList in SquadBuilder.SquadLists) { SquadBuilder.SetPlayerSquadFromImportedJson(squadList.Name, squadList.SavedConfiguration, squadList.PlayerNo, delegate { }); if (Roster.GetPlayer(squadList.PlayerNo).PlayerType != PlayerType.Ai) { JSONObject playerInfo = squadList.SavedConfiguration.GetField("PlayerInfo"); Roster.GetPlayer(squadList.PlayerNo).NickName = playerInfo.GetField("NickName").str; Roster.GetPlayer(squadList.PlayerNo).Title = playerInfo.GetField("Title").str; Roster.GetPlayer(squadList.PlayerNo).Avatar = playerInfo.GetField("Avatar").str; } Roster.GetPlayer(squadList.PlayerNo).SquadCost = squadList.Points; Roster.GetPlayer(squadList.PlayerNo).ChosenObstacles = new List <GenericObstacle>() { ObstaclesManager.GenerateObstacle(squadList.ChosenObstacles[0].ShortName, squadList.PlayerNo), ObstaclesManager.GenerateObstacle(squadList.ChosenObstacles[1].ShortName, squadList.PlayerNo), ObstaclesManager.GenerateObstacle(squadList.ChosenObstacles[2].ShortName, squadList.PlayerNo) }; } // Keep order, ships must have same ID on both clients ShipFactory.Initialize(); foreach (SquadBuilderShip shipConfig in SquadBuilder.GetSquadList(PlayerNo.Player1).GetShips()) { GenericShip newShip = ShipFactory.SpawnShip(shipConfig); AddShipToLists(newShip); } foreach (SquadBuilderShip shipConfig in SquadBuilder.GetSquadList(PlayerNo.Player2).GetShips()) { GenericShip newShip = ShipFactory.SpawnShip(shipConfig); AddShipToLists(newShip); } BoardTools.Board.SetShips(); }
void OnTriggerStay(Collider collisionInfo) { if (checkCollisionsNow) { if (collisionInfo.tag == "Obstacle") { GenericObstacle obstacle = ObstaclesManager.GetChosenObstacle(collisionInfo.transform.name); if (!OverlappedAsteroidsNow.Contains(obstacle)) { OverlappedAsteroidsNow.Add(obstacle); } } else if (collisionInfo.tag == "Mine") { if (!OverlapedMinesNow.Contains(collisionInfo)) { OverlapedMinesNow.Add(collisionInfo); } } else if (collisionInfo.name == "OffTheBoard") { OffTheBoardNow = true; } else if (collisionInfo.name == "ObstaclesStayDetector") { if (collisionInfo.tag != TheShip.GetTag()) { GenericShip ship = Roster.GetShipById(collisionInfo.tag); if (ship != null && !OverlappedShipsNow.Contains(ship)) { OverlappedShipsNow.Add(ship); } } else if (collisionInfo.tag == TheShip.GetTag()) { OverlapsCurrentShipNow = true; } } } }
public override void Initialize() { ShowObstaclesHolder(); MinBoardEdgeDistance = Board.BoardIntoWorld(2 * Board.RANGE_1); MinObstaclesDistance = Board.BoardIntoWorld(Board.RANGE_1); RequiredPlayer = Roster.AnotherPlayer(Phases.PlayerWithInitiative); // Will be changed in Next ChosenObstacle = null; foreach (GenericPlayer player in Roster.Players) { if (player.PlayerType == PlayerType.Ai) { IsRandomSetupSelected[player.PlayerNo] = true; } } ObstaclesManager.SetObstaclesCollisionDetectionQuality(CollisionDetectionQuality.Low); Next(); }
void OnTriggerEnter(Collider collisionInfo) { if (checkCollisions) { if (collisionInfo.tag == "Asteroid") { GenericObstacle obstacle = ObstaclesManager.GetObstacleByTransform(collisionInfo.transform); if (!OverlapedAsteroids.Contains(obstacle)) { OverlapedAsteroids.Add(obstacle); } } if (collisionInfo.tag == "Mine") { if (!OverlapedMines.Contains(collisionInfo)) { OverlapedMines.Add(collisionInfo); } } } }