private void AddFlagsSelectedToCreature(int field)
        {
            var  fieldListBox = mainForm.ObjectTypeHelper_Fields_ListBox;
            long npcEntry     = long.Parse(mainForm.ObjectTemplateHelper_ObjEntry_TextBox.Text);

            if (!creatureEntries.ContainsKey(npcEntry))
            {
                return;
            }

            if (!creatureFieldValues.ContainsKey(field))
            {
                return;
            }

            if (fieldListBox.Items.Count > 0)
            {
                CreatureInfo currentCreature = creatureEntries[npcEntry];
                long         flags           = GetMaskOfSelectedValuesInCheckBox(fieldListBox);

                if (currentCreature.Flags[field] != flags)
                {
                    currentCreature.Flags[field] = flags;
                }
            }
        }
        public CreatureInfo GetCreatureInfo(string creatureEntry)
        {
            DataSet unitFlagsDs;
            DataSet creatureNameDs;
            string  unitFlagsSqlQuery = "SELECT `npcflag`, `npcflag2`, `unit_flags`, `unit_flags2`, `unit_flags3`, `mechanic_immune_mask`, `flags_extra` FROM `creature_template` WHERE `entry` = " + creatureEntry + ";";
            string  creatureNameQuery = "SELECT `Name1` FROM `creature_template_wdb` WHERE `entry` = " + creatureEntry + ";";

            unitFlagsDs    = SQLModule.DatabaseSelectQuery(unitFlagsSqlQuery);
            creatureNameDs = SQLModule.DatabaseSelectQuery(creatureNameQuery);

            if (unitFlagsDs.Tables["table"].Rows.Count == 0 || creatureNameDs.Tables["table"].Rows.Count == 0)
            {
                MessageBox.Show("Creature doesn't exists in your database!");
                return(new CreatureInfo(-1));
            }

            long   npcFlags     = Convert.ToInt64(unitFlagsDs.Tables["table"].Rows[0][0].ToString());
            long   npcFlags2    = Convert.ToInt64(unitFlagsDs.Tables["table"].Rows[0][1].ToString());
            long   unitFlags    = Convert.ToInt64(unitFlagsDs.Tables["table"].Rows[0][2].ToString());
            long   unitFlags2   = Convert.ToInt64(unitFlagsDs.Tables["table"].Rows[0][3].ToString());
            long   unitFlags3   = Convert.ToInt64(unitFlagsDs.Tables["table"].Rows[0][4].ToString());
            long   mechanicMask = Convert.ToInt64(unitFlagsDs.Tables["table"].Rows[0][5].ToString());
            long   extraFlags   = Convert.ToInt64(unitFlagsDs.Tables["table"].Rows[0][6].ToString());
            string npcName      = creatureNameDs.Tables["table"].Rows[0][0].ToString();

            CreatureInfo creatureInfo = new CreatureInfo(long.Parse(creatureEntry), unitFlags, unitFlags2, unitFlags3, npcFlags, npcFlags2, extraFlags, mechanicMask, npcName);

            return(creatureInfo);
        }
        public void FillValuesOptionListBox(int field)
        {
            var  fieldListBox = mainForm.ObjectTypeHelper_Fields_ListBox;
            long npcEntry     = long.Parse(mainForm.ObjectTemplateHelper_ObjEntry_TextBox.Text);

            switch (mainForm.ObjectTemplateHelper_ObjType_ComboBox.SelectedIndex)
            {
            case 0:
            {
                fieldListBox.Items.Clear();

                CreatureInfo creature = creatureEntries[npcEntry];
                int          idx      = 0;

                if (creature.NpcEntry == -1)
                {
                    return;
                }

                foreach (var value in creatureFieldValues[field])
                {
                    long flag = 1 << idx;

                    if (field == 6 && idx != 0)
                    {
                        flag = 1 << idx - 1;
                    }

                    idx++;
                    fieldListBox.Items.Add(value, creature.HasFlag(field, flag));
                }

                break;
            }

            case 1:
            {
                fieldListBox.Items.Clear();
                foreach (var value in gameObjectFieldValues[field])
                {
                    mainForm.ObjectTypeHelper_Fields_ListBox.Items.Add(value, false);
                }

                break;
            }

            default:
                fieldListBox.Items.Clear();
                break;
            }
        }
        public void GenerateSQL()
        {
            mainForm.ObjectTempalte_SQLResult_RichTextBox.Clear();

            int    objType = mainForm.ObjectTemplateHelper_ObjType_ComboBox.SelectedIndex;
            string SQLText = "";

            switch (objType)
            {
            case 0:
            {
                CreatureInfo creature = GetCreatureInfo(mainForm.ObjectTemplateHelper_ObjEntry_TextBox.Text);

                if (creature.NpcEntry == -1)
                {
                    return;
                }

                foreach (var npc in creatureEntries)
                {
                    string   query  = "-- " + npc.Value.NpcName + "\r\n";
                    object[] fields = { npc.Value.Flags[0], npc.Value.Flags[1], npc.Value.Flags[2], npc.Value.Flags[3], npc.Value.Flags[4], npc.Value.Flags[5],
                                        npc.Value.Flags[6] };

                    query += String.Format("UPDATE `creature_template` set `unit_flags` = {0}, `unit_flags2` = {1}," +
                                           "unit_flags3` = {2}, `npcFlags` = {3}, `npcFlags2` = {4}, `flags_extra` = {5}, `mechanic_immune_mask` = {6} ", fields);

                    query += " WHERE `entry` = " + npc.Key.ToString() + "; \n\n";

                    SQLText += query;
                }
                break;
            }
            }

            mainForm.ObjectTempalte_SQLResult_RichTextBox.AppendText(SQLText);

            MessageBox.Show("SQL Queries Generated");
        }
        public void CheckObjectInfo()
        {
            int objType = mainForm.ObjectTemplateHelper_ObjType_ComboBox.SelectedIndex;

            mainForm.ObjectTypeHelper_Fields_ListBox.Items.Clear();

            switch (objType)
            {
            case 0:
            {
                CreatureInfo creature = GetCreatureInfo(mainForm.ObjectTemplateHelper_ObjEntry_TextBox.Text);
                EnableLockedItems(creature.NpcEntry != -1);

                if (creature.NpcEntry == -1)
                {
                    return;
                }

                FillObjectFieldsComboxBox(objType);

                if (!creatureEntries.ContainsKey(creature.NpcEntry))
                {
                    creatureEntries.Add(creature.NpcEntry, creature);
                }

                break;
            }

            case 1:
            {
                break;
            }

            default: break;
            }
        }