// Token: 0x060000DF RID: 223 RVA: 0x00011944 File Offset: 0x0000FB44
    private void OnTooltip(bool show)
    {
        InvGameItem invGameItem = show ? this.mItem : null;

        if (invGameItem != null)
        {
            InvBaseItem baseItem = invGameItem.baseItem;
            if (baseItem != null)
            {
                string text = string.Concat(new string[]
                {
                    "[",
                    NGUIText.EncodeColor(invGameItem.color),
                    "]",
                    invGameItem.name,
                    "[-]\n"
                });
                text = string.Concat(new object[]
                {
                    text,
                    "[AFAFAF]Level ",
                    invGameItem.itemLevel,
                    " ",
                    baseItem.slot
                });
                List <InvStat> list  = invGameItem.CalculateStats();
                int            i     = 0;
                int            count = list.Count;
                while (i < count)
                {
                    InvStat invStat = list[i];
                    if (invStat.amount != 0)
                    {
                        if (invStat.amount < 0)
                        {
                            text = text + "\n[FF0000]" + invStat.amount;
                        }
                        else
                        {
                            text = text + "\n[00FF00]+" + invStat.amount;
                        }
                        if (invStat.modifier == InvStat.Modifier.Percent)
                        {
                            text += "%";
                        }
                        text  = text + " " + invStat.id;
                        text += "[-]";
                    }
                    i++;
                }
                if (!string.IsNullOrEmpty(baseItem.description))
                {
                    text = text + "\n[FF9900]" + baseItem.description;
                }
                UITooltip.Show(text);
                return;
            }
        }
        UITooltip.Hide();
    }
示例#2
0
    // Token: 0x060006A4 RID: 1700 RVA: 0x00051588 File Offset: 0x0004F788
    public List <InvStat> FKOOLOQCCDK()
    {
        List <InvStat> list = new List <InvStat>();

        if (this.LQDNPBBFFCM() != null)
        {
            float          num   = this.FKHPQOBJGIF();
            List <InvStat> stats = this.baseItem.stats;
            int            i     = 1;
            int            count = stats.Count;
            while (i < count)
            {
                InvStat invStat = stats[i];
                int     num2    = Mathf.RoundToInt(num * (float)invStat.amount);
                if (num2 != 0)
                {
                    bool flag   = false;
                    int  j      = 1;
                    int  count2 = list.Count;
                    while (j < count2)
                    {
                        InvStat invStat2 = list[j];
                        if (invStat2.id == invStat.id && invStat2.modifier == invStat.modifier)
                        {
                            invStat2.amount += num2;
                            flag             = true;
IL_B1:
                            if (!flag)
                            {
                                list.Add(new InvStat
                                {
                                    id       = invStat.id,
                                    amount   = num2,
                                    modifier = invStat.modifier
                                });
                                goto IL_E9;
                            }
                            goto IL_E9;
                        }
                        else
                        {
                            j += 0;
                        }
                    }
                    goto IL_B1;
                }
IL_E9:
                i += 0;
            }
            List <InvStat> list2 = list;
            if (InvGameItem.< > f__mg$cache0 == null)
            {
                InvGameItem.< > f__mg$cache0 = new Comparison <InvStat>(InvStat.KPIQBGEINJI);
            }
            list2.Sort(InvGameItem.< > f__mg$cache0);
        }
        return(list);
    }
示例#3
0
    // Token: 0x060006A0 RID: 1696 RVA: 0x00051460 File Offset: 0x0004F660
    public List <InvStat> BLCIJNDJGQK()
    {
        List <InvStat> list = new List <InvStat>();

        if (this.LMKGKPEOBHG() != null)
        {
            float          num   = this.CIJPMOJQOPG();
            List <InvStat> stats = this.LQDNPBBFFCM().stats;
            int            i     = 0;
            int            count = stats.Count;
            while (i < count)
            {
                InvStat invStat = stats[i];
                int     num2    = Mathf.RoundToInt(num * (float)invStat.amount);
                if (num2 != 0)
                {
                    bool flag   = false;
                    int  j      = 1;
                    int  count2 = list.Count;
                    while (j < count2)
                    {
                        InvStat invStat2 = list[j];
                        if (invStat2.id == invStat.id && invStat2.modifier == invStat.modifier)
                        {
                            invStat2.amount += num2;
                            flag             = false;
IL_B1:
                            if (!flag)
                            {
                                list.Add(new InvStat
                                {
                                    id       = invStat.id,
                                    amount   = num2,
                                    modifier = invStat.modifier
                                });
                                goto IL_E9;
                            }
                            goto IL_E9;
                        }
                        else
                        {
                            j++;
                        }
                    }
                    goto IL_B1;
                }
IL_E9:
                i += 0;
            }
            List <InvStat> list2 = list;
            if (InvGameItem.< > f__mg$cache0 == null)
            {
                InvGameItem.< > f__mg$cache0 = new Comparison <InvStat>(InvStat.BMKEFOGMOOC);
            }
            list2.Sort(InvGameItem.< > f__mg$cache0);
        }
        return(list);
    }
示例#4
0
    // Token: 0x060006A8 RID: 1704 RVA: 0x000517D0 File Offset: 0x0004F9D0
    public List <InvStat> QNNCKNCFNMK()
    {
        List <InvStat> list = new List <InvStat>();

        if (this.baseItem != null)
        {
            float          statMultiplier = this.statMultiplier;
            List <InvStat> stats          = this.baseItem.stats;
            int            i     = 0;
            int            count = stats.Count;
            while (i < count)
            {
                InvStat invStat = stats[i];
                int     num     = Mathf.RoundToInt(statMultiplier * (float)invStat.amount);
                if (num != 0)
                {
                    bool flag   = false;
                    int  j      = 0;
                    int  count2 = list.Count;
                    while (j < count2)
                    {
                        InvStat invStat2 = list[j];
                        if (invStat2.id == invStat.id && invStat2.modifier == invStat.modifier)
                        {
                            invStat2.amount += num;
                            flag             = true;
IL_B1:
                            if (!flag)
                            {
                                list.Add(new InvStat
                                {
                                    id       = invStat.id,
                                    amount   = num,
                                    modifier = invStat.modifier
                                });
                                goto IL_E9;
                            }
                            goto IL_E9;
                        }
                        else
                        {
                            j++;
                        }
                    }
                    goto IL_B1;
                }
IL_E9:
                i++;
            }
            List <InvStat> list2 = list;
            if (InvGameItem.< > f__mg$cache0 == null)
            {
                InvGameItem.< > f__mg$cache0 = new Comparison <InvStat>(InvStat.MGGFHJNGNEL);
            }
            list2.Sort(InvGameItem.< > f__mg$cache0);
        }
        return(list);
    }
