Example #1
0
    public void YeetOutside(SlimeType type)
    {
        PlayerUnitSelectable selectable = unitHandler.GetSelectable(type);

        selectable.UnitController.di.camera.CameraSegment = unitController.di.camera.CameraSegment;
        selectable.GetYeeted(unitController.di.yeetModule);
        selectable.SetActive();
    }
Example #2
0
    public void OnSlimeMerge(SlimeType typeToMerge)
    {
        if (typeToMerge == SlimeType.King)
        {
            throw new Exception("Cannot merge slime type king");
        }

        if (assemblySelectable.IsActive)
        {
            if (assemblySelectable.Stats.HasType(typeToMerge))
            {
                // double collision call (controller & otherController)
                return;
            }

            PlayerUnitSelectable selectableToMerge = selectables.Get(typeToMerge);
            bool selectAssembly = selectableToMerge.IsSelected;
            selectableToMerge.SetInactiveAndDeselect();
            assemblySelectable.MergeInside(typeToMerge);
            assemblySelectable.SetActive();
            if (selectAssembly)
            {
                assemblySelectable.Select();
            }
        }
        else
        {
            PlayerUnitSelectable selectableToMerge = selectables.Get(typeToMerge);
            bool selectAssembly = selectableToMerge.IsSelected;
            selectableToMerge.SetInactiveAndDeselect();
            PlayerUnitSelectable kingSelectable = selectables.Get(SlimeType.King);
            selectAssembly = selectAssembly || kingSelectable.IsSelected;
            kingSelectable.SetInactiveAndDeselect();
            assemblySelectable.MergeInside(typeToMerge);
            assemblySelectable.SetActive();

            if (selectAssembly)
            {
                assemblySelectable.Select();
            }
        }
        AudioSingleton.PlaySound(AudioSingleton.Instance.clips.merge);
        OnMergeChange();
    }