Beispiel #1
0
        public string ToString(bool verbose, CriteriaTree parent)
        {
            string text = "";

            switch (Type)
            {
            case CriteriaType.KillCreature:
            {
                string name = _dbDataProvider.GetCreatureName(Asset);
                if (!string.IsNullOrEmpty(name))
                {
                    text = $"Kill \"{name}\" (entry: {Asset})";
                }
                else
                {
                    text = $"Kill creature with entry \"{Asset}\"";
                }
                break;
            }

            case CriteriaType.ManuallyGivenCriteria:
                text = $"Get manually granted the criteria (id: {Id})";
                break;

            case CriteriaType.BeSpellTarget:
            {
                Spell spell = _dbcDataProvider.GetSpell(Asset);
                if (!string.IsNullOrEmpty(spell?.Name))
                {
                    text = $"Be target of spell \"{spell.Name}\" (id: {Asset})";
                }
                else
                {
                    text = $"Be target of spell (id: {Asset})";
                }
                break;
            }

            case CriteriaType.CastSpell:
            {
                Spell spell = _dbcDataProvider.GetSpell(Asset);
                if (!string.IsNullOrEmpty(spell?.Name))
                {
                    text = $"Cast spell \"{spell.Name}\" (id: {Asset})";
                }
                else
                {
                    text = $"Cast spell (id: {Asset})";
                }
                break;
            }

            case CriteriaType.DefeatCreatureGroup:
                text = $"Defeat creature group (id: {Asset})";
                break;

            case CriteriaType.SendEvent:
                text = $"Event \"{Asset}\" is sent";
                break;

            case CriteriaType.SendEventScenario:
                text = $"Event \"{Asset}\" is sent to scenario";
                break;

            case CriteriaType.CastSpell2:
            {
                Spell spell = _dbcDataProvider.GetSpell(Asset);
                if (!string.IsNullOrEmpty(spell?.Name))
                {
                    text = $"Hit a target with spell \"{spell.Name}\" (id: {Asset})";
                }
                else
                {
                    text = $"Hit a target with spell (id: {Asset})";
                }
                break;
            }

            case CriteriaType.LootItem:
            {
                Item item = _dbcDataProvider.GetItem(Asset);
                if (!string.IsNullOrEmpty(item?.Name))
                {
                    text = $"Loot \"{item.Name}\" ({Asset})";
                }
                else
                {
                    text = $"Loot item with id \"{Asset}\"";
                }
                break;
            }

            case CriteriaType.OwnItem:
            {
                Item item = _dbcDataProvider.GetItem(Asset);
                if (!string.IsNullOrEmpty(item?.Name))
                {
                    text = $"Own item \"{item.Name}\" ({Asset})";
                }
                else
                {
                    text = $"Own item with id \"{Asset}\"";
                }
                break;
            }

            case CriteriaType.ReachAreatrigger:
                text = $"Reach areatrigger using ActionSet id \"{Asset}\"";
                break;

            case CriteriaType.CompleteDungeonEncounter:
                DungeonEncounter dungeonEncounter = _dbcDataProvider.GetDungeonEncounter(Asset);
                if (!string.IsNullOrEmpty(dungeonEncounter?.Name))
                {
                    text = $"Complete the {dungeonEncounter.Name} ({Asset}) dungeon encounter";
                }
                else
                {
                    text = $"Complete dungeon encounter \"{Asset}\"";
                }
                break;

            case CriteriaType.UseGameobject:
            {
                string name = _dbDataProvider.GetGameobjectName(Asset);
                if (!string.IsNullOrEmpty(name))
                {
                    text = $"Use \"{name}\" (entry: \"{Asset}\")";
                }
                else
                {
                    text = $"Use gameobject with entry \"{Asset}\"";
                }
                break;
            }

            default:
                break;
            }

            if (string.IsNullOrEmpty(text))
            {
                text = !Enum.IsDefined(typeof(CriteriaType), Type)
                    ? $" - (Unknown criteria type: \"{Type}\", data: {Asset})"
                    : $" - Unspecified criteria type \"{Enum.GetName(typeof(CriteriaType), Type)}\", data: {Asset}";
            }

            if (verbose)
            {
                text = $"C {Id} - {text}";
            }

            if (parent.Parent != null && parent.Parent.Operator == CriteriaTreeOperator.SumChildrenWeight)
            {
                text = $"{text}, progress {parent.Amount}";
            }

            if (Type.NotYetImplemented())
            {
                text += " (NYI)";
            }

            return(text);
        }