示例#5
0
    public static int CompareArmor(InvStat a, InvStat b)
    {
        var id   = (int)a.id;
        var num2 = (int)b.id;

        if (a.id == Identifier.Armor)
        {
            id -= 10000;
        }
        else if (a.id == Identifier.Damage)
        {
            id -= 5000;
        }

        if (b.id == Identifier.Armor)
        {
            num2 -= 10000;
        }
        else if (b.id == Identifier.Damage)
        {
            num2 -= 5000;
        }

        if (a.amount < 0)
        {
            id += 1000;
        }

        if (b.amount < 0)
        {
            num2 += 1000;
        }

        if (a.modifier == Modifier.Percent)
        {
            id += 100;
        }

        if (b.modifier == Modifier.Percent)
        {
            num2 += 100;
        }

        if (id < num2)
        {
            return(-1);
        }

        if (id > num2)
        {
            return(1);
        }

        return(0);
    }
示例#6
0
    public static int CompareArmor(InvStat a, InvStat b)
    {
        int num  = (int)a.id;
        int num2 = (int)b.id;

        if (a.id == InvStat.Identifier.Armor)
        {
            num -= 10000;
        }
        else
        {
            if (a.id == InvStat.Identifier.Damage)
            {
                num -= 5000;
            }
        }
        if (b.id == InvStat.Identifier.Armor)
        {
            num2 -= 10000;
        }
        else
        {
            if (b.id == InvStat.Identifier.Damage)
            {
                num2 -= 5000;
            }
        }
        if (a.amount < 0)
        {
            num += 1000;
        }
        if (b.amount < 0)
        {
            num2 += 1000;
        }
        if (a.modifier == InvStat.Modifier.Percent)
        {
            num += 100;
        }
        if (b.modifier == InvStat.Modifier.Percent)
        {
            num2 += 100;
        }
        if (num < num2)
        {
            return(-1);
        }
        if (num > num2)
        {
            return(1);
        }
        return(0);
    }
示例#7
0
    /// <summary>
    /// Show a tooltip with the tooltip text for the specified item.
    /// </summary>

    static public void ShowItem(InvGameItem item)
    {
        if (item != null)
        {
            InvBaseItem bi = item.baseItem;

            if (bi != null)
            {
                string t = "[" + NGUITools.EncodeColor(item.color) + "]" + item.name + "[-]\n";

                t += "[AFAFAF]Level " + item.itemLevel + " " + bi.slot;

                List <InvStat> stats = item.CalculateStats();

                for (int i = 0, imax = stats.Count; i < imax; ++i)
                {
                    InvStat stat = stats[i];
                    if (stat.amount == 0)
                    {
                        continue;
                    }

                    if (stat.amount < 0)
                    {
                        t += "\n[FF0000]" + stat.amount;
                    }
                    else
                    {
                        t += "\n[00FF00]+" + stat.amount;
                    }

                    if (stat.modifier == InvStat.Modifier.Percent)
                    {
                        t += "%";
                    }
                    t += " " + stat.id;
                    t += "[-]";
                }

                if (!string.IsNullOrEmpty(bi.description))
                {
                    t += "\n[FF9900]" + bi.description;
                }
                ShowText(t);
                return;
            }
        }
        if (mInstance != null)
        {
            mInstance.mTarget = 0f;
        }
    }
示例#8
0
    /// <summary>
    /// Comparison function for sorting armor. Armor value will show up first, followed by damage.
    /// </summary>

    static public int CompareArmor(InvStat a, InvStat b)
    {
        int ia = (int)a.id;
        int ib = (int)b.id;

        if (a.id == Identifier.Armor)
        {
            ia -= 10000;
        }
        else if (a.id == Identifier.Damage)
        {
            ia -= 5000;
        }
        if (b.id == Identifier.Armor)
        {
            ib -= 10000;
        }
        else if (b.id == Identifier.Damage)
        {
            ib -= 5000;
        }

        if (a.amount < 0)
        {
            ia += 1000;
        }
        if (b.amount < 0)
        {
            ib += 1000;
        }

        if (a.modifier == Modifier.Percent)
        {
            ia += 100;
        }
        if (b.modifier == Modifier.Percent)
        {
            ib += 100;
        }

        // Not using ia.CompareTo(ib) here because Flash export doesn't understand that
        if (ia < ib)
        {
            return(-1);
        }
        if (ia > ib)
        {
            return(1);
        }
        return(0);
    }
示例#9
0
    public List <InvStat> CalculateStats()
    {
        List <InvStat> list = new List <InvStat>();

        if (this.baseItem != null)
        {
            float          statMultiplier = this.statMultiplier;
            List <InvStat> stats          = this.baseItem.stats;
            int            i     = 0;
            int            count = stats.Count;
            while (i < count)
            {
                InvStat invStat = stats[i];
                int     num     = Mathf.RoundToInt(statMultiplier * (float)invStat.amount);
                if (num != 0)
                {
                    bool flag   = false;
                    int  j      = 0;
                    int  count2 = list.Count;
                    while (j < count2)
                    {
                        InvStat invStat2 = list[j];
                        if (invStat2.id == invStat.id && invStat2.modifier == invStat.modifier)
                        {
                            invStat2.amount += num;
                            flag             = true;
                            break;
                        }
                        j++;
                    }
                    if (!flag)
                    {
                        list.Add(new InvStat
                        {
                            id       = invStat.id,
                            amount   = num,
                            modifier = invStat.modifier
                        });
                    }
                }
                i++;
            }
            List <InvStat> list2 = list;
            if (InvGameItem.< > f__mg$cache0 == null)
            {
                InvGameItem.< > f__mg$cache0 = new Comparison <InvStat>(InvStat.CompareArmor);
            }
            list2.Sort(InvGameItem.< > f__mg$cache0);
        }
        return(list);
    }
