private void Update() { if (!isStarted) { return; } if (Time.time - _startTime < 1.2) { return; } if (!_fire.activeSelf) { _fire.SetActive(true); } _rigidbody2D.velocity = new Vector2(_rigidbody2D.velocity.x, _verticalSpeed); if (!_isAlive) { _rigidbody2D.velocity = new Vector2(0, 0); return; } if (isFinished) { return; } if (Input.GetKey(KeyCode.LeftArrow) || Input.GetKey(KeyCode.A)) { _rigidbody2D.AddForce(new Vector2(-1 * _horizontalSpeed * Time.deltaTime, 0)); } else if (Input.GetKey(KeyCode.RightArrow) || Input.GetKey(KeyCode.D)) { _rigidbody2D.AddForce(new Vector2(_horizontalSpeed * Time.deltaTime, 0)); } Vector2 currentPosition = _transform.position; if (currentPosition.x > _bounds) { _logger.Log("Stuck right side"); _rigidbody2D.velocity = new Vector2(0, _rigidbody2D.velocity.y); transform.position = new Vector2(_bounds, currentPosition.y); } else if (currentPosition.x < (-1 * _bounds)) { _logger.Log("Stuck left side"); _rigidbody2D.velocity = new Vector2(0, _rigidbody2D.velocity.y); transform.position = new Vector2((-1 * _bounds), currentPosition.y); } }
private void OnTriggerEnter2D(Collider2D collision) { if (collision.tag == "Player") { _logger.Log("Player entered goal"); _messenger.Publish(new PlayerEnteredGoalMessage(this)); } }
private void Start() { _logger = Game.Container?.Resolve <Core.Loggers.ILoggerFactory>()?.Create(this); _messenger = Game.Container?.Resolve <Core.Mediators.IMessenger>(); _landerEnteredLandingAreaMessageToken = _messenger.Subscribe((LanderEnteredLandingAreaMessage LanderEnteredLandingAreaMessage) => { _logger?.Log("LanderEnteredLandingAreaMessage"); CheckVictoryConditions(); }); _landerExitedLandingAreaMessageToken = _messenger.Subscribe((LanderExitedLandingAreaMessage LanderEnteredLandingAreaMessage) => { _logger?.Log("LanderExitedLandingAreaMessage"); }); _landerCrashedMessageToken = _messenger.Subscribe((LanderCrashedMessage landerCrashedMessage) => { if (!_hasLanded) { ShowMenu(_crashedMenu); _logger?.Log("LanderCrashedMessage"); } }); _landerLeftBoundsMessageToken = _messenger.Subscribe((LanderLeftBoundsMessage landerLeftBoundsMessage) => { if (!_hasLanded) { ShowMenu(_outOfBoundsMenu); _logger?.Log("LanderLeftBoundsMessage"); } }); StartCoroutine(StartIntroTextFadeOut()); }
// Use this for initialization private void Start() { _pipeTiles = new List <PipeTileScript>(); _logger = Game.Container?.Resolve <Core.Loggers.ILoggerFactory>()?.Create(this); _messenger = Game.Container?.Resolve <Core.Mediators.IMessenger>(); _pipeTiles.AddRange(GetComponentsInChildren <PipeTileScript>()); _pipeTiles = _pipeTiles.OrderBy(pt => pt.GetPosition().y).ThenBy(pt => pt.GetPosition().x).ToList(); StringBuilder sb = new StringBuilder(); sb.AppendLine($"Found {_pipeTiles.Count} tiles"); _startTile = _pipeTiles.First(); _endTile = _pipeTiles.Last(); sb.AppendLine(" Start tile " + _startTile.ToString()); sb.AppendLine(" End tile " + _endTile.ToString()); sb.AppendLine(""); foreach (PipeTileScript pipeTileScript in _pipeTiles) { sb.AppendLine(" " + pipeTileScript.ToString()); } _logger?.Log(sb.ToString()); _pipeTileRotatedMessageToken = _messenger?.Subscribe((PipeTileRotatedMessage pipeTileRotatedMessage) => { _logger?.Log("Rotated " + pipeTileRotatedMessage.PipeTile.ToString()); CheckForGameCompletion(); }); CheckForGameCompletion(); }
private void CheckVictoryConditions() { float landingSpeed = _player.velocity.magnitude; _logger?.Log("Landing Speed " + landingSpeed); if (landingSpeed > 1) { ShowMenu(_landedToHardMenu); } else { _messenger?.Publish(new LanderLandedSuccessfullyMessage(this)); _hasLanded = true; StartCoroutine(ToNextSceenAfterDelay()); } }
private void CheckForGameCompletion() { _logger?.Log("CheckForGameCompletion"); bool isConnected = false; foreach (PipeTileScript pipeTileScript in _pipeTiles) { pipeTileScript.SetIsConnected(false); } PipeTileScript currentPipeTile = _startTile; while (currentPipeTile != null) { currentPipeTile.SetIsConnected(true); PipeTileScript connectedPipeTile = null; PipeTileShape shape = currentPipeTile.GetShape(); PipeTileRotation rotation = currentPipeTile.GetRotation(); //Find Connected Pipe if (shape == PipeTileShape.Line) { if (rotation == PipeTileRotation.Degrees0 || rotation == PipeTileRotation.Degrees180) { PipeTileScript westTile = GetPipeTileToTheDirection(currentPipeTile, Direction.W); PipeTileScript eastTile = GetPipeTileToTheDirection(currentPipeTile, Direction.E); //Check West if (westTile != null && westTile.GetIsConnected() == false && westTile.GetShape() == PipeTileShape.Line && (westTile.GetRotation() == PipeTileRotation.Degrees0 || westTile.GetRotation() == PipeTileRotation.Degrees180)) { connectedPipeTile = westTile; } else if (westTile != null && westTile.GetIsConnected() == false && westTile.GetShape() == PipeTileShape.Corner && westTile.GetRotation() == PipeTileRotation.Degrees90) { connectedPipeTile = westTile; } else if (westTile != null && westTile.GetIsConnected() == false && westTile.GetShape() == PipeTileShape.Corner && westTile.GetRotation() == PipeTileRotation.Degrees180) { connectedPipeTile = westTile; } //Check East else if (eastTile != null && eastTile.GetIsConnected() == false && eastTile.GetShape() == PipeTileShape.Line && (eastTile.GetRotation() == PipeTileRotation.Degrees0 || eastTile.GetRotation() == PipeTileRotation.Degrees180)) { connectedPipeTile = eastTile; } else if (eastTile != null && eastTile.GetIsConnected() == false && eastTile.GetShape() == PipeTileShape.Corner && eastTile.GetRotation() == PipeTileRotation.Degrees0) { connectedPipeTile = eastTile; } else if (eastTile != null && eastTile.GetIsConnected() == false && eastTile.GetShape() == PipeTileShape.Corner && eastTile.GetRotation() == PipeTileRotation.Degrees270) { connectedPipeTile = eastTile; } } else if (rotation == PipeTileRotation.Degrees90 || rotation == PipeTileRotation.Degrees270) { PipeTileScript northTile = GetPipeTileToTheDirection(currentPipeTile, Direction.N); PipeTileScript soutTile = GetPipeTileToTheDirection(currentPipeTile, Direction.S); //Check North if (northTile != null && northTile.GetIsConnected() == false && northTile.GetShape() == PipeTileShape.Line && (northTile.GetRotation() == PipeTileRotation.Degrees90 || northTile.GetRotation() == PipeTileRotation.Degrees270)) { connectedPipeTile = northTile; } else if (northTile != null && northTile.GetIsConnected() == false && northTile.GetShape() == PipeTileShape.Corner && northTile.GetRotation() == PipeTileRotation.Degrees180) { connectedPipeTile = northTile; } else if (northTile != null && northTile.GetIsConnected() == false && northTile.GetShape() == PipeTileShape.Corner && northTile.GetRotation() == PipeTileRotation.Degrees270) { connectedPipeTile = northTile; } //Check South else if (soutTile != null && soutTile.GetIsConnected() == false && soutTile.GetShape() == PipeTileShape.Line && (soutTile.GetRotation() == PipeTileRotation.Degrees90 || soutTile.GetRotation() == PipeTileRotation.Degrees270)) { connectedPipeTile = soutTile; } else if (soutTile != null && soutTile.GetIsConnected() == false && soutTile.GetShape() == PipeTileShape.Corner && soutTile.GetRotation() == PipeTileRotation.Degrees90) { connectedPipeTile = soutTile; } else if (soutTile != null && soutTile.GetIsConnected() == false && soutTile.GetShape() == PipeTileShape.Corner && soutTile.GetRotation() == PipeTileRotation.Degrees0) { connectedPipeTile = soutTile; } } } else if (shape == PipeTileShape.Corner) { if (rotation == PipeTileRotation.Degrees0) { PipeTileScript westTile = GetPipeTileToTheDirection(currentPipeTile, Direction.W); PipeTileScript northTile = GetPipeTileToTheDirection(currentPipeTile, Direction.N); //Check westTile if (westTile != null && westTile.GetIsConnected() == false && westTile.GetShape() == PipeTileShape.Line && (westTile.GetRotation() == PipeTileRotation.Degrees0 || westTile.GetRotation() == PipeTileRotation.Degrees180)) { connectedPipeTile = westTile; } else if (westTile != null && westTile.GetIsConnected() == false && westTile.GetShape() == PipeTileShape.Corner && westTile.GetRotation() == PipeTileRotation.Degrees90) { connectedPipeTile = westTile; } else if (westTile != null && westTile.GetIsConnected() == false && westTile.GetShape() == PipeTileShape.Corner && westTile.GetRotation() == PipeTileRotation.Degrees180) { connectedPipeTile = westTile; } //Check northTile else if (northTile != null && northTile.GetIsConnected() == false && northTile.GetShape() == PipeTileShape.Line && (northTile.GetRotation() == PipeTileRotation.Degrees90 || northTile.GetRotation() == PipeTileRotation.Degrees270)) { connectedPipeTile = northTile; } else if (northTile != null && northTile.GetIsConnected() == false && northTile.GetShape() == PipeTileShape.Corner && northTile.GetRotation() == PipeTileRotation.Degrees270) { connectedPipeTile = northTile; } else if (northTile != null && northTile.GetIsConnected() == false && northTile.GetShape() == PipeTileShape.Corner && northTile.GetRotation() == PipeTileRotation.Degrees180) { connectedPipeTile = northTile; } } else if (rotation == PipeTileRotation.Degrees90) { PipeTileScript northTile = GetPipeTileToTheDirection(currentPipeTile, Direction.N); PipeTileScript eastTile = GetPipeTileToTheDirection(currentPipeTile, Direction.E); //Check northTile if (northTile != null && northTile.GetIsConnected() == false && northTile.GetShape() == PipeTileShape.Line && (northTile.GetRotation() == PipeTileRotation.Degrees90 || northTile.GetRotation() == PipeTileRotation.Degrees270)) { connectedPipeTile = northTile; } else if (northTile != null && northTile.GetIsConnected() == false && northTile.GetShape() == PipeTileShape.Corner && northTile.GetRotation() == PipeTileRotation.Degrees270) { connectedPipeTile = northTile; } else if (northTile != null && northTile.GetIsConnected() == false && northTile.GetShape() == PipeTileShape.Corner && northTile.GetRotation() == PipeTileRotation.Degrees180) { connectedPipeTile = northTile; } //Check westTile else if (eastTile != null && eastTile.GetIsConnected() == false && eastTile.GetShape() == PipeTileShape.Line && (eastTile.GetRotation() == PipeTileRotation.Degrees0 || eastTile.GetRotation() == PipeTileRotation.Degrees180)) { connectedPipeTile = eastTile; } else if (eastTile != null && eastTile.GetIsConnected() == false && eastTile.GetShape() == PipeTileShape.Corner && eastTile.GetRotation() == PipeTileRotation.Degrees0) { connectedPipeTile = eastTile; } else if (eastTile != null && eastTile.GetIsConnected() == false && eastTile.GetShape() == PipeTileShape.Corner && eastTile.GetRotation() == PipeTileRotation.Degrees270) { connectedPipeTile = eastTile; } } else if (rotation == PipeTileRotation.Degrees180) { PipeTileScript eastTile = GetPipeTileToTheDirection(currentPipeTile, Direction.E); PipeTileScript southTile = GetPipeTileToTheDirection(currentPipeTile, Direction.S); //Check eastTile if (eastTile != null && eastTile.GetIsConnected() == false && eastTile.GetShape() == PipeTileShape.Line && (eastTile.GetRotation() == PipeTileRotation.Degrees0 || eastTile.GetRotation() == PipeTileRotation.Degrees180)) { connectedPipeTile = eastTile; } else if (eastTile != null && eastTile.GetIsConnected() == false && eastTile.GetShape() == PipeTileShape.Corner && eastTile.GetRotation() == PipeTileRotation.Degrees270) { connectedPipeTile = eastTile; } else if (eastTile != null && eastTile.GetIsConnected() == false && eastTile.GetShape() == PipeTileShape.Corner && eastTile.GetRotation() == PipeTileRotation.Degrees0) { connectedPipeTile = eastTile; } //Check southTile else if (southTile != null && southTile.GetIsConnected() == false && southTile.GetShape() == PipeTileShape.Line && (southTile.GetRotation() == PipeTileRotation.Degrees90 || southTile.GetRotation() == PipeTileRotation.Degrees270)) { connectedPipeTile = southTile; } else if (southTile != null && southTile.GetIsConnected() == false && southTile.GetShape() == PipeTileShape.Corner && southTile.GetRotation() == PipeTileRotation.Degrees90) { connectedPipeTile = southTile; } else if (southTile != null && southTile.GetIsConnected() == false && southTile.GetShape() == PipeTileShape.Corner && southTile.GetRotation() == PipeTileRotation.Degrees0) { connectedPipeTile = southTile; } } else if (rotation == PipeTileRotation.Degrees270) { PipeTileScript southTile = GetPipeTileToTheDirection(currentPipeTile, Direction.S); PipeTileScript westTile = GetPipeTileToTheDirection(currentPipeTile, Direction.W); //Check southTile if (southTile != null && southTile.GetIsConnected() == false && southTile.GetShape() == PipeTileShape.Line && (southTile.GetRotation() == PipeTileRotation.Degrees90 || southTile.GetRotation() == PipeTileRotation.Degrees270)) { connectedPipeTile = southTile; } else if (southTile != null && southTile.GetIsConnected() == false && southTile.GetShape() == PipeTileShape.Corner && southTile.GetRotation() == PipeTileRotation.Degrees90) { connectedPipeTile = southTile; } else if (southTile != null && southTile.GetIsConnected() == false && southTile.GetShape() == PipeTileShape.Corner && southTile.GetRotation() == PipeTileRotation.Degrees0) { connectedPipeTile = southTile; } //Check westTile else if (westTile != null && westTile.GetIsConnected() == false && westTile.GetShape() == PipeTileShape.Line && (westTile.GetRotation() == PipeTileRotation.Degrees0 || westTile.GetRotation() == PipeTileRotation.Degrees180)) { connectedPipeTile = westTile; } else if (westTile != null && westTile.GetIsConnected() == false && westTile.GetShape() == PipeTileShape.Corner && westTile.GetRotation() == PipeTileRotation.Degrees90) { connectedPipeTile = westTile; } else if (westTile != null && westTile.GetIsConnected() == false && westTile.GetShape() == PipeTileShape.Corner && westTile.GetRotation() == PipeTileRotation.Degrees180) { connectedPipeTile = westTile; } } } //CHECK VICTORY CONDITION if (connectedPipeTile == _endTile) { isConnected = true; } //Continue currentPipeTile = connectedPipeTile; } if (isConnected) { SceneManager.LoadSceneAsync(SceneManager.GetActiveScene().buildIndex + 1); } }