private void OnTriggerStay2D(Collider2D collision)
    {
        if (collision.gameObject.tag != "Stairs" || playerController.getIsClimbing())
        {
            return;
        }
        GameObject      stairs          = collision.gameObject;
        StairController stairController = stairs.GetComponentInParent <StairController>();

        leftEndStep  = stairController.leftEndStep;
        rightEndStep = stairController.rightEndStep;

        float climb = Input.GetAxisRaw("Climb");

        if ((climb == 1 || climb == -1) && playerController.getPlayerStairState() != PlayerController.STAIR_STATE.on_stair)
        {
            platformerController.enabled = false;
            playerController.setIsClimbing(true);
            if (platformerController.GetPlayerGrounded())
            {
                fraction = 0;
                StartCoroutine(MovePlayerToStairs(player, stairController));
            }
            else
            {
                StartCoroutine(SnapPlayerToStairs(player, stairController));
            }
        }
    }
Example #2
0
    bool CheckIfGameOverMove()
    {
        StairController currentStairController = GameManager.self.sceneManager.stairControllers[StepsCounter];

        int nextIndex = StepsCounter + 1;

        if (nextIndex < 0)
        {
            return(true);
        }


        StairController nextStairController = GameManager.self.sceneManager.stairControllers[nextIndex];


        Vector3 diff = nextStairController.transform.position - currentStairController.transform.position;

        Vector3 projected = Vector3.Project(diff, currentStairController.transform.right);


        if (projected.magnitude > GameManager.self.sceneManager.stairWidth * 0.66f)
        {
            GameOverMove();
            return(true);
        }
        else
        {
            return(false);
        }
    }
    public void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.tag != "Stairs" || playerController.getIsClimbing())
        {
            return;
        }
        GameObject      stairs          = collision.gameObject;
        StairController stairController = stairs.GetComponentInParent <StairController>();

        leftEndStep  = stairController.leftEndStep;
        rightEndStep = stairController.rightEndStep;

        stairDirection = stairController.getStairDirection();
        float climb = Input.GetAxisRaw("Climb");

        if ((climb == 1 || climb == -1) && playerController.getPlayerStairState() != PlayerController.STAIR_STATE.on_stair)
        {
            platformerController.enabled = false;
            playerController.setIsClimbing(true);
            //Debug.Log("Control taken from platformer controller");
            // move player to base of stairs if grounded
            if (platformerController.GetPlayerGrounded())
            {
                //Debug.Log("Closest End: " + closestEndStep.name);
                fraction = 0;
                StartCoroutine(MovePlayerToStairs(player, stairController));
            }
            else
            {
                StartCoroutine(SnapPlayerToStairs(player, stairController));
            }
        }
    }
Example #4
0
 IEnumerator StairFollowRoutine(StairController stairController)
 {
     while (true)
     {
         transform.position = stairController.transform.position + playerPosOffset;
         yield return(new WaitForFixedUpdate());
     }
 }
    // Use this for initialization
    void Start()
    {
        jump  = FindObjectOfType <GameController> ();
        chara = FindObjectOfType <CharacterScript>();
        stair = FindObjectOfType <StairController>();
        drop  = FindObjectOfType <DropManager> ();
        input = FindObjectOfType <InputManager> ();

        cheatPanel.SetActive(false);
    }
    public LinkedList <ITimePoint> TimePoints; //storage where we save user move


    private void Start()
    {
        _timeController              = FindObjectOfType <TimeController>();
        _ordinaryPlayerController    = GetComponent <OrdinaryPlayerController>();
        _bezierCurvePlayerController = GetComponent <BezierCurvePlayerController>();
        _stairController             = GetComponent <StairController>();
        TimePoints = new LinkedList <ITimePoint>();

        _moveObjectController = GetComponent <MoveObjectController>();
    }
Example #7
0
    void FollowStair(StairController stairController)
    {
        if (StairFollowRoutineC != null)
        {
            StopCoroutine(StairFollowRoutineC);
        }


        StairFollowRoutineC = StartCoroutine(StairFollowRoutine(stairController));
    }
    // Helper Functions

    GameObject FindClosestEnd(GameObject player, StairController stairController)
    {
        float leftDifference  = Mathf.Abs(stairController.leftEndStep.transform.position.x - player.transform.position.x);
        float rightDifference = Mathf.Abs(stairController.rightEndStep.transform.position.x - player.transform.position.x);

        if (leftDifference < rightDifference)
        {
            return(stairController.leftEndStep);
        }
        return(stairController.rightEndStep);
    }