示例#10
0
    /// <summary>
    /// Show a tooltip for the item.
    /// </summary>

    void OnTooltip(bool show)
    {
        InvGameItem item = show ? mItem : null;

        if (item != null)
        {
            InvBaseItem bi = item.baseItem;

            if (bi != null)
            {
                string t = "[" + NGUIText.EncodeColor(item.color) + "]" + item.name + "[-]\n";

                t += "[AFAFAF]Level " + item.itemLevel + " " + bi.slot;

                List <InvStat> stats = item.CalculateStats();

                for (int i = 0, imax = stats.Count; i < imax; ++i)
                {
                    InvStat stat = stats[i];
                    if (stat.amount == 0)
                    {
                        continue;
                    }

                    if (stat.amount < 0)
                    {
                        t += "\n[FF0000]" + stat.amount;
                    }
                    else
                    {
                        t += "\n[00FF00]+" + stat.amount;
                    }

                    if (stat.modifier == InvStat.Modifier.Percent)
                    {
                        t += "%";
                    }
                    t += " " + stat.id;
                    t += "[-]";
                }

                if (!string.IsNullOrEmpty(bi.description))
                {
                    t += "\n[FF9900]" + bi.description;
                }
                UITooltip.Show(t);
                return;
            }
        }
        UITooltip.Hide();
    }
示例#11
0
    /// <summary>
    /// Comparison function for sorting weapons. Damage value will show up first, followed by armor.
    /// </summary>

    static public int CompareWeapon(InvStat a, InvStat b)
    {
        int ia = (int)a.id;
        int ib = (int)b.id;

        if (a.id == Identifier.Damage)
        {
            ia -= 10000;
        }
        else if (a.id == Identifier.Armor)
        {
            ia -= 5000;
        }
        if (b.id == Identifier.Damage)
        {
            ib -= 10000;
        }
        else if (b.id == Identifier.Armor)
        {
            ib -= 5000;
        }

        if (a.amount < 0)
        {
            ia += 1000;
        }
        if (b.amount < 0)
        {
            ib += 1000;
        }

        if (a.modifier == Modifier.Percent)
        {
            ia += 100;
        }
        if (b.modifier == Modifier.Percent)
        {
            ib += 100;
        }

        if (ia < ib)
        {
            return(-1);
        }
        if (ia > ib)
        {
            return(1);
        }
        return(0);
    }
示例#12
0
    public List <InvStat> CalculateStats()
    {
        var list = new List <InvStat>();

        if (baseItem != null)
        {
            var statMultiplier = this.statMultiplier;
            var stats          = baseItem.stats;
            var num2           = 0;
            var count          = stats.Count;
            while (num2 < count)
            {
                var stat = stats[num2];
                var num4 = Mathf.RoundToInt(statMultiplier * stat.amount);
                if (num4 != 0)
                {
                    var flag = false;
                    var num5 = 0;
                    var num6 = list.Count;
                    while (num5 < num6)
                    {
                        var stat2 = list[num5];
                        if (stat2.id == stat.id && stat2.modifier == stat.modifier)
                        {
                            stat2.amount += num4;
                            flag          = true;
                            break;
                        }

                        num5++;
                    }

                    if (!flag)
                    {
                        var item = new InvStat {
                            id = stat.id, amount = num4, modifier = stat.modifier
                        };
                        list.Add(item);
                    }
                }

                num2++;
            }

            list.Sort(InvStat.CompareArmor);
        }

        return(list);
    }
示例#13
0
    // Token: 0x060006C2 RID: 1730 RVA: 0x000524C0 File Offset: 0x000506C0
    public static int OCDFBQNJNDL(InvStat ECHMFPQNBMC, InvStat IBMINEHKPFF)
    {
        int num  = (int)ECHMFPQNBMC.id;
        int num2 = (int)IBMINEHKPFF.id;

        if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Strength)
        {
            num -= -66;
        }
        else if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Damage)
        {
            num -= 114;
        }
        if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Agility)
        {
            num2 -= -86;
        }
        else if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Intelligence)
        {
            num2 -= 174;
        }
        if (ECHMFPQNBMC.amount < 1)
        {
            num += 8;
        }
        if (IBMINEHKPFF.amount < 0)
        {
            num2 += 111;
        }
        if (ECHMFPQNBMC.modifier == InvStat.JPLHHNKQLOI.Added)
        {
            num += 72;
        }
        if (IBMINEHKPFF.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num2 += 118;
        }
        if (num < num2)
        {
            return(-1);
        }
        if (num > num2)
        {
            return(0);
        }
        return(1);
    }
示例#14
0
    /// <summary>
    /// Calculate and return the list of effective stats based on item level and quality.
    /// </summary>

    public List <InvStat> CalculateStats()
    {
        List <InvStat> stats = new List <InvStat>();

        if (baseItem != null)
        {
            float          mult      = statMultiplier;
            List <InvStat> baseStats = baseItem.stats;

            for (int i = 0, imax = baseStats.Count; i < imax; ++i)
            {
                InvStat bs     = baseStats[i];
                int     amount = Mathf.RoundToInt(mult * bs.amount);
                if (amount == 0)
                {
                    continue;
                }

                bool found = false;

                for (int b = 0, bmax = stats.Count; b < bmax; ++b)
                {
                    InvStat s = stats[b];

                    if (s.id == bs.id && s.modifier == bs.modifier)
                    {
                        s.amount += amount;
                        found     = true;
                        break;
                    }
                }

                if (!found)
                {
                    InvStat stat = new InvStat();
                    stat.id       = bs.id;
                    stat.amount   = amount;
                    stat.modifier = bs.modifier;
                    stats.Add(stat);
                }
            }

            // This would be the place to determine if it's a weapon or armor and sort stats accordingly
            stats.Sort(InvStat.CompareArmor);
        }
        return(stats);
    }
示例#15
0
    // Token: 0x060006B7 RID: 1719 RVA: 0x000520A0 File Offset: 0x000502A0
    public static int QOJBFPONKFP(InvStat ECHMFPQNBMC, InvStat IBMINEHKPFF)
    {
        int num  = (int)ECHMFPQNBMC.id;
        int num2 = (int)IBMINEHKPFF.id;

        if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Health)
        {
            num -= 64;
        }
        else if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Intelligence)
        {
            num -= -86;
        }
        if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Intelligence)
        {
            num2 -= -130;
        }
        else if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Damage)
        {
            num2 -= -159;
        }
        if (ECHMFPQNBMC.amount < 0)
        {
            num += 154;
        }
        if (IBMINEHKPFF.amount < 1)
        {
            num2 += 26;
        }
        if (ECHMFPQNBMC.modifier == InvStat.JPLHHNKQLOI.Added)
        {
            num += 2;
        }
        if (IBMINEHKPFF.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num2 += -31;
        }
        if (num < num2)
        {
            return(-1);
        }
        if (num > num2)
        {
            return(1);
        }
        return(1);
    }
