public void DisplaySetIcons()
        {
            this.FillImageList();
            string[] items = new string[2];
            this.lvEnh.BeginUpdate();
            this.lvEnh.Items.Clear();
            this.FillImageList();
            int num = this.mySet.Enhancements.Length - 1;

            for (int imageIndex = 0; imageIndex <= num; imageIndex++)
            {
                IEnhancement enhancement = DatabaseAPI.Database.Enhancements[this.mySet.Enhancements[imageIndex]];
                items[0] = enhancement.Name + " (" + enhancement.ShortName + ")";
                items[1] = "";
                int num2 = enhancement.ClassID.Length - 1;
                for (int index = 0; index <= num2; index++)
                {
                    string[] strArray3;
                    int      num3;
                    string[] strArray4;
                    IntPtr   index2;
                    if (items[1] != "")
                    {
                        strArray3 = items;
                        num3      = 1;
                        (strArray4 = strArray3)[(int)(index2 = (IntPtr)num3)] = strArray4[(int)index2] + ",";
                    }
                    strArray3 = items;
                    num3      = 1;
                    (strArray4 = strArray3)[(int)(index2 = (IntPtr)num3)] = strArray4[(int)index2] + DatabaseAPI.Database.EnhancementClasses[enhancement.ClassID[index]].ShortName;
                }
                this.lvEnh.Items.Add(new ListViewItem(items, imageIndex));
            }
            this.lvEnh.EndUpdate();
        }
Exemple #2
0
        void btnClone_Click(object sender, EventArgs e)
        {
            if (lvEnh.SelectedIndices.Count <= 0)
            {
                return;
            }
            IEnhancement oldEnhancement = DatabaseAPI.Database.Enhancements[DatabaseAPI.GetEnhancementByUIDName(lvEnh.SelectedItems[0].SubItems[5].Text)];
            frmEnhData   frmEnhData     = new frmEnhData(ref oldEnhancement, DatabaseAPI.Database.Enhancements[DatabaseAPI.Database.Enhancements.Length - 1].StaticIndex + 1);
            int          num            = (int)frmEnhData.ShowDialog();

            if (frmEnhData.DialogResult != DialogResult.OK)
            {
                return;
            }
            IDatabase database = DatabaseAPI.Database;

            IEnhancement[] enhancementArray = (IEnhancement[])Utils.CopyArray(database.Enhancements, new IEnhancement[DatabaseAPI.Database.Enhancements.Length + 1]);
            database.Enhancements = enhancementArray;
            DatabaseAPI.Database.Enhancements[DatabaseAPI.Database.Enhancements.Length - 1] =
                new Enhancement(frmEnhData.myEnh)
            {
                IsNew = true, StaticIndex = -1
            };
            ImageUpdate();
            AddListItem(DatabaseAPI.Database.Enhancements.Length - 1);
        }
Exemple #3
0
 void FullPaste()
 {
     DataFormats.Format format = DataFormats.GetFormat("mhdEffectBIN");
     if (!Clipboard.ContainsData(format.Name))
     {
         Interaction.MsgBox("No effect data on the clipboard!", MsgBoxStyle.Information, "Unable to Paste");
     }
     else
     {
         using (MemoryStream memoryStream = new MemoryStream((byte[])Clipboard.GetDataObject()?.GetData(format.Name) ?? throw new InvalidOperationException()))
             using (BinaryReader reader = new BinaryReader(memoryStream))
             {
                 string       powerFullName = myFX.PowerFullName;
                 IPower       power         = myFX.GetPower();
                 IEnhancement enhancement   = myFX.Enhancement;
                 myFX = new Effect(reader)
                 {
                     PowerFullName = powerFullName
                 };
                 myFX.SetPower(power);
                 myFX.Enhancement = enhancement;
                 DisplayEffectData();
             }
     }
 }
Exemple #4
0
    public float GetEnhancementEffect(Enums.eEnhance iEffect, int subEnh, float mag)
    {
        if (Enh < 0)
        {
            return(0.0f);
        }

        float        num2        = 0.0f;
        IEnhancement enhancement = DatabaseAPI.Database.Enhancements[Enh];

        foreach (Enums.sEffect sEffect in enhancement.Effect)
        {
            if (sEffect.Mode != Enums.eEffMode.Enhancement || (sEffect.BuffMode == Enums.eBuffDebuff.DeBuffOnly && !(mag <= 0.0)) ||
                ((sEffect.BuffMode == Enums.eBuffDebuff.BuffOnly && !(mag >= 0.0)) ||
                 (sEffect.Schedule == Enums.eSchedule.None || (Enums.eEnhance)sEffect.Enhance.ID != iEffect)) ||
                (subEnh >= 0 && subEnh != sEffect.Enhance.SubID))
            {
                continue;
            }
            float scheduleMult = GetScheduleMult(enhancement.TypeID, sEffect.Schedule);
            if (Math.Abs(sEffect.Multiplier) > 0.01)
            {
                scheduleMult *= sEffect.Multiplier;
            }
            num2 += scheduleMult;
        }
        return(num2);
    }
Exemple #5
0
        public void DisplaySetIcons()
        {
            FillImageList();
            string[] items = new string[2];
            lvEnh.BeginUpdate();
            lvEnh.Items.Clear();
            FillImageList();
            int num1 = mySet.Enhancements.Length - 1;

            for (int imageIndex = 0; imageIndex <= num1; ++imageIndex)
            {
                IEnhancement enhancement = DatabaseAPI.Database.Enhancements[mySet.Enhancements[imageIndex]];
                items[0] = enhancement.Name + " (" + enhancement.ShortName + ")";
                items[1] = "";
                int num2 = enhancement.ClassID.Length - 1;
                for (int index1 = 0; index1 <= num2; ++index1)
                {
                    if (items[1] != "")
                    {
                        string[] strArray1 = items;
                        int      num3      = 1;
                        string[] strArray2;
                        IntPtr   index2;
                        (strArray2 = strArray1)[(int)(index2 = (IntPtr)num3)] = strArray2[(int)index2] + ",";
                    }
                    string[] strArray3 = items;
                    int      num4      = 1;
                    string[] strArray4;
                    IntPtr   index3;
                    (strArray4 = strArray3)[(int)(index3 = (IntPtr)num4)] = strArray4[(int)index3] + DatabaseAPI.Database.EnhancementClasses[enhancement.ClassID[index1]].ShortName;
                }
                lvEnh.Items.Add(new ListViewItem(items, imageIndex));
            }
            lvEnh.EndUpdate();
        }
Exemple #6
0
        public void FillImageList()
        {
            Size imageSize1 = ilEnh.ImageSize;
            int  width1     = imageSize1.Width;

            imageSize1 = ilEnh.ImageSize;
            int            height1        = imageSize1.Height;
            ExtendedBitmap extendedBitmap = new ExtendedBitmap(width1, height1);

            ilEnh.Images.Clear();
            int num = mySet.Enhancements.Length - 1;

            for (int index = 0; index <= num; ++index)
            {
                IEnhancement enhancement = DatabaseAPI.Database.Enhancements[mySet.Enhancements[index]];
                if (enhancement.ImageIdx > -1)
                {
                    Origin.Grade gfxGrade = I9Gfx.ToGfxGrade(enhancement.TypeID);
                    extendedBitmap.Graphics.Clear(Color.White);
                    Graphics graphics = extendedBitmap.Graphics;
                    I9Gfx.DrawEnhancement(ref graphics, DatabaseAPI.Database.Enhancements[mySet.Enhancements[index]].ImageIdx, gfxGrade);
                    ilEnh.Images.Add((Image)extendedBitmap.Bitmap);
                }
                else
                {
                    ImageList.ImageCollection images = ilEnh.Images;
                    Size imageSize2 = ilEnh.ImageSize;
                    int  width2     = imageSize2.Width;
                    imageSize2 = ilEnh.ImageSize;
                    int    height2 = imageSize2.Height;
                    Bitmap bitmap  = new Bitmap(width2, height2);
                    images.Add((Image)bitmap);
                }
            }
        }
    public float GetEnhancementEffect(Enums.eEnhance iEffect, int subEnh, float mag)
    {
        float num1;

        if (this.Enh < 0)
        {
            num1 = 0.0f;
        }
        else
        {
            float        num2        = 0.0f;
            IEnhancement enhancement = DatabaseAPI.Database.Enhancements[this.Enh];
            foreach (Enums.sEffect sEffect in enhancement.Effect)
            {
                if (sEffect.Mode == Enums.eEffMode.Enhancement && (sEffect.BuffMode != Enums.eBuffDebuff.DeBuffOnly || (double)mag <= 0.0) && ((sEffect.BuffMode != Enums.eBuffDebuff.BuffOnly || (double)mag >= 0.0) && (sEffect.Schedule != Enums.eSchedule.None && (Enums.eEnhance)sEffect.Enhance.ID == iEffect)) && (subEnh < 0 || subEnh == sEffect.Enhance.SubID))
                {
                    float scheduleMult = this.GetScheduleMult(enhancement.TypeID, sEffect.Schedule);
                    if ((double)Math.Abs(sEffect.Multiplier) > 0.01)
                    {
                        scheduleMult *= sEffect.Multiplier;
                    }
                    num2 += scheduleMult;
                }
            }
            num1 = num2;
        }
        return(num1);
    }
        public void ApplyEnhancements_DuplicateEnhancementRequestsMade_OnlyUniqueResultsAddedToIdentity(
            string filePath,
            TvReleaseIdentity identity,
            TvDbEnhancement tvDbEnhancement,
            SubDbFileHashEnhancement subDbFileHashEnhancement,
            IEpisodeSubtitleDownloader downloader,
            IEnhancementProvider enhancementProvider
            )
        {
            var expectedEnhancements = new IEnhancement[] {tvDbEnhancement, subDbFileHashEnhancement};
            var downloaders = new[] {downloader};
            var enhancementRequests = new IEnhancementRequest[]
            {
                new EnhancementRequest<TvDbEnhancement>(),
                new EnhancementRequest<TvDbEnhancement>(),
                new EnhancementRequest<SubDbFileHashEnhancement>()
            };
            A.CallTo(() => downloader.EnhancementRequests).Returns(enhancementRequests);
            A.CallTo(
                () =>
                    enhancementProvider.GetEnhancement(A<Type>.That.IsEqualTo(typeof (TvDbEnhancement)), filePath,
                        identity))
                .Returns(tvDbEnhancement);
            A.CallTo(
                () =>
                    enhancementProvider.GetEnhancement(A<Type>.That.IsEqualTo(typeof (SubDbFileHashEnhancement)),
                        filePath, identity))
                .Returns(subDbFileHashEnhancement);
            var sut = new EnhancementApplicator(downloaders, enhancementProvider);

            sut.ApplyEnhancements(filePath, identity);

            Assert.That(identity.Enhancements, Is.EquivalentTo(expectedEnhancements));
        }
