Пример #1
0
 public AbilityExecutor(ModularAbility ability, MapEntities.Actor Source, MapEntities.Actor Target)
 {
     this.Original = ability;
     this.ability  = ability.GetEffectiveAbility();
     this.Source   = Source;
     this.Target   = Target;
 }
Пример #2
0
 private void abilityselector_DoubleClick(object sender, EventArgs e)
 {
     if (abilityselector.SelectedItem == null)
     {
         return;
     }
     CurrentAbility = (ModularAbility)abilityselector.SelectedItem;
     EditCurrentAbility();
 }
Пример #3
0
 void WriteAbility(ModularAbility ability)
 {
     writer.Write(ability.ID);
     writer.Write(ability.Name);
     writer.Write(ability.DescriptionString);
     writer.Write(ability.Icon);
     WriteDictionary(ability.BaseValues);
     WriteDictionary(ability.GrowthValues);
     writer.Write(ability.GetModules().Count);
     foreach (ITimedEffect effect in ability.GetModules())
     {
         WriteEffect(effect);
     }
 }
Пример #4
0
        private bool AddReqItem(string id, int lvl)
        {
            ModularAbility a = AbilityProvider.FindAbility(id);

            if (a == null)
            {
                MessageBox.Show("The AbilityID \"" + id + "\" was not found in the database.", "Invalid AbilityID", MessageBoxButtons.OK, MessageBoxIcon.Hand);

                return(false);
            }
            string[]     ItemProps = new string[] { a.Name, lvl.ToString() };
            ListViewItem line      = new ListViewItem(ItemProps);

            line.Tag = id;
            requisitelist.Items.Add(line);
            return(true);
        }
Пример #5
0
        public SkillTreeEntryEditor(MainForm Parent, SkillTreeEntry Entry)
        {
            InitializeComponent();
            this.Entry           = Entry;
            this.AbilityProvider = Parent;
            ModularAbility a = Parent.FindAbility(Entry.SkillID);

            SkillName.Text      = a.Name;
            learnlevel.Value    = (decimal)Entry.LearnLevel;
            column.Value        = (decimal)Entry.Column;
            traininglevel.Value = (decimal)Entry.TrainingLevel;
            maxlvl.Value        = (decimal)Entry.MaxLevel;
            expbase.Value       = (decimal)Entry.ExpBase;
            expdelta.Value      = (decimal)Entry.ExpDelta;
            requireitemid.Text  = Entry.RequireItemID;
            ReloadReqList();
        }
Пример #6
0
        public ModularAbility ReadAbility()
        {
            ModularAbility result = ModularAbility.CreateEmpty(reader.ReadString());

            result.Name = reader.ReadString();
            result.DescriptionString = reader.ReadString();
            result.Icon         = reader.ReadInt32();
            result.BaseValues   = ReadDictionary();
            result.GrowthValues = ReadDictionary();
            int effcount = reader.ReadInt32();

            for (int i = 0; i < effcount; i++)
            {
                result.Effects.Add(ReadEffect());
            }
            return(result);
        }