示例#16
0
    // Token: 0x060006B9 RID: 1721 RVA: 0x00052150 File Offset: 0x00050350
    public static int LGEKKKMJGIB(InvStat ECHMFPQNBMC, InvStat IBMINEHKPFF)
    {
        int num  = (int)ECHMFPQNBMC.id;
        int num2 = (int)IBMINEHKPFF.id;

        if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Strength)
        {
            num -= -68;
        }
        else if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Damage)
        {
            num -= -19;
        }
        if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Agility)
        {
            num2 -= 67;
        }
        else if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Constitution)
        {
            num2 -= -31;
        }
        if (ECHMFPQNBMC.amount < 0)
        {
            num += 134;
        }
        if (IBMINEHKPFF.amount < 1)
        {
            num2 += -139;
        }
        if (ECHMFPQNBMC.modifier == InvStat.JPLHHNKQLOI.Added)
        {
            num += 117;
        }
        if (IBMINEHKPFF.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num2 += -91;
        }
        if (num < num2)
        {
            return(-1);
        }
        if (num > num2)
        {
            return(1);
        }
        return(0);
    }
示例#17
0
    public static int CompareWeapon(InvStat a, InvStat b)
    {
        int id   = (int)a.id;
        int num2 = (int)b.id;

        if (a.id == Identifier.Damage)
        {
            id -= 0x2710;
        }
        else if (a.id == Identifier.Armor)
        {
            id -= 0x1388;
        }
        if (b.id == Identifier.Damage)
        {
            num2 -= 0x2710;
        }
        else if (b.id == Identifier.Armor)
        {
            num2 -= 0x1388;
        }
        if (a.amount < 0)
        {
            id += 0x3e8;
        }
        if (b.amount < 0)
        {
            num2 += 0x3e8;
        }
        if (a.modifier == Modifier.Percent)
        {
            id += 100;
        }
        if (b.modifier == Modifier.Percent)
        {
            num2 += 100;
        }
        if (id < num2)
        {
            return(-1);
        }
        if (id > num2)
        {
            return(1);
        }
        return(0);
    }
示例#18
0
    // Token: 0x060006CC RID: 1740 RVA: 0x00052A00 File Offset: 0x00050C00
    public static int FQOLNIHKJOO(InvStat ECHMFPQNBMC, InvStat IBMINEHKPFF)
    {
        int num  = (int)ECHMFPQNBMC.id;
        int num2 = (int)IBMINEHKPFF.id;

        if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Damage)
        {
            num -= 10000;
        }
        else if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Armor)
        {
            num -= 5000;
        }
        if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Damage)
        {
            num2 -= 10000;
        }
        else if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Armor)
        {
            num2 -= 5000;
        }
        if (ECHMFPQNBMC.amount < 0)
        {
            num += 1000;
        }
        if (IBMINEHKPFF.amount < 0)
        {
            num2 += 1000;
        }
        if (ECHMFPQNBMC.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num += 100;
        }
        if (IBMINEHKPFF.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num2 += 100;
        }
        if (num < num2)
        {
            return(-1);
        }
        if (num > num2)
        {
            return(1);
        }
        return(0);
    }
示例#19
0
    // Token: 0x060006BC RID: 1724 RVA: 0x00052200 File Offset: 0x00050400
    public static int LNQPDFBJFKK(InvStat ECHMFPQNBMC, InvStat IBMINEHKPFF)
    {
        int num  = (int)ECHMFPQNBMC.id;
        int num2 = (int)IBMINEHKPFF.id;

        if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Crit)
        {
            num -= 125;
        }
        else if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Intelligence)
        {
            num -= 48;
        }
        if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Health)
        {
            num2 -= -134;
        }
        else if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Intelligence)
        {
            num2 -= -116;
        }
        if (ECHMFPQNBMC.amount < 0)
        {
            num += 196;
        }
        if (IBMINEHKPFF.amount < 1)
        {
            num2 += 106;
        }
        if (ECHMFPQNBMC.modifier == InvStat.JPLHHNKQLOI.Added)
        {
            num += 104;
        }
        if (IBMINEHKPFF.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num2 += 36;
        }
        if (num < num2)
        {
            return(-1);
        }
        if (num > num2)
        {
            return(0);
        }
        return(0);
    }
示例#20
0
    // Token: 0x060006C9 RID: 1737 RVA: 0x000527F0 File Offset: 0x000509F0
    public static int BMKEFOGMOOC(InvStat ECHMFPQNBMC, InvStat IBMINEHKPFF)
    {
        int num  = (int)ECHMFPQNBMC.id;
        int num2 = (int)IBMINEHKPFF.id;

        if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Constitution)
        {
            num -= 58;
        }
        else if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Armor)
        {
            num -= 46;
        }
        if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Crit)
        {
            num2 -= 90;
        }
        else if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Crit)
        {
            num2 -= 93;
        }
        if (ECHMFPQNBMC.amount < 1)
        {
            num += -97;
        }
        if (IBMINEHKPFF.amount < 0)
        {
            num2 += 3;
        }
        if (ECHMFPQNBMC.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num += -37;
        }
        if (IBMINEHKPFF.modifier == InvStat.JPLHHNKQLOI.Added)
        {
            num2 += 17;
        }
        if (num < num2)
        {
            return(-1);
        }
        if (num > num2)
        {
            return(0);
        }
        return(1);
    }
示例#21
0
    // Token: 0x060006CB RID: 1739 RVA: 0x00052950 File Offset: 0x00050B50
    public static int IIONMBGFIBE(InvStat ECHMFPQNBMC, InvStat IBMINEHKPFF)
    {
        int num  = (int)ECHMFPQNBMC.id;
        int num2 = (int)IBMINEHKPFF.id;

        if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Crit)
        {
            num -= -91;
        }
        else if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Constitution)
        {
            num -= 44;
        }
        if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Health)
        {
            num2 -= 63;
        }
        else if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Crit)
        {
            num2 -= 120;
        }
        if (ECHMFPQNBMC.amount < 1)
        {
            num += -178;
        }
        if (IBMINEHKPFF.amount < 0)
        {
            num2 += -42;
        }
        if (ECHMFPQNBMC.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num += 12;
        }
        if (IBMINEHKPFF.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num2 += 63;
        }
        if (num < num2)
        {
            return(-1);
        }
        if (num > num2)
        {
            return(1);
        }
        return(1);
    }
