예제 #1
0
        //private void TestComplexRole(IRole iRole, RoleType roleType, RoleFlag rf, bool isLeader)
        //{
        //    ComplexRole cr = iRole as ComplexRole;
        //    Assert.IsNotNull(cr);
        //    Assert.AreEqual(isLeader, cr.Leader);
        //    Assert.AreEqual(roleType, cr.Type);
        //    Assert.AreEqual(rf, cr.Flag);
        //}

        //private static void TestMinion(Creature c, bool HasRole, RoleType? roleType)
        //{
        //    Minion cr = (Minion)c.Role;
        //    Assert.AreEqual(HasRole, cr.HasRole);
        //    if (roleType != null)
        //    {
        //        Assert.IsTrue(cr.HasRole);
        //        Assert.AreEqual(roleType, cr.Type);
        //    }
        //    else
        //    {
        //        Assert.IsFalse(cr.HasRole);
        //    }
        //}

        private void TestSizeOriginType(Creature c, CreatureSize creatureSize, CreatureOrigin creatureOrigin, CreatureType creatureType, int level, string keyword)
        {
            Assert.AreEqual(creatureSize, c.Size);
            Assert.AreEqual(creatureOrigin, c.Origin);
            Assert.AreEqual(creatureType, c.Type);
            Assert.AreEqual(level, c.Level);
            Assert.AreEqual(CleanForCompare(keyword), CleanForCompare(c.Keywords));
        }
