public override bool CanInteract(PlayerUnitController controller) { PlayerBaseStats stats = controller.di.stats; SlimeType type = stats.SlimeType; bool isAssembly = stats.IsAssembly; switch (interactionType) { case SlimeInteractionType.OnlyUnitNoAssembly: return(!isAssembly && canInteract.Get(type)); case SlimeInteractionType.UnitOrUnitInAssembly: return(canInteract.Get(type) || HasMergedAny(stats)); case SlimeInteractionType.UnitOrAnyInAssembly: return(canInteract.Get(type) || isAssembly); case SlimeInteractionType.OnlyUnitInAssembly: return(canInteract.Get(type) && isAssembly); case SlimeInteractionType.OnlyAllUnitsInAssembly: return(isAssembly && HasMergedAll(stats)); } return(false); }
public void ControlUpdate() { if (!stats.IsAssembly) { return; } if (input.yeet.IsPressed()) { SlimeType selectedType = unitHandler.SelectedType; if (selectedType.IsKing()) { if (hp.IsFull()) { PerformYeet(selectedType); } } else { PlayerBaseStats unitStats = unitHandler.GetSelectable(selectedType).Stats; int hearts = unitStats.Hearts; if (hp.CurrentHP > hearts) { PerformYeet(selectedType); } } } }
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 void OnStatsChange(PlayerBaseStats stats) { immune = stats.IsPoisonImmune; if (immune && state != PoisonState.None) { state = PoisonState.None; } }
private void OnStatsChange(PlayerBaseStats stats) { int maxHPDifference = stats.Hearts - maxHP; currentHP = Mathf.Clamp(currentHP + maxHPDifference, 0, stats.Hearts); maxHP = stats.Hearts; OnHpUpdate(HpChange.Update); }
public void Inject(PlayerUnitDI di) { controller = di.controller; stats = di.stats; unitHandler = di.mainDi.unitHandler; hp = di.hp; physics = di.physics; camera = di.camera; }
public void Inject(PlayerUnitDI di) { physics = di.physics; stateMachine = di.stateMachine; unitHandler = di.mainDi.unitHandler; input = di.mainDi.controller.input; stats = di.stats; hp = di.hp; }
public void Activate(Player player, MainGameWindow main, bool AllowAction) { allowAction = AllowAction; Point spawnPoint = new Point(0, 20); playerProfile = new PlayerBaseStats { Location = spawnPoint }; playerProfile.Activate(player); Controls.Add(playerProfile); itemView = new PlayerItemView() { Location = spawnPoint }; itemView.Activate(player, main); itemView.Visible = false; Controls.Add(itemView); playerStatus = new PlayerStatusView { Location = spawnPoint }; playerStatus.Activate(player); playerStatus.Visible = false; Controls.Add(playerStatus); playerSpell = new PlayerSpellView { Location = spawnPoint }; playerSpell.Activate(player, main, allowAction); playerSpell.Visible = false; Controls.Add(playerSpell); playerWeapon = new PlayerWeaponView { Location = spawnPoint }; playerWeapon.Visible = false; playerWeapon.Activate(player, allowAction); Controls.Add(playerWeapon); playerTree = new PlayerTreeView { Location = spawnPoint }; playerTree.Visible = false; playerTree.Activate(player); Controls.Add(playerTree); active = playerProfile; tab = PlayerTab.stats; Render(); }
public void Init(PlayerBaseStats stats) { if (stats.OnChange != null) { stats.OnChange += ReadStats; } else { ReadStats(stats); } }
private void Start() { #if UNITY_EDITOR spawnPoint = unit.transform.position; #else spawnPoint = transform.position; unit.transform.position = SpawnPoint; #endif PlayerBaseStats stats = unit.di.stats; unit.di.mainDi.respawnHandler.SetCheckpoint(stats.SlimeType, this); }
private bool HasMergedAny(PlayerBaseStats stats) { foreach (SlimeType type in SlimeTypeHelpers.GetEnumerable()) { if (canInteract.Get(type) && stats.HasType(type)) { return(true); } } return(false); }
public void Inject(PlayerUnitDI di) { hp = di.hp; damage = di.damage; PlayerBaseStats stats = di.stats; OnStatsChange(stats); if (stats.OnChange != null) { stats.OnChange += OnStatsChange; } }
public override void Inject(PlayerUnitDI di) { PlayerBaseStats stats = di.stats; foreach (IPlayerAssemblyComponent component in GetComponents()) { component.Inject(di); } stats.OnChange += OnStatsChange; OnStatsChange(stats); }
private void OnPressingAssemblyStatsChange(PlayerBaseStats stats) { foreach (PlayerUnitController unit in new List <PlayerUnitController>(pressing)) { if (unit.di.stats.IsAssembly) { if (!interactionPredicate.CanInteract(unit)) { RemovePressingUnit(unit); } } } }
public override void Inject(PlayerUnitDI di) { animator = di.animator; PlayerBaseStats stats = di.stats; input = di.mainDi.controller.input; di.animationEvents.OnSwordEnded += OnSwordEnded; OnStatsChange(stats); if (stats.OnChange != null) { stats.OnChange += OnStatsChange; } }
public void Inject(PlayerUnitDI di) { controller = di.controller; PlayerBaseStats stats = di.stats; maxHP = stats.Hearts; currentHP = maxHP; OnHpUpdate(HpChange.Update); if (stats.OnChange != null) { stats.OnChange += OnStatsChange; } }
private void OnStatsChange(PlayerBaseStats stats) { hasSword = stats.HasType(SlimeType.Sword); hasShield = stats.HasType(SlimeType.Shield); }
public override void Inject(PlayerUnitDI di) { unitController = di.controller; stats = di.stats; unitHandler = di.mainDi.unitHandler; }
public void OnStatsChange(PlayerBaseStats stats) { swordHand.SetStats(stats.HasType(SlimeType.Sword)); shieldHand.SetHasShield(stats.HasType(SlimeType.Shield)); heart.enabled = stats.HasType(SlimeType.Heart); }
private void ReadStats(PlayerBaseStats stats) { effectable.strength = stats.Strength; }