Пример #7
0
        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;

            SkillTreeEntry[] array = new SkillTreeEntry[skillentrylist.Items.Count];
            skillentrylist.Items.CopyTo(array, 0);
            //foreach (SkillTreeEntry entry in currentclass.SkillTree.Entries)
            foreach (SkillTreeEntry entry in array)
            {
                Microsoft.Xna.Framework.Point corner = entry.GetLocation();
                corner += new Microsoft.Xna.Framework.Point(SkillTree.ICON_WIDTH / 2, SkillTree.ICON_WIDTH / 2);
                if (entry.PreRequisiteSkills != null)
                {
                    foreach (Tuple <string, int> prereq in entry.PreRequisiteSkills)
                    {
                        foreach (SkillTreeEntry preentry in array)
                        {
                            if (preentry.SkillID == prereq.Item1)
                            {
                                Microsoft.Xna.Framework.Point corner2 = preentry.GetLocation();
                                corner2 += new Microsoft.Xna.Framework.Point(SkillTree.ICON_WIDTH / 2, SkillTree.ICON_WIDTH / 2);
                                g.DrawLine(new Pen(Color.Red, 7), corner.X, corner.Y, corner2.X, corner2.Y);
                            }
                        }
                    }
                }
            }
            //foreach (SkillTreeEntry entry in currentclass.SkillTree.Entries)
            foreach (SkillTreeEntry entry in array)
            {
                ModularAbility a = FindAbility(entry.SkillID);
                if (a == null)
                {
                    continue;
                }
                Microsoft.Xna.Framework.Point corner = entry.GetLocation();
                int       IconId     = a.Icon;
                Point     iconsource = new Point((IconId % 64) * 32, ((int)(IconId / 64f)) * 32);
                Rectangle src        = new Rectangle(iconsource, new Size(32, 32));
                if (entry == skillentrylist.SelectedItem)
                {
                    g.DrawRectangle(new Pen(Color.Red, 4), corner.X, corner.Y, 40, 40);
                }
                g.DrawImage(iconimage.Image, corner.X + 4, corner.Y + 4, src, GraphicsUnit.Pixel);
            }
        }
Пример #8
0
        private void deleteAbilityToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ModularAbility removeme = (ModularAbility)abilityselector.SelectedItem;

            abilityselector.Items.Remove(removeme);
            abilities.Remove(removeme);
            if (abilities.Count > 0)
            {
                abilityselector.SelectedIndex = 0;
                CurrentAbility = (ModularAbility)abilityselector.SelectedItem;
            }
            else
            {
                CurrentAbility = null;
            }
            EditCurrentAbility();
        }
Пример #9
0
        private void createAbilityToolStripMenuItem_Click(object sender, EventArgs e)
        {
            TextPrompt prompt = new TextPrompt();

            if (prompt.ShowDialog() == DialogResult.OK)
            {
                ModularAbility a = ModularAbility.CreateEmpty(prompt.Input);
                List <GameObject.Interfaces.IGameID> abs = abilities.ConvertAll(b => (GameObject.Interfaces.IGameID)b);
                //this will modify the Name if autoname is needed
                AddWithAutoname(a, abs, true);
                abilities.Add(a);
                abilityselector.Items.Add(a);
                CurrentAbility = a;
                abilityselector.SelectedItem = a;
                EditCurrentAbility();
            }
        }