Exemple #9
0
        void btnDelete_Click(object sender, EventArgs e)
        {
            if (lvEnh.SelectedIndices.Count <= 0 || Interaction.MsgBox(("Really delete enhancement: " + lvEnh.SelectedItems[0].Text + "?"), MsgBoxStyle.YesNo | MsgBoxStyle.Question, "Are you sure?") != MsgBoxResult.Yes)
            {
                return;
            }
            Enhancement[] enhancementArray = new Enhancement[DatabaseAPI.Database.Enhancements.Length - 1 + 1];
            int           selectedIndex    = DatabaseAPI.GetEnhancementByUIDName(lvEnh.SelectedItems[0].SubItems[5].Text);
            int           index1           = 0;
            int           num1             = DatabaseAPI.Database.Enhancements.Length - 1;
            IEnhancement  enh = DatabaseAPI.Database.Enhancements[selectedIndex];

            if (enh.nIDSet > -1)
            {
                //Remove it from the enhancement set too.
                List <int> newEnhancementSet = new List <int>();
                for (int i = 0; i < DatabaseAPI.Database.EnhancementSets[enh.nIDSet].Enhancements.Length; i++)
                {
                    int staticIndex = DatabaseAPI.Database.EnhancementSets[enh.nIDSet].Enhancements[i];
                    if (staticIndex != enh.StaticIndex)
                    {
                        newEnhancementSet.Add(staticIndex);
                    }
                }
                DatabaseAPI.Database.EnhancementSets[enh.nIDSet].Enhancements = newEnhancementSet.ToArray();
            }
            for (int index2 = 0; index2 <= num1; ++index2)
            {
                if (index2 == selectedIndex)
                {
                    continue;
                }
                enhancementArray[index1] = new Enhancement(DatabaseAPI.Database.Enhancements[index2]);
                ++index1;
            }
            DatabaseAPI.Database.Enhancements = new IEnhancement[DatabaseAPI.Database.Enhancements.Length - 2 + 1];
            int num2 = DatabaseAPI.Database.Enhancements.Length - 1;

            for (int index2 = 0; index2 <= num2; ++index2)
            {
                DatabaseAPI.Database.Enhancements[index2] = new Enhancement(enhancementArray[index2]);
            }

            DisplayList();
            if (lvEnh.Items.Count <= 0)
            {
                return;
            }
            if (lvEnh.Items.Count > selectedIndex)
            {
                lvEnh.Items[selectedIndex].Selected = true;
                lvEnh.Items[selectedIndex].EnsureVisible();
            }
            else if (lvEnh.Items.Count == selectedIndex)
            {
                lvEnh.Items[selectedIndex - 1].Selected = true;
                lvEnh.Items[selectedIndex - 1].EnsureVisible();
            }
        }
        void UpdateListItem(int Index)
        {
            string[]     strArray    = new string[5];
            IEnhancement enhancement = DatabaseAPI.Database.Enhancements[Index];

            strArray[0] = string.Concat(new string[]
            {
                enhancement.Name,
                " (",
                enhancement.ShortName,
                ") - ",
                Conversions.ToString(enhancement.StaticIndex)
            });
            strArray[1] = Enum.GetName(enhancement.TypeID.GetType(), enhancement.TypeID);
            strArray[2] = Conversions.ToString(enhancement.Effect.Length);
            strArray[3] = "";
            int num = enhancement.ClassID.Length - 1;

            for (int index = 0; index <= num; index++)
            {
                string[] strArray2;
                int      num2;
                string[] strArray3;
                IntPtr   index2;
                if (strArray[3] != "")
                {
                    strArray2 = strArray;
                    num2      = 3;
                    (strArray3 = strArray2)[(int)(index2 = (IntPtr)num2)] = strArray3[(int)index2] + ",";
                }
                strArray2 = strArray;
                num2      = 3;
                (strArray3 = strArray2)[(int)(index2 = (IntPtr)num2)] = strArray3[(int)index2] + DatabaseAPI.Database.EnhancementClasses[enhancement.ClassID[index]].ShortName;
            }
            if (enhancement.nIDSet > -1)
            {
                strArray[4] = DatabaseAPI.Database.EnhancementSets[enhancement.nIDSet].DisplayName;
                strArray[0] = strArray[4] + ": " + strArray[0];
            }
            else
            {
                strArray[4] = "";
            }
            int num3 = strArray.Length - 1;

            for (int index3 = 0; index3 <= num3; index3++)
            {
                this.lvEnh.Items[Index].SubItems[index3].Text = strArray[index3];
            }
            this.lvEnh.Items[Index].ImageIndex = Index;
            this.lvEnh.Items[Index].EnsureVisible();
            this.lvEnh.Refresh();
        }
Exemple #11
0
        void UpdateListItem(int Index)
        {
            string[]     strArray1   = new string[6];
            IEnhancement enhancement = DatabaseAPI.Database.Enhancements[Index];

            strArray1[0] = enhancement.Name + " (" + enhancement.ShortName + ") - " + Convert.ToString(enhancement.StaticIndex);
            strArray1[1] = Enum.GetName(enhancement.TypeID.GetType(), enhancement.TypeID);
            strArray1[2] = Convert.ToString(enhancement.Effect.Length);
            strArray1[3] = "";
            strArray1[5] = enhancement.UID;
            int num1 = enhancement.ClassID.Length - 1;

            for (int index1 = 0; index1 <= num1; ++index1)
            {
                if (strArray1[3] != "")
                {
                    string[] strArray2 = strArray1;
                    int      num2      = 3;
                    string[] strArray3;
                    IntPtr   index2;
                    (strArray3 = strArray2)[(int)(index2 = (IntPtr)num2)] = strArray3[(int)index2] + ",";
                }
                string[] strArray4 = strArray1;
                int      num3      = 3;
                string[] strArray5;
                IntPtr   index3;
                (strArray5 = strArray4)[(int)(index3 = (IntPtr)num3)] = strArray5[(int)index3] + DatabaseAPI.Database.EnhancementClasses[enhancement.ClassID[index1]].ShortName;
            }
            if (enhancement.nIDSet > -1)
            {
                strArray1[4] = DatabaseAPI.Database.EnhancementSets[enhancement.nIDSet].DisplayName;
                strArray1[0] = strArray1[4] + ": " + strArray1[0];
            }
            else
            {
                strArray1[4] = "";
            }
            int num4 = strArray1.Length - 1;

            for (int index = 0; index <= num4; ++index)
            {
                lvEnh.Items[Index].SubItems[index].Text = strArray1[index];
            }
            lvEnh.Items[Index].ImageIndex = Index;
            lvEnh.Items[Index].EnsureVisible();
            lvEnh.Refresh();
        }
        void AddListItem(int Index)
        {
            string[]     items       = new string[5];
            IEnhancement enhancement = DatabaseAPI.Database.Enhancements[Index];

            items[0] = string.Concat(new string[]
            {
                enhancement.Name,
                " (",
                enhancement.ShortName,
                ") - ",
                Conversions.ToString(enhancement.StaticIndex)
            });
            items[1] = Enum.GetName(enhancement.TypeID.GetType(), enhancement.TypeID);
            items[2] = Conversions.ToString(enhancement.Effect.Length);
            items[3] = "";
            int num = enhancement.ClassID.Length - 1;

            for (int index = 0; index <= num; index++)
            {
                string[] strArray3;
                int      num2;
                string[] strArray4;
                IntPtr   index2;
                if (items[3] != "")
                {
                    strArray3 = items;
                    num2      = 3;
                    (strArray4 = strArray3)[(int)(index2 = (IntPtr)num2)] = strArray4[(int)index2] + ",";
                }
                strArray3 = items;
                num2      = 3;
                (strArray4 = strArray3)[(int)(index2 = (IntPtr)num2)] = strArray4[(int)index2] + DatabaseAPI.Database.EnhancementClasses[enhancement.ClassID[index]].ShortName;
            }
            if (enhancement.nIDSet > -1)
            {
                items[4] = DatabaseAPI.Database.EnhancementSets[enhancement.nIDSet].DisplayName;
                items[0] = items[4] + ": " + items[0];
            }
            else
            {
                items[4] = "";
            }
            this.lvEnh.Items.Add(new ListViewItem(items, Index));
            this.lvEnh.Items[this.lvEnh.Items.Count - 1].Selected = true;
            this.lvEnh.Items[this.lvEnh.Items.Count - 1].EnsureVisible();
        }
