Beispiel #1
0
    public Unit(string name)
    {
        _name     = name;
        _props    = new PropertyCollection();
        _triggers = new TriggerCollection();
        _skills   = new Dictionary <string, Skill>();

        _alive = _props.AddProperty(PropertyType.Alive, new BoolProperty("活着", true));

        _props.AddProperty(PropertyType.Level, new IntProperty("等级", 1));

        _props.AddProperty(PropertyType.Vitality, new ValueProperty("体力", 10));
        _props.AddProperty(PropertyType.Strength, new ValueProperty("力量", 10));
        _props.AddProperty(PropertyType.Intelligence, new ValueProperty("智力", 10));
        _props.AddProperty(PropertyType.Agility, new ValueProperty("敏捷", 10));

        // BattleProperties
        _health = _props.AddProperty(PropertyType.Health, new MaxValueProperty("生命", 100));
        _props.AddProperty(PropertyType.PhysicAttack, new ValueProperty("物理攻击", 10, 1));
        _props.AddProperty(PropertyType.MagicAttack, new ValueProperty("魔法攻击", 10, 1));
        _props.AddProperty(PropertyType.PhysicDefense, new ValueProperty("物理防御", 0));
        _props.AddProperty(PropertyType.MagicDefense, new ValueProperty("魔法防御", 0));
        _props.AddProperty(PropertyType.Speed, new ValueProperty("速度", 100, max: 2000));
        _props.AddProperty(PropertyType.CriticalRate, new ValueProperty("暴击率", 0.00f, max: 1.00f, format: "P0"));
        _props.AddProperty(PropertyType.CriticalDamage, new ValueProperty("暴击伤害", 1.50f, 1.00f, format: "P0"));
        _props.AddProperty(PropertyType.CooldownReduction, new ValueProperty("冷却时间降低", 0, -10.0f, 0.80f, format: "P0"));

        _props.AddProperty(PropertyType.BattleForce, new IntProperty("战斗势力", 0));
        _props.AddProperty(PropertyType.BattleForceAllyMask, new IntProperty("战斗势力掩码", 0));
        _props.AddProperty(PropertyType.BattleGroup, new IntProperty("战斗组", 0));
        UpdateBattleProperties();
    }
Beispiel #2
0
        public SettingsPropertyDefinitionWrapper(object @object) : base()
        {
            var type = @object.GetType();

            SettingsIdProperty       = AccessTools.Property(type, nameof(SettingsId));
            SettingTypeProperty      = AccessTools.Property(type, nameof(SettingType));
            PropertyProperty         = AccessTools.Property(type, nameof(PropertyReference));
            DisplayNameProperty      = AccessTools.Property(type, nameof(DisplayName));
            HintTextProperty         = AccessTools.Property(type, nameof(HintText));
            OrderProperty            = AccessTools.Property(type, nameof(Order));
            RequireRestartProperty   = AccessTools.Property(type, nameof(RequireRestart));
            GroupNameProperty        = AccessTools.Property(type, nameof(GroupName));
            IsMainToggleProperty     = AccessTools.Property(type, nameof(IsMainToggle));
            MinValueProperty         = AccessTools.Property(type, nameof(MinValue));
            MaxValueProperty         = AccessTools.Property(type, nameof(MaxValue));
            EditableMinValueProperty = AccessTools.Property(type, nameof(EditableMinValue));
            EditableMaxValueProperty = AccessTools.Property(type, nameof(EditableMaxValue));
            SelectedIndexProperty    = AccessTools.Property(type, nameof(SelectedIndex));


            SettingsId  = SettingsIdProperty?.GetValue(@object) as string ?? "ERROR";
            SettingType = SettingTypeProperty?.GetValue(@object) is { } settingTypeObject
                ? Enum.TryParse <SettingType>(settingTypeObject.ToString(), out var resultEnum)
                    ? resultEnum
                    : SettingType.NONE
                : SettingType.NONE;

            PropertyReference = PropertyProperty?.GetValue(@object) is { } value
                ? value is IRef @ref ? @ref : new RefWrapper(value)
                : null;

            DisplayName = DisplayNameProperty?.GetValue(@object) switch
            {
                string str => str,
                TextObject to => to.ToString(),
                       _ => DisplayName
            };
            HintText = HintTextProperty?.GetValue(@object) switch
            {
                string str => str,
                TextObject to => to.ToString(),
                       _ => HintText
            };
            Order          = OrderProperty?.GetValue(@object) as int? ?? -1;
            RequireRestart = RequireRestartProperty?.GetValue(@object) as bool? ?? true;

            GroupName    = GroupNameProperty?.GetValue(@object) as string ?? "";
            IsMainToggle = IsMainToggleProperty?.GetValue(@object) as bool? ?? false;

            MinValue         = MinValueProperty?.GetValue(@object) is { } minVal?minVal as decimal? ?? 0 : 0;
            MaxValue         = MaxValueProperty?.GetValue(@object) is { } maxVal?maxVal as decimal? ?? 0 : 0;
            EditableMinValue = EditableMinValueProperty?.GetValue(@object) is { } eMinVal?  eMinVal as decimal? ?? 0 : 0;
            EditableMaxValue = EditableMaxValueProperty?.GetValue(@object) is { } eMaxValue?eMaxValue as decimal? ?? 0 : 0;

            SelectedIndex = SelectedIndexProperty?.GetValue(@object) as int? ?? 0;
        }
    }
}
Beispiel #3
0
        /// <summary>
        /// Static class constructor
        /// </summary>
        static ULongUpDown()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(ULongUpDown),
                                                     new FrameworkPropertyMetadata(typeof(ULongUpDown)));

            MaxValueProperty.OverrideMetadata(typeof(ULongUpDown),
                                              new PropertyMetadata(ulong.MaxValue));

            MinValueProperty.OverrideMetadata(typeof(ULongUpDown),
                                              new PropertyMetadata(ulong.MinValue));

            // Override Min/Max default values
            ////            AbstractBaseUpDown<ulong>.MinValueProperty.OverrideMetadata(
            ////                typeof(ULongUpDown), new PropertyMetadata(ulong.MinValue));
            ////
            ////            AbstractBaseUpDown<ulong>.MaxValueProperty.OverrideMetadata(
            ////                typeof(ULongUpDown), new PropertyMetadata(ulong.MaxValue));
        }