예제 #2
0
        public bool AllowItem(object obj, out Difficulty diff)
        {
            diff = Difficulty.Moderate;

            if (obj is ICreature)
            {
                ICreature c = obj as ICreature;

                #region Creature

                bool outlier = false;
                diff = AI.GetThreatDifficulty(c.Level, fPartyLevel);
                if ((diff == Difficulty.Trivial) || (diff == Difficulty.Extreme))
                {
                    outlier = true;
                }

                if (outlier && FilterLevelAppropriateToggle.Checked)
                {
                    return(false);
                }

                if (FilterNameToggle.Checked && (fNameTokens != null))
                {
                    string name = c.Name.ToLower();

                    foreach (string token in fNameTokens)
                    {
                        if (!name.Contains(token))
                        {
                            return(false);
                        }
                    }
                }

                if (FilterCatToggle.Checked && (fCatTokens != null))
                {
                    string cat = c.Category.ToLower();

                    foreach (string token in fCatTokens)
                    {
                        if (!cat.Contains(token))
                        {
                            return(false);
                        }
                    }
                }

                if (FilterRoleToggle.Checked)
                {
                    RoleType role = (RoleType)FilterRoleBox.SelectedItem;

                    if (c.Role is ComplexRole)
                    {
                        ComplexRole cr = c.Role as ComplexRole;
                        if (cr.Type != role)
                        {
                            return(false);
                        }
                    }

                    if (c.Role is Minion)
                    {
                        Minion m = c.Role as Minion;
                        if ((!m.HasRole) || (m.Type != role))
                        {
                            return(false);
                        }
                    }
                }

                if (FilterModToggle.Checked)
                {
                    RoleFlag flag   = RoleFlag.Standard;
                    bool     minion = false;

                    if (FilterModBox.Text == "Standard")
                    {
                    }

                    if (FilterModBox.Text == "Elite")
                    {
                        flag = RoleFlag.Elite;
                    }

                    if (FilterModBox.Text == "Solo")
                    {
                        flag = RoleFlag.Solo;
                    }

                    if (FilterModBox.Text == "Minion")
                    {
                        minion = true;
                    }

                    ComplexRole cr = c.Role as ComplexRole;
                    if (cr != null)
                    {
                        if (minion)
                        {
                            return(false);
                        }

                        if (flag != cr.Flag)
                        {
                            return(false);
                        }
                    }

                    Minion m = c.Role as Minion;
                    if (m != null)
                    {
                        if (!minion)
                        {
                            return(false);
                        }
                    }
                }

                if (FilterOriginToggle.Checked)
                {
                    CreatureOrigin origin = (CreatureOrigin)FilterOriginBox.SelectedItem;

                    if (c.Origin != origin)
                    {
                        return(false);
                    }
                }

                if (FilterTypeToggle.Checked)
                {
                    CreatureType type = (CreatureType)FilterTypeBox.SelectedItem;

                    if (c.Type != type)
                    {
                        return(false);
                    }
                }

                if (FilterKeywordToggle.Checked && (fKeyTokens != null))
                {
                    string keywords = (c.Keywords != null) ? c.Keywords.ToLower() : "";

                    foreach (string token in fKeyTokens)
                    {
                        if (!keywords.Contains(token))
                        {
                            return(false);
                        }
                    }
                }

                if (FilterLevelToggle.Checked)
                {
                    if ((c.Level < LevelFromBox.Value) || (c.Level > LevelToBox.Value))
                    {
                        return(false);
                    }
                }

                if (FilterSourceToggle.Checked)
                {
                    Creature creature = c as Creature;
                    if (creature == null)
                    {
                        return(false);
                    }

                    Library lib = FilterSourceBox.SelectedItem as Library;
                    if (!lib.Creatures.Contains(creature))
                    {
                        return(false);
                    }
                }

                #endregion

                return(true);
            }

            if (obj is CreatureTemplate)
            {
                CreatureTemplate ct = obj as CreatureTemplate;

                #region Template

                if (FilterNameToggle.Checked && (fNameTokens != null))
                {
                    string name = ct.Name.ToLower();

                    foreach (string token in fNameTokens)
                    {
                        if (!name.Contains(token))
                        {
                            return(false);
                        }
                    }
                }

                if (FilterCatToggle.Checked && (fCatTokens != null))
                {
                    // Ignore category for templates
                }

                if (FilterRoleToggle.Checked)
                {
                    // Match on role
                    RoleType role = (RoleType)FilterRoleBox.SelectedItem;
                    if (ct.Role != role)
                    {
                        return(false);
                    }
                }

                if (FilterOriginToggle.Checked)
                {
                    // Ignore origin for templates
                }

                if (FilterTypeToggle.Checked)
                {
                    // Ignore type for templates
                }

                if (FilterKeywordToggle.Checked && (fKeyTokens != null))
                {
                    // Ignore keywords for templates
                }

                if (FilterSourceToggle.Checked)
                {
                    Library lib = FilterSourceBox.SelectedItem as Library;
                    if (!lib.Templates.Contains(ct))
                    {
                        return(false);
                    }
                }

                return(true);
            }

            if (obj is NPC)
            {
                NPC npc = obj as NPC;

                bool outlier = false;
                diff = AI.GetThreatDifficulty(npc.Level, fPartyLevel);
                if ((diff == Difficulty.Trivial) || (diff == Difficulty.Extreme))
                {
                    outlier = true;
                }

                if (outlier && FilterLevelAppropriateToggle.Checked)
                {
                    return(false);
                }

                if (FilterNameToggle.Checked && (fNameTokens != null))
                {
                    string name = npc.Name.ToLower();

                    foreach (string token in fNameTokens)
                    {
                        if (!name.Contains(token))
                        {
                            return(false);
                        }
                    }
                }

                if (FilterCatToggle.Checked && (fCatTokens != null))
                {
                    string cat = npc.Category.ToLower();

                    foreach (string token in fCatTokens)
                    {
                        if (!cat.Contains(token))
                        {
                            return(false);
                        }
                    }
                }

                if (FilterRoleToggle.Checked)
                {
                    // Match on role
                    RoleType role = (RoleType)FilterRoleBox.SelectedItem;

                    if (npc.Role is ComplexRole)
                    {
                        ComplexRole cr = npc.Role as ComplexRole;
                        if (cr.Type != role)
                        {
                            return(false);
                        }
                    }

                    if (npc.Role is Minion)
                    {
                        Minion m = npc.Role as Minion;
                        if ((!m.HasRole) || (m.Type != role))
                        {
                            return(false);
                        }
                    }
                }

                if (FilterOriginToggle.Checked)
                {
                    CreatureOrigin origin = (CreatureOrigin)FilterOriginBox.SelectedItem;

                    if (npc.Origin != origin)
                    {
                        return(false);
                    }
                }

                if (FilterTypeToggle.Checked)
                {
                    CreatureType type = (CreatureType)FilterTypeBox.SelectedItem;

                    if (npc.Type != type)
                    {
                        return(false);
                    }
                }

                if (FilterKeywordToggle.Checked && (fKeyTokens != null))
                {
                    string keywords = (npc.Keywords != null) ? npc.Keywords.ToLower() : "";

                    foreach (string token in fKeyTokens)
                    {
                        if (!keywords.Contains(token))
                        {
                            return(false);
                        }
                    }
                }

                if (FilterLevelToggle.Checked)
                {
                    if ((npc.Level < LevelFromBox.Value) || (npc.Level > LevelToBox.Value))
                    {
                        return(false);
                    }
                }

                #endregion

                return(true);
            }

            if (obj is Trap)
            {
                Trap trap = obj as Trap;

                #region Trap

                bool outlier = false;
                diff = AI.GetThreatDifficulty(trap.Level, fPartyLevel);
                if ((diff == Difficulty.Trivial) || (diff == Difficulty.Extreme))
                {
                    outlier = true;
                }

                if (outlier && FilterLevelAppropriateToggle.Checked)
                {
                    return(false);
                }

                if (FilterNameToggle.Checked && (fNameTokens != null))
                {
                    string name = trap.Name.ToLower();

                    foreach (string token in fNameTokens)
                    {
                        if (!name.Contains(token))
                        {
                            return(false);
                        }
                    }
                }

                if (FilterCatToggle.Checked && (fCatTokens != null))
                {
                    // Ignore category for traps
                }

                if (FilterRoleToggle.Checked)
                {
                    // Match on role
                    RoleType role = (RoleType)FilterRoleBox.SelectedItem;

                    if (trap.Role is ComplexRole)
                    {
                        ComplexRole cr = trap.Role as ComplexRole;
                        if (cr.Type != role)
                        {
                            return(false);
                        }
                    }

                    if (trap.Role is Minion)
                    {
                        Minion m = trap.Role as Minion;
                        if ((!m.HasRole) || (m.Type != role))
                        {
                            return(false);
                        }
                    }
                }

                if (FilterModToggle.Checked)
                {
                    RoleFlag flag   = RoleFlag.Standard;
                    bool     minion = false;

                    if (FilterModBox.Text == "Standard")
                    {
                    }

                    if (FilterModBox.Text == "Elite")
                    {
                        flag = RoleFlag.Elite;
                    }

                    if (FilterModBox.Text == "Solo")
                    {
                        flag = RoleFlag.Solo;
                    }

                    if (FilterModBox.Text == "Minion")
                    {
                        minion = true;
                    }

                    ComplexRole cr = trap.Role as ComplexRole;
                    if (cr != null)
                    {
                        if (minion)
                        {
                            return(false);
                        }

                        if (flag != cr.Flag)
                        {
                            return(false);
                        }
                    }

                    Minion m = trap.Role as Minion;
                    if (m != null)
                    {
                        if (!minion)
                        {
                            return(false);
                        }
                    }
                }

                if (FilterOriginToggle.Checked)
                {
                    // Ignore origin for traps
                }

                if (FilterTypeToggle.Checked)
                {
                    // Ignore type for traps
                }

                if (FilterKeywordToggle.Checked && (fKeyTokens != null))
                {
                    // Ignore keywords for traps
                }

                if (FilterLevelToggle.Checked)
                {
                    if ((trap.Level < LevelFromBox.Value) || (trap.Level > LevelToBox.Value))
                    {
                        return(false);
                    }
                }

                if (FilterSourceToggle.Checked)
                {
                    Library lib = FilterSourceBox.SelectedItem as Library;
                    if (!lib.Traps.Contains(trap))
                    {
                        return(false);
                    }
                }

                #endregion

                return(true);
            }

            if (obj is SkillChallenge)
            {
                SkillChallenge sc = obj as SkillChallenge;

                #region Skill challenge

                if (FilterNameToggle.Checked && (fNameTokens != null))
                {
                    string name = sc.Name.ToLower();

                    foreach (string token in fNameTokens)
                    {
                        if (!name.Contains(token))
                        {
                            return(false);
                        }
                    }
                }

                if (FilterCatToggle.Checked && (fCatTokens != null))
                {
                    // Ignore category for skill challenges
                }

                if (FilterRoleToggle.Checked)
                {
                    // Ignore roles for skill challenges
                }

                if (FilterOriginToggle.Checked)
                {
                    // Ignore origin for skill challenges
                }

                if (FilterTypeToggle.Checked)
                {
                    // Ignore type for skill challenges
                }

                if (FilterKeywordToggle.Checked && (fKeyTokens != null))
                {
                    // Ignore keywords for skill challenges
                }

                if (FilterSourceToggle.Checked)
                {
                    Library lib = FilterSourceBox.SelectedItem as Library;
                    if (!lib.SkillChallenges.Contains(sc))
                    {
                        return(false);
                    }
                }

                #endregion

                return(true);
            }

            return(false);
        }
 //private void TestComplexRole(IRole iRole, RoleType roleType, RoleFlag rf, bool isLeader)
 //{
 //    ComplexRole cr = iRole as ComplexRole;
 //    Assert.IsNotNull(cr);
 //    Assert.AreEqual(isLeader, cr.Leader);
 //    Assert.AreEqual(roleType, cr.Type);
 //    Assert.AreEqual(rf, cr.Flag);
 //}
 //private static void TestMinion(Creature c, bool HasRole, RoleType? roleType)
 //{
 //    Minion cr = (Minion)c.Role;
 //    Assert.AreEqual(HasRole, cr.HasRole);
 //    if (roleType != null)
 //    {
 //        Assert.IsTrue(cr.HasRole);
 //        Assert.AreEqual(roleType, cr.Type);
 //    }
 //    else
 //    {
 //        Assert.IsFalse(cr.HasRole);
 //    }
 //}
 private void TestSizeOriginType(Creature c, CreatureSize creatureSize, CreatureOrigin creatureOrigin, CreatureType creatureType, int level, string keyword)
 {
     Assert.AreEqual(creatureSize, c.Size);
     Assert.AreEqual(creatureOrigin, c.Origin);
     Assert.AreEqual(creatureType, c.Type);
     Assert.AreEqual(level, c.Level);
     Assert.AreEqual(CleanForCompare(keyword), CleanForCompare(c.Keywords));
 }