public void OnDataDestinationPropertyChanged(int value)
    {
        MagicCircleDataLinks dl = (MagicCircleDataLinks)selectedLink.linkedLink;

        if (dl != null)
        {
            if (dataData.usePropertyToggle.isOn)
            {
                if (value > 0 && value <= dl.availableLinkableProperties.Count)
                {
                    dl.selectedLinkableProperty    = dl.availableLinkableProperties[value - 1];
                    dl.selectedActivatableFunction = "";
                }
            }
            else if (dataData.useFunctionToggle.isOn)
            {
                if (value > 0 && value <= dl.activatableFunctions.Count)
                {
                    dl.selectedLinkableProperty    = "";
                    dl.selectedActivatableFunction = dl.activatableFunctions[value - 1];
                }
            }
            dl.link = true;
        }
    }
    public void UpdateDataInverseToggle()
    {
        MagicCircleDataLinks dl = (MagicCircleDataLinks)selectedLink.linkedLink;

        if (dl != null)
        {
            dataData.inverseToggle.isOn = dl.invert;
        }
    }
    public void OnDataInverseChanged(bool value)
    {
        MagicCircleDataLinks dl = (MagicCircleDataLinks)selectedLink.linkedLink;

        if (dl != null)
        {
            dl.invert = value;
        }
    }
    public void OnDataSourcePropertyChanged(int value)
    {
        MagicCircleDataLinks dl = (MagicCircleDataLinks)selectedLink.linkedLink;

        if (dl != null)
        {
            if (value > 0 && value <= dl.availableProperties.Count)
            {
                dl.selectedProperty = dl.availableProperties[value - 1];
            }
            dl.link = true;
        }
    }
 public void Delete()
 {
     if (linkedLink != null && linkedLink.GetLinkType() == LinkTypes.Data)
     {
         MagicCircleDataLinks dl = (MagicCircleDataLinks)linkedLink;
         if (isProperty)
         {
             dl.ResetProperty(dl.selectedLinkableProperty);
         }
     }
     Destroy(linkedLink);
     linkedLink = null;
     Destroy(this.gameObject);
 }
    public void UpdateDataSourceProperties()
    {
        MagicCircleDataLinks dl = (MagicCircleDataLinks)selectedLink.linkedLink;

        if (dl != null)
        {
            dataData.sourceProperty.ClearOptions();
            List <string> temp = new List <string>();
            temp.Add("----");
            temp.AddRange(dl.availableProperties);
            dataData.sourceProperty.AddOptions(temp);
            dataData.sourceProperty.value = (int)(Mathf.Max(dl.availableProperties.FindIndex(x => x == dl.selectedProperty) + 1, 0));
            dataData.sourceProperty.RefreshShownValue();
        }
    }
    public void UpdateDataDestinationProperties()
    {
        MagicCircleDataLinks dl = (MagicCircleDataLinks)selectedLink.linkedLink;

        if (dl != null)
        {
            dataData.destinationProperty.ClearOptions();
            if (selectedLink.isProperty)
            {
                dataData.usePropertyToggle.isOn = true;
            }
            else
            {
                dataData.useFunctionToggle.isOn = true;
            }
            OnDataUsePropertyChanged(dataData.usePropertyToggle.isOn);
            OnDataUseFunctionChanged(dataData.useFunctionToggle.isOn);
        }
    }
 // Start is called before the first frame update
 void Start()
 {
     mcType                 = MagicCircleType.Form;
     mySpriteRenderer       = GetComponent <SpriteRenderer>();
     mySpriteRenderer.color = Color.black;
     if (spellParent.autoLinkMagicCircle && spellParent.initialMagicCircle != null)
     {
         MagicCircleDataLinks link = (MagicCircleDataLinks)spellParent.AddLink(LinkTypes.Data);
         link.source                   = spellParent.initialMagicCircle;
         link.destination              = this;
         link.selectedProperty         = "GetMagic";
         link.selectedLinkableProperty = "formableMagic";
         link.UpdateSourceAndDestination();
         link.link = true;
         spellParent.initialMagicCircle.autoActivate = false;
         spellParent.mcmm.UpdateWithCreatedLink(link);
         // formableMagic.SetLinkedValue( emc.GetMagic );
     }
 }
    public void OnDataUseFunctionChanged(bool value)
    {
        MagicCircleDataLinks dl = (MagicCircleDataLinks)selectedLink.linkedLink;

        if (dl != null)
        {
            if (value)
            {
                dataData.destinationProperty.ClearOptions();
                List <string> temp = new List <string>();
                temp.Add("----");
                temp.AddRange(dl.activatableFunctions);
                dataData.destinationProperty.AddOptions(temp);
                dataData.destinationProperty.value = (int)(Mathf.Max(dl.activatableFunctions.FindIndex(x => x == dl.selectedActivatableFunction) + 1, 0));
                dataData.destinationProperty.RefreshShownValue();
                selectedLink.isProperty = false;
                OnDataDestinationPropertyChanged(dataData.destinationProperty.value);
            }
        }
    }
 // Start is called before the first frame update
 void Start()
 {
     mcType                 = MagicCircleType.Movement;
     mySpriteRenderer       = GetComponent <SpriteRenderer>();
     mySpriteRenderer.color = Color.green;
     // if( autoLinkToElementMagic && mcParent.Contains( (int)MagicCircleType.Element ) )
     // {
     //     Debug.Log("Linked Movement to Element");
     //     ElementMagicCircle emc = mcParent.GetMagicCircle( (int)MagicCircleType.Element ) as ElementMagicCircle;
     //     movableMagic.SetLinkedValue( emc.GetMagicObject );
     // }
     if (spellParent.autoLinkMagicCircle && spellParent.initialMagicCircle != null)
     {
         MagicCircleDataLinks link = (MagicCircleDataLinks)spellParent.AddLink(LinkTypes.Data);
         link.source                   = spellParent.initialMagicCircle;
         link.destination              = this;
         link.selectedProperty         = "GetMagicObject";
         link.selectedLinkableProperty = "movableMagic";
         link.UpdateSourceAndDestination();
         link.link = true;
         spellParent.mcmm.UpdateWithCreatedLink(link);
         // formableMagic.SetLinkedValue( emc.GetMagic );
     }
 }