Beispiel #4
0
        /// <summary>
        /// Static class constructor
        /// </summary>
        static ShortUpDown()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(ShortUpDown),
                                                     new FrameworkPropertyMetadata(typeof(ShortUpDown)));

            MaxValueProperty.OverrideMetadata(typeof(ShortUpDown),
                                              new PropertyMetadata(short.MaxValue));

            MinValueProperty.OverrideMetadata(typeof(ShortUpDown),
                                              new PropertyMetadata(short.MinValue));

            // Override Min/Max default values
            ////            AbstractBaseUpDown<short>.MinValueProperty.OverrideMetadata(
            ////                typeof(ShortUpDown), new PropertyMetadata(short.MinValue));
            ////
            ////            AbstractBaseUpDown<short>.MaxValueProperty.OverrideMetadata(
            ////                typeof(ShortUpDown), new PropertyMetadata(short.MaxValue));
        }
Beispiel #5
0
        /// <summary>
        /// Static class constructor
        /// </summary>
        static DecimalUpDown()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(DecimalUpDown),
                                                     new FrameworkPropertyMetadata(typeof(DecimalUpDown)));

            MaxValueProperty.OverrideMetadata(typeof(DecimalUpDown),
                                              new PropertyMetadata(decimal.MaxValue));

            MinValueProperty.OverrideMetadata(typeof(DecimalUpDown),
                                              new PropertyMetadata(decimal.MinValue));

            // Override Min/Max default values
            ////            AbstractBaseUpDown<decimal>.MinValueProperty.OverrideMetadata(
            ////                typeof(DecimalUpDown), new PropertyMetadata(decimal.MinValue));
            ////
            ////            AbstractBaseUpDown<decimal>.MaxValueProperty.OverrideMetadata(
            ////                typeof(DecimalUpDown), new PropertyMetadata(decimal.MaxValue));
        }
Beispiel #6
0
        /// <summary>
        /// Static class constructor
        /// </summary>
        static FloatUpDown()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(FloatUpDown),
                                                     new FrameworkPropertyMetadata(typeof(FloatUpDown)));

            FormatStringProperty.OverrideMetadata(typeof(FloatUpDown),
                                                  new PropertyMetadata("F2"));

            MaxValueProperty.OverrideMetadata(typeof(FloatUpDown),
                                              new PropertyMetadata(float.MaxValue));

            MinValueProperty.OverrideMetadata(typeof(FloatUpDown),
                                              new PropertyMetadata(float.MinValue));

            // Override Min/Max default values
            ////            AbstractBaseUpDown<float>.MinValueProperty.OverrideMetadata(
            ////                typeof(FloatUpDown), new PropertyMetadata(float.MinValue));
            ////
            ////            AbstractBaseUpDown<float>.MaxValueProperty.OverrideMetadata(
            ////                typeof(FloatUpDown), new PropertyMetadata(float.MaxValue));
        }
        /// <summary>
        /// Static class constructor
        /// </summary>
        static DoubleUpDown()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(DoubleUpDown),
                                                     new FrameworkPropertyMetadata(typeof(DoubleUpDown)));

            // overide default values inherited dependency properties
            FormatStringProperty.OverrideMetadata(typeof(DoubleUpDown),
                                                  new PropertyMetadata("F2"));

            MaxValueProperty.OverrideMetadata(typeof(DoubleUpDown),
                                              new PropertyMetadata(double.MaxValue));

            MinValueProperty.OverrideMetadata(typeof(DoubleUpDown),
                                              new PropertyMetadata(double.MinValue));

            // Override Min/Max default values
            ////            AbstractBaseUpDown<double>.MinValueProperty.OverrideMetadata(
            ////                typeof(DoubleUpDown), new PropertyMetadata(double.MinValue));
            ////
            ////            AbstractBaseUpDown<double>.MaxValueProperty.OverrideMetadata(
            ////                typeof(DoubleUpDown), new PropertyMetadata(double.MaxValue));
        }
 set => SetValue(MaxValueProperty, value);
 set => this.SetValue(MaxValueProperty, value);
 get => (decimal)GetValue(MaxValueProperty); set => SetValue(MaxValueProperty, value);