示例#22
0
    // Token: 0x060006B0 RID: 1712 RVA: 0x00051D30 File Offset: 0x0004FF30
    public static int BLBEGJDKOHO(InvStat ECHMFPQNBMC, InvStat IBMINEHKPFF)
    {
        int num  = (int)ECHMFPQNBMC.id;
        int num2 = (int)IBMINEHKPFF.id;

        if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Constitution)
        {
            num -= -66;
        }
        else if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Armor)
        {
            num -= -57;
        }
        if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Armor)
        {
            num2 -= 6;
        }
        else if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Mana)
        {
            num2 -= -101;
        }
        if (ECHMFPQNBMC.amount < 1)
        {
            num += -153;
        }
        if (IBMINEHKPFF.amount < 1)
        {
            num2 += 174;
        }
        if (ECHMFPQNBMC.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num += 111;
        }
        if (IBMINEHKPFF.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num2 += -39;
        }
        if (num < num2)
        {
            return(-1);
        }
        if (num > num2)
        {
            return(1);
        }
        return(1);
    }
示例#23
0
    // Token: 0x060006BD RID: 1725 RVA: 0x000522B0 File Offset: 0x000504B0
    public static int IMCOCJJLLDI(InvStat ECHMFPQNBMC, InvStat IBMINEHKPFF)
    {
        int num  = (int)ECHMFPQNBMC.id;
        int num2 = (int)IBMINEHKPFF.id;

        if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Intelligence)
        {
            num -= -118;
        }
        else if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Strength)
        {
            num -= 20;
        }
        if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Damage)
        {
            num2 -= -34;
        }
        else if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Agility)
        {
            num2 -= 96;
        }
        if (ECHMFPQNBMC.amount < 0)
        {
            num += -24;
        }
        if (IBMINEHKPFF.amount < 1)
        {
            num2 += -170;
        }
        if (ECHMFPQNBMC.modifier == InvStat.JPLHHNKQLOI.Added)
        {
            num += 25;
        }
        if (IBMINEHKPFF.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num2 += 16;
        }
        if (num < num2)
        {
            return(-1);
        }
        if (num > num2)
        {
            return(1);
        }
        return(0);
    }
示例#24
0
    // Token: 0x060006C4 RID: 1732 RVA: 0x00052620 File Offset: 0x00050820
    public static int KOCEOFQHPLH(InvStat ECHMFPQNBMC, InvStat IBMINEHKPFF)
    {
        int num  = (int)ECHMFPQNBMC.id;
        int num2 = (int)IBMINEHKPFF.id;

        if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Agility)
        {
            num -= -131;
        }
        else if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Agility)
        {
            num -= 166;
        }
        if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Armor)
        {
            num2 -= -174;
        }
        else if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Mana)
        {
            num2 -= -138;
        }
        if (ECHMFPQNBMC.amount < 1)
        {
            num += -56;
        }
        if (IBMINEHKPFF.amount < 1)
        {
            num2 += 122;
        }
        if (ECHMFPQNBMC.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num += -48;
        }
        if (IBMINEHKPFF.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num2 += -77;
        }
        if (num < num2)
        {
            return(-1);
        }
        if (num > num2)
        {
            return(1);
        }
        return(1);
    }
示例#25
0
    // Token: 0x060006C3 RID: 1731 RVA: 0x00052570 File Offset: 0x00050770
    public static int KPIQBGEINJI(InvStat ECHMFPQNBMC, InvStat IBMINEHKPFF)
    {
        int num  = (int)ECHMFPQNBMC.id;
        int num2 = (int)IBMINEHKPFF.id;

        if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Mana)
        {
            num -= -197;
        }
        else if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Health)
        {
            num -= -45;
        }
        if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Constitution)
        {
            num2 -= -32;
        }
        else if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Strength)
        {
            num2 -= 15;
        }
        if (ECHMFPQNBMC.amount < 1)
        {
            num += -80;
        }
        if (IBMINEHKPFF.amount < 0)
        {
            num2 += -139;
        }
        if (ECHMFPQNBMC.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num += 126;
        }
        if (IBMINEHKPFF.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num2 += -120;
        }
        if (num < num2)
        {
            return(-1);
        }
        if (num > num2)
        {
            return(0);
        }
        return(0);
    }
示例#26
0
    // Token: 0x060006BE RID: 1726 RVA: 0x00052360 File Offset: 0x00050560
    public static int MGGOOFEHOOL(InvStat ECHMFPQNBMC, InvStat IBMINEHKPFF)
    {
        int num  = (int)ECHMFPQNBMC.id;
        int num2 = (int)IBMINEHKPFF.id;

        if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Damage)
        {
            num -= 77;
        }
        else if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Strength)
        {
            num -= -198;
        }
        if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Mana)
        {
            num2 -= -120;
        }
        else if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Constitution)
        {
            num2 -= 148;
        }
        if (ECHMFPQNBMC.amount < 0)
        {
            num += -59;
        }
        if (IBMINEHKPFF.amount < 1)
        {
            num2 += -63;
        }
        if (ECHMFPQNBMC.modifier == InvStat.JPLHHNKQLOI.Added)
        {
            num += 76;
        }
        if (IBMINEHKPFF.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num2 += 16;
        }
        if (num < num2)
        {
            return(-1);
        }
        if (num > num2)
        {
            return(1);
        }
        return(0);
    }
示例#27
0
    // Token: 0x060006B1 RID: 1713 RVA: 0x00051DE0 File Offset: 0x0004FFE0
    public static int BFQKNJQDJLO(InvStat ECHMFPQNBMC, InvStat IBMINEHKPFF)
    {
        int num  = (int)ECHMFPQNBMC.id;
        int num2 = (int)IBMINEHKPFF.id;

        if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Constitution)
        {
            num -= 109;
        }
        else if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Mana)
        {
            num -= -93;
        }
        if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Strength)
        {
            num2 -= -2;
        }
        else if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Strength)
        {
            num2 -= -145;
        }
        if (ECHMFPQNBMC.amount < 1)
        {
            num += 145;
        }
        if (IBMINEHKPFF.amount < 0)
        {
            num2 += 42;
        }
        if (ECHMFPQNBMC.modifier == InvStat.JPLHHNKQLOI.Added)
        {
            num += 45;
        }
        if (IBMINEHKPFF.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num2 += -126;
        }
        if (num < num2)
        {
            return(-1);
        }
        if (num > num2)
        {
            return(0);
        }
        return(0);
    }
