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);
     }
 }
Beispiel #2
0
    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);
                }
            }
        }
    }
Beispiel #4
0
    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);
    }
Beispiel #5
0
 public override bool HasType(SlimeType type) => mergedSlimes.Get(type);
Beispiel #6
0
 public void OnActivate(SlimeType type)
 {
     wisps.Get(type).PlayAppear();
 }
Beispiel #7
0
 public PlayerUnitSelectable GetSelectable(SlimeType type) =>
 selectables.Get(type);