Exemple #13
0
 public Enhancement(IEnhancement iEnh)
 {
     this.IsModified   = false;
     this.IsNew        = false;
     this.StaticIndex  = iEnh.StaticIndex;
     this.Name         = iEnh.Name;
     this.ShortName    = iEnh.ShortName;
     this.Desc         = iEnh.Desc;
     this.TypeID       = iEnh.TypeID;
     this.SubTypeID    = iEnh.SubTypeID;
     this.Image        = iEnh.Image;
     this.ImageIdx     = iEnh.ImageIdx;
     this.nIDSet       = iEnh.nIDSet;
     this.UIDSet       = iEnh.UIDSet;
     this.EffectChance = iEnh.EffectChance;
     this.LevelMin     = iEnh.LevelMin;
     this.LevelMax     = iEnh.LevelMax;
     this.Unique       = iEnh.Unique;
     this.MutExID      = iEnh.MutExID;
     this.BuffMode     = iEnh.BuffMode;
     this._power       = new Base.Data_Classes.Power(iEnh.GetPower());
     this.ClassID      = new int[iEnh.ClassID.Length];
     for (int index = 0; index <= this.ClassID.Length - 1; ++index)
     {
         this.ClassID[index] = iEnh.ClassID[index];
     }
     this.Effect = new Enums.sEffect[iEnh.Effect.Length];
     for (int index = 0; index <= this.Effect.Length - 1; ++index)
     {
         this.Effect[index].Mode          = iEnh.Effect[index].Mode;
         this.Effect[index].BuffMode      = iEnh.Effect[index].BuffMode;
         this.Effect[index].Enhance.ID    = iEnh.Effect[index].Enhance.ID;
         this.Effect[index].Enhance.SubID = iEnh.Effect[index].Enhance.SubID;
         this.Effect[index].Schedule      = iEnh.Effect[index].Schedule;
         this.Effect[index].Multiplier    = iEnh.Effect[index].Multiplier;
         if (iEnh.Effect[index].FX != null)
         {
             this.Effect[index].FX = iEnh.Effect[index].FX.Clone() as IEffect;
         }
     }
     this.UID        = iEnh.UID;
     this.RecipeName = iEnh.RecipeName;
     this.RecipeIDX  = iEnh.RecipeIDX;
     this.Superior   = iEnh.Superior;
 }
Exemple #14
0
        public Enhancement(IEnhancement iEnh)
        {
            StaticIndex  = iEnh.StaticIndex;
            Name         = iEnh.Name;
            ShortName    = iEnh.ShortName;
            Desc         = iEnh.Desc;
            TypeID       = iEnh.TypeID;
            SubTypeID    = iEnh.SubTypeID;
            Image        = iEnh.Image;
            ImageIdx     = iEnh.ImageIdx;
            nIDSet       = iEnh.nIDSet;
            UIDSet       = iEnh.UIDSet;
            EffectChance = iEnh.EffectChance;
            LevelMin     = iEnh.LevelMin;
            LevelMax     = iEnh.LevelMax;
            Unique       = iEnh.Unique;
            MutExID      = iEnh.MutExID;
            BuffMode     = iEnh.BuffMode;
            _power       = new Power(iEnh.GetPower());
            ClassID      = new int[iEnh.ClassID.Length];
            for (var index = 0; index <= ClassID.Length - 1; ++index)
            {
                ClassID[index] = iEnh.ClassID[index];
            }
            Effect = new Enums.sEffect[iEnh.Effect.Length];
            for (var index = 0; index <= Effect.Length - 1; ++index)
            {
                Effect[index].Mode          = iEnh.Effect[index].Mode;
                Effect[index].BuffMode      = iEnh.Effect[index].BuffMode;
                Effect[index].Enhance.ID    = iEnh.Effect[index].Enhance.ID;
                Effect[index].Enhance.SubID = iEnh.Effect[index].Enhance.SubID;
                Effect[index].Schedule      = iEnh.Effect[index].Schedule;
                Effect[index].Multiplier    = iEnh.Effect[index].Multiplier;
                if (iEnh.Effect[index].FX != null)
                {
                    Effect[index].FX = iEnh.Effect[index].FX.Clone() as IEffect;
                }
            }

            UID        = iEnh.UID;
            IsProc     = iEnh.IsProc;
            RecipeName = iEnh.RecipeName;
            RecipeIDX  = iEnh.RecipeIDX;
            Superior   = iEnh.Superior;
        }
        public void ApplyEnhancements_EnhancementRequestsMade_ResultsAddedToIdentity(
            string filePath,
            TvReleaseIdentity identity,
            IEnumerable<IEnhancementRequest> enhancementRequests,
            IEnhancement[] enhancements,
            IEpisodeSubtitleDownloader downloader,
            IEnhancementProvider enhancementProvider
            )
        {
            var downloaders = new[] {downloader};
            A.CallTo(() => downloader.EnhancementRequests).Returns(enhancementRequests);
            A.CallTo(() => enhancementProvider.GetEnhancement(A<Type>._, filePath, identity))
                .ReturnsNextFromSequence(enhancements);
            var sut = new EnhancementApplicator(downloaders, enhancementProvider);

            sut.ApplyEnhancements(filePath, identity);

            Assert.That(identity.Enhancements, Is.EquivalentTo(enhancements));
        }
        void btnAdd_Click(object sender, EventArgs e)
        {
            IEnhancement iEnh       = (IEnhancement) new Enhancement();
            frmEnhData   frmEnhData = new frmEnhData(ref iEnh);
            int          num        = (int)frmEnhData.ShowDialog();

            if (frmEnhData.DialogResult != DialogResult.OK)
            {
                return;
            }
            IDatabase database = DatabaseAPI.Database;

            IEnhancement[] enhancementArray = (IEnhancement[])Utils.CopyArray(database.Enhancements, (Array) new IEnhancement[DatabaseAPI.Database.Enhancements.Length + 1]);
            database.Enhancements = enhancementArray;
            DatabaseAPI.Database.Enhancements[DatabaseAPI.Database.Enhancements.Length - 1]             = (IEnhancement) new Enhancement(frmEnhData.myEnh);
            DatabaseAPI.Database.Enhancements[DatabaseAPI.Database.Enhancements.Length - 1].IsNew       = true;
            DatabaseAPI.Database.Enhancements[DatabaseAPI.Database.Enhancements.Length - 1].StaticIndex = -1;
            this.ImageUpdate();
            this.AddListItem(DatabaseAPI.Database.Enhancements.Length - 1);
        }
 void btnUp_Click(object sender, EventArgs e)
 {
     if (this.lvEnh.SelectedIndices.Count > 0)
     {
         int selectedIndex = this.lvEnh.SelectedIndices[0];
         if (selectedIndex >= 1)
         {
             IEnhancement[] enhancementArray = new IEnhancement[]
             {
                 new Enhancement(DatabaseAPI.Database.Enhancements[selectedIndex]),
                 new Enhancement(DatabaseAPI.Database.Enhancements[selectedIndex - 1])
             };
             DatabaseAPI.Database.Enhancements[selectedIndex - 1] = new Enhancement(enhancementArray[0]);
             DatabaseAPI.Database.Enhancements[selectedIndex]     = new Enhancement(enhancementArray[1]);
             this.DisplayList();
             this.lvEnh.Items[selectedIndex - 1].Selected = true;
             this.lvEnh.Items[selectedIndex - 1].EnsureVisible();
         }
     }
 }
Exemple #18
0
        void AddListItem(int Index)
        {
            string[]     items       = new string[6];
            IEnhancement enhancement = DatabaseAPI.Database.Enhancements[Index];

            items[0] = enhancement.Name + " (" + enhancement.ShortName + ") - " + Convert.ToString(enhancement.StaticIndex);
            items[1] = Enum.GetName(enhancement.TypeID.GetType(), enhancement.TypeID);
            items[2] = Convert.ToString(enhancement.Effect.Length);
            items[3] = "";
            items[5] = enhancement.UID;
            int num1 = enhancement.ClassID.Length - 1;

            for (int index1 = 0; index1 <= num1; ++index1)
            {
                if (items[3] != "")
                {
                    string[] strArray1 = items;
                    int      num2      = 3;
                    string[] strArray2;
                    IntPtr   index2;
                    (strArray2 = strArray1)[(int)(index2 = (IntPtr)num2)] = strArray2[(int)index2] + ",";
                }
                string[] strArray3 = items;
                int      num3      = 3;
                string[] strArray4;
                IntPtr   index3;
                (strArray4 = strArray3)[(int)(index3 = (IntPtr)num3)] = strArray4[(int)index3] + DatabaseAPI.Database.EnhancementClasses[enhancement.ClassID[index1]].ShortName;
            }
            if (enhancement.nIDSet > -1)
            {
                items[4] = DatabaseAPI.Database.EnhancementSets[enhancement.nIDSet].DisplayName;
                items[0] = items[4] + ": " + items[0];
            }
            else
            {
                items[4] = "";
            }
            lvEnh.Items.Add(new ListViewItem(items, Index));
            lvEnh.Items[lvEnh.Items.Count - 1].Selected = true;
            lvEnh.Items[lvEnh.Items.Count - 1].EnsureVisible();
        }
        void btnDown_Click(object sender, EventArgs e)
        {
            if (this.lvEnh.SelectedIndices.Count <= 0)
            {
                return;
            }
            int selectedIndex = this.lvEnh.SelectedIndices[0];

            if (selectedIndex < this.lvEnh.Items.Count - 1)
            {
                IEnhancement[] enhancementArray = new IEnhancement[2]
                {
                    (IEnhancement) new Enhancement(DatabaseAPI.Database.Enhancements[selectedIndex]),
                    (IEnhancement) new Enhancement(DatabaseAPI.Database.Enhancements[selectedIndex + 1])
                };
                DatabaseAPI.Database.Enhancements[selectedIndex + 1] = (IEnhancement) new Enhancement(enhancementArray[0]);
                DatabaseAPI.Database.Enhancements[selectedIndex]     = (IEnhancement) new Enhancement(enhancementArray[1]);
                this.DisplayList();
                this.lvEnh.Items[selectedIndex + 1].Selected = true;
                this.lvEnh.Items[selectedIndex + 1].EnsureVisible();
            }
        }
