private void EditorUpdate() { if (spritesMap != null && spritesMap.Get(SlimeType)) { spriteRenderer.sprite = spritesMap.Get(SlimeType); } if (animatorsMap != null && animatorsMap.Get(SlimeType)) { animator.runtimeAnimatorController = animatorsMap.Get(SlimeType); } }
public bool SetCheckpoint(SlimeType type, IPlayerRespawner checkpoint) { IPlayerRespawner previousCheckpoint = checkpointsMap.Get(type); if (previousCheckpoint == checkpoint) { return(false); } if (previousCheckpoint != null) { previousCheckpoint.OnDeactivate(type); } checkpointsMap.Set(type, checkpoint); checkpoint.OnActivate(type); return(true); }
void Update() { if (!button) { return; } var spriteRenderer = button.spriteRenderer; var interactionPredicate = button.interactionPredicate; if (spriteRenderer && interactionPredicate.interactionType == SlimeInteractionPredicate.SlimeInteractionType.OnlyUnitNoAssembly) { foreach ((SlimeType type, bool canInteract) in interactionPredicate.canInteract.GetPairEnumerable()) { if (canInteract && slimeButtonSprite.Get(type)) { spriteRenderer.sprite = slimeButtonSprite.Get(type); } } } }
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 override bool HasType(SlimeType type) => mergedSlimes.Get(type);
public void OnActivate(SlimeType type) { wisps.Get(type).PlayAppear(); }
public PlayerUnitSelectable GetSelectable(SlimeType type) => selectables.Get(type);