using CommonAI.RTS; using CommonLang.Vector;
using CommonAI.Zone.Attributes;
using CommonAI.Zone.Instance;
using CommonLang.Property;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CommonAI.Zone.EventTrigger;

namespace CommonAI.Zone.ZoneEditor.EventTrigger
{



    [DescAttribute("临时变量", "临时变量")]
    public class GetLocalAsString : StringValue
    {
        [LocalVarIDAttribute(typeof(StringValue))]
        [DescAttribute("变量名")]
        public string Key = "VarName";
        public override string ToString()
        {
            return string.Format("获取临时变量\"{0}\"", Key);
        }
        public override string GetValue(IEditorValueAdapter api, EventArguments args)
        {
            return api.GetLocalVarAs<string>(Key);
        }
    }

    [DescAttribute("临时变量", "临时变量")]
    public class GetLocalAsInteger : IntegerValue
    {
        [LocalVarIDAttribute(typeof(IntegerValue))]
        [DescAttribute("变量名")]
        public string Key = "VarName";
        public override string ToString()
        {
            return string.Format("获取临时变量\"{0}\"", Key);
        }
        public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
        {
            return api.GetLocalVarAs<Int32>(Key);
        }
    }

    [DescAttribute("临时变量", "临时变量")]
    public class GetLocalAsReal : RealValue
    {
        [LocalVarIDAttribute(typeof(RealValue))]
        [DescAttribute("变量名")]
        public string Key = "VarName";
        public override string ToString()
        {
            return string.Format("获取临时变量\"{0}\"", Key);
        }
        public override Single GetValue(IEditorValueAdapter api, EventArguments args)
        {
            return api.GetLocalVarAs<Single>(Key);
        }
    }

    [DescAttribute("临时变量", "临时变量")]
    public class GetLocalAsBoolean : BooleanValue
    {
        [LocalVarIDAttribute(typeof(BooleanValue))]
        [DescAttribute("变量名")]
        public string Key = "VarName";
        public override string ToString()
        {
            return string.Format("获取临时变量\"{0}\"", Key);
        }
        public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
        {
            return api.GetLocalVarAs<Boolean>(Key);
        }
    }

