Example #1
0
    private IEnumerable <(uint command, int dataIndex, long valueToSearch)> GenerateConditions(IReadOnlyList <string> parameterName, long parameterValue)
    {
        foreach (var d in dataProvider.GetEventScriptData())
        {
            if (parameterName.IndexOf(d.DataLong) != -1)
            {
                yield return(d.Id, 0, parameterValue);
            }

            if (parameterName.IndexOf(d.DataLong2) != -1)
            {
                yield return(d.Id, 1, parameterValue);
            }

            if (parameterName.IndexOf(d.DataInt) != -1)
            {
                yield return(d.Id, 2, parameterValue);
            }
        }
    }
Example #2
0
    public EventScriptLineViewModel Factory(IEventScriptLine line)
    {
        string source, target, sourceOrTargetCreature, sourceOrTargetPlayer;

        switch (line.Type)
        {
        case EventScriptType.Event:
            source = "Triggering player";
            target = "Triggered game object";
            sourceOrTargetPlayer   = source;
            sourceOrTargetCreature = "(null)";
            break;

        case EventScriptType.Spell:
            source = "Caster";
            target = "Hit target";
            sourceOrTargetPlayer   = "Caster player or hit target player";
            sourceOrTargetCreature = "Caster creature or hit target creature";
            break;

        case EventScriptType.Waypoint:
            source = "Creature";
            target = "(null)";
            sourceOrTargetPlayer   = target;
            sourceOrTargetCreature = source;
            break;

        default:
            source = target = sourceOrTargetPlayer = sourceOrTargetCreature = "(non supported script type)";
            break;
        }

        var data = dataProvider.GetEventScriptData(line.Command);

        if (data == null)
        {
            var invalid = $"Invalid line: {line.Command}, {line.DataLong1}, {line.DataLong2}, {line.DataInt}";
            return(new EventScriptLineViewModel(invalid, line.Comment));
        }
        else
        {
            var dataLongParam  = parameterFactory.Factory(data.DataLong);
            var dataLong2Param = parameterFactory.Factory(data.DataLong2);
            var dataIntParam   = parameterFactory.Factory(data.DataInt);

            var dataLong  = dataLongParam.ToString((long)line.DataLong1);
            var dataLong2 = dataLong2Param.ToString((long)line.DataLong2);
            var dataInt   = dataIntParam.ToString(line.DataInt);

            string text = Smart.Format(data.Description,
                                       new
            {
                datalongvalue          = line.DataLong1,
                datalong2value         = line.DataLong1,
                dataintvalue           = line.DataInt,
                datalong               = dataLong,
                datalong2              = dataLong2,
                dataint                = dataInt,
                source                 = source,
                target                 = target,
                sourceOrTargetCreature = sourceOrTargetCreature,
                sourceOrTargetPlayer   = sourceOrTargetPlayer,
                x = line.X,
                y = line.Y,
                z = line.Z,
                o = line.O
            });
            return(new EventScriptLineViewModel(text, line.Comment));
        }
    }