Example #9
0
    public void AddScore(StairController prevStair_)
    {
        prevStair = prevStair_;

        RawCounter += 1;

        newScore = RawCounter;

        Score += newScore;

        ShowScore(prevStair);
    }
Example #10
0
    void ShowScore(StairController prevStair = null)
    {
        foreach (Text text in scoretexts)
        {
            text.text = Score.ToString();
        }

        if (prevStair != null)
        {
            Instantiate(NewScorePrefab);
        }
    }
    IEnumerator MovePlayerToStairs(GameObject player, StairController stairController)
    {
        GameObject closestEndStep = FindClosestEnd(player, stairController);
        Vector2    posPlayer      = new Vector2(player.transform.position.x, closestEndStep.transform.position.y + 1);
        Vector2    posStep        = Vector2.zero;

        playerController.setIsClimbing(true);

        if (stairDirection == StairController.STAIR_DIRECTION.Up)
        {
            if (closestEndStep.transform.position.x == stairController.leftEndStep.transform.position.x)
            {
                FlipSprite(PlayerController.PLAYER_FACING.right);
                posStep = new Vector2(closestEndStep.transform.position.x + 0.25f, closestEndStep.transform.position.y + 1);
            }
            else if (closestEndStep.transform.position.x == stairController.rightEndStep.transform.position.x)
            {
                FlipSprite(PlayerController.PLAYER_FACING.left);
                posStep = new Vector2(closestEndStep.transform.position.x - 0.25f, closestEndStep.transform.position.y + 1);
            }
        }
        else if (stairDirection == StairController.STAIR_DIRECTION.Down)
        {
            if (closestEndStep.transform.position.x == stairController.leftEndStep.transform.position.x)
            {
                FlipSprite(PlayerController.PLAYER_FACING.right);
                posStep = new Vector2(closestEndStep.transform.position.x + 0.25f, closestEndStep.transform.position.y + 1);
            }
            else if (closestEndStep.transform.position.x == stairController.rightEndStep.transform.position.x)
            {
                FlipSprite(PlayerController.PLAYER_FACING.left);
                posStep = new Vector2(closestEndStep.transform.position.x - 0.25f, closestEndStep.transform.position.y + 1);
            }
        }

        this.enabled = false;
        while (fraction < 1)
        {
            fraction += Time.deltaTime * transitionSpeed * 2;
            if (fraction > 1)
            {
                fraction = 1;
            }
            player.transform.position = Vector2.Lerp(posPlayer, posStep, fraction);
            yield return(new WaitForEndOfFrame());
        }
        animator.Play("PlayerStairsIdle");
        platformerController.SetPlayerGrounded(false);
        playerController.setPlayerStairState(PlayerController.STAIR_STATE.on_stair);
        this.enabled = true;
    }
Example #12
0
    void Start()
    {
        ui        = FindObjectOfType <TaskUI>();
        dropMgr   = FindObjectOfType <DropManager> ();
        character = FindObjectOfType <CharacterScript> ();
        camCtrl   = FindObjectOfType <CameraController> ();
        stairCtrl = FindObjectOfType <StairController> ();
        exp       = FindObjectOfType <XPController> ();

        queue = new List <int> ();
        ResetCam();

        smallButton = FindObjectOfType <SmallHelpButton> ();
    }
Example #13
0
    IEnumerator MovementFollowRoutine()
    {
        stairControllerToFollow = GameManager.self.sceneManager.stairControllers[stairParameters.parentIndex];

        stairParameters.movementDistance = stairControllerToFollow.stairParameters.movementDistance;

        while (true)
        {
            MovementT = stairControllerToFollow.MovementT;

            transform.position = GetMovementFromT(MovementT);

            yield return(new WaitForFixedUpdate());
        }
    }
