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; } } }
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); } }
private bool HasMergedAny(PlayerBaseStats stats) { foreach (SlimeType type in SlimeTypeHelpers.GetEnumerable()) { if (canInteract.Get(type) && stats.HasType(type)) { return(true); } } return(false); }
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); } }
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); }