Exemple #20
0
        void AddToImageList(int eIDX)

        {
            Size imageSize = this.ilSets.ImageSize;
            int  width     = imageSize.Width;

            imageSize = this.ilSets.ImageSize;
            int            height         = imageSize.Height;
            ExtendedBitmap extendedBitmap = new ExtendedBitmap(width, height);
            IEnhancement   enhancement    = DatabaseAPI.Database.Enhancements[eIDX];

            if (enhancement.ImageIdx > -1)
            {
                extendedBitmap.Graphics.Clear(Color.White);
                Graphics graphics = extendedBitmap.Graphics;
                I9Gfx.DrawEnhancement(ref graphics, enhancement.ImageIdx, Origin.Grade.IO);
                this.ilSets.Images.Add((Image)extendedBitmap.Bitmap);
            }
            else
            {
                this.ilSets.Images.Add((Image) new Bitmap(this.ilSets.ImageSize.Width, this.ilSets.ImageSize.Height));
            }
        }
        public void FillImageList()
        {
            ExtendedBitmap extendedBitmap = new ExtendedBitmap(this.ilEnh.ImageSize.Width, this.ilEnh.ImageSize.Height);

            this.ilEnh.Images.Clear();
            int num = DatabaseAPI.Database.Enhancements.Length - 1;

            for (int index = 0; index <= num; index++)
            {
                IEnhancement enhancement = DatabaseAPI.Database.Enhancements[index];
                if (enhancement.ImageIdx > -1)
                {
                    extendedBitmap.Graphics.Clear(Color.White);
                    Graphics graphics = extendedBitmap.Graphics;
                    I9Gfx.DrawEnhancement(ref graphics, DatabaseAPI.Database.Enhancements[index].ImageIdx, I9Gfx.ToGfxGrade(enhancement.TypeID));
                    this.ilEnh.Images.Add(extendedBitmap.Bitmap);
                }
                else
                {
                    this.ilEnh.Images.Add(new Bitmap(this.ilEnh.ImageSize.Width, this.ilEnh.ImageSize.Height));
                }
            }
        }
    public string GetEnhancementString()
    {
        string str1;

        if (this.Enh < 0)
        {
            str1 = string.Empty;
        }
        else
        {
            IEnhancement enhancement = DatabaseAPI.Database.Enhancements[this.Enh];
            if (enhancement.Effect.Length == 0)
            {
                str1 = enhancement.Desc;
            }
            else
            {
                StringBuilder   stringBuilder = new StringBuilder();
                bool            flag          = false;
                Enums.sEffect[] effect        = enhancement.Effect;
                int             index1        = 0;
                if (index1 >= effect.Length)
                {
                    str1 = stringBuilder.ToString();
                }
                else
                {
                    Enums.sEffect sEffect = effect[index1];
                    if (sEffect.Mode == Enums.eEffMode.FX)
                    {
                        flag = true;
                    }
                    string str2;
                    if (sEffect.Mode == Enums.eEffMode.Enhancement && sEffect.Schedule != Enums.eSchedule.None)
                    {
                        float scheduleMult = this.GetScheduleMult(enhancement.TypeID, sEffect.Schedule);
                        if ((double)sEffect.Multiplier > 0.0)
                        {
                            scheduleMult *= sEffect.Multiplier;
                        }
                        if (stringBuilder.Length > 0)
                        {
                            stringBuilder.Append(", ");
                        }
                        switch (enhancement.TypeID)
                        {
                        case Enums.eType.Normal:
                            string relativeString1 = Enums.GetRelativeString(this.RelativeLevel, false);
                            if (!string.IsNullOrEmpty(relativeString1) & relativeString1 != "X")
                            {
                                stringBuilder.Append(relativeString1 + " " + DatabaseAPI.Database.EnhGradeStringLong[(int)this.Grade] + " - ");
                                break;
                            }
                            if (relativeString1 == "X")
                            {
                                stringBuilder.Append("Disabled " + DatabaseAPI.Database.EnhGradeStringLong[(int)this.Grade] + " - ");
                                break;
                            }
                            stringBuilder.Append(DatabaseAPI.Database.EnhGradeStringLong[(int)this.Grade] + " - ");
                            break;

                        case Enums.eType.SpecialO:
                            string relativeString2 = Enums.GetRelativeString(this.RelativeLevel, false);
                            if (!string.IsNullOrEmpty(relativeString2) & relativeString2 != "X")
                            {
                                stringBuilder.Append(relativeString2 + " " + enhancement.GetSpecialName() + " - ");
                                break;
                            }
                            if (relativeString2 == "X")
                            {
                                stringBuilder.Append("Disabled " + enhancement.GetSpecialName() + " - ");
                                break;
                            }
                            stringBuilder.Append(enhancement.GetSpecialName() + " - ");
                            break;
                        }
                        stringBuilder.Append("Schedule: ");
                        stringBuilder.Append(sEffect.Schedule.ToString());
                        stringBuilder.AppendFormat(" ({0}%)", (scheduleMult * 100f).ToString((IFormatProvider)NumberFormatInfo.CurrentInfo));
                        str2 = stringBuilder.ToString();
                    }
                    else if (!flag)
                    {
                        str2 = stringBuilder.ToString();
                    }
                    else
                    {
                        var power = enhancement.GetPower();
                        for (int index2 = 0; index2 <= power.Effects.Length - 1; ++index2)
                        {
                            if (stringBuilder.Length > 0)
                            {
                                stringBuilder.Append(", ");
                            }
                            stringBuilder.Append(power.Effects[index2].BuildEffectString(true, "", false, false, false));
                        }
                        str2 = "Effect: " + stringBuilder;
                    }
                    str1 = str2;
                }
            }
        }
        return(str1);
    }
        int BuildPowerListLong(

            ref int vPos,
            RectangleF bounds,
            int fontSize,
            Print.PrintWhat selection,
            PrintPageEventArgs args)
        {
            int num1;

            if (this._pIndex < 0)
            {
                this._endOfPage       = true;
                this._printingProfile = false;
                num1 = vPos;
            }
            else
            {
                StringFormat format     = new StringFormat(StringFormatFlags.NoWrap | StringFormatFlags.NoClip);
                SolidBrush   solidBrush = new SolidBrush(Color.Black);
                int          num2       = -1;
                Font         font       = new Font("Arial", (float)fontSize, FontStyle.Bold, GraphicsUnit.Pixel);
                bool         flag1      = false;
                for (int pIndex = this._pIndex; pIndex <= MidsContext.Character.CurrentBuild.Powers.Count - 1; ++pIndex)
                {
                    bool flag2 = false;
                    switch (selection)
                    {
                    case Print.PrintWhat.Powers:
                        if (MidsContext.Character.CurrentBuild.Powers[pIndex].Chosen)
                        {
                            flag2 = true;
                            break;
                        }
                        break;

                    case Print.PrintWhat.Inherent:
                        if (!MidsContext.Character.CurrentBuild.Powers[pIndex].Chosen && MidsContext.Character.CurrentBuild.Powers[pIndex].Power != null)
                        {
                            flag2 = !MidsContext.Character.CurrentBuild.Powers[pIndex].Power.IsEpic;
                            if (flag2 && MidsContext.Character.CurrentBuild.Powers[pIndex].Slots.Length < 1)
                            {
                                flag2 = false;
                            }
                            break;
                        }
                        break;

                    case Print.PrintWhat.EpicInherent:
                        if (!MidsContext.Character.CurrentBuild.Powers[pIndex].Chosen && MidsContext.Character.CurrentBuild.Powers[pIndex].Power != null)
                        {
                            flag2 = MidsContext.Character.CurrentBuild.Powers[pIndex].Power.IsEpic;
                            break;
                        }
                        break;
                    }
                    if (!MidsContext.Character.CurrentBuild.Powers[pIndex].Chosen & MidsContext.Character.CurrentBuild.Powers[pIndex].SubPowers.Length > 0)
                    {
                        flag2 = false;
                    }
                    if (flag2)
                    {
                        string s1 = "Level " + MidsContext.Character.CurrentBuild.Powers[pIndex].Level + 1 + ":";
                        string s2 = MidsContext.Character.CurrentBuild.Powers[pIndex].Power != null ? MidsContext.Character.CurrentBuild.Powers[pIndex].Power.DisplayName : "[No Power]";
                        string s3 = "";
                        if ((double)vPos - (double)bounds.Top + (double)((MidsContext.Character.CurrentBuild.Powers[pIndex].Slots.Length + 1) * fontSize) * 1.25 > (double)bounds.Height)
                        {
                            num2  = pIndex;
                            flag1 = true;
                            break;
                        }
                        for (int index = 0; index <= MidsContext.Character.CurrentBuild.Powers[pIndex].Slots.Length - 1; ++index)
                        {
                            if (!string.IsNullOrEmpty(s3))
                            {
                                s3 += '\n';
                            }
                            string str1;
                            if (index == 0)
                            {
                                str1 = s3 + "(A) ";
                            }
                            else
                            {
                                str1 = s3 + "(" + MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Level + 1 + ") ";
                            }
                            if (MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.Enh > -1)
                            {
                                IEnhancement enhancement = DatabaseAPI.Database.Enhancements[MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.Enh];
                                switch (enhancement.TypeID)
                                {
                                case Enums.eType.Normal:
                                    string relativeString1 = Enums.GetRelativeString(MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.RelativeLevel, false);
                                    string str2;
                                    if (!string.IsNullOrEmpty(relativeString1) & relativeString1 != "X")
                                    {
                                        str2 = str1 + relativeString1 + " " + DatabaseAPI.Database.EnhGradeStringLong[(int)MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.Grade] + " - ";
                                    }
                                    else
                                    {
                                        str2 = !(relativeString1 == "X") ? str1 + DatabaseAPI.Database.EnhGradeStringLong[(int)MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.Grade] + " - " : str1 + "Disabled " + DatabaseAPI.Database.EnhGradeStringLong[(int)MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.Grade] + " - ";
                                    }
                                    str1 = str2 + " ";
                                    break;

                                case Enums.eType.SpecialO:
                                    string relativeString2 = Enums.GetRelativeString(MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.RelativeLevel, false);
                                    string str3;
                                    if (!string.IsNullOrEmpty(relativeString2) & relativeString2 != "X")
                                    {
                                        str3 = str1 + relativeString2 + " " + enhancement.GetSpecialName() + " - ";
                                    }
                                    else
                                    {
                                        str3 = !(relativeString2 == "X") ? str1 + enhancement.GetSpecialName() + " - " : str1 + "Disabled " + enhancement.GetSpecialName() + " - ";
                                    }
                                    str1 = str3 + " ";
                                    break;
                                }
                                s3 = str1 + enhancement.LongName;
                                switch (enhancement.TypeID)
                                {
                                case Enums.eType.InventO:
                                    s3 = s3 + " - IO:" + MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.IOLevel + 1;
                                    continue;

                                case Enums.eType.SetO:
                                    s3 = s3 + " - IO:" + MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.IOLevel + 1;
                                    continue;

                                default:
                                    continue;
                                }
                            }
                            else
                            {
                                s3 = str1 + "[Empty]";
                            }
                        }
                        if (!string.IsNullOrEmpty(s1) || !string.IsNullOrEmpty(s2) || !string.IsNullOrEmpty(s3))
                        {
                            RectangleF layoutRectangle = new RectangleF(bounds.Left + 15f, (float)vPos, bounds.Width, (float)fontSize * 1.25f);
                            args.Graphics.DrawString(s1, font, (Brush)solidBrush, layoutRectangle, format);
                            layoutRectangle = new RectangleF(bounds.Left + 80f, (float)vPos, bounds.Width, (float)fontSize * 1.25f);
                            args.Graphics.DrawString(s2, font, (Brush)solidBrush, layoutRectangle, format);
                            vPos           += (int)((double)fontSize * 1.25);
                            layoutRectangle = new RectangleF(bounds.Left + 90f, (float)vPos, bounds.Width, (float)(MidsContext.Character.CurrentBuild.Powers[pIndex].Slots.Length * fontSize) * 1.25f);
                            args.Graphics.DrawString(s3, font, (Brush)solidBrush, layoutRectangle, format);
                            vPos += (int)((double)fontSize * 1.25 * 1.1 + (double)fontSize * 1.25 * (double)(MidsContext.Character.CurrentBuild.Powers[pIndex].Slots.Length - 1));
                        }
                    }
                }
                this._pIndex = num2;
                if (flag1)
                {
                    this._endOfPage = true;
                }
                else
                {
                    this._pIndex = 0;
                }
                num1 = vPos;
            }
            return(num1);
        }
