Ejemplo n.º 1
0
    public void OnDeath(PlayerUnitController unit, Vector2 relictVelocity)
    {
        PlayerBaseStats stats         = unit.di.stats;
        SlimeType       poofType      = stats.SlimeType;
        Vector2         spawnPosition = unit.transform.position;

        SlimePoof slimePoof = poofs[poofType];

        slimePoof.SpawnAt(spawnPosition);

        foreach (SlimeType type in SlimeTypeHelpers.GetEnumerable())
        {
            if (stats.HasType(type))
            {
                SlimeRelict relict = relicts[type];
                relict.SpawnAt(spawnPosition);

                Vector2 velocity = GenerateRelictVelocity();

                relict.SetVelocity(velocity);
                relict.SetRotation(RandomHelpers.Range(relicRotationsPerSecond));
                //relictVelocity = Vector2.zero;
            }
        }
    }
Ejemplo n.º 2
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);
        }
    }
Ejemplo n.º 3
0
 private bool HasMergedAny(PlayerBaseStats stats)
 {
     foreach (SlimeType type in SlimeTypeHelpers.GetEnumerable())
     {
         if (canInteract.Get(type) && stats.HasType(type))
         {
             return(true);
         }
     }
     return(false);
 }
Ejemplo n.º 4
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);
        }
    }
Ejemplo n.º 5
0
 private void OnStatsChange(PlayerBaseStats stats)
 {
     hasSword  = stats.HasType(SlimeType.Sword);
     hasShield = stats.HasType(SlimeType.Shield);
 }
 public void OnStatsChange(PlayerBaseStats stats)
 {
     swordHand.SetStats(stats.HasType(SlimeType.Sword));
     shieldHand.SetHasShield(stats.HasType(SlimeType.Shield));
     heart.enabled = stats.HasType(SlimeType.Heart);
 }