Пример #1
0
    private void OnTriggerEnter2D(Collider2D other)
    {
        RaycastHit2D ground = new RaycastHit2D();

        if (!hasExploded)
        {
            ground = Physics2D.Raycast(transform.position, Vector2.down, 0.3f,
                                       LayerMask.GetMask("Ground", "Ground Ignore"));
        }
        if (!imediate)
        {
            if ((other.CompareTag("Scenery") || other.CompareTag("Obstacle")) && !hasExploded &&
                ground.collider != null)
            {
                var angle = Vector2.Angle(ground.normal, Vector2.up);

                rigidbody2D.velocity        = Vector2.zero;
                rigidbody2D.angularVelocity = 0;
                rigidbody2D.bodyType        = RigidbodyType2D.Kinematic;
                spriteRenderer.enabled      = false;
                hasExploded         = true;
                durationCurrentTime = Time.time + duration;
                CoroutineManager.AddCoroutine(EffectCoroutine(angle, ground.point), "EffectCoroutine");
            }
        }
    }
Пример #2
0
 public void AfterEffect()
 {
     currentTimeAdrenalineEffect = Time.time + durationAfterEffect;
     CoroutineManager.AddCoroutine(
         AdrenalineEffectCoroutine(staminaRegenMultiplierAfterEffect, velocityMultiplierAfterEffect),
         "AdrenalineEffectCoroutine", this);
 }
Пример #3
0
    private void Start()
    {
        if (instance == null)
        {
            instance = this;
            DontDestroyOnLoad(this);
        }
        else if (instance != null)
        {
            Destroy(this.gameObject);
            return;
        }

        CoroutineManager.SetMonoBehaviourInstance(this);
        if (nativeResolution.height == 0)
        {
            CoroutineManager.AddCoroutine(GetNativeResolutionCoroutine(), "GetNativeResolutionCoroutine");
        }

        currentSceneName = SceneManager.GetActiveScene().name;


        mainMenuSceneName = "Main Menu";
        mainSceneName     = "Final";
    }
Пример #4
0
    public void Effect(PlayerStatusController playerStatusController,
                       PlayerHorizontalMovement playerHorizontalMovement, PlayerStatusVariables playerStatusVariables)
    {
        this.playerHorizontalMovement = playerHorizontalMovement;
        this.playerStatusController   = playerStatusController;
        this.playerStatusVariables    = playerStatusVariables;


        if (playerStatusVariables.isAdrenalineActive)
        {
            var range = Random.Range(0, 11);
            if (range <= 5)
            {
                playerStatusController.Die();
            }
            else
            {
                playerStatusVariables.isMorphinActive = true;
                playerStatusController.RegenLifeTemporary(duration, lifeRegenAmount, true);
            }
        }
        else
        {
            playerStatusVariables.isMorphinActive = true;
            playerStatusController.RegenLifeTemporary(duration, lifeRegenAmount, false);
            currentTimeMorphinEffect = Time.time + duration;
            CoroutineManager.AddCoroutine(MorphinEffectCoroutine(staminaRegenMultiplier, velocityMultiplier),
                                          "MorphinEffectCoroutine", this);
        }
    }
Пример #5
0
 private void RegenStamina()
 {
     if (Time.time >= currentTimeToStartStaminaRegen && currentStamina < maxStamina &&
         !CoroutineManager.CheckIfCoroutineExists("RegenStaminaCoroutine"))
     {
         CoroutineManager.AddCoroutine(RegenStaminaCoroutine(), "RegenStaminaCoroutine");
     }
 }
Пример #6
0
    private void Update()
    {
        apostleController.CheckForCombatInput();

        if (apostleController.AttackPress)
        {
            if (!apostleStatusVariables.isAttacking)
            {
                CoroutineManager.AddCoroutine(PrimaryAttack(), "PrimaryAttackCoroutine", this);
            }
        }
    }
Пример #7
0
    public void ClimbOntoObstacle(Vector2 position)
    {
        PhysicsHelpers.SwitchGravity(rigidbody2D, false, currentGravityScale);
        PhysicsHelpers.ResetVelocityX(rigidbody2D);
        PhysicsHelpers.ResetVelocityY(rigidbody2D);
        rigidbody2D.isKinematic = true;

        playerController.RevokeControl(true, ControlTypeToRevoke.AllMovement);

        var coroutine = CoroutineManager.FindCoroutine("ClimbOntoObstacleCoroutine");

        if (coroutine == null)
        {
            CoroutineManager.AddCoroutine(ClimbOntoObstacleCoroutine(position, climbingObstacleSmoothness),
                                          "ClimbOntoObstacleCoroutine");
        }
    }
Пример #8
0
    protected virtual void RevokeControl(float timeToRevoke, bool revoke,
                                         ControlTypeToRevoke controlTypeToRevoke, RevokeControlVariables revokeControlVariables,
                                         MonoBehaviour monoBehaviour)
    {
        var coroutine = CoroutineManager.FindCoroutine("RevokeControlCoroutine", monoBehaviour);

        if (coroutine == null)
        {
            CoroutineManager.AddCoroutine(
                RevokeControlCoroutine(timeToRevoke, controlTypeToRevoke, revokeControlVariables, true, monoBehaviour),
                "RevokeControlCoroutine", monoBehaviour);
        }
        else if (!coroutine.IsRunning)
        {
            CoroutineManager.DeleteCoroutine("RevokeControlCoroutine", monoBehaviour);
            CoroutineManager.AddCoroutine(
                RevokeControlCoroutine(timeToRevoke, controlTypeToRevoke, revokeControlVariables, true, monoBehaviour),
                "RevokeControlCoroutine", monoBehaviour);
        }
    }