Exemple #24
0
        static void BuildPowerListShort(
            ref int vPos,
            RectangleF bounds,
            int fontSize,
            bool skipInherent,
            bool skipNormal,
            bool kheldian,
            PrintPageEventArgs args)
        {
            bool         printIoLevels = !MidsContext.Config.I9.DisablePrintIOLevels;
            StringFormat format        = new StringFormat(StringFormatFlags.NoClip);
            SolidBrush   solidBrush    = new SolidBrush(Color.Black);

            for (int index1 = 0; index1 <= MidsContext.Character.CurrentBuild.Powers.Count - 1; ++index1)
            {
                Font font     = new Font("Arial", fontSize, FontStyle.Bold, GraphicsUnit.Pixel);
                bool isChosen = !MidsContext.Character.CurrentBuild.Powers[index1].Chosen;
                bool include  = false;
                if (!skipInherent && isChosen && MidsContext.Character.CurrentBuild.Powers[index1].Power != null)
                {
                    if (kheldian)
                    {
                        include = MidsContext.Character.CurrentBuild.Powers[index1].Power.IsEpic;
                    }
                    else if (MidsContext.Character.CurrentBuild.Powers[index1].Power.Requires.NPowerID.Length == 0 || !MidsContext.Character.CurrentBuild.Powers[index1].Power.Slottable)
                    {
                        include = true;
                    }
                }
                if (!skipNormal && !isChosen)
                {
                    include = true;
                }
                if (isChosen && MidsContext.Character.CurrentBuild.Powers[index1].PowerSet == null)
                {
                    include = false;
                }
                if (isChosen & MidsContext.Character.CurrentBuild.Powers[index1].SubPowers.Length > 0)
                {
                    include = false;
                }
                if (!include)
                {
                    continue;
                }
                string     s1 = "Level " + MidsContext.Character.CurrentBuild.Powers[index1].Level + 1 + ":";
                RectangleF layoutRectangle = new RectangleF(bounds.Left + 15f, vPos, bounds.Width, fontSize * 1.25f);
                args.Graphics.DrawString(s1, font, solidBrush, layoutRectangle, format);
                string s2 = MidsContext.Character.CurrentBuild.Powers[index1].Power != null ? MidsContext.Character.CurrentBuild.Powers[index1].Power.DisplayName : "[Empty]";
                layoutRectangle = new RectangleF(bounds.Left + 80f, vPos, bounds.Width, fontSize * 1.25f);
                args.Graphics.DrawString(s2, font, solidBrush, layoutRectangle, format);
                if (MidsContext.Character.CurrentBuild.Powers[index1].Slots.Length > 0)
                {
                    string str1 = string.Empty;
                    for (int index2 = 0; index2 <= MidsContext.Character.CurrentBuild.Powers[index1].Slots.Length - 1; ++index2)
                    {
                        if (index2 > 0)
                        {
                            str1 += ", ";
                        }
                        if (!MidsContext.Config.DisablePrintProfileEnh)
                        {
                            if (MidsContext.Character.CurrentBuild.Powers[index1].Slots[index2].Enhancement.Enh > -1)
                            {
                                IEnhancement enhancement = DatabaseAPI.Database.Enhancements[MidsContext.Character.CurrentBuild.Powers[index1].Slots[index2].Enhancement.Enh];
                                switch (enhancement.TypeID)
                                {
                                case Enums.eType.Normal:
                                    str1 += enhancement.ShortName;
                                    break;

                                case Enums.eType.InventO:
                                    str1 = str1 + enhancement.ShortName + "-I";
                                    if (printIoLevels)
                                    {
                                        str1 = str1 + ":" + Convert.ToString(MidsContext.Character.CurrentBuild.Powers[index1].Slots[index2].Enhancement.IOLevel + 1);
                                    }
                                    break;

                                case Enums.eType.SpecialO:
                                    string str2 = null;
                                    switch (enhancement.SubTypeID)
                                    {
                                    case Enums.eSubtype.Hamidon:
                                        str2 = "HO:";
                                        break;

                                    case Enums.eSubtype.Hydra:
                                        str2 = "HY:";
                                        break;

                                    case Enums.eSubtype.Titan:
                                        str2 = "TN:";
                                        break;

                                    case Enums.eSubtype.None:
                                        break;

                                    default:
                                        str2 = "X:";
                                        break;
                                    }
                                    str1 = str1 + str2 + enhancement.ShortName;
                                    break;

                                case Enums.eType.SetO:
                                    str1 = str1 + DatabaseAPI.Database.EnhancementSets[enhancement.nIDSet].ShortName + "-" + enhancement.ShortName;
                                    if (printIoLevels)
                                    {
                                        str1 = str1 + ":" + Convert.ToString(MidsContext.Character.CurrentBuild.Powers[index1].Slots[index2].Enhancement.IOLevel + 1);
                                    }
                                    break;

                                case Enums.eType.None:
                                    break;

                                default:
                                    throw new ArgumentOutOfRangeException();
                                }
                            }
                            else
                            {
                                str1 += "Empty";
                            }
                        }
                        string str3 = str1 + "(";
                        str1 = (index2 != 0 ? str3 + (MidsContext.Character.CurrentBuild.Powers[index1].Slots[index2].Level + 1) : str3 + "A") + ")";
                    }
                    layoutRectangle        = new RectangleF(bounds.Left + 250f, vPos, bounds.Width, fontSize * 1.25f);
                    layoutRectangle.Width -= layoutRectangle.Left;
                    SizeF sizeF = args.Graphics.MeasureString(str1, font, (int)layoutRectangle.Width * 5, format);
                    if (sizeF.Width > (double)layoutRectangle.Width)
                    {
                        int num    = MidsContext.Character.CurrentBuild.Powers[index1].Slots.Length / 2;
                        int length = -1;
                        for (int index2 = 0; index2 <= num - 1; ++index2)
                        {
                            length = str1.IndexOf(", ", length + 1, StringComparison.Ordinal);
                        }
                        if (length > -1)
                        {
                            str1 = str1.Substring(0, length) + "..." + '\n' + "..." + str1.Substring(length + 2);
                            layoutRectangle.Height *= 2f;
                            vPos += (int)(fontSize * 1.25);
                        }
                        sizeF = args.Graphics.MeasureString(str1, font, (int)(layoutRectangle.Width * 5.0), format);
                        float width = sizeF.Width;
                        if (width > (double)layoutRectangle.Width)
                        {
                            font = new Font("Arial", Convert.ToSingle(fontSize) * (layoutRectangle.Width / width), FontStyle.Bold, GraphicsUnit.Pixel);
                        }
                    }
                    args.Graphics.DrawString(str1, font, solidBrush, layoutRectangle, format);
                }
                vPos += (int)(fontSize * 1.25 * 1.1);
            }
        }