    [DescAttribute("临时变量", "临时变量")]
    public class GetLocalAsUnit : UnitValue
    {
        [LocalVarIDAttribute(typeof(UnitValue))]
        [DescAttribute("变量名")]
        public string Key = "VarName";
        public override string ToString()
        {
            return string.Format("获取临时变量\"{0}\"", Key);
        }
        public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args)
        {
            return api.GetLocalVarAs<InstanceUnit>(Key);
        }
    }

    [DescAttribute("临时变量", "临时变量")]
    public class GetLocalAsItem : ItemValue
    {
        [LocalVarIDAttribute(typeof(ItemValue))]
        [DescAttribute("变量名")]
        public string Key = "VarName";
        public override string ToString()
        {
            return string.Format("获取临时变量\"{0}\"", Key);
        }
        public override InstanceItem GetValue(IEditorValueAdapter api, EventArguments args)
        {
            return api.GetLocalVarAs<InstanceItem>(Key);
        }
    }
    [DescAttribute("临时变量", "临时变量")]
    public class GetLocalAsFlag : FlagValue
    {
        [LocalVarIDAttribute(typeof(FlagValue))]
        [DescAttribute("变量名")]
        public string Key = "VarName";
        public override string ToString()
        {
            return string.Format("获取临时变量\"{0}\"", Key);
        }
        public override InstanceFlag GetValue(IEditorValueAdapter api, EventArguments args)
        {
            return api.GetLocalVarAs<InstanceFlag>(Key);
        }
    }

    [DescAttribute("临时变量", "临时变量")]
    public class GetLocalAsPosition : PositionValue
    {
        [LocalVarIDAttribute(typeof(PositionValue))]
        [DescAttribute("变量名")]
        public string Key = "VarName";
        public override string ToString()
        {
            return string.Format("获取临时变量\"{0}\"", Key);
        }
        public override Vector2 GetValue(IEditorValueAdapter api, EventArguments args)
        {
            return api.GetLocalVarAs<Vector2>(Key);
        }
    }

    //---------------------------------------------------------------------------------------------------




    [DescAttribute("临时变量(变量)", "临时变量")]
    public class GetLocalAsStringSV : StringValue
    {
        [DescAttribute("变量名")]
        public StringValue Key = new StringValue.VALUE("VarName");
        public override string ToString()
        {
            return string.Format("获取临时变量\"{0}\"", Key);
        }
        public override string GetValue(IEditorValueAdapter api, EventArguments args)
        {
            return api.GetLocalVarAs<string>(Key.GetValue(api, args));
        }
    }

    [DescAttribute("临时变量(变量)", "临时变量")]
    public class GetLocalAsIntegerSV : IntegerValue
    {
        [DescAttribute("变量名")]
        public StringValue Key = new StringValue.VALUE("VarName");
        public override string ToString()
        {
            return string.Format("获取临时变量\"{0}\"", Key);
        }
        public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
        {
            return api.GetLocalVarAs<Int32>(Key.GetValue(api, args));
        }
    }

    [DescAttribute("临时变量(变量)", "临时变量")]
    public class GetLocalAsRealSV : RealValue
    {
        [DescAttribute("变量名")]
        public StringValue Key = new StringValue.VALUE("VarName");
        public override string ToString()
        {
            return string.Format("获取临时变量\"{0}\"", Key);
        }
        public override Single GetValue(IEditorValueAdapter api, EventArguments args)
        {
            return api.GetLocalVarAs<Single>(Key.GetValue(api, args));
        }
    }

    [DescAttribute("临时变量(变量)", "临时变量")]
    public class GetLocalAsBooleanSV : BooleanValue
    {
        [DescAttribute("变量名")]
        public StringValue Key = new StringValue.VALUE("VarName");
        public override string ToString()
        {
            return string.Format("获取临时变量\"{0}\"", Key);
        }
        public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
        {
            return api.GetLocalVarAs<Boolean>(Key.GetValue(api, args));
        }
    }

    [DescAttribute("临时变量(变量)", "临时变量")]
    public class GetLocalAsUnitSV : UnitValue
    {
        [DescAttribute("变量名")]
        public StringValue Key = new StringValue.VALUE("VarName");
        public override string ToString()
        {
            return string.Format("获取临时变量\"{0}\"", Key);
        }
        public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args)
        {
            return api.GetLocalVarAs<InstanceUnit>(Key.GetValue(api, args));
        }
    }

    [DescAttribute("临时变量(变量)", "临时变量")]
    public class GetLocalAsItemSV : ItemValue
    {
        [DescAttribute("变量名")]
        public StringValue Key = new StringValue.VALUE("VarName");
        public override string ToString()
        {
            return string.Format("获取临时变量\"{0}\"", Key);
        }
        public override InstanceItem GetValue(IEditorValueAdapter api, EventArguments args)
        {
            return api.GetLocalVarAs<InstanceItem>(Key.GetValue(api, args));
        }
    }
    [DescAttribute("临时变量(变量)", "临时变量")]
    public class GetLocalAsFlagSV : FlagValue
    {
        [DescAttribute("变量名")]
        public StringValue Key = new StringValue.VALUE("VarName");
        public override string ToString()
        {
            return string.Format("获取临时变量\"{0}\"", Key);
        }
        public override InstanceFlag GetValue(IEditorValueAdapter api, EventArguments args)
        {
            return api.GetLocalVarAs<InstanceFlag>(Key.GetValue(api, args));
        }
    }

    [DescAttribute("临时变量(变量)", "临时变量")]
    public class GetLocalAsPositionSV : PositionValue
    {
        [DescAttribute("变量名")]
        public StringValue Key = new StringValue.VALUE("VarName");
        public override string ToString()
        {
            return string.Format("获取临时变量\"{0}\"", Key);
        }
        public override Vector2 GetValue(IEditorValueAdapter api, EventArguments args)
        {
            return api.GetLocalVarAs<Vector2>(Key.GetValue(api, args));
        }
    }
}