using Arrowgene.Ddon.GameServer.Scripting.Interfaces; using Arrowgene.Ddon.Shared.Model; using Microsoft.CodeAnalysis; using System.Collections.Generic; using System.IO; using System.Linq; namespace Arrowgene.Ddon.GameServer.Scripting { public class PointModifierModule : GameServerScriptModule { public override string ModuleRoot => "point_modifiers"; public override string Filter => "*.csx"; public override bool ScanSubdirectories => true; public override bool EnableHotLoad => true; private Dictionary Modifiers { get; set; } = new Dictionary(); public List GetModifiersByType(PointModifierType type) { return Modifiers.Select(x => x.Value).Where(x => x.ModifierType == type).ToList(); } public List GetModifiersByType(List types) { var results = new List(); foreach (var type in types) { results.AddRange(GetModifiersByType(type)); } return results; } public PointModifierModule() { } public override bool EvaluateResult(string path, object result, IDictionary variables) { if (result == null) { return false; } string scriptName = Path.GetFileNameWithoutExtension(path); Modifiers[scriptName] = (IPointModifier)result; return true; } } }