示例#1
0
        public EditAbilityComponent(ITimedEffect effect)
        {
            InitializeComponent();
            CurrentEffect = effect;
            AbilityEffectDefinition aed = AbilityEffectDefinition.GetDefinition(effect.EffectType);

            this.label1.Text         = aed.FriendlyName;
            basetimevalue.Value      = (decimal)CurrentEffect.BaseTime;
            basedurationvalue.Value  = (decimal)CurrentEffect.BaseDuration;
            deltatimevalue.Value     = (decimal)CurrentEffect.DeltaTime;
            deltadurationvalue.Value = (decimal)CurrentEffect.DeltaDuration;
            desclabel.Text           = aed.Description;
            string[] values = effect.GetParamValues();

            for (int i = 0; i < aed.parameters.Count; i++)
            {
                string   name       = aed.parameters[i].Item1;
                char     ptype      = aed.parameters[i].Item2;
                string[] bothvalues = values[i].Split(',');
                string   basevalue  = bothvalues[0];
                string   deltavalue = bothvalues.Length == 2?bothvalues[1]:"";
                int      leftstart  = 20;
                int      topstart   = 80;
                int      topstride  = 40;
                int      leftinput  = 200;
                int      inputwidth = 64;


                Label l = new Label();
                l.Text     = name;
                l.AutoSize = true;
                l.Location = new Point(leftstart, topstart + topstride * i);
                this.Controls.Add(l);

                Control t1 = CraftInput(basevalue, ptype);
                t1.Width    = inputwidth;
                t1.Height   = 2;
                t1.Location = new Point(leftinput, topstart + topstride * i);
                this.Controls.Add(t1);
                this.Inputs.Add(t1);
                Control t2 = CraftInput(deltavalue, ptype);
                t2.Width    = inputwidth;
                t2.Height   = 2;
                t2.Location = new Point(leftinput + inputwidth, topstart + topstride * i);
                this.Controls.Add(t2);
                this.Inputs.Add(t2);
            }
            this.SuspendLayout();
            //add controls here!!


            this.ResumeLayout(false);
            this.PerformLayout();
        }
示例#2
0
 private void ReloadEffectList()
 {
     EffectList.Items.Clear();
     foreach (ITimedEffect effect in CurrentAbility.GetModules())
     {
         AbilityEffectDefinition adef = AbilityEffectDefinition.GetDefinition(effect.EffectType);
         string[]     ItemProps       = new string[] { adef.FriendlyName, effect.BaseTime.ToString(), effect.BaseDuration.ToString() };
         ListViewItem line            = new ListViewItem(ItemProps, adef.Icon)
         {
             Tag = effect
         };
         EffectList.Items.Add(line);
     }
 }
示例#3
0
        public void SaveAndQuit()
        {
            AbilityEffectDefinition aed = AbilityEffectDefinition.GetDefinition(CurrentEffect.EffectType);

            this.label1.Text = aed.FriendlyName;
            string[] values = new string[aed.parameters.Count];

            for (int i = 0; i < aed.parameters.Count; i++)
            {
                string name  = aed.parameters[i].Item1;
                char   ptype = aed.parameters[i].Item2;

                values[i] = GetValue(Inputs[i * 2]) + "," + GetValue(Inputs[i * 2 + 1]);
            }
            CurrentEffect.SetParamValues(values);

            CurrentEffect.BaseTime      = (float)basetimevalue.Value;
            CurrentEffect.DeltaTime     = (float)deltatimevalue.Value;
            CurrentEffect.BaseDuration  = (float)basedurationvalue.Value;
            CurrentEffect.DeltaDuration = (float)deltadurationvalue.Value;

            this.Close();
        }