Пример #10
0
        private void AddSkillTree(string id, int level)
        {
            ModularAbility a = FindAbility(id);

            if (a == null)
            {
                MessageBox.Show("The AbilityID \"" + id + "\" was not found in the database.", "Invalid AbilityID", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                return;
            }
            SkillTreeEntry e = new SkillTreeEntry()
            {
                SkillID    = id,
                LearnLevel = level,
                Name       = a.Name
            };

            skillentrylist.Items.Add(e);
            CommitSkillTree();
        }
Пример #11
0
        private void Form1_Load(object sender, EventArgs e)
        {
            AbilityEffectDefinition.LoadDefinitions();

            MagicFileReader fr = new MagicFileReader();

            abilities = fr.ReadAbilityFile();
            if (abilities.Count > 0)
            {
                foreach (ModularAbility ability in abilities)
                {
                    abilityselector.Items.Add(ability);
                }

                CurrentAbility = abilities[0];
                abilityselector.SelectedIndex = 0;
            }
            else
            {
                CurrentAbility = null;
            }
            EditCurrentAbility();

            classes = fr.ReadClassFile();
            if (classes.Count > 0)
            {
                foreach (CharacterTemplate t in classes)
                {
                    classlist.Items.Add(t);
                }

                CurrentClass            = classes[0];
                classlist.SelectedIndex = 0;
            }
            else
            {
                CurrentAbility = null;
            }
            EditCurrentClass();

            panel1.Refresh();
        }
Пример #12
0
        void RefreshSkillTree()
        {
            this.Controls.Clear();
            foreach (SkillTreeEntry e in this.tree.Entries)
            {
                ModularAbility a = null;
                foreach (ModularAbility f in abilities)
                {
                    if (f.ID == e.SkillID)
                    {
                        a = f;
                    }
                }
                ItemSlot s = new ItemSlot(a);
                s.X       = e.GetLocation().X;
                s.Y       = e.GetLocation().Y;
                s.CanPut  = false;
                s.CanGrab = false;
                s.Tint    = Color.Red;
//                s.RenderCooldown = true;
                bool learned = false;
                foreach (ModularAbility f2 in Player.Abilities)
                {
                    if (f2.ID == e.SkillID && f2.Level > 0)
                    {
                        learned = true;
                    }
                }
                if (learned)
                {
                    s.CanGrab        = true;
                    s.ItemOut       += ItemOutS;
                    s.RenderCooldown = true;
                    s.Tint           = Color.Green;
                }
                s.WM = WM;
                //s.BeforeItemChanged += ItemOutS;
                this.Controls.Add(s);
            }
        }
Пример #13
0
        public void GetFBind(int index, Player Player)
        {
            index = MathHelper.Clamp(index, 0, 7);
            ItemSlot s = FBinds[index];

            GUI.IActionIcon item = s.Item;
            ModularAbility  a    = item as ModularAbility;
            Item            i    = item as Item;

            //eventual 3rd value for other actions
            if (a != null)
            {
                if (Player.Executor != null && Player.Executor.done == false)
                {
                    return;
                }
                if (a.CoolDown > 0)
                {
                    return;
                }
                if (a.GetValue("mp_cost") > Player.CurrentMP)
                {
                    return;
                }
                Player.Executor = new GameObject.AbilityLogic.AbilityExecutor(a, Player, Player.Target);

                Console.Write("Used " + a.Name);
                return;
            }
            if (i != null)
            {
                if (i.CoolDown > 0)
                {
                    return;
                }
                i.Use();
            }
        }
Пример #14
0
        private void ReloadSkillTreeList()
        {
            skillentrylist.Items.Clear();
            List <SkillTreeEntry> invalids = new List <SkillTreeEntry>();

            foreach (SkillTreeEntry e in CurrentClass.SkillTree.Entries)
            {
                ModularAbility a = FindAbility(e.SkillID);

                if (a == null)
                {
                    invalids.Add(e);
                    MessageBox.Show("The AbilityID \"" + e.SkillID + "\" was not found in the database.", "Invalid AbilityID", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    continue;
                }
                e.Name = a.Name;
                skillentrylist.Items.Add(e);
            }
            foreach (SkillTreeEntry e in invalids)
            {
                CurrentClass.SkillTree.Entries.Remove(e);
            }
        }
Пример #15
0
        private void Form1_Load(object sender, EventArgs e)
        {
            AbilityEffectDefinition.LoadDefinitions();

            MagicFileReader fr = new MagicFileReader();

            //load abilities
            abilities = fr.ReadAbilityFile();
            if (abilities.Count > 0)
            {
                foreach (ModularAbility ability in abilities)
                {
                    abilityselector.Items.Add(ability);
                }

                CurrentAbility = abilities[0];
                abilityselector.SelectedIndex = 0;
            }
            else
            {
                CurrentAbility = null;
            }
            EditCurrentAbility();

            //load classes
            classes = fr.ReadClassFile();
            if (classes.Count > 0)
            {
                foreach (CharacterTemplate t in classes)
                {
                    classlist.Items.Add(t);
                }

                CurrentClass            = classes[0];
                classlist.SelectedIndex = 0;
            }
            else
            {
                CurrentAbility = null;
            }
            EditCurrentClass();

            //load item type defs
            itemtypes = fr.ReadItemTypeDefinitionFile();
            if (itemtypes.Count > 0)
            {
                foreach (ItemTypeDefinition def in itemtypes)
                {
                    itemtypelist.Items.Add(def);
                }
                CurrentItemType            = itemtypes[0];
                itemtypelist.SelectedIndex = 0;
            }
            else
            {
                CurrentItemType = null;
            }


            //reload panel based editing controls
            panel1.Refresh();
        }