Example #14
0
    void StepCompleted(StairController enteredStairController)
    {
        if (enteredStairController.stairParameters.isActive)
        {
            FollowStair(enteredStairController);
        }

        if (enteredStairController.isLastStair)
        {
            GameManager.self.LevelPassed();
        }

        GameManager.self.levelManager.StairCompleted();
        GameManager.self.soundManager.StairSound();
        GameManager.self.scoreManager.AddScore(GameManager.self.sceneManager.StairEntered(StepsCounter));
    }
    // Mover functions

    IEnumerator SnapPlayerToStairs(GameObject player, StairController stairController)
    {
        GameObject closestEndStep = FindClosestEnd(player, stairController);

        Vector2 closestStep = FindClosestStep(player, stairController, closestEndStep);
        Vector2 posPlayer   = new Vector2(player.transform.position.x, closestStep.y);

        platformerController.SetPlayerVelocity(new Vector2(platformerController.GetPlayerVelocity().x, 0));
        playerController.setIsClimbing(true);

        this.enabled = false;
        player.transform.position = Vector2.Lerp(posPlayer, closestStep, 1);
        animator.Play("PlayerStairsIdle");
        playerController.setPlayerStairState(PlayerController.STAIR_STATE.on_stair);
        platformerController.SetPlayerGrounded(false);
        yield return(new WaitForSeconds(animationDelay));

        this.enabled = true;
    }
    void MovePlayerToStairs(StairController stairController, GameObject triggerStep)
    {
        isMovingToStairs = true;
        isMovingOnStairs = false;
        playerPos        = levelManager.playerController.player.transform.position;
        Vector2 targetPos = triggerStep.GetComponent <Collider2D>().bounds.center;

        if (stairController.GetStairDirection() == StairController.STAIR_DIRECTION.up)
        {
            // a staircase goes up if it moves from left(bottom) to right (top)
            if (triggerStep.transform.position == stairController.leftEndStep.transform.position)
            {
                // this means we're at the left(bottom) end of a staircase that goes up
                targetPos = DeterminePlayerTarget(triggerStep, 0.25f, 0.5f);
            }
            else
            {
                // we must be at the right(top) end of a staircase that goes up
                targetPos = DeterminePlayerTarget(triggerStep, -0.75f, 0.5f);
            }
        }
        else
        {
            // a staircase goes down if it moves from left(top) to right(bottom)
            if (triggerStep.transform.position == stairController.leftEndStep.transform.position)
            {
                // this means we're at the left(top) end of a staircase that goes down
                targetPos = DeterminePlayerTarget(triggerStep, 0.75f, 0.5f);
            }
            else
            {
                // we must be at the right(top) end of a staircase that goes up
                targetPos = DeterminePlayerTarget(triggerStep, -0.25f, 0.5f);
            }
        }

        FlipOnStairs(targetPos.x);

        player.GetComponent <PhysicsObject>().enabled = false;
        runAfterMoving = RunAfterMovingToStairs;
        StartCoroutine(MovePlayer(targetPos, transitionSpeed));
    }
    void OnTriggerStay2D(Collider2D other)
    {
        if (other.tag != "Stairs")
        {
            return;
        }
        stairController = other.GetComponentInParent <StairController>();

        if (Input.GetAxis("Climb") != 0 && levelManager.playerController.GetStairState() != PlayerController.STAIR_STATE.on_stair && levelManager.playerController.GetJumpState() == PlayerController.JUMPING.grounded && hasLeftStairTrigger)
        {
            stairDirection      = stairController.GetStairDirection();
            hasLeftStairTrigger = false;
            player.GetComponent <Rigidbody2D>().gravityScale = 0;
            levelManager.playerController.SetStairState(PlayerController.STAIR_STATE.on_stair);
            levelManager.playerController.playerAnimator.SetBool("onStair", true);

            transitionPercent = 0f;
            MovePlayerToStairs(stairController, other.gameObject);
        }
    }
    Vector2 FindClosestStep(GameObject player, StairController stairController, GameObject closestEndStep)
    {
        float playerX = player.transform.position.x;

        playerX = Mathf.Round(playerX * 2f) * 0.5f;
        float playerY = 0;

        if (stairDirection == StairController.STAIR_DIRECTION.Up)
        {
            if (closestEndStep.transform.position.x > playerX)
            {
                //Debug.Log("right is closer");
                playerY = closestEndStep.transform.position.y - (closestEndStep.transform.position.x - playerX) + 1.5f;
            }
            else
            {
                //Debug.Log("left is closer");
                playerY = closestEndStep.transform.position.y + (playerX - closestEndStep.transform.position.x) + 1f;
            }
        }
        else if (stairDirection == StairController.STAIR_DIRECTION.Down)
        {
            if (closestEndStep.transform.position.x > playerX)
            {
                //Debug.Log("right is closer");
                //Debug.Log("Initial: " + closestEndStep.transform.position.y);
                //Debug.Log("+/-: " + (playerX - closestEndStep.transform.position.x));
                // not entirely clear why this one needs to be + 0.5f instead of + 1 same issue as right is closer above, likely something to do with my placement of the end points. As long as this is consistent I don't really care. Even if it does secretly bother me.
                playerY = closestEndStep.transform.position.y + (closestEndStep.transform.position.x - playerX) + 0.5f;
            }
            else
            {
                //Debug.Log(playerX - closestEndStep.transform.position.x + 1);
                //Debug.Log(closestEndStep.transform.position.y + 1);
                //Debug.Log("left is closer");
                playerY = closestEndStep.transform.position.y - (playerX - closestEndStep.transform.position.x) + 1f;
            }
        }
        playerX += 0.25f;
        return(new Vector2(playerX, playerY));
    }
	// When in prep state, call this function to change the state
	public void switchToState(ON_STAIR_AREA state_in, Globals.STAIR_FACING Stairfacing_in, 
	                          GameObject StairTrigger) {
		prepXcenter = StairTrigger.transform.position.x;
		Stairfacing = Stairfacing_in;
		onStairArea = state_in;

		curStair = StairTrigger.transform.parent.gameObject.GetComponent<StairController>();
		curStairSteps = curStair.StairSteps;
		if (!curStair) {
			Debug.LogError("STAIR: can't get parent stair controller");
		}
		// get the curStairSteps here
		// determin curNumOfSteps here
		if (state_in == ON_STAIR_AREA.PrepDown && onStairState == ON_STAIR_STATE.Not) {
			curNumOfSteps = curStairSteps;
		}
		else if (state_in == ON_STAIR_AREA.PrepUp && onStairState == ON_STAIR_STATE.Not) {
			curNumOfSteps = 0;
		}

	}