Пример #9
0
    public void ClimbOntoLadder(Transform ladderTransform)
    {
        PhysicsHelpers.IgnoreCollision(capsuleCollider2D,
                                       ladderTransform.GetComponent <LadderController>().adjacentCollider, true);
        PhysicsHelpers.SwitchGravity(rigidbody2D, false, currentGravityScale);
        PhysicsHelpers.ResetVelocityX(rigidbody2D);
        PhysicsHelpers.ResetVelocityY(rigidbody2D);
        rigidbody2D.isKinematic = true;
        apostleController.RevokeControl(true, ControlTypeToRevoke.AllMovement);

        var coroutine = CoroutineManager.FindCoroutine("ClimbOntoLadderCoroutine", this);

        if (coroutine == null)
        {
            CoroutineManager.AddCoroutine(
                ladderTransform.gameObject.layer != LayerMask.NameToLayer("Top Ladder")
                    ? ClimbOntoLadderCoroutine(ladderTransform.GetChild(0).position, climbingLadderSmoothness)
                    : ClimbOntoLadderCoroutine(ladderTransform.GetChild(0).position, climbingLadderSmoothness * 0.50f),
                "ClimbOntoLadderCoroutine", this);
        }
    }
Пример #10
0
    public void Effect(PlayerStatusController playerStatusController,
                       PlayerHorizontalMovement playerHorizontalMovement, PlayerStatusVariables playerStatusVariables)
    {
        this.playerHorizontalMovement = playerHorizontalMovement;
        this.playerStatusController   = playerStatusController;
        this.playerStatusVariables    = playerStatusVariables;

        playerStatusVariables.isAdrenalineActive = true;


        if (playerStatusVariables.isMorphinActive)
        {
            var range = Random.Range(0, 11);
            if (range <= 5)
            {
                playerStatusController.Die();
            }
        }

        currentTimeAdrenalineEffect = Time.time + duration;
        CoroutineManager.AddCoroutine(AdrenalineEffectCoroutine(staminaRegenMultiplier, velocityMultiplier),
                                      "AdrenalineEffectCoroutine", this);
    }
Пример #11
0
    public void LoadData(bool resetScene)
    {
        if (gameDataHolder == null)
        {
            return;
        }
        if (ExistsSave())
        {
            if (resetScene)
            {
                CoroutineManager.AddCoroutine(ResetCurrentSceneAsyncCoroutine(currentSceneName),
                                              "ResetCurrentSceneAsyncCoroutine");
                return;
            }
            BinaryFormatter formatter = new BinaryFormatter();
            FileStream      saveFile  = File.Open("Saves/save.binary", FileMode.Open);

            saveData = (SaveData)formatter.Deserialize(saveFile);
            saveData.Load(gameDataHolder);

            saveFile.Close();
        }
    }
 public void ZoomCamera(bool zoomOut)
 {
     CoroutineManager.AddCoroutine(CameraController.ZoomCameraCoroutine(cameraZoomSize, 100, zoomOut),
                                   "ZoomCameraCoroutine");
 }
Пример #13
0
 public void QuitGame()
 {
     CoroutineManager.AddCoroutine(LoadSceneAsyncCoroutine(mainMenuSceneName, false), "LoadSceneAsyncCoroutine");
 }
Пример #14
0
 public void ContinueGame()
 {
     CoroutineManager.AddCoroutine(LoadSceneAsyncCoroutine(mainSceneName, false), "LoadSceneAsyncCoroutine");
 }
Пример #15
0
 public void NewGame()
 {
     CoroutineManager.AddCoroutine(LoadSceneAsyncCoroutine(mainSceneName, true), "LoadSceneAsyncCoroutine");
 }
Пример #16
0
 public static void IgnoreLayerCollision(LayerMask layerMask, LayerMask layerMaskToIgnore, bool ignore, float time)
 {
     CoroutineManager.AddCoroutine(IgnoreLayerCollisionCoroutine(layerMask, layerMaskToIgnore, ignore, time),
                                   "IgnoreLayerCollisionCoroutine");
     Physics2D.IgnoreLayerCollision(layerMask.value, layerMaskToIgnore.value, ignore);
 }
Пример #17
0
 private void OnApplyButtonClick()
 {
     CoroutineManager.AddCoroutine(ChangeResolutionCoroutine(), "ChangeResolutionCoroutine");
 }
Пример #18
0
 public void RegenLifeTemporary(float duration, float lifeToRegen, bool deactivateMorphin)
 {
     regenLifeTemporaryTime = Time.time + duration;
     CoroutineManager.AddCoroutine(RegenLifeTemporaryCoroutine(lifeToRegen, deactivateMorphin),
                                   "RegenLifeTemporaryCoroutine");
 }