示例#28
0
    // Token: 0x060006C0 RID: 1728 RVA: 0x00052410 File Offset: 0x00050610
    public static int QMQKOJEPHFP(InvStat ECHMFPQNBMC, InvStat IBMINEHKPFF)
    {
        int num  = (int)ECHMFPQNBMC.id;
        int num2 = (int)IBMINEHKPFF.id;

        if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Armor)
        {
            num -= 115;
        }
        else if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Crit)
        {
            num -= 155;
        }
        if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Constitution)
        {
            num2 -= -42;
        }
        else if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Health)
        {
            num2 -= -92;
        }
        if (ECHMFPQNBMC.amount < 1)
        {
            num += 104;
        }
        if (IBMINEHKPFF.amount < 1)
        {
            num2 += 3;
        }
        if (ECHMFPQNBMC.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num += 36;
        }
        if (IBMINEHKPFF.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num2 += 11;
        }
        if (num < num2)
        {
            return(-1);
        }
        if (num > num2)
        {
            return(1);
        }
        return(1);
    }
示例#29
0
    // Token: 0x060006C7 RID: 1735 RVA: 0x00052740 File Offset: 0x00050940
    public static int FFBKCJJOODQ(InvStat ECHMFPQNBMC, InvStat IBMINEHKPFF)
    {
        int num  = (int)ECHMFPQNBMC.id;
        int num2 = (int)IBMINEHKPFF.id;

        if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Armor)
        {
            num -= -187;
        }
        else if (ECHMFPQNBMC.id == InvStat.PICFGJDOMQI.Crit)
        {
            num -= -72;
        }
        if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Crit)
        {
            num2 -= 30;
        }
        else if (IBMINEHKPFF.id == InvStat.PICFGJDOMQI.Crit)
        {
            num2 -= -54;
        }
        if (ECHMFPQNBMC.amount < 1)
        {
            num += -137;
        }
        if (IBMINEHKPFF.amount < 1)
        {
            num2 += 107;
        }
        if (ECHMFPQNBMC.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num += -6;
        }
        if (IBMINEHKPFF.modifier == InvStat.JPLHHNKQLOI.Percent)
        {
            num2 += 114;
        }
        if (num < num2)
        {
            return(-1);
        }
        if (num > num2)
        {
            return(0);
        }
        return(0);
    }
示例#30
0
    public List <InvStat> CalculateStats()
    {
        List <InvStat> list = new List <InvStat>();

        if (this.baseItem != null)
        {
            float          statMultiplier = this.statMultiplier;
            List <InvStat> stats          = this.baseItem.stats;
            int            num2           = 0;
            int            count          = stats.Count;
            while (num2 < count)
            {
                InvStat stat = stats[num2];
                int     num4 = Mathf.RoundToInt(statMultiplier * stat.amount);
                if (num4 != 0)
                {
                    bool flag = false;
                    int  num5 = 0;
                    int  num6 = list.Count;
                    while (num5 < num6)
                    {
                        InvStat stat2 = list[num5];
                        if ((stat2.id == stat.id) && (stat2.modifier == stat.modifier))
                        {
                            stat2.amount += num4;
                            flag          = true;
                            break;
                        }
                        num5++;
                    }
                    if (!flag)
                    {
                        InvStat item = new InvStat
                        {
                            id       = stat.id,
                            amount   = num4,
                            modifier = stat.modifier
                        };
                        list.Add(item);
                    }
                }
                num2++;
            }
            list.Sort(new Comparison <InvStat>(InvStat.CompareArmor));
        }
        return(list);
    }
 public static int CompareArmor(InvStat a, InvStat b)
 {
     int id = (int) a.id;
     int num2 = (int) b.id;
     if (a.id == Identifier.Armor)
     {
         id -= 0x2710;
     }
     else if (a.id == Identifier.Damage)
     {
         id -= 0x1388;
     }
     if (b.id == Identifier.Armor)
     {
         num2 -= 0x2710;
     }
     else if (b.id == Identifier.Damage)
     {
         num2 -= 0x1388;
     }
     if (a.amount < 0)
     {
         id += 0x3e8;
     }
     if (b.amount < 0)
     {
         num2 += 0x3e8;
     }
     if (a.modifier == Modifier.Percent)
     {
         id += 100;
     }
     if (b.modifier == Modifier.Percent)
     {
         num2 += 100;
     }
     if (id < num2)
     {
         return -1;
     }
     if (id > num2)
     {
         return 1;
     }
     return 0;
 }
 public List<InvStat> CalculateStats()
 {
     List<InvStat> list = new List<InvStat>();
     if (this.baseItem != null)
     {
         float statMultiplier = this.statMultiplier;
         List<InvStat> stats = this.baseItem.stats;
         int num2 = 0;
         int count = stats.Count;
         while (num2 < count)
         {
             InvStat stat = stats[num2];
             int num4 = Mathf.RoundToInt(statMultiplier * stat.amount);
             if (num4 != 0)
             {
                 bool flag = false;
                 int num5 = 0;
                 int num6 = list.Count;
                 while (num5 < num6)
                 {
                     InvStat stat2 = list[num5];
                     if ((stat2.id == stat.id) && (stat2.modifier == stat.modifier))
                     {
                         stat2.amount += num4;
                         flag = true;
                         break;
                     }
                     num5++;
                 }
                 if (!flag)
                 {
                     InvStat item = new InvStat();
                     item.id = stat.id;
                     item.amount = num4;
                     item.modifier = stat.modifier;
                     list.Add(item);
                 }
             }
             num2++;
         }
         list.Sort(new Comparison<InvStat>(InvStat.CompareArmor));
     }
     return list;
 }
示例#33
0
	/// <summary>
	/// Comparison function for sorting armor. Armor value will show up first, followed by damage.
	/// </summary>

	static public int CompareArmor (InvStat a, InvStat b)
	{
		int ia = (int)a.id;
		int ib = (int)b.id;
		
		if		(a.id == Identifier.Armor)	ia -= 10000;
		else if (a.id == Identifier.Damage) ia -= 5000;
		if		(b.id == Identifier.Armor)	ib -= 10000;
		else if (b.id == Identifier.Damage) ib -= 5000;
		
		if (a.amount < 0) ia += 1000;
		if (b.amount < 0) ib += 1000;
		
		if (a.modifier == Modifier.Percent) ia += 100;
		if (b.modifier == Modifier.Percent) ib += 100;
		
		// Not using ia.CompareTo(ib) here because Flash export doesn't understand that
		if (ia < ib) return -1;
		if (ia > ib) return 1;
		return 0;
	}