Example #20
0
    void Start()
    {
        stairCam  = GameObject.Find("StairCamera").GetComponent <Camera> ();
        bomb      = FindObjectOfType <BombController> ();
        character = FindObjectOfType <CharacterScript> ();
        charStore = FindObjectOfType <CharacterStorage> ();
        help      = FindObjectOfType <HelpController>();
        smHelp    = FindObjectOfType <SmallHelpButton> ();

        stairs = FindObjectOfType <StairController>();

        main = FindObjectOfType <GameController>();
        exp  = FindObjectOfType <XPController> ();

        FMC_Statistics.newPowerUp += RewardPerformance;

        types = new PickableItem.Type[drops.Length];
        for (int i = 0; i < types.Length; i++)
        {
            types [i] = drops [i].GetComponent <PickableItem> ().type;
        }
    }
Example #21
0
    //The base spawn function should be used only by other Spawn overloads
    public void Spawn(int id, Vector3 position, int at, bool force)
    {
        bool isAvalable = CheckAvailable(at);

        if (isAvalable || force)
        {
            if (stairs == null)
            {
                stairs = FindObjectOfType <StairController> ();
            }
            GameObject go = Instantiate(drops [id], position, drops [id].transform.rotation, stairs.root.transform);
            if (!isAvalable)
            {
                Despawn(at);
            }

            DropItem itm = new DropItem(go, at);
            spawned.Add(itm);
            itm.item.SetPlace(itm.at);

            //go.transform.parent = parentStair;
        }
    }
Example #22
0
    IEnumerator MovementRoutine()
    {
        Vector3 startPos;
        Vector3 endPos;

        float t;
        float startT;
        float currentMovementSpeed = maximumMinumumSpeed.y;

        charController.Moving();

        bool continueMovement = true;

        ControlEnabled = false;
        yield return(new WaitForSeconds(0.08f));


        GameManager.self.soundManager.fixPitch();

        GameManager.self.scoreManager.ResetRawCounter();

        while (continueMovement)
        {
#if UNITY_IOS
            if (GameManager.TapticEnabled)
            {
                TapticEngine.TriggerLight();
            }
#endif



            ControlEnabled = false;

            StopFollowStair();

            if (!CheckIfGameOverMove())
            {
                startPos      = transform.position;
                StepsCounter += 1;
                endPos        = CalculateNewPos(startPos);

                StairController enteredStairController = GameManager.self.sceneManager.StairEntered(StepsCounter);
                GameManager.self.sceneManager.StairPassed(StepsCounter - 1);
                t      = 0;
                startT = Time.time;

                while (t < 1)
                {
                    yield return(new WaitForFixedUpdate());

                    t = (Time.time - startT) / currentMovementSpeed;

                    transform.position = Vector3.Lerp(startPos, endPos, t);

                    transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(enteredStairController.transform.localEulerAngles), t);
                }
                transform.position = Vector3.Lerp(startPos, endPos, 1);



                currentMovementSpeed -= movementAcceleration;
                if (currentMovementSpeed < maximumMinumumSpeed.x)
                {
                    currentMovementSpeed = maximumMinumumSpeed.x;
                }

                StepCompleted(enteredStairController);

                ControlEnabled = true;

                continueMovement = isPointerDown;
            }
            else
            {
                break;
            }
        }
    }
 public override void Initialize(BaseController _stairController)
 {
     m_stairController = (StairController)_stairController;
     base.Initialize(_stairController);
     SetupLineRenderer();
 }