Exemple #25
0
        int BuildPowerListLong(
            ref int vPos,
            RectangleF bounds,
            int fontSize,
            PrintWhat selection,
            PrintPageEventArgs args)
        {
            if (_pIndex < 0)
            {
                _endOfPage       = true;
                _printingProfile = false;
                return(vPos);
            }

            var  format     = new StringFormat(StringFormatFlags.NoWrap | StringFormatFlags.NoClip);
            var  solidBrush = new SolidBrush(Color.Black);
            int  pgIdx      = -1;
            var  font       = new Font("Arial", fontSize, FontStyle.Bold, GraphicsUnit.Pixel);
            bool isEnd      = false;
            int  levelVar   = 0;

            for (int pIndex = _pIndex; pIndex <= MidsContext.Character.CurrentBuild.Powers.Count - 1; ++pIndex)
            {
                bool include = false;
                switch (selection)
                {
                case PrintWhat.Powers:
                    if (MidsContext.Character.CurrentBuild.Powers[pIndex].Chosen)
                    {
                        include = true;
                    }
                    break;

                case PrintWhat.Inherent:
                    if (!MidsContext.Character.CurrentBuild.Powers[pIndex].Chosen && MidsContext.Character.CurrentBuild.Powers[pIndex].Power != null)
                    {
                        include = !MidsContext.Character.CurrentBuild.Powers[pIndex].Power.IsEpic;
                        if (include && MidsContext.Character.CurrentBuild.Powers[pIndex].Slots.Length < 1)
                        {
                            include = false;
                        }
                    }
                    break;

                case PrintWhat.EpicInherent:
                    if (!MidsContext.Character.CurrentBuild.Powers[pIndex].Chosen && MidsContext.Character.CurrentBuild.Powers[pIndex].Power != null)
                    {
                        include = MidsContext.Character.CurrentBuild.Powers[pIndex].Power.IsEpic;
                    }
                    break;
                }
                if (!MidsContext.Character.CurrentBuild.Powers[pIndex].Chosen & MidsContext.Character.CurrentBuild.Powers[pIndex].SubPowers.Length > 0)
                {
                    include = false;
                }
                if (!include)
                {
                    continue;
                }
                levelVar = MidsContext.Character.CurrentBuild.Powers[pIndex].Level + 1;
                string s1 = "Level " + levelVar + ":";
                string s2 = MidsContext.Character.CurrentBuild.Powers[pIndex].Power != null ? MidsContext.Character.CurrentBuild.Powers[pIndex].Power.DisplayName : "[No Power]";
                string s3 = "";
                if (vPos - (double)bounds.Top + (MidsContext.Character.CurrentBuild.Powers[pIndex].Slots.Length + 1) * fontSize * 1.25 > bounds.Height)
                {
                    pgIdx = pIndex;
                    isEnd = true;
                    break;
                }
                for (int index = 0; index <= MidsContext.Character.CurrentBuild.Powers[pIndex].Slots.Length - 1; ++index)
                {
                    if (!string.IsNullOrEmpty(s3))
                    {
                        s3 += '\n';
                    }
                    string str1;
                    if (index == 0)
                    {
                        str1 = s3 + "(A) ";
                    }
                    else
                    {
                        levelVar = MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Level + 1;
                    }
                    str1 = s3 + "(" + levelVar + ") ";
                    if (MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.Enh > -1)
                    {
                        IEnhancement enhancement = DatabaseAPI.Database.Enhancements[MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.Enh];
                        switch (enhancement.TypeID)
                        {
                        case Enums.eType.Normal:
                            string relativeString1 = Enums.GetRelativeString(MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.RelativeLevel, false);
                            string str2;
                            if (!string.IsNullOrEmpty(relativeString1) & relativeString1 != "X")
                            {
                                str2 = str1 + relativeString1 + " " + DatabaseAPI.Database.EnhGradeStringLong[(int)MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.Grade] + " - ";
                            }
                            else
                            {
                                str2 = relativeString1 != "X" ? str1 + DatabaseAPI.Database.EnhGradeStringLong[(int)MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.Grade] + " - " : str1 + "Disabled " + DatabaseAPI.Database.EnhGradeStringLong[(int)MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.Grade] + " - ";
                            }
                            str1 = str2 + " ";
                            break;

                        case Enums.eType.SpecialO:
                            string relativeString2 = Enums.GetRelativeString(MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.RelativeLevel, false);
                            string str3;
                            if (!string.IsNullOrEmpty(relativeString2) & relativeString2 != "X")
                            {
                                str3 = str1 + relativeString2 + " " + enhancement.GetSpecialName() + " - ";
                            }
                            else
                            {
                                str3 = relativeString2 != "X" ? str1 + enhancement.GetSpecialName() + " - " : str1 + "Disabled " + enhancement.GetSpecialName() + " - ";
                            }
                            str1 = str3 + " ";
                            break;

                        case Enums.eType.None:
                            break;

                        case Enums.eType.InventO:
                            break;

                        case Enums.eType.SetO:
                            break;

                        default:
                            throw new ArgumentOutOfRangeException();
                        }
                        s3 = str1 + enhancement.LongName;
                        switch (enhancement.TypeID)
                        {
                        case Enums.eType.InventO:
                            levelVar = MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.IOLevel + 1;
                            s3       = s3 + " - IO:" + levelVar;
                            continue;

                        case Enums.eType.SetO:
                            levelVar = MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.IOLevel + 1;
                            s3       = s3 + " - IO:" + levelVar;
                            continue;

                        case Enums.eType.None:
                            break;

                        case Enums.eType.Normal:
                            break;

                        case Enums.eType.SpecialO:
                            //s3 = s3.Remove(0,11);
                            break;

                        default:
                            continue;
                        }
                    }
                    else
                    {
                        s3 = str1 + "[Empty]";
                    }
                }

                if (string.IsNullOrEmpty(s1) && string.IsNullOrEmpty(s2) && string.IsNullOrEmpty(s3))
                {
                    continue;
                }
                var layoutRectangle = new RectangleF(bounds.Left + 15f, vPos, bounds.Width, fontSize * 1.25f);
                args.Graphics.DrawString(s1, font, solidBrush, layoutRectangle, format);
                layoutRectangle = new RectangleF(bounds.Left + 80f, vPos, bounds.Width, fontSize * 1.25f);
                args.Graphics.DrawString(s2, font, solidBrush, layoutRectangle, format);
                vPos           += (int)(fontSize * 1.25);
                layoutRectangle = new RectangleF(bounds.Left + 90f, vPos, bounds.Width, MidsContext.Character.CurrentBuild.Powers[pIndex].Slots.Length * fontSize * 1.25f);
                args.Graphics.DrawString(s3, font, solidBrush, layoutRectangle, format);
                vPos += (int)((fontSize * 1.25 * 1.1) + (fontSize * 1.25 * (MidsContext.Character.CurrentBuild.Powers[pIndex].Slots.Length - 1)));
            }
            _pIndex = pgIdx;
            if (isEnd)
            {
                _endOfPage = true;
            }
            else
            {
                _pIndex = 0;
            }
            return(vPos);
        }
        static void BuildPowerListShort(ref int vPos, RectangleF bounds, int fontSize, bool skipInherent, bool skipNormal, bool kheldian, PrintPageEventArgs args)
        {
            bool         printIoLevels = MidsContext.Config.I9.PrintIOLevels;
            StringFormat format        = new StringFormat(StringFormatFlags.NoClip);
            SolidBrush   solidBrush    = new SolidBrush(Color.Black);

            for (int index = 0; index <= MidsContext.Character.CurrentBuild.Powers.Count - 1; index++)
            {
                Font font  = new Font("Arial", (float)fontSize, FontStyle.Bold, GraphicsUnit.Pixel);
                bool flag  = !MidsContext.Character.CurrentBuild.Powers[index].Chosen;
                bool flag2 = false;
                if (!skipInherent && flag && MidsContext.Character.CurrentBuild.Powers[index].Power != null)
                {
                    if (kheldian)
                    {
                        flag2 = MidsContext.Character.CurrentBuild.Powers[index].Power.IsEpic;
                    }
                    else if (MidsContext.Character.CurrentBuild.Powers[index].Power.Requires.NPowerID.Length == 0 || !MidsContext.Character.CurrentBuild.Powers[index].Power.Slottable)
                    {
                        flag2 = true;
                    }
                }
                if (!skipNormal && !flag)
                {
                    flag2 = true;
                }
                if (flag && MidsContext.Character.CurrentBuild.Powers[index].PowerSet == null)
                {
                    flag2 = false;
                }
                if (flag & MidsContext.Character.CurrentBuild.Powers[index].SubPowers.Length > 0)
                {
                    flag2 = false;
                }
                if (flag2)
                {
                    string str4 = string.Concat(new object[]
                    {
                        "Level ",
                        MidsContext.Character.CurrentBuild.Powers[index].Level,
                        1,
                        ":"
                    });
                    RectangleF layoutRectangle = new RectangleF(bounds.Left + 15f, (float)vPos, bounds.Width, (float)fontSize * 1.25f);
                    args.Graphics.DrawString(str4, font, solidBrush, layoutRectangle, format);
                    str4            = ((MidsContext.Character.CurrentBuild.Powers[index].Power != null) ? MidsContext.Character.CurrentBuild.Powers[index].Power.DisplayName : "[Empty]");
                    layoutRectangle = new RectangleF(bounds.Left + 80f, (float)vPos, bounds.Width, (float)fontSize * 1.25f);
                    args.Graphics.DrawString(str4, font, solidBrush, layoutRectangle, format);
                    if (MidsContext.Character.CurrentBuild.Powers[index].Slots.Length > 0)
                    {
                        string str5 = string.Empty;
                        for (int index2 = 0; index2 <= MidsContext.Character.CurrentBuild.Powers[index].Slots.Length - 1; index2++)
                        {
                            if (index2 > 0)
                            {
                                str5 += ", ";
                            }
                            if (MidsContext.Config.PrintProfileEnh)
                            {
                                if (MidsContext.Character.CurrentBuild.Powers[index].Slots[index2].Enhancement.Enh > -1)
                                {
                                    IEnhancement enhancement = DatabaseAPI.Database.Enhancements[MidsContext.Character.CurrentBuild.Powers[index].Slots[index2].Enhancement.Enh];
                                    switch (enhancement.TypeID)
                                    {
                                    case Enums.eType.Normal:
                                        str5 += enhancement.ShortName;
                                        break;

                                    case Enums.eType.InventO:
                                        str5 += enhancement.ShortName;
                                        str5 += "-I";
                                        if (printIoLevels)
                                        {
                                            str5 = str5 + ":" + Convert.ToString(MidsContext.Character.CurrentBuild.Powers[index].Slots[index2].Enhancement.IOLevel + 1);
                                        }
                                        break;

                                    case Enums.eType.SpecialO:
                                    {
                                        string str6;
                                        switch (enhancement.SubTypeID)
                                        {
                                        case Enums.eSubtype.Hamidon:
                                            str6 = "HO:";
                                            break;

                                        case Enums.eSubtype.Hydra:
                                            str6 = "HY:";
                                            break;

                                        case Enums.eSubtype.Titan:
                                            str6 = "TN:";
                                            break;

                                        default:
                                            str6 = "X:";
                                            break;
                                        }
                                        str5 = str5 + str6 + enhancement.ShortName;
                                        break;
                                    }

                                    case Enums.eType.SetO:
                                        str5 += DatabaseAPI.Database.EnhancementSets[enhancement.nIDSet].ShortName;
                                        str5  = str5 + "-" + enhancement.ShortName;
                                        if (printIoLevels)
                                        {
                                            str5 = str5 + ":" + Convert.ToString(MidsContext.Character.CurrentBuild.Powers[index].Slots[index2].Enhancement.IOLevel + 1);
                                        }
                                        break;
                                    }
                                }
                                else
                                {
                                    str5 += "Empty";
                                }
                            }
                            str5 += "(";
                            if (index2 == 0)
                            {
                                str5 += "A";
                            }
                            else
                            {
                                str5 += MidsContext.Character.CurrentBuild.Powers[index].Slots[index2].Level + 1;
                            }
                            str5 += ")";
                        }
                        str4                   = str5;
                        layoutRectangle        = new RectangleF(bounds.Left + 250f, (float)vPos, bounds.Width, (float)fontSize * 1.25f);
                        layoutRectangle.Width -= layoutRectangle.Left;
                        float width = args.Graphics.MeasureString(str4, font, (int)layoutRectangle.Width * 5, format).Width;
                        if (width > layoutRectangle.Width)
                        {
                            int num    = MidsContext.Character.CurrentBuild.Powers[index].Slots.Length / 2;
                            int length = -1;
                            for (int index3 = 0; index3 <= num - 1; index3++)
                            {
                                length = str4.IndexOf(", ", length + 1, StringComparison.Ordinal);
                            }
                            if (length > -1)
                            {
                                string text = string.Concat(new object[]
                                {
                                    str4.Substring(0, length),
                                    "...",
                                    '\n',
                                    "...",
                                    str4.Substring(length + 2)
                                });
                                str4 = text;
                                layoutRectangle.Height *= 2f;
                                vPos += (int)((float)fontSize * 1.25f);
                            }
                            width = args.Graphics.MeasureString(str4, font, (int)(layoutRectangle.Width * 5f), format).Width;
                            if (width > layoutRectangle.Width)
                            {
                                font = new Font("Arial", Convert.ToSingle(fontSize) * (layoutRectangle.Width / width), FontStyle.Bold, GraphicsUnit.Pixel);
                            }
                        }
                        args.Graphics.DrawString(str4, font, solidBrush, layoutRectangle, format);
                    }
                    vPos += (int)((double)((float)fontSize * 1.25f) * 1.1);
                }
            }
        }
    public string GetEnhancementStringLong()
    {
        string str1;

        if (this.Enh < 0)
        {
            str1 = string.Empty;
        }
        else
        {
            StringBuilder stringBuilder = new StringBuilder();
            bool          flag1         = false;
            bool          flag2         = false;
            bool          flag3         = false;
            bool          flag4         = false;
            bool          flag5         = false;
            IEnhancement  enhancement   = DatabaseAPI.Database.Enhancements[this.Enh];
            if (enhancement.Effect.Length == 0)
            {
                str1 = enhancement.Desc;
            }
            else
            {
                foreach (Enums.sEffect sEffect in enhancement.Effect)
                {
                    if (sEffect.Mode == Enums.eEffMode.FX)
                    {
                        flag1 = true;
                    }
                    if (sEffect.Mode == Enums.eEffMode.Enhancement && sEffect.Schedule != Enums.eSchedule.None)
                    {
                        float scheduleMult = this.GetScheduleMult(enhancement.TypeID, sEffect.Schedule);
                        if ((double)sEffect.Multiplier > 0.0)
                        {
                            scheduleMult *= sEffect.Multiplier;
                        }
                        Enums.eEnhance id = (Enums.eEnhance)sEffect.Enhance.ID;
                        string         str2;
                        if (id == Enums.eEnhance.Mez)
                        {
                            Enums.eMez subId = (Enums.eMez)sEffect.Enhance.SubID;
                            str2 = Enum.GetName(subId.GetType(), subId);
                        }
                        else
                        {
                            str2 = Enum.GetName(id.GetType(), id);
                        }
                        if (sEffect.Enhance.ID == 7 || sEffect.Enhance.ID == 8 || sEffect.Enhance.ID == 17)
                        {
                            str2  = !flag2 ? "Heal" : string.Empty;
                            flag2 = true;
                        }
                        else if (sEffect.Enhance.ID == 10 || sEffect.Enhance.ID == 11 && !flag5)
                        {
                            str2  = !flag3 ? "Jump" : string.Empty;
                            flag3 = true;
                        }
                        else if (sEffect.Enhance.ID == 5 || sEffect.Enhance.ID == 16)
                        {
                            str2  = !flag4 ? "EndMod" : string.Empty;
                            flag4 = true;
                        }
                        else if (((enhancement.Name.IndexOf("Slow", StringComparison.Ordinal) > -1 ? 1 : 0) & (sEffect.BuffMode != Enums.eBuffDebuff.DeBuffOnly ? 0 : (sEffect.Enhance.ID == 6 || sEffect.Enhance.ID == 11 ? 1 : (sEffect.Enhance.ID == 19 ? 1 : 0)))) != 0 || sEffect.Enhance.ID == 21)
                        {
                            str2  = !flag5 ? "Slow Movement" : string.Empty;
                            flag5 = true;
                        }
                        if (!string.IsNullOrEmpty(str2))
                        {
                            if (stringBuilder.Length > 0)
                            {
                                stringBuilder.Append("\n");
                            }
                            stringBuilder.AppendFormat("{0}  enhancement (Sched. {1}: {2}%)", str2, Enum.GetName(sEffect.Schedule.GetType(), sEffect.Schedule), (scheduleMult * 100f).ToString((IFormatProvider)NumberFormatInfo.CurrentInfo));
                        }
                    }
                }
                if (!flag1)
                {
                    str1 = stringBuilder.ToString();
                }
                else
                {
                    IPower power = new Power(enhancement.GetPower());
                    power.ApplyGrantPowerEffects();
                    int[] returnMask = new int[0];
                    for (int index1 = 0; index1 <= power.Effects.Length - 1; ++index1)
                    {
                        if (power.Effects[index1].EffectType == Enums.eEffectType.GrantPower)
                        {
                            if (stringBuilder.Length > 0)
                            {
                                stringBuilder.Append("\n");
                            }
                            stringBuilder.Append(power.Effects[index1].BuildEffectString(true, "", false, false, false));
                            string empty = string.Empty;
                            for (int idEffect = 0; idEffect <= power.Effects.Length - 1; ++idEffect)
                            {
                                power.Effects[idEffect].Stacking = Enums.eStacking.Yes;
                                power.Effects[idEffect].Buffable = true;
                                if (power.Effects[idEffect].Absorbed_EffectID == index1)
                                {
                                    power.GetEffectStringGrouped(idEffect, ref empty, ref returnMask, false, false, false);
                                }
                                if (returnMask.Length > 0)
                                {
                                    if (stringBuilder.Length > 0)
                                    {
                                        stringBuilder.Append("\n");
                                    }
                                    stringBuilder.AppendFormat("  {0}", empty);
                                    break;
                                }
                            }
                            for (int index2 = 0; index2 <= power.Effects.Length - 1; ++index2)
                            {
                                bool flag6 = false;
                                for (int index3 = 0; index3 <= returnMask.Length - 1; ++index3)
                                {
                                    if (returnMask[index3] == index2)
                                    {
                                        flag6 = true;
                                        break;
                                    }
                                }
                                if (power.Effects[index2].Absorbed_EffectID == index1 && !flag6)
                                {
                                    if (stringBuilder.Length > 0)
                                    {
                                        stringBuilder.Append("\n");
                                    }
                                    power.Effects[index2].Stacking = Enums.eStacking.Yes;
                                    power.Effects[index2].Buffable = true;
                                    stringBuilder.AppendFormat("  {0}", power.Effects[index2].BuildEffectString(false, "", false, false, false));
                                }
                            }
                        }
                        else if (!power.Effects[index1].Absorbed_Effect && power.Effects[index1].EffectType != Enums.eEffectType.Enhancement)
                        {
                            if (stringBuilder.Length > 0)
                            {
                                stringBuilder.Append("\n");
                            }
                            stringBuilder.Append(power.Effects[index1].BuildEffectString(true, "", false, false, false));
                        }
                    }
                    str1 = stringBuilder.ToString().Replace("Slf", "Self").Replace("Tgt", "Target");
                }
            }
        }
        return(str1);
    }
        int BuildPowerListLong(ref int vPos, RectangleF bounds, int fontSize, Print.PrintWhat selection, PrintPageEventArgs args)
        {
            int num;

            if (this._pIndex < 0)
            {
                this._endOfPage       = true;
                this._printingProfile = false;
                num = vPos;
            }
            else
            {
                StringFormat format     = new StringFormat(StringFormatFlags.NoWrap | StringFormatFlags.NoClip);
                SolidBrush   solidBrush = new SolidBrush(Color.Black);
                int          num2       = -1;
                Font         font       = new Font("Arial", (float)fontSize, FontStyle.Bold, GraphicsUnit.Pixel);
                bool         flag       = false;
                for (int pIndex = this._pIndex; pIndex <= MidsContext.Character.CurrentBuild.Powers.Count - 1; pIndex++)
                {
                    bool flag2 = false;
                    switch (selection)
                    {
                    case Print.PrintWhat.Powers:
                        if (MidsContext.Character.CurrentBuild.Powers[pIndex].Chosen)
                        {
                            flag2 = true;
                        }
                        break;

                    case Print.PrintWhat.Inherent:
                        if (!MidsContext.Character.CurrentBuild.Powers[pIndex].Chosen && MidsContext.Character.CurrentBuild.Powers[pIndex].Power != null)
                        {
                            flag2 = !MidsContext.Character.CurrentBuild.Powers[pIndex].Power.IsEpic;
                            if (flag2 && MidsContext.Character.CurrentBuild.Powers[pIndex].Slots.Length < 1)
                            {
                                flag2 = false;
                            }
                        }
                        break;

                    case Print.PrintWhat.EpicInherent:
                        if (!MidsContext.Character.CurrentBuild.Powers[pIndex].Chosen && MidsContext.Character.CurrentBuild.Powers[pIndex].Power != null)
                        {
                            flag2 = MidsContext.Character.CurrentBuild.Powers[pIndex].Power.IsEpic;
                        }
                        break;
                    }
                    if (!MidsContext.Character.CurrentBuild.Powers[pIndex].Chosen & MidsContext.Character.CurrentBuild.Powers[pIndex].SubPowers.Length > 0)
                    {
                        flag2 = false;
                    }
                    if (flag2)
                    {
                        string s = string.Concat(new object[]
                        {
                            "Level ",
                            MidsContext.Character.CurrentBuild.Powers[pIndex].Level,
                            1,
                            ":"
                        });
                        string s2 = (MidsContext.Character.CurrentBuild.Powers[pIndex].Power != null) ? MidsContext.Character.CurrentBuild.Powers[pIndex].Power.DisplayName : "[No Power]";
                        string s3 = "";
                        if ((float)vPos - bounds.Top + (float)((MidsContext.Character.CurrentBuild.Powers[pIndex].Slots.Length + 1) * fontSize) * 1.25f > bounds.Height)
                        {
                            num2 = pIndex;
                            flag = true;
                            break;
                        }
                        for (int index = 0; index <= MidsContext.Character.CurrentBuild.Powers[pIndex].Slots.Length - 1; index++)
                        {
                            if (!string.IsNullOrEmpty(s3))
                            {
                                s3 += '\n';
                            }
                            if (index == 0)
                            {
                                s3 += "(A) ";
                            }
                            else
                            {
                                object obj = s3;
                                s3 = string.Concat(new object[]
                                {
                                    obj,
                                    "(",
                                    MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Level,
                                    1,
                                    ") "
                                });
                            }
                            if (MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.Enh > -1)
                            {
                                IEnhancement enhancement = DatabaseAPI.Database.Enhancements[MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.Enh];
                                switch (enhancement.TypeID)
                                {
                                case Enums.eType.Normal:
                                {
                                    string relativeString = Enums.GetRelativeString(MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.RelativeLevel, false);
                                    if (!string.IsNullOrEmpty(relativeString) & relativeString != "X")
                                    {
                                        string text = s3;
                                        s3 = string.Concat(new string[]
                                            {
                                                text,
                                                relativeString,
                                                " ",
                                                DatabaseAPI.Database.EnhGradeStringLong[(int)MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.Grade],
                                                " - "
                                            });
                                    }
                                    else if (relativeString == "X")
                                    {
                                        s3 = s3 + "Disabled " + DatabaseAPI.Database.EnhGradeStringLong[(int)MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.Grade] + " - ";
                                    }
                                    else
                                    {
                                        s3 = s3 + DatabaseAPI.Database.EnhGradeStringLong[(int)MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.Grade] + " - ";
                                    }
                                    s3 += " ";
                                    break;
                                }

                                case Enums.eType.SpecialO:
                                {
                                    string relativeString2 = Enums.GetRelativeString(MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.RelativeLevel, false);
                                    if (!string.IsNullOrEmpty(relativeString2) & relativeString2 != "X")
                                    {
                                        string text2 = s3;
                                        s3 = string.Concat(new string[]
                                            {
                                                text2,
                                                relativeString2,
                                                " ",
                                                enhancement.GetSpecialName(),
                                                " - "
                                            });
                                    }
                                    else if (relativeString2 == "X")
                                    {
                                        s3 = s3 + "Disabled " + enhancement.GetSpecialName() + " - ";
                                    }
                                    else
                                    {
                                        s3 = s3 + enhancement.GetSpecialName() + " - ";
                                    }
                                    s3 += " ";
                                    break;
                                }
                                }
                                s3 += enhancement.LongName;
                                switch (enhancement.TypeID)
                                {
                                case Enums.eType.InventO:
                                {
                                    object obj2 = s3;
                                    s3 = string.Concat(new object[]
                                        {
                                            obj2,
                                            " - IO:",
                                            MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.IOLevel,
                                            1
                                        });
                                    break;
                                }

                                case Enums.eType.SetO:
                                {
                                    object obj3 = s3;
                                    s3 = string.Concat(new object[]
                                        {
                                            obj3,
                                            " - IO:",
                                            MidsContext.Character.CurrentBuild.Powers[pIndex].Slots[index].Enhancement.IOLevel,
                                            1
                                        });
                                    break;
                                }
                                }
                            }
                            else
                            {
                                s3 += "[Empty]";
                            }
                        }
                        if (!string.IsNullOrEmpty(s) || !string.IsNullOrEmpty(s2) || !string.IsNullOrEmpty(s3))
                        {
                            RectangleF layoutRectangle = new RectangleF(bounds.Left + 15f, (float)vPos, bounds.Width, (float)fontSize * 1.25f);
                            args.Graphics.DrawString(s, font, solidBrush, layoutRectangle, format);
                            layoutRectangle = new RectangleF(bounds.Left + 80f, (float)vPos, bounds.Width, (float)fontSize * 1.25f);
                            args.Graphics.DrawString(s2, font, solidBrush, layoutRectangle, format);
                            vPos           += (int)((float)fontSize * 1.25f);
                            layoutRectangle = new RectangleF(bounds.Left + 90f, (float)vPos, bounds.Width, (float)(MidsContext.Character.CurrentBuild.Powers[pIndex].Slots.Length * fontSize) * 1.25f);
                            args.Graphics.DrawString(s3, font, solidBrush, layoutRectangle, format);
                            vPos += (int)((double)((float)fontSize * 1.25f) * 1.1 + (double)((float)fontSize * 1.25f * (float)(MidsContext.Character.CurrentBuild.Powers[pIndex].Slots.Length - 1)));
                        }
                    }
                }
                this._pIndex = num2;
                if (flag)
                {
                    this._endOfPage = true;
                }
                else
                {
                    this._pIndex = 0;
                }
                num = vPos;
            }
            return(num);
        }