Пример #1
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        PlayerUnitController unit           = InteractiveHelpers.GetPlayer(collision);
        PlayerBaseStats      stats          = unit.di.stats;
        PlayerRespawnHandler respawnHandler = unit.mainController.di.respawnHandler;
        bool playSound = false;

        foreach ((SlimeType type, bool acceptsType) in checkpointFor.GetPairEnumerable())
        {
            if (acceptsType && stats.HasType(type))
            {
                bool updated = respawnHandler.SetCheckpoint(type, this);
                if (updated)
                {
                    playSound = true;
                }
                if (!segmentMember.Segment)
                {
                    segmentMember.Segment = unit.di.camera.CameraSegment;
                }
            }
        }
        if (playSound)
        {
            AudioSingleton.PlaySound(AudioSingleton.Instance.clips.checkpoint);
        }
    }
Пример #2
0
    private void RespawnCurrentUnit()
    {
        PlayerRespawnHandler respawnHandler  = controller.mainController.di.respawnHandler;
        IPlayerRespawner     playerRespawner = respawnHandler.GetCheckpointRespawner(stats.SlimeType);

        if (playerRespawner.CameraSegment)
        {
            camera.CameraSegment = playerRespawner.CameraSegment;
        }
        Vector2 respawnPosition = playerRespawner.SpawnPoint;

        controller.transform.position = respawnPosition;
        hp.OnRespawn();
        physics.velocity.Value = Vector2.zero;
    }
Пример #3
0
    private void RespawnAssembly()
    {
        PlayerRespawnHandler respawnHandler    = controller.mainController.di.respawnHandler;
        IPlayerRespawner     kingRespawner     = respawnHandler.GetCheckpointRespawner(SlimeType.King);
        HashSet <SlimeType>  respawnSeparately = new HashSet <SlimeType>();

        foreach (SlimeType type in SlimeTypeHelpers.GetWithoutKingEnumerable())
        {
            if (stats.HasType(type))
            {
                IPlayerRespawner slimeRespawner = respawnHandler.GetCheckpointRespawner(type);
                if (slimeRespawner != kingRespawner)
                {
                    respawnSeparately.Add(type);
                }
            }
        }

        if (respawnSeparately.Count > 0)
        {
            unitHandler.RespawnOutOfAssembly(respawnSeparately);
        }
    }