Example #24
0
    public void InitScene()
    {
        currentPatternIndex         = 0;
        currentPatternSpawnedAmount = 0;

        stairControllers.Clear();


        float stairSize = StairPrefab.transform.localScale.z * StairPrefab.GetComponent <BoxCollider>().size.z - 0.1f;

        stairWidth = stairSize;
        float pathLenght = splineComputer.CalculateLength();

        float P = 0;

        SplineResult stairResult = splineComputer.Evaluate(0);

        int i = 0;

        GameObject obj = Instantiate(StairPrefab);

        obj.transform.position         = stairResult.position;
        obj.transform.rotation         = stairResult.rotation;
        obj.transform.localEulerAngles = new Vector3(0, obj.transform.localEulerAngles.y, obj.transform.localEulerAngles.z);

        StairController stairController = obj.GetComponent <StairController>();

        stairController.InitStair(i, GameManager.self.colorManager.GetStairColor(i));

        stairControllers.Add(stairController);

        Vector3 currentPos = obj.transform.position;


        while (P < 1)
        {
            P += 0.001f;

            stairResult = splineComputer.Evaluate(P);

            float distance = Vector3.Distance(stairResult.position, currentPos);

            if (distance >= stairSize)
            {
                obj = Instantiate(StairPrefab);

                obj.transform.position = stairResult.position;
                obj.transform.rotation = stairResult.rotation;


                obj.transform.localEulerAngles = new Vector3(0, obj.transform.localEulerAngles.y, obj.transform.localEulerAngles.z);

                currentPos = obj.transform.position;


                stairController = obj.GetComponent <StairController>();
                i += 1;
                stairController.InitStair(i, GameManager.self.colorManager.GetStairColor(i));

                stairControllers.Add(stairController);
            }
        }

        int lastIndex = stairControllers.Count - 1;

        FinishContainer.position = stairControllers[lastIndex].transform.position;
        stairControllers[lastIndex].isLastStair = true;

        StairsAmount = stairControllers.Count;

        for (int j = 0; j < stairControllers.Count; j++)
        {
            stairControllers[j].SetParameters(StairPatterns(j));
            stairControllers[j].DoMovement();
        }
    }
Example #25
0
    void Validate()
    {
        DestroyGizmos ();
        _controller = null;

        GetComponent<GUIMenuInteraction> ().unConfigure();
        GetComponent<GUIMenuInteraction> ().setVisibility (false);

        Camera.main.GetComponent<ObjInteraction>().configuringObj(null);
        Camera.main.GetComponent<ObjInteraction>().setSelected(null,false);
        Camera.main.GetComponent<GuiTextureClip>().enabled = true;

        enabled = false;
    }
Example #26
0
    protected void SetStairController(Transform pool)
    {
        _controller = pool.GetComponent<StairController>();

        if (_controller != null)
        {
            _stairIndex = _controller.GetStairIndex ();
            _gizmoIndex = _controller.GetGizmoIndex ();

            if (_controller.GetGizmoList ().Count > 0)
            {
                _virtualGizmo = _controller.GetGizmoList ();
            }

            //if (_thumbnails == null)
                SetThumbnails (_controller.GetStairList ());

        //			if (_stairIndex < 0)
        //			{
        //				_stairModelList.setUiId (_controller.GetStairList ().GetStairList ().Count);
        //			}
        //			else
        //			{
                _stairModelList.setUiId (_stairIndex);
        //			}
        }
    }
Example #27
0
 // Use this for initialization
 void Start()
 {
     _stairController = GetComponentInParent <StairController>();
 }
Example #28
0
    void Awake()
    {
        _controller = transform.gameObject.GetComponent<StairController> ();
        if (_controller == null)
        {
            _controller = transform.gameObject.AddComponent<StairController> ();
        }

        if(_uiName != null)
        {
            setUI((FunctionUI_OS3D)GameObject.Find("MainScene").GetComponent(_uiName) );
        }
    }