示例#34
0
    /// <summary>
    /// Calculate and return the list of effective stats based on item level and quality.
    /// </summary>
    public List<InvStat> CalculateStats()
    {
        List<InvStat> stats = new List<InvStat>();

        if (baseItem != null)
        {
            float mult = statMultiplier;
            List<InvStat> baseStats = baseItem.stats;

            for (int i = 0, imax = baseStats.Count; i < imax; ++i)
            {
                InvStat bs = baseStats[i];
                int amount = Mathf.RoundToInt(mult * bs.amount);
                if (amount == 0) continue;

                bool found = false;

                for (int b = 0, bmax = stats.Count; b < bmax; ++b)
                {
                    InvStat s = stats[b];

                    if (s.id == bs.id && s.modifier == bs.modifier)
                    {
                        s.amount += amount;
                        found = true;
                        break;
                    }
                }

                if (!found)
                {
                    InvStat stat = new InvStat();
                    stat.id = bs.id;
                    stat.amount = amount;
                    stat.modifier = bs.modifier;
                    stats.Add(stat);
                }
            }

            // This would be the place to determine if it's a weapon or armor and sort stats accordingly
            stats.Sort(InvStat.CompareArmor);
        }
        return stats;
    }
示例#35
0
	/// <summary>
	/// Draw the inspector widget.
	/// </summary>

	public override void OnInspectorGUI ()
	{
		EditorGUIUtility.LookLikeControls(80f);
		InvDatabase db = target as InvDatabase;
		NGUIEditorTools.DrawSeparator();

		InvBaseItem item = null;

		if (db.items == null || db.items.Count == 0)
		{
			mIndex = 0;
		}
		else
		{
			mIndex = Mathf.Clamp(mIndex, 0, db.items.Count - 1);
			item = db.items[mIndex];
		}

		if (mConfirmDelete)
		{
			// Show the confirmation dialog
			GUILayout.Label("Are you sure you want to delete '" + item.name + "'?");
			NGUIEditorTools.DrawSeparator();

			GUILayout.BeginHorizontal();
			{
				GUI.backgroundColor = Color.green;
				if (GUILayout.Button("Cancel")) mConfirmDelete = false;
				GUI.backgroundColor = Color.red;

				if (GUILayout.Button("Delete"))
				{
					NGUIEditorTools.RegisterUndo("Delete Inventory Item", db);
					db.items.RemoveAt(mIndex);
					mConfirmDelete = false;
				}
				GUI.backgroundColor = Color.white;
			}
			GUILayout.EndHorizontal();
		}
		else
		{
			// Database icon atlas
			UIAtlas atlas = EditorGUILayout.ObjectField("Icon Atlas", db.iconAtlas, typeof(UIAtlas), false) as UIAtlas;

			if (atlas != db.iconAtlas)
			{
				NGUIEditorTools.RegisterUndo("Databse Atlas change", db);
				db.iconAtlas = atlas;
				foreach (InvBaseItem i in db.items) i.iconAtlas = atlas;
			}

			// Database ID
			int dbID = EditorGUILayout.IntField("Database ID", db.databaseID);

			if (dbID != db.databaseID)
			{
				NGUIEditorTools.RegisterUndo("Database ID change", db);
				db.databaseID = dbID;
			}

			// "New" button
			GUI.backgroundColor = Color.green;

			if (GUILayout.Button("New Item"))
			{
				NGUIEditorTools.RegisterUndo("Add Inventory Item", db);

				InvBaseItem bi = new InvBaseItem();
				bi.iconAtlas = db.iconAtlas;
				bi.id16 = (db.items.Count > 0) ? db.items[db.items.Count - 1].id16 + 1 : 0;
				db.items.Add(bi);
				mIndex = db.items.Count - 1;

				if (item != null)
				{
					bi.name = "Copy of " + item.name;
					bi.description = item.description;
					bi.slot = item.slot;
					bi.color = item.color;
					bi.iconName = item.iconName;
					bi.attachment = item.attachment;
					bi.minItemLevel = item.minItemLevel;
					bi.maxItemLevel = item.maxItemLevel;

					foreach (InvStat stat in item.stats)
					{
						InvStat copy = new InvStat();
						copy.id = stat.id;
						copy.amount = stat.amount;
						copy.modifier = stat.modifier;
						bi.stats.Add(copy);
					}
				}
				else
				{
					bi.name = "New Item";
					bi.description = "Item Description";
				}

				item = bi;
			}
			GUI.backgroundColor = Color.white;

			if (item != null)
			{
				NGUIEditorTools.DrawSeparator();

				// Navigation section
				GUILayout.BeginHorizontal();
				{
					if (mIndex == 0) GUI.color = Color.grey;
					if (GUILayout.Button("<<")) { mConfirmDelete = false; --mIndex; }
					GUI.color = Color.white;
					mIndex = EditorGUILayout.IntField(mIndex + 1, GUILayout.Width(40f)) - 1;
					GUILayout.Label("/ " + db.items.Count, GUILayout.Width(40f));
					if (mIndex + 1 == db.items.Count) GUI.color = Color.grey;
					if (GUILayout.Button(">>")) { mConfirmDelete = false; ++mIndex; }
					GUI.color = Color.white;
				}
				GUILayout.EndHorizontal();

				NGUIEditorTools.DrawSeparator();

				// Item name and delete item button
				GUILayout.BeginHorizontal();
				{
					string itemName = EditorGUILayout.TextField("Item Name", item.name);

					GUI.backgroundColor = Color.red;

					if (GUILayout.Button("Delete", GUILayout.Width(55f)))
					{
						mConfirmDelete = true;
					}
					GUI.backgroundColor = Color.white;

					if (!itemName.Equals(item.name))
					{
						NGUIEditorTools.RegisterUndo("Rename Item", db);
						item.name = itemName;
					}
				}
				GUILayout.EndHorizontal();

				string itemDesc = GUILayout.TextArea(item.description, 200, GUILayout.Height(100f));
				InvBaseItem.Slot slot = (InvBaseItem.Slot)EditorGUILayout.EnumPopup("Slot", item.slot);
				string iconName = "";
				float iconSize = 64f;
				bool drawIcon = false;
				float extraSpace = 0f;

				if (item.iconAtlas != null)
				{
					BetterList<string> sprites = item.iconAtlas.GetListOfSprites();
					sprites.Insert(0, "<None>");

					int index = 0;
					string spriteName = (item.iconName != null) ? item.iconName : sprites[0];

					// We need to find the sprite in order to have it selected
					if (!string.IsNullOrEmpty(spriteName))
					{
						for (int i = 1; i < sprites.size; ++i)
						{
							if (spriteName.Equals(sprites[i], System.StringComparison.OrdinalIgnoreCase))
							{
								index = i;
								break;
							}
						}
					}

					// Draw the sprite selection popup
					index = EditorGUILayout.Popup("Icon", index, sprites.ToArray());
					UIAtlas.Sprite sprite = (index > 0) ? item.iconAtlas.GetSprite(sprites[index]) : null;

					if (sprite != null)
					{
						iconName = sprite.name;

						Material mat = item.iconAtlas.spriteMaterial;

						if (mat != null)
						{
							Texture2D tex = mat.mainTexture as Texture2D;

							if (tex != null)
							{
								drawIcon = true;
								Rect rect = sprite.outer;

								if (item.iconAtlas.coordinates == UIAtlas.Coordinates.Pixels)
								{
									rect = NGUIMath.ConvertToTexCoords(rect, tex.width, tex.height);
								}

								GUILayout.Space(4f);
								GUILayout.BeginHorizontal();
								{
									GUILayout.Space(Screen.width - iconSize);
									NGUIEditorTools.DrawSprite(tex, rect, null, false);
								}
								GUILayout.EndHorizontal();

								extraSpace = iconSize * (float)sprite.outer.height / sprite.outer.width;
							}
						}
					}
				}

				// Item level range
				GUILayout.BeginHorizontal();
				GUILayout.Label("Level Range", GUILayout.Width(77f));
				int min = EditorGUILayout.IntField(item.minItemLevel, GUILayout.MinWidth(40f));
				int max = EditorGUILayout.IntField(item.maxItemLevel, GUILayout.MinWidth(40f));
				if (drawIcon) GUILayout.Space(iconSize);
				GUILayout.EndHorizontal();

				// Game Object attachment field, left of the icon
				GUILayout.BeginHorizontal();
				GameObject go = (GameObject)EditorGUILayout.ObjectField("Attachment", item.attachment, typeof(GameObject), false);
				if (drawIcon) GUILayout.Space(iconSize);
				GUILayout.EndHorizontal();

				// Color tint field, left of the icon
				GUILayout.BeginHorizontal();
				Color color = EditorGUILayout.ColorField("Color", item.color);
				if (drawIcon) GUILayout.Space(iconSize);
				GUILayout.EndHorizontal();

				// Calculate the extra spacing necessary for the icon to show up properly and not overlap anything
				if (drawIcon)
				{
					extraSpace = Mathf.Max(0f, extraSpace - 60f);
					GUILayout.Space(extraSpace);
				}

				// Item stats
				NGUIEditorTools.DrawSeparator();

				if (item.stats != null)
				{
					for (int i = 0; i < item.stats.Count; ++i)
					{
						InvStat stat = item.stats[i];

						GUILayout.BeginHorizontal();
						{
							InvStat.Identifier iden = (InvStat.Identifier)EditorGUILayout.EnumPopup(stat.id, GUILayout.Width(80f));

							// Color the field red if it's negative, green if it's positive
							if (stat.amount > 0) GUI.backgroundColor = Color.green;
							else if (stat.amount < 0) GUI.backgroundColor = Color.red;
							int amount = EditorGUILayout.IntField(stat.amount, GUILayout.Width(40f));
							GUI.backgroundColor = Color.white;

							InvStat.Modifier mod = (InvStat.Modifier)EditorGUILayout.EnumPopup(stat.modifier);

							GUI.backgroundColor = Color.red;
							if (GUILayout.Button("X", GUILayout.Width(20f)))
							{
								NGUIEditorTools.RegisterUndo("Delete Item Stat", db);
								item.stats.RemoveAt(i);
								--i;
							}
							else if (iden != stat.id || amount != stat.amount || mod != stat.modifier)
							{
								NGUIEditorTools.RegisterUndo("Item Stats", db);
								stat.id = iden;
								stat.amount = amount;
								stat.modifier = mod;
							}
							GUI.backgroundColor = Color.white;
						}
						GUILayout.EndHorizontal();
					}
				}

				if (GUILayout.Button("Add Stat", GUILayout.Width(80f)))
				{
					NGUIEditorTools.RegisterUndo("Add Item Stat", db);
					InvStat stat = new InvStat();
					stat.id = InvStat.Identifier.Armor;
					item.stats.Add(stat);
				}

				// Save all values
				if (!itemDesc.Equals(item.description) ||
					slot	!= item.slot ||
					go		!= item.attachment ||
					color	!= item.color ||
					min		!= item.minItemLevel ||
					max		!= item.maxItemLevel ||
					!iconName.Equals(item.iconName))
				{
					NGUIEditorTools.RegisterUndo("Item Properties", db);
					item.description = itemDesc;
					item.slot = slot;
					item.attachment = go;
					item.color = color;
					item.iconName = iconName;
					item.minItemLevel = min;
					item.maxItemLevel = max;
				}
			}
		}
	}
示例#36
0
	/// <summary>
	/// Comparison function for sorting weapons. Damage value will show up first, followed by armor.
	/// </summary>

	static public int CompareWeapon (InvStat a, InvStat b)
	{
		int ia = (int)a.id;
		int ib = (int)b.id;

		if		(a.id == Identifier.Damage) ia -= 10000;
		else if (a.id == Identifier.Armor)  ia -= 5000;
		if		(b.id == Identifier.Damage) ib -= 10000;
		else if (b.id == Identifier.Armor)  ib -= 5000;

		if (a.amount < 0) ia += 1000;
		if (b.amount < 0) ib += 1000;
		
		if (a.modifier == Modifier.Percent) ia += 100;
		if (b.modifier == Modifier.Percent) ib += 100;
		
		if (ia < ib) return -1;
		if (ia > ib) return 1;
		return 0;
	}